最近做的项目中,需要用到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: