正文内容
modbus通讯协议简介
来源:文库
作者:开心麻花
2025-09-19
1

modbus通讯协议简介(精选6篇)

modbus通讯协议简介 第1篇

MODBUS-RTU通讯协议简介

2008-10-10 17:27

1.1 Modbus协议简述

ACRXXXE系列仪表使用的是Modbus-RTU通讯协议,MODBUS协议详细定义了校验码、数据序列等,这些都是特定数据交换的必要内容。MODBUS协议在一根通讯线上使用主从应答式连接(半双工),这意味着在一根单独的通讯线上信号沿着相反的两个方向传输。首先,主计算机的信号寻址到一台唯一的终端设备(从机),然后,终端设备发出的应答信号以相反的方向传输给主机。

Modbus协议只允许在主机(PC,PLC等)和终端设备之间通讯,而不允许独立的终端设备之间的数据交换,这样各终端设备不会在它们初始化时占据通讯线路,而仅限于响应到达本机的查询信号。

1.2 查询—回应周期

1.2.1 查询

查询消息中的功能代码告之被选中的从设备要执行何种功能。数据段包含了从设备要执行功能的任何附加信息。例如功能代码03是要求从设备读保持寄存器并返回它们的内容。数据段必须包含要告之从设备的信息:从何寄存器开始读及要读的寄存器数量。错误检测域为从设备提供了一种验证消息内容是否正确的方法。

1.2.2 回应

如果从设备产生一正常的回应,在回应消息中的功能代码是在查询消息中的功能代码的回应。数据段包括了从设备收集的数据:如寄存器值或状态。如果有错误发生,功能代码将被修改以用于指出回应消息是错误的,同时数据段包含了描述此错误信息的代码。错误检测域允许主设备确认消息内容是否可用。

1.3 传输方式

传输方式是指一个数据帧内一系列独立的数据结构以及用于传输数据的有限规则,下面定义了与Modbus 协议– RTU方式相兼容的传输方式。

每个字节的位:

·1个起始位

·8个数据位,最小的有效位先发送

·无奇偶校验位

·1个停止位

错误检测(Error checking):CRC(循环冗余校验)

1.4 协议

当数据帧到达终端设备时,它通过一个简单的“端口”进入被寻址到的设备,该设备去掉数据帧的“信封”(数据头),读取数据,如果没有错误,就执行数据所请求的任务,然后,它将自己生成的数据加入到取得的“信封”中,把数据帧返回给发送者。返回的响应数据中包含了以下内容:终端从机地址(Address)、被执行了的命令(Function)、执行命令生成的被请求数据(Data)和一个校验码(Check)。发生任何错误都不会有成功的响应,或者返回一个错误指示帧。

1.4.1 数据帧格式

AddressFunctionDataCheck

8-Bits8-BitsN x 8-Bits16-Bits

1.4.2 地址(Address)域

地址域在帧的开始部分,由一个字节(8位二进制码)组成,十进制为0~255,在我们的系统中只使用1~247,其它地址保留。这些位标明了用户指定的终端设备的地址,该设备将接收来自与之相连的主机数据。每个终端设备的地址必须是唯一的,仅仅被寻址到的终端会响应包含了该地址的查询。当终端发送回一个响应,响应中的从机地址数据便告诉了主机哪台终端正与之进行通信。

1.4.3 功能(Function)域

功能域代码告诉了被寻址到的终端执行何种功能。下表列出了该系列仪表用到的功能码,以及它们的意义和功能。

代码意义行为

03读数据寄存器获得一个或多个寄存器的当前二进制值

16预置多寄存器设定二进制值到一系列多寄存器中(不对 ACRXXXE开放)

1.4.4 数据(Data)域

数据域包含了终端执行特定功能所需要的数据或者终端响应查询时采集到的数据。这些数据的内容可能是数值、参考地址或者设置值。例如:功能域码告诉终端读取一个寄存器,数据域则需要指明从哪个寄存器开始及读取多少个数据,内嵌的地址和数据依照类型和从机之间的不同内容而有所不同。

1.4.5 错误校验(Check)域

该域允许主机和终端检查传输过程中的错误。有时,由于电噪声和其它干扰,一组数据在从一个设备传输到另一个设备时在线路上可能会发生一些改变,出错校验能够保证主机或者终端不去响应那些传输过程中发生了改变的数据,这就提高了系统的安全性和效率,错误校验使用了16位循环冗余的方法(CRC16)。

1.5 错误检测的方法

错误校验(CRC)域占用两个字节,包含了一个16位的二进制值。CRC值由传输设备计算出来,然后附加到数据帧上,接收设备在接收数据时重新计算CRC值,然后与接收到的CRC域中的值进行比较,如果这两个值不相等,就发生了错误。CRC运算时,首先将一个16位的寄存器预置为全1,然后连续把数据帧中的每个字节中的8位与该寄存器的当前值进行运算,仅仅每个字节的8个数据位参与生成CRC,起始位和终止位以及可能使用的奇偶位都不影响CRC。在生成CRC时,每个字节的8位与寄存器中的内容进行异或,然后将结果向低位移位,高位则用“0”补充,最低位(LSB)移出并检测,如果是1,该寄存器就与一个预设的固定值(0A001H)进行一次异或运算,如果最低位为0,不作任何处理。

上述处理重复进行,直到执行完了8次移位操作,当最后一位(第8位)移完以后,下一个8位字节与寄存器的当前值进行异或运算,同样进行上述的另一个8次移位异或操作,当数据帧中的所有字节都作了处理,生成的最终值就是CRC值。

生成一个CRC的流程为:

1预置一个16位寄存器为0FFFFH(全1),称之为CRC寄存器。

2把数据帧中的第一个字节的8位与CRC寄存器中的低字节进行异或运算,结果存回CRC寄存器。

3将CRC寄存器向右移一位,最高位填以0,最低位移出并检测。

4如果最低位为0:重复第三步(下一次移位);如果最低位为1:将CRC寄存器与一个预设的固定值(0A001H)进行异或运算。

5重复第三步和第四步直到8次移位。这样处理完了一个完整的八位。

6重复第2步到第5步来处理下一个八位,直到所有的字节处理结束。7最终CRC寄存器的值就是CRC的值。

modbus通讯协议简介 第2篇

doc文档可能在WAP端浏览体验不佳。建议您优先选择TXT,或下载源文件到本机查看。VCD1000 系列矢量型变频器使用说明书

9.1 通讯概述

本公司系列变频器向用户提供工业控制中通用的 RS485 通讯接口。通讯协 议采用 MODBUS 标准通讯协议,该变频器可以作为从机与具有相同通讯接口并采 用相同通讯协议的上位机(如 PLC 控制器、PC 机)通讯,实现对变频器的集中 监控,另外用户也可以使用一台变频器作为主机,通过 RS485 接口连接数台本 公司的变频器作为从机。以实现变频器的多机联动。通过该通讯口也可以接远 控键盘。实现用户对变频器的远程操作。本变频器的 MODBUS 通讯协议支持两种传送方式:RTU 方式和 ASCII 方式,用 户可以根据情况选择其中的一种方式通讯。下文是该变频器通讯协议的详细说 明。

9.2 通讯协议说明

9.2.1 通讯组网方式(1)变频器作为从机组网方式: 变频器作为从机组网方式:主机为 PC RS232 232-485 转 换模块 RS485 或 主机为 PLC 主机为 PC RS232 232-485 转换 模块 RS485 HD1000 HD1000

HD1000

HD1000

HD1000

单主机多从机

单主机单从机

图 9-1 从机组网方式示意图 -

(2)多机联动组网方式: 多机联动组网方式:

07-

VCD1000 系列矢量型变频器使用说明书

主机 HD1000 RS485

从机 HD1000

从机 HD1000

从机 HD1000

从机 HD1000

图 9-2 多机联动组网示意图 -

9.2.2 通信协议方式 该变频器在 RS485 网络中既可以作为主机使用,也可以作为从机使用,作 为主机使用时,可以控制其它本公司变频器,实现多级联动,作为从机时,PC 机或 PLC 可以作为主机控制变频器工作。具体通讯方式如下:(1)变频器为从机,主从式点对点通信。主机使用广播地址发送命令时,从机不应答。(2)变频器作为主机,使用广播地址发送命令到从机,从机不应答。(3)用户可以通过用键盘或串行通信方式设置变频器的本机地址、波特率、数据格式。(4)从机在最近一次对主机轮询的应答帧中上报当前故障信息。9.2.3 通讯接口方式 通讯为 RS485 接口,异步串行,半双工传输。默认通讯协议方式采用 ASCII 方式。默认数据格式为:1 位起始位,7 位数据位,2 位停止位。默认速率为 9600bps,通讯参数设置参见 P3.09~P3.12 功能码。

9.3 ASCII 通讯协议 字符结构: 字符结构:位字符框(For ASCII)

(1-7-2 格式,无校验)

起 始 位 停 止 位 停 止 位

(1-7-1格式,奇校验)

08-

VCD1000 系列矢量型变频器使用说明书

起始 位

奇偶 位

停止 位

(1-7-1格式,偶校验)

起始 位

奇偶 位

停止 位

11位字符框(For RTU)

(1-8-2格式,无校验)

(1-8-1格式,奇校验)

(1-8-1格式,偶校验)

通讯资料结构: ASCII模式

桢头 Address Hi Address Lo Function Hi Function Lo DATA(n-1)„„„„„ DATA 0 LRC CHK Hi LRC CHK Lo END Hi END Lo 起始字符=“:(3AH)” 通讯地址: 8位地址由2个ASCII码组合 功能码: 8位地址由2个ASCII码组合 资料内容: n*8位资料内容由 2* n 个ASCII码组合,高位在前,低位在后,n<=4,最大8个ASCII码 LRC 校验码: 8位校验码由2个ASCII码组合。结束字符: END Hi = CR(0DH), END Lo = CR(0AH)-109-

VCD1000 系列矢量型变频器使用说明书 RTU模式: START Address Function DATA(n-

1)„„„„„ DATA 0 CRC CHK Low CRC CHK High END 通讯地址: 00H:所有变频器广播

(broadcast)01H:对01地址变频器通讯。0FH:对15地址变频器通讯。10H:对16地址变频器通讯。以此类推„„„.,最大可到254(FEH)。功能码(Function)与资料内容(DATA): 03H:读出寄存器内容。06H:写入一笔资料到寄存器。08H:回路侦测。功能码03H:读出一个寄存器内容: 例如:读出寄存器地址2104H内容(输出电流): ASCII模式: 询问信息字符串格式 桢头 地址 “: ”3AH “0”30H “1”31H 功能码 “0”30H 功能码 回应信息字符串格式 桢头 地址 “: ”3AH “0”30H “1”31H “0”30H CRC校验码 16-bit CRC校验码由2个8-bit 二进制组合 保持无出入信号大于等于10ms 保持无输入信号大于等于10ms 通讯地址:8-bit 二进制地址 功能码:8-bit 二进制地址 资料内容: N*8-bit 资料,N<=8,最大8个字节

VCD1000 系列矢量型变频器使用说明书

“3”33H 内容 “2”32H “1”31H “0”30H “4”34H 2104H地址内容 内容

“3”33H “2”32H “1”31H “0”30H “4”34H “0”30H “0”30H “0”30H “0”30H

LRC CHECK

“D” 44H “7” 37H

LRC CHECK

“D” 44H “7” 37H

END

CR 0DH LF 0AH

END

CR 0DH LF 0AH

RTU模式: 询问信息格式 地址 功能码 内容 01H 03H 21H 04H 回应信息格式 地址 功能码 内容 01H 03H 21H 04H 00H 00H CRC CHECK Low CRC CHECK High E8H 4BH CRC CHECK Low CRC CHECK High 0EH 37H

功能码06H:写入一笔资料到寄存器。例如:对变频器地址01H,写P0.02=50.00HZ功能码。ASCII模式: 询问信息字符串格式 回应信息字符串格式

VCD1000 系列矢量型变频器使用说明书

桢头 地址

“: ”3AH “0”30H “1”31H

桢头 地址

“: ”3AH “0”30H “1”31H

功能码

“0”30H “6”36H

功能码

“0”30H “6”36H

内容

“0”30H “0”30H “0”30H “2”32H “1”31H “3”33H “8”38H “8”38H内容

“0”30H “0”30H “0”30H “2”32H

2104H地址内容

“1”31H “3”33H “8”38H “8”38H

LRC CHECK

“5” 35H “C” 43H

LRC CHECK

“5” 35H “C” 43H

END

CR 0DH LF 0AH

END

CR 0DH LF 0AH

RTU模式: 询问信息格式 地址 功能码 内容 00H 06H 00H 02H 13H 88H CRC CHECK Low CRC CHECK High 25H 5CH CRC CHECK Low CRC CHECK High 回应信息格式 地址 功能码 内容 01H 06H 00H 02H 13H 88H 25H 5CH

VCD1000 系列矢量型变频器使用说明书

命令码:08H通讯回路测试 此命令用来测试主控设备与变频器之间通讯是否正常。变频器将收到的资料原封不动送给主控设备。

询问信息字符串格式 桢头 地址 “: ”3AH “0”30H “1”31H 功能码 “0”30H “8”38H 内容 “0”30H “1”31H “0”30H “2”32H “0”30H “3”33H “0”30H “4”34H LRC CHECK “E” 45H “D” 44H END CR 0DH LF 0AH RTU模式: 询问信息格式 地址 功能码 内容 01H 08H 01H 02H

回应信息字符串格式 桢头 地址 “: ”3AH “0”30H “1”31H 功能码 “0”30H “8”38H 内容 “0”30H “1”31H “0”30H “2”32H 2104H地址内容 “0”30H “3”33H “0”30H “4”34H LRC CHECK “E” 45H “D” 44H END CR 0DH LF 0AH

回应信息格式 地址 功能码 内容 01H 08H 01H 02H

VCD1000 系列矢量型变频器使用说明书

03H 04H CRC CHECK Low CRC CHECK High 41H 04H CRC CHECK Low CRC CHECK High03H 04H 41H 04H

校验码: 校验码: ASCII 模式:双字节 ASCII 码。计算方法:对于消息发送端,LRC的计算方法是将要发送消息中“从机地址”到“运行数 据”没有转换成ASCII码的全部字节连续累加,结果丢弃进位,得到的8位字节按位取反,后 再加1(转换为补码),最后转换成ASCII码,放入校验区,高字节在前,低字节在后。对于 消息接收端,采取同样的LRC方法计算接收到消息的校验和,与实际接收到的校验和进行比较,如果相等,则接收消息正确。如果不相等,则接收消息错误。如果校验错误,则丢弃该消息 帧,并不作任何回应,继续接收下一帧数据。RTU 模式:双字节 16 进制数。CRC 域是两个字节,包含一 16 位的二进制值。它由发送端计算后加入到消息中;添加时 先是低字节,然后是高字节,故 CRC 的高位字节是发送消息的最后一个字节。接收设备重新计 算收到消息的 CRC,并与接收到的 CRC 域中的值比较,如果两值不同则接收消息有错误,丢 弃该消息帧,并不作任何回应,继续接收下一帧数据。CRC 校验计算方法具体参考 MODBUS 协议 说明。

通讯协议参数定义:

定义 内部设定参数 参数地址 GGnnH 功能说明 GG代表参数群,nn代表参数号码。对变频器命令(06H)

2000H

0001H:运行命令 0002H:正转运行命令 0003H:反转运行命令 0004H:点动运行命令 0005H:点动正转运行命令 0006H:点动反转运行命令 0007H:减速停机命令 0008H:紧急停车命令 0009H:点动停机命令 000AH:故障复位命令

2001H

串口设置频率命令

VCD1000 系列矢量型变频器使用说明书

监控变频器状态(03H)

2100H 2101H

读变频器故障码。读变频器状态 BIT0:运行停止标志,0:停止;1:运行 BIT1:欠压标志,1:欠压;0:正常。BIT2:正反转标志,1:反转;0:正转。BIT3:点动运行标志,1:点动;0:非点动。BIT4:闭环运行控制选择,1:闭环;0:非闭环。BIT5:摆频模式运行标志,1:摆频;0:非摆频。BIT6:PLC运行标志,1:PLC运行,0:非PLC运行。BIT7:端子多段速运行标志,1:多段速;0:非。BIT8:普通运行标志,1:普通运行;0:非。BIT9:主频率来源自通讯界面,1:是;0:否。BIT10:主频率来源自模拟量输入,1:是;0:否。BIT11:运行指令来源自通讯界面,1:是;0:否。BIT12:功能参数密码保护,1:是;0:否。2102H 2103H 2104H 2105H 2106H 2107H 2108H 2109H 210AH 210BH 读功能码数据(03H)GGnnH(GG:功能码组号。nn :功能码号)

读变频器设定频率。读变频器输出频率。读变频器输出电流。读变频器母线电压。读变频器输出电压。读电机转速。读模块温度。读VI模拟输入。读CI模拟输入。读变频器软件版本。变频器回应功能码数据。

VCD1000 系列矢量型变频器使用说明书

读功能码数据(06H)

GGnnH(GG:功能码组号。nn :功能码号。)

写入变频器的功能码数据。

modbus通讯协议简介 第3篇

关键词:Modbus,通讯集成,S7-200,集散控制系统,MCGS

0 引言

在工业控制领域,不同厂家生产的智能仪表与控制系统常采用不同的PLC与DCS。若要实现各系统间的综合监视与控制,其通讯集成技术是首先需要解决的关键问题。若自行开发通讯集成技术,不仅需要投资购买硬件方面的各种总线协议网关设备,还需要解决软件方面的OPC软总线技术等问题。出于工业控制成本的考虑以及系统集成领域的发展需要,选择不同系统共同支持的主流工业标准协议进行集成是解决异构系统之间通讯集成的有效方法。本文主要探讨了基于Modbus-RTU协议的PLC200与恒压供水控制器、智能仪表之间的通讯集成,并结合实际工程应用给出了可行的解决方案。

1 Modbus通讯协议

Modbus通讯协议是1979年由Modicon公司开发的常用于工业领域的串口通讯协议之一。该协议支持传统的RS-232、RS-422、RS-485,大多数工业设备(PLC、DCS和智能仪表等)都使用Modbus协议作为其通讯标准。

Modbus的数据传输可分为两种模式:ASCII(美国信息交换码)模式和RTU(远程终端设备)模式。ASCII模式下和RTU模式下的消息帧如表1所示。

在Modbus标准协议中,定义了16种不同的功能码,而每个功能码分别具有相应的不同功能。在STEP 7-MicroWin指令库中只用到了03、06、16三个功能码,如表2所示。STEP 7-MicroWin指令库包含有专门为Modbus通讯设计的预先定义的子程序和中断服务程序,使得S7-200PLC与其他Modbus设备的通讯简单易行。使用Modbus主站协议指令,可以实现以S7-200PLC充当的Modbus RTU主站与DCS、智能仪表从站之间的通讯。

指令库中指令MBUS_CTRL可以对主站进行初始化操作,从站请求读写指令MBUS_MSG指令可对应Modbus规约下的功能03和16,即RW为0时对应功能码03,RW为1时对应功能码16。S7-200Modbus主站通过读取从站寄存器便可以读取变频器的相关数据,通过写数据到从站的相应寄存器便可达到控制变频器的启停以及工作频率的目的。若需要对寄存器进行单寄存器写入,此时可通过对PLC200的V存储区内V251.0置1,使得功能码16强制用于单寄存器写入即可。据此可以完成对现场智能仪表的参数设置与访问。

2 Modbus协议在工业上的应用

2.1 通讯集成工程案例

某工业现场的供水系统由3套独立的控制系统组成,每套系统独立进行供水,每套控制系统分别由一台恒压供水控制器(CPS-21C)、变频器、水泵组、液体流量计等组成。现要求对整个供水状况进行集中监控。基于以上情况,必须解决恒压供水控制器(CPS-21C)之间的通讯,这里选用S7-200PLC作为数据采集主站与恒压供水控制器进行通讯,系统结构如图1所示。

2.2 基于Modbus_RTU的通讯集成解决方案

此综合监控系统将一台S7-200PLC设置为Modbus主站,对3台环境水泵、液体流量计等仪表设备的状态数据进行采集和控制,3台恒压供水控制器及液体流量计则作为Modbus从站挂接到Modbus总线上,如图1所示。S7-200PLC控制器上的Port0端口(RS485串行通讯口)与恒压供水控制器(CPS-21C)的485+/485-端口连接。

采用工业组态软件通用版MCGS作为上位机与西门子S7-200PLC实现PPI通讯,另外,通用版组态软件与嵌入式一体化触摸屏TCP7062KX通过Modbus实现串口数据转发,实现数据的交互通讯,设备配置见图2和图3,参数设置见表3。

经过必要组态后,通用版MCGS软件的实时数据库可以与3个嵌入式触摸屏中相对应的数据实现交互,实现了工业现场的总体监控和分布式监控。S7-200Modbus主站通过读取从站中的相应寄存器便可以获得如管网压力、变频器工作频率、管网瞬时/累计流量等数据,同样也可以写数据到从站寄存器修改相应的控制参数。系统的总体通讯见图4。

2.3 S7-200主站程序编写

S7-200Modbus主站通讯程序在通讯编程过程中处于核心地位,在S7-200的主程序(OB1)中主要完成:(1)主站通讯端口的初始化;(2)主站通过轮询与中断的方法实现对多从站数据的读写操作。

S7-200 Modbus主站读写恒压供水控制器中管网压力数据的信息针,见表4和表5。

通过采用以上信息帧,S7-200 Modbus作为主站读恒压供水控制器中压力值所在寄存器的数据,换算后的值经对比与管网上的压力表显示值一样。使用S7-200PLC Modbus库指令,通信将变得简单易行。

3 结束语

本文采用Modbus-RTU协议实现了PLC与恒压供水控制器之间的通讯,通过采用S7-200PLC Modbus指令库大大缩短了整个系统的开发周期,提高了系统的稳定性。工业案例表明采用Modbus实现设备之间的数据通讯,降低了现场的连接工作量和费用,方便现场布线,从而提高了系统的可靠性及灵活性。

参考文献

[1]史运涛,孙德辉,李志军,等.基于Modbus协议的通讯集成技术研究[J].化工自动化及仪表,2010,37(4):67-72.

modbus通讯协议简介 第4篇

关键词: DCS    PLC    组态    操作画面    方案

1.引言

氮氧化物气体是危害最大,最难处理的大气污染物之一。据统计,我国大气污染物中NOX60%来自于煤的燃烧,其中,火电厂发电用煤又占了全国燃煤的70%。2000年我国火电厂氮氧化物排放量控制在500万吨左右,按照目前排放控制水平,到2020年,氮氧化物排放量将达到1000万吨以上[1]。面对严峻的环保形势,为响应国家号召,我们可以在发电机组改造过程中增设脱硝控制设备,有效降低燃煤造成的大气污染。

2.MODBUS协议

MODBUS协议是应用于电子控制器上的一种通用语言。通过此协议,控制器相互之间、控制器经由网络和其他设备之间可以通信。已经成为通用工业标准。有了它,不同厂商生产的控制设备可以连成工业网络,进行集中监控。MODBUS的帧格式简单、紧凑,并支持多种电气接口,如RS-232、RS-485等,还可以在各种介质上传送,如双绞线、光纤、无线等。

电厂脱硝系统主逻辑由PLC控制,相关联锁、计算及调节逻辑均由PLC执行;为了运行人员操作方便,实现一体化控制,脱硝画面监视和操作功能由DCS实现。PLC代替DCS对脱硝系统进行数据采集与控制,但信息要与DCS共享,并由DCS操作站实现对PLC的监控。该PLC系统支持MODBUS RTU协议,故决定采用MODBUS协议通讯的数字通讯方式,实现两系统的互联。目前改造后系统运行效果良好。

3.硬件连接和地址设置

MODBUS通讯协议适用于RS-232和RS-485标准接口,在实际运用中可根据现场情况选定用哪一种。RS-232只能实现一对一的连接,传输速率局限于20Kbps,并且存在共地噪声和不能抑制共模干扰等问题,一般传输距离只有20KM左右;RS-485最多可驱动32台设备,传输距离在100Kbps时可达1200m。但是RS-232也有其优点:能做到收发同时进行,效率比RS485高,且与PC机和其他通讯端口兼容性好[2]-[3]。

由于该改造项目PLC与DCS需要长距离传输信号,因此采用RS-485,双向传输,在DCS端使用MOXA转换器将RS-485转换成RS-232信号。RS-485接口处采用两线制,对方DATA+接至MOXA的DATA+,即对方DATA-接至MOXA的DATA-号。图2为MOXA转换器的接线示意图。

图1    MOXA交换器接线图

然后通过通讯电缆将RS232上的9针串口转换NTMP端子板上的25针串口,再由一根KTU电缆连接至MFP12主模件。NTMP端子板跳线如下图2。

图2    NTPM01端子板布置图

使用该端子板下方单侧接口通讯。即P6口接RS232电缆25针串口,P1口接KTU电缆连接至主模件。J1跳线见下图3。

图3    NTPM01端子板J1跳线图

J3、J8、J9、J10跳线见下图4。

图4    NTPM01端子板J3、J9、J8、J10跳线图

J11为空,无需跳线。J14、J15、J18跳线如下图5:

图5    NTPM01端子板J14、J15、J18跳线图

当然,如果PLC设备与DCS设备之间距离不超过20m,就不需要采用RS485连接。因为经过RS485/RS232转换器,会占用一定的转换时间。有些时候,还会造成或多或少的通讯冲突,甚至通讯中断。

4.MODBU通讯一般要求

PLC组态编写完成后,应整理用于通讯的设备信息及地址,通讯信息分配点表。

PLC侧设备信息包括:(1)串行口设置(DCE或者DTE设置)。(2)通讯波特率。(3)数据位数和停止位数。(4)接口的针脚。(5)奇偶校验。(6)握手信号设置等。

每个通讯的信息点均要设置其在PLC和DCS的存储位置及其他相关参数,即通讯信息分配点表,点表中应包括以下内容:(1)信号类型,包括Analog/Digital/SpecialAnalog。(2)信号名称。3、信号的英文描述。(4)信号传输的方向,DCS→PLC或者PLC→DCS。(5)存储地址。(6)信号传输的缩放比例。(7)信号的偏置设定。(8)扫描时间。我們使用KWIKEDIT软件写入点表,再通过DOS命令下装至MFP主模件中。

注意:通讯信息点表中地址参数应该与实际地址一致,在下装前应先进行检查核对,否则会造成通讯错位甚至中断。(通讯信息整理见附件)

5.建立通讯中应注意的问题

(1)不要带电插拔串口,否则串口易损坏。

(2)调试时使用测试软件进行调试,如MODSCAN软件,可不经过NTMP端子板和模件,直接扫描RS232串口数据是否正常,达到事半功倍的效果。

(3)在下装组态通讯及点表之前,必须先下装NBS文件,为通讯模件进行编码。否则在组态下装之后,主模件会出现C程序故障报警。

(4)DCS组态中有一页专用设置通讯配置参数,即标准参数页,其功能码的块号一般使用3000至3999。其余主逻辑中的功能码不能使用这个区间的块号,否则会造成通讯异常。

6.OIS操作画面

画面是供运行人员监视及操作的媒介,应做到符合现场实际,合理布置。我们将脱硝系统分为两个画面显示:系统和操作画面,数据显示画面。

系统操作画面——3SCR,包含脱硝系统主要设备的运行状态、重要数据显示、故障报警,以及每个蒸汽吹灰器和声波吹灰器的显示和操作。(如图6)

图6    SCR主操作画面

数据显示画面——3SCRDATA,主要包含A/B反应器内每层的参数,反应效率。蒸汽吹灰和声波吹灰的参数和状态。(如图7)

图7    SCR数据监视画面

当然,所有画面显示和操作都必须在PLC与DCS通讯正常时才有效。为了脱硝设备安全可靠运行,可以在机组EWS安置一台PLC上位机,其画面与OIS画面类似,以便通讯故障时运行人员应急使用。

7.结语

火力发电厂实施脱硝工程能有效减少NOX的排放,改善大气环境。目前机组脱硝设备正常运行,脱硝控制器通讯状况良好,运行人员操作界面清晰方便,为今后PLC与DCS通讯,集中控制远方可编程控制器提供有效的借鉴意义。

参考文献:

[1]杜雅丽.选择性催化还原法脱硝控制系统论述.山西电力,2009.4.

[2]史运涛.基于Modbus协议的通讯集成技术研究.化工自动化及仪表,2010.4.

modbus通讯协议简介 第5篇

一、串行通信基础知识

不论做哪个系统,做哪种异构系统通信,一些基础知识是必须掌握的,象系统运算使用的数据类型、I/O点使用的位号种类等。

1、ECS-700的控制器运算数据类型如下: BOOL 8 bit ON,OFF SINT 8 bit-128~127 USINT 8 bit 0~255 INT 16 bit-32768~32767 UINT 16 bit 0~65535 DINT 32 bit-2147483648~2147483647 UDINT 32 bit 0~4294967296 REAL 32 bit 浮点值

2、ECS-700的I/O位号种类如下: AI 模拟量输入 AO 模拟量输出 DI 开关量输入 DO 开关量输入 NA 自定义模拟量 ND 自定义开关量 NN 自定义整型量 PA 页间交换模拟量 PD 页间交换开关量 PN 页间交换整型量

ECS-700中模拟量数据全部浮点处理,开关量数据全部为一字节布尔型处理。

3、ModBus 功能码

01 READ COIL STATUS(读线圈状态)02 READ INPUT STATUS(读输入状态)

03 READ HOLDING REGISTER(读保持寄存器)04 READ INPUT REGISTER(读输入寄存器)05 WRITE SINGLE COIL(写单个线圈)06 WRITE SINGLE REGISTER(写输入)15 WRITE MULTIPLE COIL(写多个线圈)WRITE MULTIPLE REGISTER(写输入寄存器)

4、Modbus 功能与数据类型对应表

MODBUS协议的一个输入寄存器或保持寄存器地址占两个字节即16位。

二、ECS-700系统串口通信基本知识

1、通信实施要点

MODBUS协议规定,一条MODBUS命令最多可以返回255个字节的数据,即最多可以支持255*8=2040个开关量或254/2=127个2字节模拟量或相应数量的其它类型数据。

ECS-700的FCU711-S控制器最多支持最大IO点数2000个点(含通信位号),其中AI最大1000个点,AO最大500个点,DI最大2000点,DO最大1000点。

COM741-S模块所带的每一个设备,具有512个字节的输入数据区和256个字节的输出数据区,即用户设置的同一设备下最多能读入512个字节的输入数据及256个字节的输出数据。

所以在进行大数据量通信时,需考虑以上三条限制。

说明:ECS-700的通信模块系统架构区别于原ECS-100系统,通信模块作为主控制器下的一个节点,逻辑上等同于I/O连接模块,通信后扫描添加的位号(通信位号)同主控制器下的常规I/O位号在上位机的处理完全相同。这们虽然避免了ECS-100系统那样需要通过站间通信进行控制数据处理,但另一方面又占用了控制器的系统资源。

2、ECS-700串口通信基本组态操作(以MODBUS协议,通信模块作主站为例)1)硬件安装及设置

串行通信模块COM741-S,配套基座有MB725-S(非冗余型)与MB726-S(冗余型)两种。

模块免跳线,RS485与RS232通信方式跳线在通信基座上设置,每个模块4个串口可分别设置。模块冗余工作方式有“一对一”、“一对二”(仅V10.20.00以上版本COM741-S模块才支持“一对二”冗余方式,配合使用的VisualFieldV3.1+SP1软件版本才开放“一对二”功能)两种。

“一对一”即一个智能设备提供一对冗余的、可同时工作的串口,两块互为冗余的COM741-S模块安装在同一块基座MB726-S上,相同串口号的串口分别智能设备冗余的两个串口相连,并可同时通信,工作/备用模块之间通过冗余通信交互信息,并由工作模块与控制器进行通信。这种冗余模式下物理连接冗余、串 口通讯冗余、模块冗余,极大地提高了系统的可靠性。

“一对二”模式下,智能设备的一个串口连接COM741-S的两个串口。此时智能设备不提供冗余串口,相同串口号的串口同时与智能设备提供的同一个串口相连,一个时间只有一侧模块的串口驱动串行总线工作,另一侧对应的串口做热备冗余。工作/备用模块之间通过冗余通讯交互信息,并由工作模块与控制器进行通信。此冗余模式下模块冗余,提高了系统的可靠性。

综上所述,“对”前边的“一”指对方设备的一个串口,“对”后面的“二” 指我方两个串行通信模块的两个串口。

如有多个智能设备通信时,要注意通信模块性参数限制,一个串口最多可接入32个智能设备,一个模块四个串口最多可接入64个智能设备。

由于通信模块在逻辑上相当于一个I/O连接模块,因此一对主控制器下最多只能带7个COM741-S模块(同I/O连接模块、PROFIBUS主站通信模块、FF通信模块混合计算),任务主控制器下的一个E-BUS节点,其地址在基座上设置。

2)通信组态流程

A.控制器下添加通信模块并设置冗余方式。B.打开串口通信组态软件。C.设置串口参数。

D.添加设备及设置设备参数。

E.添加MODBUS命令及设置MODBUS命令参数。3)位号扫描与修改

在位号表中可能过“扫描通道位号”自动添加位号,对自动添加的位号可以进行修改,也可能手动添加位号。添加的位号在位号表中自动注释为通信位号,延续在常规I/O位号后,在组态中使用同常规I/O位号完全相同。

三、ECS-700系统串行通信的具体实施与问题

以丰喜4#气化炉ECS-700系统与黑马ESD系统通讯为例说明

项目简况:本项目配置我公司ECS-700系统一套,软件版本VisualFieldV3.10.02.01-100630-M,配置COM741-S模块两块,冗余型通信模块基座MB726-S一个;黑马ESD系统一套,配套HIMA ELOP II软件。ESD系统只设置工程师站,提供SOE记录,全部上位机监控画面,在DCS侧经通信连接后组态完成。

1、硬件连接与设置

DCS在本地节点2#机架第一个基座位置安装冗余型通信模块基座MB726-S一个,设置节点地址为2;安装两块COM741-S模块。

黑马ESD系统配置两块冗余的通信卡,每块通信卡上有两个同时工作串口,预留一个串口备用。ESD配置了冗余通信电缆,电缆为6芯屏蔽,每3芯连接一块通信卡的一个串口,在每个串口的接口下通信电缆线端增加有冗余信号处理电路,送DCS端两个串口的三芯缆一一对应成对绞在一起,即合为一个串口连接线。COM741-S侧接线时,地线可以不接,对绞的DATA+、DATA-分别接于左侧通信模块对应接线端子2、1,然后把左右侧对应的1、2端子用电缆跨接。

2、通信组态

1)添加通信模块及设置冗余

2)打开串口通信组态软件

对新增的通信模块点右键,选通信组态。

3)设置串口通信参数

在通信组态中选中使用的串口,进行参数设置:

目前通信模块版本支持MODBUS标准协议主站及自定义协议主站,早期 COM741-S模块不支持自定义协议。

4)添加设备及设置设备参数

设备参数中实际地址即智能设备的地址(即从站地址);而地址则是参数在位号组态软件中执行位号扫描时,作为位号地址的一部分,帮助区分各个位号,与通讯协议中的地址无关(在老版本的VF软件中无实际地址这个参数,只有地址这个参数,它即表示智能设备的实际拨码地址)。

响应时间,即设备响应命令的超时时间,单位ms。设置为0时,通信模块内部在(0-200)ms内自动调整。串行通信模块发送命令给智能设备后,某些设备并不会立刻回应,而是等待一定时间后才回应。设置这个响应时间的目的,则是为了通信模块通过实际响应时间与其比较进而判断通信成功或超时。一般情况下,可设置为0,让通信模块自行修正。

间隔时间(ms),表示两条命令之间需要插入的等待时间。一些智能设备不允许在执行完一条命令后紧接着执行下一条命令,需要等待一段时间后才能响应。一般情况下,可设置为0,让通信模块在(0-10)ms之间处动修正。如设置时间太长则使得命令执行周期加大。

5)添加MODBUS命令及设置MODBUD命令参数

项目第一条读保持寄存器命令,即读取起始地址为1001的连续30个保持寄存器。

第二条写保持寄存器命令,意义为写从起始地址1031开始的连续20个保持寄存器数据。

命令执行周期表示该命令是否被周期执行以及执行周期是多长。只有周期地执行通信命令,才能将智能设备中的数据读入到通信模块或将通信模块数据写到智能设备。当执行周期等于0时,表示该命令不是周期命令,只会在组态启动时执行一次。所以,对读命令一般要设置为与控制器的控制周期相同。

对于写智能设备的命令来说,有两种触发方式:一是数据变化才写,二是定时写。设置为有变化才写的,将执行周期设置为0;设置为定时写方式,执行周期则为定时时间,但当发现需要下写的数据有更新时,串行通信模块仍会立即执行该条写命令。通信模块启动时,自动被认为数据没有变化,避免在启动时将不需要的数据写到智能设备中。所以,对写命令,一般配置为有变化才写,即设置执行周期为0。

