1、MODBUS RTU 通信功能应用示例 MODBUS RTU 通信功能应用示例 1.控制要求 1.控制要求 采用 MODBUS RTU 通信方式,实现 PLC 实时读取两台智能仪表检测的现场环境温度和湿度值。2.系统配置 2.系统配置 系统选用型号为 S7-1200 CPU1215C DC/DC/DC 的 1 台 PLC,并配有 CM 1241 RS485 通讯模块,作为 MODBUS RTU 通信系统的主站;选用两台智能仪表,型号分别为 KCM-91WRS 智能温度调节仪和 KCM-91WAS 智能湿度调节仪,作为 MODBUS RTU 通信系统的从站。系统结构如图 7-36 所示。图 7-
2、36 系统结构图 3.硬件组态 3.硬件组态 1)创建新项目:在项目树下点击“添加新设备”,选择 CPU1215C DC/DC/DC,创建一个 PLC_1 站点;完成后,进入“设备视图”“硬件目录”,然后继续添加“通信模块”“点到点”“CM1241(RS422/485)”通信模块添加到 CPU 左边(101 插槽)的主机架,如图 7-37 所示。图 7-37 硬件组态 2)在“属性”中设置 PLC_1 的 IP 地址为 192.168.0.1、子网掩码 255.255.255.0,如图 7-38;选择“系统和时钟存储器”,勾选“启用系统存储器字节”和“时钟存储器字节”,以便后需编程时使用,如图
3、 7-39。图 7-38 IP 地址设置 图 7-39 启用系统及时钟存储器字节 3)组态“CM1241(RS422/485)”通信模块端口参数,保证与智能仪表通讯设置相同;在模块“属性”“常规”“端口组态”中,修改操作模式为半双工(RS485)、2 线制;将波特率设置为 9.6kbps,数据格式为 8 个数据位,1 个停止位,无奇偶校验;检查模块硬件标识符,本例中为 269。通信模块接口参数设置如图 7-40、7-41、7-42 所示。图 7-40 通信端口操作模式 图 7-41 通信端口数据格式 图 7-42 硬件标识符界面 4.主站程序的编写 4.主站程序的编写 1)调用并设置串口参数初
4、始化函数“MB_COMM_LOAD”打开 PLC_1 主程序块(Main),调用“通信处理器”“MODBUS”中的组态端口指令“MB_COMM_LOAD”,点击确认后自动生成其背景数据块“MB_COMM_LOAD_DB”,如图 7-43所示。图 7-43 MB_COMM_LOAD 模块 “MB_COMM_LOAD”指令用于组态通信端口使用 Modbus RTU 协议通信,必须调用“MB_COMM_LOAD”一次。完成组态后,“MB_MASTER”和“MB_SLAVE”指令才可以使用该端口。设置“MB_COMM_LOAD”指令输入管脚。由于该指令只需调用一次,所以 REQ 管脚可选择FirstS
5、can 位信号的上升沿执行一次;其他参数设置保持与组态的“CM1241(RS422/485)”通信模块端口参数设置一致。PORT 为通信端口 ID,即通信模块的硬件标识符(269);BAND为波特率,设为 9600;PARITY 为奇偶校验,设为 0(无校验);MB_DB 管脚链接“MB_MASTER”主站指令调用后生成的背景数据块(在主站指令编写时再进行连接)。设置“MB_COMM_LOAD”指令输出管脚。DONE 表示指令的执行的完成情况,为 1 表示指令已完成且未出错;ERROR 为 0 表示未检测到错误,为 1 表示检测到错误,并在参数 STATUS 中输出错误代码;STATUS 为端
6、口组态错误代码,出错时可根据错误表查询出错原因。2)读取智能温度仪(地址为 1)实时温度值 调用“通信处理器”-“MB_MASTER”主站指令,自动生成其背景数据块。“MB_MASTER”管脚参数设置如图 7-44 所示,参数含义如下:REQ:请求输入;0 表示无请求,1 表示请求将数据发送到 MB_ADDR 指定的从站;本例选用 1Hz 时钟信号“CLOCK_1Hz”作为请求信号。MB_ADDR:设置 Modbus RTU 站地址;默认地址范围为:0 247;本例为 1。MODE:模式选择,用来指定请求类型。0 为读取,1 为写入;本例设置为 0,用于读取Modbus 从站 1 的温度数值。
7、DATA_ADDR:指定 Modbus 从站中提供访问的数据的起始地址,可在 Modbus 功能表中找到有效地址为 4097,加上起始地址 40001,这里输入 44098。DATA_LEN:数据长度,本例设置 1 个字。DATA_PTR:该参数是指向用来写入或读取数据的数据块或位存储器的指针。本例将读取到的数值放到%MW200 中,录入格式为 P#M200.0 WORD 1。图 7-44 MB_MASTER 模块参数设置 1 3)读取智能湿度仪(地址为 2)实时湿度数值 右键点击已生成的“MB_MASTER”指令块,选择“复制”并在下一个程序段进行“粘贴”操作,保证其背景数据块一致。“MB_
8、MASTER”管脚参数设置如图 7-45 所示,参数含义如下:REQ:两个“MB_MASTER”指令之间采用交替方式,当温度值读取完成或出现错误时,开始读取湿度值;周期为 1s。MB_ADDR:输入 2;MODE:输入 0(读取);DATA_ADDR:输入 44098;DATA_LEN:数据长度设为 1;DATA_PTR:将读取到的数值放到%MW202 中,录入格式为 P#M202.0 WORD 1。图 7-45 MB_MASTER 模块参数设置 2 5.系统调试运行 5.系统调试运行 程序编写完成后,进行编译并下载到 PLC 中。在 PLC 的“监控与强制表”条目下,添加一个监控表,监控读取到的实时温度、湿度数值(为实际数值的 10 倍),如图 7-46;智能仪表面板显示窗口显示的实时温度、湿度值如图 7-47。图 7-46 PLC 在线获得的数据 图 7-47 智能仪表数据显示