一个功能块搞定西门子跟三菱的通讯。
此功能块适用于TIA V15.0 1200/1500PLC编程,通过调用此功能块实现以太网与三菱Q系列,R系列,FX5U的MC协议、SLMP协议通讯,此功能块的作用类似高级语言的Dll库文件。
此功能块实现了MC 3E、SLMP协议,通过调用MCDll功能块,可以实现对三菱PLC内部变量的读写等。
调用此功能块后,西门子PLC和三菱PLC之间将不再需要网关,仅需交换机将PLC的内置以太网口连接起来即可,两PLC需处于同一网段,互相之间可以ping连接。
此MCDll功能块基于标准以太网,属于ISO/TCP IP模型中的应用层,与modbus tcp属于同一级别,实时性和速度都等于modbus tcp。测试PLC扫描周期设定2ms时,通讯在4ms左右,但一般不需要这么快,用程序默认设定一般在10ms-20ms即可。
测试采用西门子1511-1PN与三菱Q系类内置以太网CPU,及FX5U进行。
Siemens 1200、1500用CPU集成的以太网接口,仅需要设置好IP地址即可,其它无需设置。
FX5U内置协议名称为SLMP,MC3E协议可兼容,FX5U用UDP SLMP通讯时需要设置通讯对象的IP地址。参数设置如下:
QCPU协议名称为MC协议,Q系列PLC内置以太网口通讯时MC协议通讯时无需指定通讯对象的IP地址,参数设置如下:
当与Q系列PLC通讯时,如果速度太快(如上图中通讯周期在3-4ms时),必须设置Q PLC的通讯处理占比30%以上的程序时间,否则会因为Q PLC处理不过来而造成丢包。
为节省资源,此功能块支持轮询通讯,所有的输入参数可以在通讯过程中改变,如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,虽然编译可以通过,但没有人知道程序会怎样执行。
下载地址: