一个功能块搞定欧姆龙跟三菱的通讯
此功能块适用于欧姆龙sysmac studio N系列PLC编程,通过调用此功能块实现以太网与三菱Q系列,R系列,FX5U的通讯,此功能块的作用类似高级语言的Dll库文件。
此功能块实现了MC 3E、SLMP协议,通过调用MCDll功能块,可以实现对三菱PLC内部变量的读写等。
调用此功能块后,欧姆龙PLC和三菱PLC之间将不再需要网关,仅需交换机将PLC的内置以太网口连接起来即可,两PLC需处于同一网段,互相之间可以ping连接。
此MCDll功能块基于标准以太网,属于ISO/TCP IP模型中的应用层,与modbus tcp属于同一级别,实时性和速度都等于modbus tcp。测试PLC扫描周期设定2ms时,通讯在4ms左右,但一般不需要这么快,用程序默认设定一般在10ms即可。
测试采用欧姆龙NX1P2与三菱Q系类内置以太网CPU,及FX5U进行。
NX1P2仅需要设置IP地址即可,详细参数设置如下:
FX5U内置协议名称为SLMP,MC3E协议可兼容,FX5U用UDP SLMP通讯时需要设置通讯对象的IP地址。参数设置如下:
QCPU协议名称为MC协议,Q系列PLC内置以太网口通讯时MC协议通讯时无需指定通讯对象的IP地址,参数设置如下:
为节省资源,此功能块支持轮询通讯,所有的输入参数可以在通讯过程中改变,如IPAddressPort 通讯地址及端口可以在通讯过程中通过变量改变,下一个扫描周期即可生效。
通讯完成的反馈脉冲ReadDone,WriteDone报告读写状态,此时的FromNode信息即为当前的通讯节点信息。
当然,也可以多次调用此功能块跟多个PLC通讯,以保证最快的通讯速度。如多次调用需改变内部参数,请联系作者www.plclibrary.com
此功能块内部虽然做了通讯监测,并给出了Warning信号,但是每个应用对网络的连接要求不一样,如有的现场通讯受干扰丢包一次,马上又恢复,仅仅是少了一次刷新,完全不影响应用,此时即可忽略此warning。如需判断网络通断,建议用看门狗监视心跳数据,并根据现场要求调节灵敏度。
管脚说明:
Start | 通讯开始,off后就停止通讯 |
IPAddressPort | 三菱PLC的IP地址及端口号,如:192.168.3.30:6000,标点符号均为英文输入法状态下符号 |
ReadDataType | 要读取数据的类型及地址,目前支持D,W,M,L,X,Y地址,格式如:D100,注意三菱的地址有些为16进制,如此处填写‘W100’,实际对应三菱的W64 |
ReadDataLen | 要读取数据的长度,以字(16bit)为单位 |
INWriteCMD | 写数据到对方PLC命令,写数据有高优先级,当没有写命令时自动执行读命令刷新数据 |
WriteDataType | 写数据的类型及地址,目前支持D,W,M,L,X,Y地址,格式如:D100,注意三菱的地址有些为16进制,如此处填写‘W100’,实际对应三菱的W64 |
WriteDataLen | 写取数据的长度,以字(16bit)为单位 |
WriteDataArry | 写取数据的字节数组 |
Information | 报错等提示信息,正常为www.plclibrary.com |
NetConnected | 端口初始化成功 |
Error | 报错状态,如有此报错,则网络或者程序故障 |
Warning | 警告状态,如有此警告表明对方PLC反馈了错误代码,或者网络有丢包,当网络恢复后,通讯会自动恢复 |
Circuilttime | 估算的刷新周期 |
ReadDone | 读对方PLC数据完成 |
WriteDone | 写对方PLC数据完成 |
ReceiveData | 读对方PLC数据存储池 |
FromNode | 对方PLC网络信息 |
为了节省PLC资源,程序内部几乎不对管脚输入值做防呆判断,如数据类型请严格按照示例样式去写,如D100而不是D 100或者SD100,虽然编译可以通过,但没有人知道程序会怎样执行。
下载地址: