工控智汇

工控智汇

LabVIEW与三菱FX3U PLC通讯问题总结

admin 107 16


遇到的问题:

1)使用C#封装的Sample_文件,速度慢,单个读取vi,读取8个字节,执行周期为30-40ms(后来是20ms?),且一个while中,读取的数量多、使用的读写vi函数多、线程多,都会导致速度变慢。另外,把线程周期设定为1ms时,反而会降低读取速度,经过测试,设定为60ms最优。没有遇到有读取数量限制的问题;设置MXComponent时要选择FXNET,而不是FX3UADPNET。

2)使用MXComponent的Active控件(简称ACT控件),MITSUBISHIActUtlTypeControl(三菱的《MXComponent中文使用说明书》中介绍了两个控件,另外一个是.NET的DotUltTypeControl控件),在前面板插入如下所示Active对象,单个读取函数,读取8个字节,函数执行周期为10-20ms,但是发现了读取数量的限制,如果把数量设定为50;LabVIEW就崩溃了。


3)使用。速度较快,但是问题是与5个PLC通讯时,会出现OPC与PLC连接不上的问题,变量监控时显示Notavailable,与一个PLC通讯则不会出现该问题;

4)使用。速度较快,也可以同时与5个PLC通讯,比较稳定,问题如下

问题:

①会出现LabVIEW与三菱编程软件不能同时工作的问题,如果三菱GXWorks2连上PLC,则LabVIEW无法读取到数据(且OPC中的通讯质量为Bad),而如果LabVIEW先运行,可以读取到数据,但是三菱GXWorks2又无法连上PLC;设置时要选择FXNET,而不是FX3UADPNET。

②写入时有时失败,在LabVIEW中关联的变量数值已经更新了,但是在MXConfigure中未更新,经过测试,把LabVIEW程序中包含写入OPC地址的前面板打开,即可正常写入(实际上,只要前面板未打开,几乎都写不进去),所以这可能是LabVIEW与通讯时的特点:必须要把前面板打开,labview中OPC变量的数据才能更新到OPC中(即写入操作)。

Notes:

①在LabVIEW的opc库文件中,可以右键OPCI/OClient属性,设定数据更新速度,默认为1000ms,可设定为100ms;

②与MXOPC通讯,LabVIEW中不能把OPC变量作为常量使用,否则运行时会提示“OPCServer返回了错误”;

③写入失败,尝试过把写入操作放置到循环中,持续去写,但是依然失败。问题的根本原因是有opc变量的vi运行时未打开前面板。另外,可以尝试把写入操作放入循环中,似乎没什么问题;

5)用NIOPC连接不上三菱FX3UPLC;


针对以上几种方案遇到的问题的解决方案:

1)

①尝试每个读写动作都使用独立命名的dll文件,看时间是否会缩短,如果可以,测试多个线程同时工作时的线程执行周期。→未测试。

2)同上,并测试最大可读写的数量。→未测试。

3)查询手册,是否有相关设置。→未找到解决方法。

4)

①查询手册,是否有相关设置。→未找到解决方法;

②把LabVIEW程序中包含写入OPC地址的前面板外观属性设定为调用时打开(另外,“加载时打开”是打开主vi中,会把相应的加载到内存中的vi打开,“调用时打开”是程序执行到相应vi时,才会打开vi),同时为了避免运行时子vi弹出,可通过编程将相应vi的前面板隐藏,结果是主vi运行时,子vi前面板也会弹出来,但随后子vi前面板界面消失,编程方法参考《如何将LabVIEW可执行文件作为后台程序运行》

不过有一个现象:程序启动时,会跳转到选择型号界面,默认为选择"未选择型号“,此时应该给PLC发送0,但实际上通过OPCConfigure监控软件,发现有的站(ST10)相应的型号地址D2076的值仍然是上一次的值,不过这没关系,因为上位机要重新选择型号,而手动去选择型号时,数据是可以更新到OPC中的;

5)使用NIOPC,查询相关的使用方法。→未找到解决方法。

MXOPC本质上,是OPC软件调用MXConponent控件(已经集成在OPC内部,实际使用OPC时不另外安装MXComponent),来实现OPC的数据中转功能,而labview本身也是可以调用MXConponent控件(通过ACT控件和.NET控件)的,根本不需要通过OPC来中转。