3、本次通信实施中出现的硬件及软件问题 1)COM741-S通信模块版本问题

本项目发货模块固化程序版本为1.0,对冗余的支持性较差且不支持某冗余方式,下载与通讯状态不稳定。

在联系工程技术部后,根据研发提供的通信模块固化程序升级软件对COM741-S进行现场升级,升级为2.1版本后,通讯正常。

2)下载信息有错误

在下载过程中,一对主控制器会经常出现工作主控制器对COM741-S下载成功,而备用主控制器对COM741-S下载超时,下载失败的信息提示。

对于此问题,研发回复,属信息报警错误,实际已经下载成功,不影响使用。3)数据类型转换精度问题

由于该项目的ESD侧的顺控及大联锁逻辑中大量的变量需通过通信方式,由DCS写入到ESD,主要为开关量。

由于ESD-700系统内暂无置位函数,项目组初期实施方式为把16个开关量变量,按从低位到高位的顺序经过选择函数及位与运算的转换为16个对应位外其它15位均为0的整数,再通过位或运算将这16个整数合为一个浮点数送出写入到ESD的保持寄存器,要ESD解析后加入程控逻辑。

写命令组态前,对于读命令,同样ESD侧采到置位的方式把16个开关量合入一个寄存器地址,在DCS侧经读取保持寄存器后解析数据取位,经测试全部正常。

但写命令调试中,发现DCS把合并好的浮点数据写入ESD时,在DCS程序调试窗口看到的数据正常,但写入到智能设备使有一部分数据出现错误:比如通过 修改位置浮点数为384写过去便是383,同样2432写过去是2431等等,出现这们的精度差,对于使用开关量数据的通信来说是绝对不能使用的。

经咨询研发,暂无解决方案。最后的处理方法,只能是每8个开关量合为一个模拟量,即一个寄存器的高8位置0不用。量程范围为0-255,经测试,256个状态全部写出正常。

4)不能对同一寄存器同时进行读与写的操作

为了随时检测写命令是否被正常执行,增加了写命令的回读校验程序。其先,对写命令的这部分MODBUS寄存器进行读,然后通过写状态与读状态在一定时间内的比较判断是否写入。调试中发现,经常会有不能写入的现象发生。经分析,如对同一寄存器进行读写操作,如读指令与写指令不在同一时刻则读写成功;如时间上指令发生冲突则写指令执行失败。

处理方案:由ESD重新分配与写指令所指寄存器相同数量的寄存器与写指令寄存器一一对应,专用于回读。经修改后,写指令顺利执行。

5)用户功能块的嵌套问题 为了校验读写指令时,具体方案为读写状态相同时计时器清零,最终写指令输出为写状态,读写状态不同持续2秒后,用读指令对写指令进行复位。这样一个逻辑算法用户功能块,经对一个读写指令校验,使用正常。计划把8个数据放在一个用户功能块进行处理,结果在另一个用户功能块对它进行嵌套后经调试不能使用。

modbus通讯协议简介 第6篇

在现代控制工程中, 仪表与控制系统之间的通讯标准差别很大, 在工厂中, 不同的工艺设备的仪表与控制系统采用不同厂家的PLC与DCS, 要实现全厂的综合监视与控制具有很大的困难。各种异构系统的通讯集成技术是解决问题的关键技术。目前, 解决通讯集成的方法也有多种, 硬件方面主要是采用能够实现不同协议转换的网关技术, 如西门子、ABB、德国的赫优讯、瑞典的HMS, 以及国内的研华等公司都开发出各种总线协议的网关设备[1];在软件方面也提出了软总线OPC技术等解决方案。所有的这些通讯集成技术都要追加硬软件投资, 成本较高, 选择不同异构系统共同支持的主流工业标准通讯协议进行集成是异构系统之间通讯集成的一个核心技术手段之一[1,2], Modbus协议开放彻底, 被广泛支持, 只要掌握关键的通讯集成编程技术, 利用自由口编程方法实现Modbus应用层通讯协议, 可以极低成本实现通讯集成[3,4]。本文主要研究利用主流工业通讯协议Modbus实现通讯集成的主要步骤与方法, 并结合实际的工程应用问题给出了完整的编程解决方案。

2 Modbus通讯协议关键技术

Modbus协议是Modicon公司于1978年发明的一种用于电子控制器进行控制和通讯的通讯协议。通过Modbus协议, 控制器之间、控制器经由网络 (例如以太网) 和其它设备之间可以完成信息和数据的交换与传送, 使各种不同公司和厂家的可编程顺序控制器 (PLC) 、RTU、SCADA系统、DCS或与兼容Modbus协议的第三方设备之间可以连成工业网络, 构建各种复杂的监控系统, 并利于系统的维护和扩展, 这个通讯协议已广泛被国内外工控行业作为系统集成的一种通用工业标准协议[5]。[6]。

Modbus协议下的数据通信采用Master/Slave (主/从) 方式, 即Master端发出数据请求消息, Slave端接收到正确消息后就可以发送数据到Master端以响应请求;Master端也可以直接发消息修改Slave端的数据, 实现双向读写。Modbus协议建立了主设备查询的格式:设备 (或广播) 地址、功能代码、所有要发送的数据、错误检测域。从设备回应消息也由Modbus协议构成, 包括确认要行动的域、任何要返回的数据和错误检测域。如果在消息接收过程中发生错误或从设备不能执行其命令, 从设备将建立错误消息并把它作为回应发送出去。Modbus查询-回应周期表如图2所示。

Modbus的两种通讯协议ASCII方式和RTU方式。Modbus的数据传输可分为两种模式:ASCII (美国信息交换码) 模式和RTU (远程终端设备) 模式。ASCII模式下和RTU模式下的消息帧如表1所示。

注:第二列数据为ASCII模式, 第三列为RTU模式

在ASCII模式下, 消息中的每个8Bit字节都作为两个ASCII字符发送。这种方式的主要优点是字符发送的时间间隔可达到1 s而不产生错误。ASCII方式的每个字节的格式为:十六进制, ASCII字符0~9、A~F;消息中的每个ASCII字符都由十六进制字符组成。在ASCII模式下, 消息以冒号 (:) 字符 (ASCII码3AH) 作为起始位, 以回车换行符 (ASCII码0DH, 0AH) 作为结束符。传输过程中, 网络上的设备不断侦测“:”字符, 当有一个冒号接收到时, 每个设备就解码下个位的地址域, 来判断是否发给自己的。与地址域一致的设备继续接收其它域, 直至接收到回车换行符。

典型的RTU报文帧没有起始位, 也没有停止位, 而是以至少3.5个字符时间的停顿间隔标志一帧的开始或结束, 报文帧由地址域、功能域、数据域、CRC校验域构成。所有字符位由16进制0~9、A~F组成。

RTU模式下, 一个报文中的每个八位的字节包含两个四位的十六进制字符。这种模式的优点是:在同样的波特率下, 它的高字符密度允许比ASCII方式传送更多的数据。

在Modbus标准协议中, 定义了很多功能码, 每个功能码都有不同的功能。在本文中只用到了03 和06 两个功能码, 即读取从站内部寄存器命令和写单个从站内部寄存器命令。03和06功能码的功能含义如表2所示。

以上简要介绍了Modbus应用层协议的主要内容, 主要包括传输模式、帧格式、地址码、错误码、错误检验等内容, 详细的Modbus应用层协议可见参考文献[6,7]。

3 基于Modbus协议通讯集成的编程步骤

如前所述, Modbus协议在物理层、数据链路层、以及应用层上规定了设备之间通过Modbus协议进行通讯的所有技术要素, 要实现基于Modbus协议的不同仪表控制系统之间的串行端口的通讯, 就必须按照Modbus协议的规定来组织并控制整个通讯的进程, 主要工作应该包括以下几个步骤:

step1:Modbus主站 (Master) 与Modbus从站 (Slave) 的初始化编程;主站的初始化主要指主站通讯端口初始化:通讯的波特率、初始位、停止位、校验的初始化, 同时通讯的时序参数也需要初始化 (比如空闲检测时间) ;同样, Modbus从站也需要与主站类似的初始化工作, 其中从站地址指定是一个重要的初始化工作。

step2: Modbus应用层协议内容实现:主站命令发送内容的数据组织, 以及从站响应数据解析。

一方面, Master按照 Modbus应用层协议 (参考表1 ASCII模式下的消息帧) 要求组织发送命令 (读写从设备命令) 数据格式;另一方面, 按照Modbus应用层协议 (参考表1 ASCII模式下的消息帧) 分析Slave设备的响应数据。

Step3:通讯的动作与时序控制。由于Modbus应用层协议是Master/Slave的主从请求/响应的通讯交互模式, Master与Slave都有各自的状态演进约定 (如图3所示) , 而且主从的请求/响应通讯模式有严格的时序约定 (如图4所示) , 所以, 为了实现Modbus的动态通讯, Master的通讯主程序就必须综合利用中断、查询等手段按照协议规定的请求/响应状态演化和时序实现通讯过程控制。

一般说来, 任何基于Modbus协议的仪表与控制系统的通讯集成的编程工作都需要完成以上Modbus主站、从站的初始化, Modbus通讯协议的数据组织, Modbus通讯的动作与时序控制三方面的内容。

4 基于 Modbus_ASCII 协议的S7-200PLC与台达PLC的通信设计

4.1 通讯集成工程案例

本节主要以某工业现场环境监控系统的通讯问题为例, 介绍利用Modbus_ASCII通讯协议实现通讯集成总体解决方案。如图5所示, 某工业现场的环境供水系统由两个水泵组和两套控制系统, 每个水泵组都有一套控制系统, 每套控制系统分别由一台台达PLC (DVP_EH型PLC) 和一台变频器、一台触摸屏组成。原来环境子系统的两组生活水泵控制系统是孤立的, 彼此不需要通讯。由于整个厂区实现信息系统与自动化的全面升级, 要求实现工业现场的综合监控系统, 需要把环境子系统 (主要是两个孤立的生活泵组控制系统) 集成到综合的设备监控系统之中, 由于全场的综合监控系统采用了西门子TIA (全集成自动化) 方案, 控制器都选用西门子PLC, 这样要把环境泵组控制系统 (主要是台达PLC) 与综合监控系统的西门子控制系统实现通讯集成, 就必须解决台达PLC (DVP_EH型PLC) 与西门子PLC (S7-200采集站) 通讯问题。选择不同异构系统共同支持的主流工业标准通讯协议进行集成是异构系统之间通讯集成的一个核心技术手段之一, 在此项目中我们利用Modbus协议开放彻底、被广泛支持的特点, 利用所掌握关键的Modbus通讯集成编程技术, 利用自由口编程方法实现应用层通讯协议, 可以极低成本实现通讯集成。

4.2 基于Modbus_ASCII的通讯集成解决方案

解决以上通讯集成问题的主要技术手段是采取基于Modbus_ASCII通讯协议的通讯集成技术。通讯集成方案如图5所示, 综合监控系统设置一台S7-200PLC作为Modbus主站实现两台环境水泵的状态数据采集和控制, 两台台达PLC作为Modbus从站挂接在Modbus总线上。S7-200 PLC控制器上Port0端口 (RS485串行通讯口) 与两台台达PLC的扩展COM3通讯端口连接 (台达PLC本身拥有两个通信口, COM1连接触摸屏, COM2连接变频器, 为了与 S7-200主站通讯扩展了COM3通讯端口) , 由于扩展的台达PLC的COM3通讯口只支持Modbus ASCII格式通信, 所以需要在S7-200端编写Modbus ASCII格式的通信程序。S7-200 Modbus主站通过读取台达PLC的寄存器从而读取变频器的相关数据, 同时S7-200 Modbus主站通过写数据到台达PLC的寄存器从而达到控制变频器的启停和改变变频器工作频率的目的。

关键的Modbus通讯集成编程任务包括:S7-200 Modbus主站编程工作、台达PLC Modbus从站的编程工作。因为在Modbus Master/Slave的通讯模式下, 主站是整个通讯的发起者, 通讯时序 (进程) 管理者, 所以主站程序是决定性的, 它要完成主站通讯端口初始化, 主站命令发送内容的数据组织, 以及从站响应数据解析, 而且还要完成通讯的动作与时序控制。而台达Modbus从站的编程工作相对简单, 只需完成Modbus从站通讯端口初始化 (包括从站地址初始化) 工作。以下重点介绍S7-200 Modbus主站编程技术。

4.3 S7-200主站程序编写

Modbus通讯中的Modbus主站是通信的发起和过程管理者, Modbus通讯中的主站程序的编写是整个通信编程的核心部分。在S7-200的主程序 (OB1) 中主要完成:①Master中通讯端口的初始化;②综合运用轮询与中断的方法实现通讯的时序与过程控制;③在整个通讯过程 (发送和接受) 中实现应用层协议, 实现对从站“发送帧”的组织, 并且实现对于从站“响应数据帧”的解析。

主站的程序原理示意图如图6所示。

主站程序包括:初始化子程序MBUS_ASCII_CTRL, 通信子程序MBUS_ASCII_MSG, 发送完成中断子程序和接收完成子程序。Modbus_ASCII_CTRL子程序主要完成了Modbus主站通讯端口的初始化, 包括通讯的波特率的初始化、初始位、停止位、校验等初始化内容, 同时通讯的时序参数也需要初始化 (比如空闲检测时间) ;通讯的时序与进程控制主要运用了定时发送和发送完中断两个手段进行控制;其中Modbus_ASCII_MSG子程序主要功能是“应用层协议的实现”, 包括主站发送命令 (读写) 的Modbus 帧格式的组织, 以及接受Modbus从站返回的响应Modbus数据帧的解析。

4.3.1 Step1 Master中通讯端口的初始化通信初始化子程序MBUS_ASCII_CTRL

S7-200做Modbus主站, 采用自由口方式进行通信时, 需要设置特定寄存器对通信端口进行初始化, 对于PORT0是SMB30, 对于PORT1是SMB130。SMB30各位的含义如表3所示, 在通信初始化子程序MBUS_ASCII_CTRL中, 主要是根据用户输入的波特率、奇偶校验、数据位长度来计算SMB30的值并给SMB30赋值, 然后定义一些通信的常用设置。这里需要注意的是, 通信初始化子程序的三个参数设置需要与从站设置保持一致。另外在S7-200的初始化编程中还需要对特殊寄存器进行初始化设置:SMB87定义Port0口是否可以接受, SMB89定义Port0口结束字符, SMB94定义Port0口最大接收字符数, SMW90定义空闲线检测时间[9,10]。

4.3.2 Step2 通讯读写命令实现通信子程序MBUS_ASCII_MSG

通讯子程序Modbus_ASCLL_MSG主要完成Modbus应用层协议内容的实现:Modbus主站发送内容的数据组织, Modbus主站接受从站通讯数据解析:

(1) Master按照 Modbus应用层协议要求组织发送命令 (读写从设备Slave) 数据格式。

