设为首页
收藏本站
PLC技术网
开启辅助访问
切换到宽版
登录
注册哦
只需一步,快速开始
微信扫码登录
门户
Portal
论坛
BBS
导读
Guide
排行榜
Ranklist
搜索
搜索
本版
文章
帖子
用户
PLC论坛-全力打造可编程控制器专业技术论坛
»
论坛
›
工控技术交流区
›
『国外:三菱/西门子/欧姆龙/松下』
›
用SCL语言编写的一种轮询读写多个Modbus服务器的方法 ...
返回列表
发新帖
[西门子]
用SCL语言编写的一种轮询读写多个Modbus服务器的方法
[复制链接]
15789
|
0
|
2024-3-31 20:17:19
|
显示全部楼层
|
阅读模式
概述
本例将在TIA Portal中使用SCL语言编写一个轮询读写多个Modbus TCP设备数据的程序,Modbus Server(Slave)分别选择S7-1200 CPU和S7-200 SMART CPU,配置方法参见前面两个章节的案例,Modbus Client(Master)选择S7-1500 CPU。
第1步:
添加PLC设备,选择西门子S7-1512SP CPU,设置IP地址:192.168.18.2,子网掩码:255.255.255.0。
第2步:
在项目树的程序块文件夹上单击鼠标右键,在快捷菜单中选择新增组,添加一个MbTcpClient的文件夹,用来保存Modbus TCP Client相关的所有功能块和数据块,
添加全局数据块GdbDevice1Data,作为和1# Modbus Server(S7-1200 CPU)交互数据的数据缓冲区,根据需求设置读写数据缓冲区的长度,数据类型建议使用最原始的数据类型Word,根据使用需求进行数据类型转换。本例中设置读缓冲区长度8个字,写缓冲区长度8个字。
第3步:
添加全局数据块GdbDevice2Data,作为和2# Modbus Server(S7-200 SMART CPU)交互数据的数据缓冲区,根据需求设置读写数据缓冲区的长度,数据类型建议使用最原始的数据类型Word,根据使用需求进行数据类型转换。本例中设置读缓冲区长度8个字,写缓冲区长度8个字。
第4步:
添加一个FB块,命名为MbTcpClient,编程语言选择SCL,为该FB块添加接口变量。
注意一定要确保指令MB_CLIENT的每个实例都必须使用唯一的ID。确保每个Modbus Server的IP地址应不相同。以上192.168.18.18对应前面案例中设计的Modbus Server S7-1200 CPU,192.168.18.78对应前面案例中设计的Modbus Server S7-200 SMART CPU。
第5步:
用SCL语言编写Modbus Client轮询读写的程序代码。
以上代码将完成对两个Modbus Server的保持寄存器的读写功能,分别对两个设备读2个字,写1个字。轮询方式采用了定时器计数的方式,本例中的定时器选择了IEC定时器,轮询时间可以更加更灵活,也可以用系统时钟脉冲替代。如果需要对更多个Modbus TCP设备进行读写操作的话,只需要增加相应数量的实例即可。
第6步:
在MbTcpClient文件夹中添加一个程序循环OB,命名为MainMbTcpClient,在其中调用FB MbTcpClient。
第7步:
在线测试和1# Modbus Server(S7-1200 CPU)的数据交互,成功读到数据16#1666,成功写入数据16#1888。
第8步:
在线测试和2# Modbus Server(S7-200 SMART CPU)的数据交互,成功读到数据16#2666,成功写入数据16#2888。
本帖子中包含更多资源
您需要
登录
才可以下载或查看,没有账号?
注册哦
x
回复
举报
返回列表
发新帖
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
注册哦
本版积分规则
发表回复
回帖后跳转到最后一页
dongbing
回复楼主
返回列表
『国外:三菱/西门子/欧姆龙/松下』
『国产:台达/汇川/信捷产品交流区』