RSLinx与C#通信错误

来源:互联网 发布:mac谷歌浏览器安装 编辑:程序博客网 时间:2024/04/26 07:44

最近做的项目中,需要用到C#所编写的winform界面与PLC通信的功能。大致的方案是利用RSLinx读取PLC的数据,然后利用AB公司提供的RsiOPCAuto.dll控件,实现winform通过RSLinx对PLC数据的读取。


之前用这套方案,一直是没有问题的。但是这次突然出现了通讯失败的问题。RSLinx端的报错如下:

error: 10h  

desc:remote: bad command

          Invalid command message received by remote module.





通过观察,可以发现问题出现在对N7数据集的读取上。于是,我注释掉了一部分N7读取的代码,通讯果然恢复了正常。

通过不断缩小问题范围,发现在尝试读取N7:150左右的数据时,发生了报错。推测可能是因为优化通讯后,读取地址的范围太大了,从上图可以看出,从N7:14一直到N7:153。照理来说,这时只要把需要跟上位机通讯的PLC的地址改到低地址位就可以了。但是因为PLC的程序并不是我编写的,而且现行的PLC程序已经在工程现场应用起来了,不适合更改,于是只能继续在我这边找解决方案。

找了一大圈,最终发现更新RSLinx版本可以解决这个问题。

原RSLinx版本:2.54

    RsiOPCAuto.dll版本:2.10.00.116


更新后RSLinx版本:2.59

            RsiOPCAuto.dll版本:2.10.00.117


至此,问题基本解决。


需要注意的是,在2.55版以后,RSLinx便不再提供RsiOPCAuto.dll控件。所以,在之后的版本中,如果需要使用该控件的话,需要自己进行注册。




0 0
原创粉丝点击