通信子程序中主要是进行发送数据的组织, 进行LRC校验, 发送数据, 数据发送使用的是XMT指令, 数据的接收使用的是RCV指令。

在此子程序中, 用户需要输入从站号、功能码、操作地址 (从站) 、数据量、数据地址 (主站) 完成标志位。按照Modbus ASCII协议, 03功能码为读取寄存器命令、06功能码为写单个寄存器命令。下面重点以读取从站寄存器命令03功能码为例, 介绍按照Modbus帧格式组织命令的消息帧的编程技术。03功能码的消息帧格式如表4所示。

字节数=起始符+从站地址+功能码+起始地址+数据量+LRC校验码+结束字符 (16#0D, 16#0A) =17

举例来说, 我们要读取1号台达从站的Modbus地址401557 (对应台达内部通讯地址为0614, 对应台达的寄存器为T20-T27) 开始的八笔数据, 定义S7-200的数据发送区为VB5000开始。数据的组织如表5所示。

这里LRC校验的算法是, 去除发送字节数, 起始字符和结束字符, 剩余的数据以字节为单位, 并转换成十进制整数形式逐个进行累加, 最后把求和的结果取2的补数就是LRC校验值。2的补数的计算方法为:把所求数据的每一位取反, 然后再加一就是2的补数。

上例中, LRC值的求法为:1+3+6+20 (16#14) +8=38=2#00100110, 取反后为2#11011001, 再加1, 为2#11011010=16#DA

(2) 按照Modbus应用层协议分析Slave设备的响应数据。

我们在执行读寄存器命令的时候, 当台达从站正确响应后会返回一系列的数据, 在发送完成中断子程序中我们使用RCV指令将其接收, 接收从站返回数据并进行整理存放到用户设置的存储区内, 然后我们需要对数据进行分析整理, 得到我们想要的数据, 由于返回的是ASCII格式的数据, 我们需要对其进行格式转换, 本程序中使用ATH指令, 即ASCII格式转换成HEX (16进制) 。

4.3.3 Step 3 S7-200主站实现Modbus通讯的时序控制

S7-200的Modbus通讯主站主要运用定时轮询、中断等手段实现协议规定的通讯时序的控制:① 初始化计数器C0, 定时器T33, 50 ms计数一次, 计数到八次, C0计数器定时清零;② 在规定的八个50 ms内分别轮询执行四个读从站命令和四个写从站命令程序。50 ms是在现场反复调试取得的确认发送与接收完成的通讯的时间;

另外在S7-200的主程序中利用中断技术实现接收从站数据控制, 中断的手段主要是利用S7-200自由口通讯中Port_0发送完对应的系统中断9, 编写中断服务子程序, 控制Modbus通讯时序, 主站读写指令发送完毕, 主站既转入接受状态, 接受从站返回的数据。 (中断9的服务程序如下) :

由于RS-485采用半双工传输方式, 所以在主从节点之间有应答的时候, 要注意发送和接受之间的切换。开始发送前禁止接受, 而发送结束后要先关闭发送, 再开启接收, 以保证数据的正确传输。

5 结 论

本文重点研究了基于Modbus协议的工业仪表与控制系统的通讯集成方法, 给出了实现Modbus协议通讯集成的核心技术步骤与要素, 并以一个实际的控制工程中通讯集成问题为案例, 详细设计了基于Modbus现场总线网络协议的集成方案, 并具体给出了利用Modbus ASCII协议实现西门子S7-200PLC通过自由口通信方式与台达PLC进行通信的编程方法。此程序已成功应用到工业现场的综合设备监控系统的通讯集成模块中, 目前通讯运行稳定, 效果良好。实际工业应用案例表明本文讨论的基于Modbus现场总线协议的通讯集成方案具有低成本、高效率的优点。

参考文献

[1]NEUMANN P.Communication in Industrial Automation-WhatIs Going On?[J].Control Engineering Practice, 2007, (15) :1332-1347.

[2]宋文娟, 赵强, 蔡凌, 等.基于MODBUS网络的液位测量系统设计[J].仪器仪表学报, 2005.26 (8) 增刊:309-311.

[3]刘东晓, 赵强, 汪晋宽, 等.基于MVI模块嵌入式系统的Modbus协议开发[J].仪器仪表学报, 2006.27 (6) 增刊:701-703.

[4]梁伟.采用C51编写智能设备的Modbus协议通讯软件[J].化工自动化及仪表, 2004, 31 (1) :44-47.

[5]李娜.基于Modbus协议的智能仪表的设计[D].北京:北京邮电大学, 2003.

[6]Modbus-IDA.MODBUS over Serial Line Specification and Im-plementation Guide V1.02[K/OL] (2006-12-20) [2009-12-29].http://modbus.org/docs/Modbus_over_serial_line_V1_02.pdf.

[7]Modbus-IDA.MODBUS APPLICATION PROTOCOL SPECIFI-CATIONV1.1b[K/OL] (2006-12-28) [2009-12-29].http://modbus.org/docs/Modbus_Application_Protocol_V1_1b.pdf.

[8]左鸿飞, 颉新春, 王志春.基于FPGA实现Modbus通讯协议[J].化工自动化及仪表, 2007, 34 (4) :42-44.

[9]贺光琳, 张光新, 包金明, 等.基于Modbus协议的过程监控仪表的设计与实现[J].化工自动化及仪表, 2007, 34 (4) :72-75.

[10]阳宪惠.工业数据通信与控制网络[M].北京:清华大学出版社, 2003.

相关文章
2025年关于房屋转让协议书范本三篇

2025年关于房屋转让协议书范本三篇

  转让方(以下简称甲方):工作单位:住址:身份证号:  受让方(以下简称乙方):工作单位:住址:身份证号:  经自愿协商达成一致,甲方将自...

2
2025-09-22
简单婚前协议书范本

简单婚前协议书范本

  一、协议总则  1、本协议以双方自愿组建家庭,并以婚后家庭和睦,生活幸福为准则。  2、本协议经双方(我和未婚妻)签字盖章后方可生...

1
2025-09-22
2017关于自愿离婚协议书范本

2017关于自愿离婚协议书范本

本文《2017关于自愿离婚协议书范本》由&#174;Copyright_Fingerprint_Now=2025/5/2 15:40:54" style="font-family:arial;">盘古文库合同范...

5
2025-09-23
入股协议书范本【五篇】

入股协议书范本【五篇】

本文《入股协议书范本【五篇】》由&#174;无忧考网合同范文频道整理,仅供参考。如果觉得很不错,欢迎点评和分享~感谢你的阅读与支持!【篇...

1
2025-09-22
2017民政局离婚协议书范本

2017民政局离婚协议书范本

本文《2017民政局离婚协议书范本》由&#169;无忧考网合同范文频道整理,仅供参考。如果觉得很不错,欢迎点评和分享~感谢你的阅读与支持! ...

2
2025-09-22
2017年合作协议书范本

2017年合作协议书范本

本文《2017年合作协议书范本》由&#174;无盘古文库合同范文频道整理,仅供参考。如果觉得很不错,欢迎点评和分享~感谢你的阅读与支持!  ...

1
2025-09-22
2018租房协议书范本

2018租房协议书范本

本文《2018租房协议书范本》由&#174;无忧考网合同范文频道整理,仅供参考。如果觉得很不错,欢迎点评和分享~感谢你的阅读与支持!  出租...

1
2025-09-22
2018店铺转让协议书范本

2018店铺转让协议书范本

本文《2018店铺转让协议书范本》由&#169;Copyright_Fingerprint_Timestamp=1742409812" style="font-family:arial;">盘古文库合同范文频道...

1
2025-09-22
付费阅读
确认删除?
回到顶部