给大伙推荐一个PLC通讯库:HslCommunication.DLL,这个库可以轻便快速的通讯多款PLC设备比如:三菱,西门子,欧姆龙,松下,AB。还封装了MODBUS RTU/TCP协议,是不想拼写报文的工控人们的最佳选择,如还有不懂的可以私聊公众号加群讨论。
注:此通讯库在7.0版本之前是免费的,但最新版是需要收费的,可以自行选择
1 HslCommunication如何使用 ,我这里用FX3SA-串口做测试说明
先打开自带的测试demo,选择plc对应的协议,我这里用的是三菱fx3sa串口的,进去之后改一下COM口,其他默认就行
选择寄存器Y0进行读取选择寄存器Y0进行写入
不单单只能读取的BOOL值,还可以读取其他数据类型的字节,可以自行尝试。
2 C#如何调用这个dll通讯PLC
首先还是将HslCommunication.DLL这个文件放入debug文件夹,然后添加引用并在窗体新增了几个按钮来实现连接plc和读写寄存器功能
第一步:引入命名空间,选择PLC对应的型号引入,这里选择三菱然后开始对应按钮写入功能,连接前先设置串口参数,连接之后判断是否连接成功,读写寄存器时会有一个返回值,里面包含了本次操作是否成功,读取出来的值,报错之后的错误代码,具体代码如下:
MelsecFxSerial melsecFx;
private void button4_Click(object sender, EventArgs e)
{
// 实例化对象,指定PLC的ip地址和端口号
melsecFx = new MelsecFxSerial();
melsecFx.SerialPortInni(sp =>
{
sp.PortName = "COM3";
sp.BaudRate = 9600;
sp.DataBits = 7;
sp.StopBits = System.IO.Ports.StopBits.One;
sp.Parity = System.IO.Ports.Parity.Even;
});
melsecFx.Open();//连接
//判断是否连接成功
if (melsecFx.IsOpen())
{
MessageBox.Show("连接成功");
}
}
private void button5_Click(object sender, EventArgs e)
{
//读取单个寄存器Y0,把返回的结果输出到operateResult
OperateResult<bool> operateResult = melsecFx.ReadBool("Y0");
if (operateResult.IsSuccess)//判断是否读取成功
{
MessageBox.Show("读取结果:"+operateResult.Content.ToString());
}
}
private void button6_Click(object sender, EventArgs e)
{
//置位寄存器Y0
OperateResult operateResult = melsecFx.Write("Y0",true);
if (operateResult.IsSuccess)//判断是否写入置位成功
{
MessageBox.Show("置位成功");
}
}
private void button7_Click(object sender, EventArgs e)
{
//复位寄存器Y0
OperateResult operateResult = melsecFx.Write("Y0", false);
if (operateResult.IsSuccess)//判断是否写入置位成功
{
MessageBox.Show("复位成功");
}
}
文章里讲到的所有文档链接:https://pan.baidu.com/s/1lIZH_GjIU5UKN24m7kxvMg 提取码:gl7c
欢迎关注公众号: dotnet编程大全