注:网页排版不整齐,以下内容在库指令内可见。
对 不欲 大侠发现的功能15问题,已改进,附件重新上传。
Modbus-RTU 主站模式网关 V1.0
利用以太网串口服务器,构建Modbus-RTU串口通讯。
使用开放式通信(OUC)中的UDP协议。
在CPU固件V2.7中测试通过。
串口服务器工作于UDP模式,IP地址、端口与库程序匹配。
每周期调用一次即可,必须包括第1个扫描周期。
对于扫描周期较长的程序,为了提高通讯响应速度,
可以在程序的适当地方,均匀分布地多次调用。
多次调用时,保持调用参数一致不变。
在启动轮询(ST=1)前,轮询参数块必须已建好。
1、指令调用(LAD)

2、调用参数定义:
ST: 1=启动轮询。
ID: 网络连接ID,独一无二。
RIP:远端IP地址,4字节长整数
例:192.168.2.200=16#C0A802C8
RPort:远端端口
LPort:本地端口,按手册建议取值。
DPTR: 主站轮询参数块地址指针。
N: 参数块数量。
3、轮询参数块定义:
参数块顺序存放,程序自动循环轮询。
偏移 定义
0000:状态字节,D 0 E ErrCode
0001:控制字节,BIT0=REQ, BIT7=REP
REQ=1参与轮询,0则不参与。
若REP=0则轮询一次后自复位。
对于按需只写一次的,REP=0
不会造成重复写入。
0002:字节,通讯成功计次,循环递增
0003:字节,通讯失败计次,循环递增
0004:字节,从站通讯地址(Addr)
程序不作合法性检查。
0005:字节,Modbus功能码(Func)
支持的功能:01/02/03/04/05/06/15/16
功能码定义,请参考Modbus-RTU协议文本。
0006:16位整数,从站数据起始地址(Start)
数据地址不带数据类型
例:保持寄存器40001,地址=0
0008:16位整数,读写数据量(Count)
离散量:最大1920个点
整形量:最大120个WORD
0010:16位整数,通讯超时设置,ms
从询问帧开始发送至返回帧接收完毕的
最大可能时间,应根据通讯数据量大小
具体计算,一般可取100ms先测试。
0012:32位指针,本地V区数据存放缓冲区指针
务必正确设置指针,不然可能乱指破坏
其它数据。并且应当留有足够的缓冲空
间容纳收、发的数据。
4、错误码(状态字节中的ErrCode编码):
1~15:从站响应的错误代码
从站返回错误码请参考Modbus协议文本。
16:返回帧CRC校验错误
17:返回帧地址或功能码不匹配
18:返回帧格式错误
19:从站响应超时
20:生成通讯帧失败(非法参数)
5、关于Modbus-RTU帧间隔定时
帧间隔定时由串口服务器设置,要求大于3.5字节收发宽度。
建议先设置10ms的间隔测试,成功之再测试其它值。
6、其它:
库指令内存的首字节(MG100_Stat)为UDP TCON
的连接状态,正常情况应为16#80,表示无错误。
该状态字节请参考手册中TCON指令部分。
发现非正常状况,可反馈给作者,以便改进提高。
Note:
1、使用:AC0、AC1、AC2、AC3
2、占用一个UDP连接资源。
3、库程序大小约950字节,库内存约290字节。
Siemens S7200 Smart版区
https://www.ad.siemens.com.cn/club/bbs/
版本维护:yanxiao(版主)
声明:
版权归作者所有,免费使用与扩散,但请保持程序完整。
使用者自行测试评估本库程序是否适用于其编写的控制程序,
作者不承担使用本库程序所带来的风险与损失。
2023.4.12
MG100_Demo.zip
MG100Master_V10.zip