运行环境
1.VS2013(.NET Framework 4.5)
2.CX-Programmer 9.75
3.CX-Simulator 2.01
资源链接:c#与OMRONPLC通信仿真程序资源-CSDN文库
1. 软件安装
自行百度下载软件CX-ONE(该软件包括CX-Programmer和CX-Simulator 2.01)。
双击打开
安装流程可以参考欧姆龙编程软件CX-One安装教程-百度经验
使用串口模拟器设定两个虚拟串口COM1和COM2,它们是通信上是相通的,具体做法可以参考如何使用Configure Virtual Serial Port Driver-百度经验
2. 搭建仿真环境
a. 双击打开CX-Simulator
b.选择创建一个新的PLC,点击OK。
c.点击下一页。
d.选择CP1H-X40DR-A,点击下一页。
e.不添加其他模块,不做其他操作,直接点击下一页
f.点击编辑
g.节点地址默认是10,记住这个数字后面会用。
h.点击下一页
i.点击编辑
j.选择“Real comms”,并且选择COM1(虚拟串口之一),点击OK,再点击下一页。
k.点击完成。
l.点击Connect,再点击启动。
m.最终RUN灯常亮,NETWORK灯闪烁。
3. 编程
3.1 Omron PLC编写
a.双击打开软件CX-P.exe。
b.新建程序,选择CP1H,点击设定。
c.CPU类型选择X,点击确定。
d.网络类型选择FinsGateway,点击设定。
e.节点设定为10,点击确定,再点击确定。
f.双击设置,设定参数。
g.双击新程序1中的符号,在右侧空白处,鼠标右击,选择插入符号,依次设置四个变量(test_D0,test_D1,test_D2,test_D3)。
h.双击段1,在右边编写如图所示的四行程序。
i.点击在线工作图标
j.点击是。
k.再点击监视模式,PLC程序开始运行。
3.2 编写C#程序
编辑界面如图所示。三个按钮(btn_open,btn_write,btn_read),四个写textbox(tb_write0,tb_write1,tb_write2,tb_write3),四个读textbox(tb_read0,tb_read1,tb_read2,tb_read3),还有六个Label。
具体程序如下:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using HslCommunication;
using HslCommunication.Profinet.Omron;
using HslCommunication.Serial;
namespace WinForm_omronPLC
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
btn_write.Enabled = false;
btn_read.Enabled = false;
}
OmronHostLink omron = new OmronHostLink();
private void btn_write_Click(object sender, EventArgs e)
{
short[] value1 = new short[] { Convert.ToInt16(tb_write0.Text), Convert.ToInt16(tb_write1.Text),
Convert.ToInt16(tb_write2.Text), Convert.ToInt16(tb_write3.Text) };
omron.Write("D00000", value1);
}
private void btn_read_Click(object sender, EventArgs e)
{
OperateResult<short[]> value1 = omron.ReadInt16("D00000", 4);
tb_read0.Text = value1.Content[0].ToString();
tb_read1.Text = value1.Content[1].ToString();
tb_read2.Text = value1.Content[2].ToString();
tb_read3.Text = value1.Content[3].ToString();
}
private void btn_open_Click(object sender, EventArgs e)
{
if(btn_open.Text =="Open")
{
btn_open.Text = "Close";
omron.SerialPortInni("COM2", 9600, 8, System.IO.Ports.StopBits.One, System.IO.Ports.Parity.None);
omron.Open();
if(omron.IsOpen())
{
btn_write.Enabled = true;
btn_read.Enabled = true;
}
}
else if (btn_open.Text == "Close")
{
btn_open.Text = "Open";
btn_write.Enabled = false;
btn_read.Enabled = false;
omron.Close();
}
}
}
}
4. 调试
运行Winform程序,点击Open按钮,再点击Write按钮,发现值被写入到PLC中,点击Read按钮,PLC中的值也可以被读出来。