设为首页
收藏本站
PLC技术网
开启辅助访问
切换到宽版
登录
注册哦
只需一步,快速开始
微信扫码登录
门户
Portal
论坛
BBS
导读
Guide
排行榜
Ranklist
搜索
搜索
本版
文章
帖子
用户
PLC论坛-全力打造可编程控制器专业技术论坛
»
论坛
›
工控技术交流区
›
『国外:三菱/西门子/欧姆龙/松下』
›
博途SCL实现自定义ModbusRtu Over TCP功能块
返回列表
发新帖
[西门子]
博途SCL实现自定义ModbusRtu Over TCP功能块
[复制链接]
38051
|
0
|
2024-5-17 08:24:50
|
显示全部楼层
|
阅读模式
分享一组污水处理3D画面,谈谈上位机设计原则!
【导读】博途提供了内置的ModbusRtu和ModbusTcp库,但是没有提供ModbusRtuOverTcp库,为了能够深入理解Modbus通信协议并熟悉博途的一些高级指令用法及SCL编程方法,本文编写了一个自定义ModbusRtuOverTCP功能块,可实现轮询、并发读取等功能,其主要实现过程包括IP地址字符串解析函数封装、ModbusCRC校验算法函数封装、Socket发送、接收、报文拼接、报文解析等,具体步骤如下。
一、IP地址解析FC函数
二、CRCMODBUS校验FC函数
三、ModbusRTUOverTCP功能块
输入参数说明:Start:读取保持寄存器的起始地址Length:读取保持寄存器的个数IPAddr:IP 地址字符串Req:请求指令(只接受边沿信号)DeviceID: 设备单元IDConnectID:网络连接资源ID(背景数据块不同时,需要保证唯一性)输入输出参数:Outdata:指向读取的数据保存区域的指针
四、轮询令牌分发函数
五、主程序(部分)
六、轮询、并发模拟
S7-PLCSIM AdvanceV3.0 可以支持通信模拟,Modbus 从站或服务器可以用modbus slave软件模拟。在虚拟机和客户机中分别利用Modbus slave 模拟两个支持ModbusRTU 串口服务器IP地址分别为192.168.0.241 和192.168.0.242 , 每个服务器创建10 个设备, 协议选择ModbusRtu over TCP,并取消勾选忽略设备ID 选项。如下图所示:
串口服务器1:IP 地址为192.168.0.241
串口服务器2 :IP 地址为192.168.0.242
收发报文监视如下:
七、数据解析
通常,接收到的数据保存在字节数组中,具体的数据类型取决于协议对寄存器的约定,如果需要批量解析为整形或浮点型,可以新建一个大小一致的存储区,数组中元素数据类型为协议约定的数据类型,然后可以用POKE_BLK 指令完成,这里浮点数并没有考虑大小端的问题。
八、总结
Modbus RTU OverTCP 协议就是通过TCP 传输ModbusRTU 报文,关于Modbus 的详细报文说明可以查询相关文档,CRC 校验码生成算法说明也可以百度查询。在程序块编写过程中,对于重复逻辑应采用循环结构如WHILE、FOR 等;对于输入参数为不定长数组的,形参需要设置为Variant 指针,对于内存区的批量读写操作,可以使用PEEK 和POKE 指令、Move_BLK、Move_BLK_Variant、Fill_BLK、VariantPut、VariantGet等指令。以上功能块部分程序仅为了强化博途间接寻址、程序结构、SCL、以及程序封装应用,实际工程应用时,可以适当修改。【公众号后台回复“MOD”下载功能块】
——魏小星
2021年5月
作者简介
魏小星:
出生于1987,男,工程师 湖北广水人,硕士学位,电气工程师,研究方向为船舶轮机自动化和工控自动化。目前从事于水利水电闸门启闭机自动化应用研究,参与过多项大型水电站闸门启闭机电控系统的设计、程序编制和现场调试工作。擅长上位机高级语言编程、SCL和ST语言结构化编程,精通博途、Codesys、EPLAN等工控软件,有丰富的海外工作经验。
大家都在看
【视频】德国工程师是如何制作PLC柜的?
【视频】德国威图电气柜是如何生产出的?
【视频】德国工程师的办公环境是怎样的?
【视频】PROFINET为何比PROFIBUS更牛?
设为星标
不见不散
有时我们关注的公众号比较多,可能会错过一些自己喜欢的消息,我们可以给公众号加星标来解决这个问题。那如何星标呢?不会的可以参考下图或联系工作人员。
本帖子中包含更多资源
您需要
登录
才可以下载或查看,没有账号?
注册哦
x
回复
举报
返回列表
发新帖
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
注册哦
本版积分规则
发表回复
回帖后跳转到最后一页
yueyong_it
回复楼主
返回列表
『国外:三菱/西门子/欧姆龙/松下』
『国产:台达/汇川/信捷产品交流区』