S7-1200 支持Modbus RTU通信,以下以 CPU1215C DC/DC/DC和CM1241 RS485 模块为例,介绍S7-1200 Modbus RTU 主站通信组态及编程步骤。 1.组态Modbus RTU 通信模块 在硬件目录里找到“通信模块”→“点到点”→“CM1241(RS485)”,双击或拖拽此模块至CPU左侧即可,如下图所示:2.调用MB_COMM_LOAD指令 为使端口一启动就被设置为Modbus RTU通信模式,可在OB 100中调用“MB_COMM_LOAD”指令。需注意MB_DB输入引脚需指向“MB_MASTER”指令的背景数据块,如下图所示:MB_COMM_LOAD指令参数意义如下表所示: 引脚 | 说明 | EN | 使能端 | REQ | 在上升沿执行该指令 | PORT | 通信端口的硬件标识符 | BAUD | 波特率选择:3600,6000,12000,2400,4800,9600,19200,38400,57600,76800,115200 (注意:所有其它值均无效) | PARITY | 奇偶检验选择:0-无;1-奇校验;2-偶校验 | FLOW_CTRL | 流控制选择:0-(默认值)无流控制 | RTS_ON_DLY | RTS延时选择:0-(默认值) | RTS_OFF_DLY | RTS关断延时选择:0-(默认值) | RESP_TO | 响应超时:默认值 = 1000 ms。MB_MASTER 允许用于从站响应的时间(以毫秒为单位)。 | MB_DB | 对 MB_MASTER 或 MB_SLAVE 指令所使用的背景数据块。 | DONE | 完成位:指令执行完成且未出错置1 | ERROR | 错误位:0-未检测到错误;1-检测到错误。在参数STATUS中输出错误代码。 | STATUS | 端口组态错误代码 |
3.调用MB_MASTER指令 在OB1中调用“MB_MASTER”指令, 如下图所示:MB_MASTER指令参数意义如下表所示: 引脚 | 说明 | EN | 使能端 | REQ | 在上升沿执行该指令,请求将数据发送或读取到Modbus从站 | MB_ADDR | Modbus RTU从站地址。默认地址范围:0至247;扩展地址范围:0至65535。值0被保留用于将消息广播到所有Modbus从站。 | MODE | 模式选择:指定请求类型 | DATA_ADDR | 从站中的起始地址:指定Modbus从站中将供访问的数据的起始地址。 | DATA_LEN | 数据长度:指定要在该请求中访问的位数或字数。 | DATA_PTR | 数据指针:指向要写入或读取的数据的 M 或 DB 地址(DB访问类型必须是标准与S7-300/400兼容)。 | DONE | 完成位:上一请求已完成且没有出错后,DONE 位将保持为 TRUE 一个扫描周期时间。 | BUSY | 0 – 无正在进行的 MB_MASTER 操作;1 – MB_MASTER 操作正在进行 | EEROR | 错误位:上一请求因错误而终止后,ERROR 位将保持为 TRUE 一个扫 描周期时间。STATUS 参数中的错误代码值仅在 ERROR =TRUE 的一个扫描周期内有效。 | STATUS | 端口组态错误代码
|
|