GE Fanuc PLC CPU Modbus RTU主站通讯详解

5星 · 超过95%的资源 需积分: 9 6 下载量 140 浏览量 更新于2024-07-26 收藏 507KB PDF 举报
本篇文章主要介绍了Modbus® RTU 主站通讯的相关知识,它作为串行通讯手册(GFK-0582)的补充,详细阐述了在GE Fanuc PLC CPU产品如90™-30系列的IC693CPU363和VersaMax®系列的CPU模块(如IC200CPU001, IC200CPU002, IC200CPU005, IC200CPUE05)上如何进行Modbus RTU通信。以下是文章的主要知识点: 1. **概述**: Modbus串行通讯协议是一个广泛接受的工业标准,用于控制器(主站)与各种设备(从站)之间的数据交换,支持ASCII和RTU两种传输模式。本文重点在于RTU模式,适用于PLC之间的通信。 2. **支持产品**: 文档明确提到,IC693CPU363和多种VersaMax CPU模块支持Modbus RTU主站通讯,这表明它们具备与不同设备通信的能力。 3. **操作模式**: Modbus RTU主站作为客户端,发起查询消息,这些消息可能包含数据请求、状态查询或命令执行。从站拥有唯一的设备地址,允许精确地定位响应。 4. **通信流程**: 主站通过串行网络发送查询,针对特定的从站地址或广播地址进行通信。广播地址用于发送不特定于单个从站的消息。 5. **命令与功能块**: - `COMMREQ` 命令:这是一种核心的通信功能,包括其格式、参数、输出和数据块。 - `ModbusRTU主站状态字格式`:定义了主站状态字的结构,用于表示其工作状态。 - `队列限制`:主站可能有对COMMREQ命令处理的队列容量限制。 6. **数据管理和诊断**: - `本地数据`:主站可能存储和管理从从站接收到的数据。 - `诊断状态字`:提供有关主站运行状况的信息,可通过命令如`ClearRTU主站诊断状态字`来管理和读取。 7. **特定命令示例**: - `InitializeRTU主站端口`:初始化主站端口,设置特定的起始地址。 - `ClearRTU主站诊断状态字`:清除诊断标志。 - `读取诊断状态`:获取主站当前的诊断信息。 - `发送查询`:执行读取、写入或诊断请求。 8. **错误处理**: 提供了错误代码,以指示可能发生的通讯问题,这对于调试和故障排查至关重要。 9. **版权和标准**: Schneider Electric公司拥有Modbus® 商标,这是开放标准,强调了其在工业自动化领域的广泛采用。 这篇文章深入探讨了Modbus RTU主站通讯的关键要素,对于操作和维护这些PLC系统具有重要的实用价值。
2019-04-08 上传
/// /// 读保持寄存器03 /// /// 数据读取延迟 /// 设备从站地址 /// 数据起始地址 /// 寄存器数量 /// 返回的寄存器数值 /// 返回异常描述 /// 是否读取成功 public bool ReadHoldReg(int timeout, byte slaveAddress, ushort startAddress, ushort regCountIn, out ushort[] holdRegs, out ModbusException ex) /// /// 读输入寄存器04 /// /// 数据读取延迟 /// 设备从站地址 /// 数据地址 /// 寄存器数量 /// 返回的寄存器数值 /// 返回异常描述 /// 是否读取成功 public bool ReadInputReg(int timeout, byte slaveAddress, ushort startAddress, ushort regCountIn, out ushort[] InputRegs, out ModbusException ex) /// /// 写单寄存器(06功能码) /// /// 数据读取延迟 /// 设备从站地址 /// 寄存器地址 /// 寄存器值 /// 返回异常描述 /// 是否写入成功 public bool WriteSingleReg(int timeout, byte slaveAddress, ushort regAdr, ushort regValue, out ModbusException ex) /// /// 写单个线圈(05功能码) /// /// 数据读取延迟 /// 设备从站地址 /// 寄存器地址 /// 寄存器值 /// 返回异常描述 /// 是否写入成功 public bool WriteSingleCoil(int timeout, byte slaveAddress, ushort regAdr, ushort ONorOFF, out ModbusException ex) /// /// 写多寄存器(10功能码) /// /// 数据读取延迟 /// 设备从站地址 /// 寄存器起始地址 /// 寄存器值 /// 返回异常描述 /// 是否写入成功 public bool WriteMutilReg(int timeout, byte slaveAddress, ushort regAdr, ushort[] regValue, out ModbusException ex) ....................