[西门子] AB PLC | Studio 5000之MSG指令实现UDT数据交换

[复制链接]
查看55779 | 回复0 | 2024-1-24 08:20:28 | 显示全部楼层 |阅读模式


前言:在给很多朋友上远程培训课讲解MSG指令时,虽然有2台实体控制器进行联网通信演示,但是学习的朋友,很多没有实体PLC在手上,于是提出问题,能否通过仿真软件来练习MSG指令?另外,还有提出MSG指令是否支持UDT数据类型?那么,今天这篇文章就这两个问题给出明确的答复。

01

测试环境

1. 操作系统:Windows 7 旗舰版 SP1 64位

2. 编程软件:Studio 5000 V32.00.00中文版

3. 仿真软件:Studio 5000 Logix Emulate V32

02

答复提问

1. MSG指令是可以仿真软件来模拟多个PLC之间进行数据交互,理论支持来源手册上关于通信路径的描述,其中一条:基于背板的通信.


2. MSG指令支持的数据类型除了通用的SINT、INT、DINT、REAL单个标签或数组,另外,我还是在英文手册《1756-pm012_-en-p》的角落里面找到了用户自定义数据类型,即UDT。感慨,还是原版英文手册完整啊.


3. MSG指令使用用户自定义数据类型(UDT)有什么好处呢,可以将很多数据类型整合在一起,并命名以可读性强的标签,另外,可以最大程度的减少MSG连接数,以及节省控制器处理资源.

03

实现方法

1. 打开仿真软件Studio 5000 Logix Emulate V32.00.00,分别在2号槽、10号槽添加仿真控制器Emulate 5570 Controller.


2. 打开V32.00.00中文版本Stduio 5000软件,创建一个仿真CPU,设置在2号槽,命名为em_MSG_Send,作为MSG发送数据的一端,并创建用户自定义数据类型UDT_Comm_Data,其中整合了BOOL、DINT、REAL[5]数据类型,详见下图.


3. 在《em_MSG_Send》控制器标签里面,创建2个标签:Comm_Data_Send,数据类型为UDT_Comm_Data;MSG_Send,数据类型为MESSAGE.


4. 直接在主例程中编写MSG指令,其中MSG设置:

    配置

    消息类型:CIP数据表写

    源元素:Comm_Data_Send

    元素数:1

    目标元素:Comm_Data_Receive

    通信

    路径:1,10

    说明:1--代表背板;10--通信伙伴控制器所在的槽号;中间为英文逗号.



5. 由于双方使用MSG指令交互数据,其数据类型必须一致,故可以将UDT数据类型导出,在接收端将其导入,避免重复创建,提供编程效率.


6. 再次打开Studio 5000软件,创建一个仿真控制器,放置在10号槽,命名为em_MSG_Receive,作为数据接收端,导入UDT_Comm_Data数据类型,并在控制器标签里创建2个标签:Comm_Data_Receive,数据类型为UDT_Comm_Data;MSG_Receive,数据类型为MESSAGE.


7. 在《em_MSG_Receive》项目中编写MSG指令,其中MSG设置:

    配置

    消息类型:CIP数据表读

    源元素:Comm_Data_Send

    元素数:1

    目标元素:Comm_Data_Receive

    通信

    路径:1,2

    说明:1--代表背板;2--通信伙伴控制器所在的槽号;中间为英文逗号.



8. 通信测试:分别将2个项目程序下载,控制器运行起来并在线,在发送端《em_MSG_Send》的Comm_Data_Send键入一些数值,在接收端《em_MSG_Receive》的Comm_Data_Receive即可接收到这些数据.


9. 本文的案例MSG只交换了一个UDT数据,其实MSG指令也是支持UDT数组交换的,感兴趣的朋友,可自行测试.
结语:综上所述,本文补充了MSG指令的用法,针对硬件条件有限的朋友,可以通过仿真软件来模拟MSG指令交换数据,加深学习效果。另外,也特别介绍了MSG如何实现UDT数据交互,虽然本文是仿真的,但同样适用于实体控制器,这种方法,增强了数据交互的灵活性、可读性、高效性。



【AB PLC工作室】

微信公众号ID:abseme



   坚持原创  注重实用



如果本文,对您有一点帮助或启示。

请分享给更多的朋友,对小编以示鼓励,谢谢!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册哦

x
您需要登录后才可以回帖 登录 | 注册哦

本版积分规则