Modbus数据通信

2024-09-05

Modbus数据通信(精选九篇)

Modbus数据通信 篇1

1、Modbus TCP/IP协议数据帧的格式

由于M o d bu s TCP/IP协议运行于TCP/IP协议上, 因此Modbus TCP/IP协议的数据帧被封装于TCP/IP协议数据帧中的数据单元中, 作为TCP/IP协议中的数据部分发送给各种控制设备;支持Modbus协议的控制设备收到Modbus请求之后, 根据请求的内容将结果返回给客户端。本文所设计基于Modbus TCP/IP的数据请求和响应帧格式如下图所示。

MBAP报文头包括下列域:

事务元标识符:该标识符用于事务处理的配对, 该域中的内容为用户自行设定, 如可以将每一帧的编号放在该域中。

协议标识符:该标识符用于系统内的多路复用, 当使用的Modbus协议时, 该值为0。

长度:该域中的数值表示后继域内容的字节数, 包括单元标识符和协议数据单元。

单元标识符:为了系统内路由, 使用这个域。在服务器的响应帧内容中服务器必须使用相同的值返回该域的内容。

本文设计的读写功能所用到的Modbus功能码的定义如下表所示。

协议的数据单元包括功能码和数据两部分。本文以读取2个寄存器的数据为例来说明该部分帧格式的设置。

功能码:读写多个寄存器的功能码为03, 该域大小为1字节。

数据:数据部分包含读起始地址和读的数量。本文从起始地址开始连续读取2个寄存器的内容, 因此读起始地址为0, 该域大小为2字节;读的数量为2, 该域大小为2字节。

2、数据读取功能的实现

本文在上一节设计的数据帧格式的基础上, 使用VC++2010实现了基于Modbus TCP/IP的数据读取功能, 并使用MODBUS Simulator作为Modbus的TCP服务器。

数据请求的主要代码如下:

本文实现了基于Modbus TCP/IP协议的数据读取功能的客户端, 如图2-1所示。

MODBUS Simulator的地址0000-0001写入了67.5。如图2-2所示。

在数据读取客户端中, 首先点击“连接服务器”按钮, 客户端提示连接服务器成功后, 点击“启动定时器”按钮, 则客户端开始周期性地从Modbus服务器中读取数据, 并显示在客户端上。

3、结语

本文在研究Modbus TCP/IP协议的基础上设计基于Modbus协议的数据读取的数据帧格式, 并使用VC++2010实现了该数据帧的数据读取功能。通过该读取功能, 用户可以在PC机上可以读取PLC控制器上的数据。

参考文献

[1]刘波, 张文三, 魏霞.基于Modbus协议的TCS-3000DCS系统与S7-200PLC之间串行通讯网络的实现[J].工业控制计算机, 2012, 25 (2) :33-35.

Modbus数据通信 篇2

关键词SerialPort类;Modbus协议;RS485总线

中图分类号TP 文献标识码A文章编号1673-9671-(2011)081-0114-01

串行通信作为一种灵活、方便、可靠的通信方式,广泛应用于计算机与其他设备之间的通信以及工业控制系统中,是计算机与外部设备进行数据通信时经常使用的方式。在传统的基于WindowsXP等平台的数据采集系统中,人们往往使用VC或者VB的MSComm控件进行串口数据的读取。但是很多工业场合,往往更需要使用便携性更强的移动设备进行数据采集。 随着NET技术的发展,一种独立于硬件环境的NET Compact Framework越来越多的出现移动设备当中。通过它提供的SerialPort类在Windows Mobile平台进行统一的数据通信处理,会大大提高编程效率。SerialPort类用于控制串行端口文件资源,提供同步I/O和事件驱动的

I/O、对管脚和中断状态的访问以及对串行驱动程序属性的访问。因此,文章介绍了一种基于Windows Mobile移动终端的数据采集系统,并详细叙述了该系统的设计与实现。

1系统基础

1.1SerialPort类

它位于System.IO.Ports命名空间中,SerialPort类的属性主要包括:串口名称(PortName) 、波特率(BaudRate)、数据位 DataBits、停止位 StopBits、奇偶校验 Parity、握手协议 Handshake等。SerialPort类的事件主要包括: DataReceived:用于异步接收串口数据。SerialPort类的方法主要包括:Open(),Close(),Read(),Write()等。

1.2Modbus通讯协议

Modbus 协议是应用于电子控制器上的一种通用语言。通过此协议,控制器相互之间、控制器经由网络(例如以太网)和其它设备之间可以通信。它已经成为一通用工业标准。有了它,不同厂商生产的控制设备可以连成工业网络,进行集中监控。

此协议定义了一个控制器能认识使用的消息结构,而不管它们是经过何种网络进行通信的。它制定了消息域格局和内容的公共格式。它采用主从应答方式的通讯连接方式。首先,主计算机的信号寻址到一台唯一地址的终端设备(从机),然后,终端设备发出的应答信号以相反的方向传输给主机,即在一根单独的通讯线上信号沿着相反的两个方向传输所有的通讯数据流(半双工的工作模式)。

Windows Mobile手持终端一般只有RS232接口,需要外接一个RS232-RS485转接器,然后通过一个485Hub,连接到各个待测量的仪表,组成RS485通信网络。每个待测量的仪表需要分配一个不同编号。这里需要注意的是,与台式机设备不同,手持终端的RS233接口的输出电压往往由于功率的限制而比较小,不足以提供RS232-RS485转接器所需的稳定电压,因此需要在RS485端提供额外的电压。

2系统实现

2.1串口初始化

串口的初始化操作主要包括根据实际情况设置相关的参数,如下所示:

serialPort = new SerialPort();

serialPort.PortName = “COM3”;

serialPort.BaudRate = 9600;

serialPort.Parity = Parity.None;

serialPort.DataBits = 8;

serialPort.StopBits = StopBits.One;

serialPort.Handshake = Handshake.None;

serialPort.RtsEnable = true;

2.2串口数据发送和接收

发送数据通过SerialPort类的Write()方法来实现。接收数据有2种方法。一种是通过SerialPort的数据接收事件DataReceived,为该事件定义代理方法进行数据接收处理: serialPort.DataReceived += new SerialDataReceivedEventHandler(DataReceived) 。这种方法编程简单,但从SerialPort对象接收数据时,将在辅助线程上引发 DataReceived 事件。由于此事件在辅助线程而非主线程上引发,因此尝试修改主线程中的一些元素(如UI元素)时会引发线程异常。如果有必要修改主 Form 或 Control 中的元素,必须使用 Invoke 回发更改请求,这将在正确的线程上执行。根据使用经验,在串口速度很快的时候,例如大于100Hz的时候,用上述方法的效果非常不好,因为Invoke會使本在辅助线程执行的指令发送到主线程的消息队列中执行,容易引起主线程消息阻塞,界面响应不好。另一种方法是让主线程等待,然后根据SerialPort类的BytesToRead属性,调用Read()方法来实现,这种方法的实时性较好。本系统主要采用这种方法。我们设计一个函数:

public int SendCommand(byte[] SendData, ref byte[] ReceiveData, int Overtime)

其中:参数SendData为待发送的字节数组,参数ReceiveData为接收仪表返回字节数组,Overtime为设定的等待返回超时次数。具体实现如下:

serialPort.DiscardInBuffer(); //清空接收缓冲区

serialPort.Write(SendData, 0, SendData.Length);

System.Threading.Thread.Sleep(50);

int ret = serialPort.Read(ReceiveData, 0, serialPort.BytesToRead);

由于本系统查询应答方式进行数据采集,所以需要根据Modbus协议的数据帧要求发送指令数据。

3总结与展望

文章给出了一种基于Windows Mobile和Modbus通讯协议的手持终端数据采集系统的设计与实现。将Windows Mobile系统引入数据采集,扩展了Windows Mobile的应用场景,方便了企业用户进行数据采集。该系统的设计与实现对便携性要求高的工业数据采集系统的推广具有一定的意义。

参考文献

[1]刘彦博,胡砚,马骐.windows mobile平台应用与开发人民邮电出版社.

[2]范盛荣.windows mobile应用程序开发实践科学出版社.

Modbus数据通信 篇3

MODBUS协议是一种能够为工业控制体系进行正常通信的协议, 其由MODICON公司为解决自身控制器问题而设计的。主要是根据Master/Slave的数据通讯方式进行数据通讯, 前者 (Master端) 发出信息的查询请求, 再由后者 (Slave端) 接收信息并满足前者发出的消息请求。也可以由Master端直接向Slave端发送消息以修改相关数据信息, 以达到相互读写功能。

MODBUS协议有两种传输模式:ASCII模式和RTU模式, 其通信格式如表1。

二、处理流程

编程时, 一般利用通讯口的控制进行中断接收、发送、定时以及相关指令的发送和接收。其中断时间在S7-200中的具体情况如下:

三、PLC中MOOBUS协议的程序实现

MODBUS协议如果想要在S7-200中实现, 就必须要在S7-200和Modieon公司的PLC性能够支持的S7-200的前提下进行, 但S7-200并不能够被MODBUS协议里的24种编码全应用, 包括现场实际应用的情况和因素。且Intellution所支持的MODBUS驱动功能类型只包括以下几种:01读线圈状态;02读输入状态;03读保持寄存器。在S7-200中, V存储区即MODICONPLC的保持寄存器;04读输入寄存器。在S7-200中, 模拟t输入寄存器即MODICONPLC的输入寄存器, 通常将模拟t先存人指定的V存储区, 这样读输入寄存器也就是读该指定的V存储区;05写单个输出线圈状态;06写单个保持寄存器值;07强制多轴出线圈状态;08强制多保持寄存器。以上的全部功能均可以由S7-200的开发者实现, 不过需要对几个问题进行注意: (1) 首先要对帧的开始与结束进行正确的鉴别, 不能有差错, 3.5字符的间隔是必须要有非常正确的识别, 在9600的波特率下是大约有4Ins的时间。 (2) 在初始系统主程序时务必要有CRC表格的生成, 以减少计算CRC的时间。 (3) 尽管能够实现MODBUS驱动 (IFix) 所提供的六项功能, 但是偶尔会有失误的出现, 甚至会造成从机能够达到的范围之外有了被寻址的变量, 这样一来使得从机例外发送了相关相应。 (4) 访问寄存器的进行时依据字的在MODBUS内, 不过S7-216能够实现从V存储区向字节、字、位以及双字的存取功能, 因此可以变换主机所请求的寄存器的具体地址。

四、小结

S7-200可编程控制器, 在MODBUS通讯协议的协助下可以让大多数的现场扩展系统以及操作实现了PC机的信息联系。且MODBUS通讯协议有着较为安全可靠、透明的特点, 无需过多流程就可将多家厂家结成网络, 使得系统集成得以建立, 从而减少了工厂开发产品和采购设备等的花销。

摘要:文章首先简要介绍了基于PLC的MODBUS通讯协议发展现状, 其次对MODBUS协议作了详细的阐述, 其中S7-200系列的PLC根据自身组网特点占有了相当大的比例, 在处理流程中对其进行了详细的分析, 对PLC中MOOBUS协议的程序实现作了详细的介绍, 充分展示了MODBUS通讯协议有着较为安全可靠特点。

关键词:MODBUS通信协议,PLC,现场总线,串行通讯

参考文献

[1]SIEMENS公司.SIMATIC S7-200可编程序控制器系统手册[Z], 2000:23-24.

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

关键词:Modbus协议,霍尼韦尔,TPS系统,系统组态

1 前言

在企业涉及生产的关键数据如何让生产者管理者在管理层方便快速的看到, 对于关键生产数据的分析处理及生产成本控制都变得尤为重要, 霍尼韦尔DCS的TPS型系统由于自身结构和开发的专用性和安全性设计, 造成其系统的不开放, 特别是不提供OPC服务, 根据常规的技术手段读取其控制器数据上传到管理网比较困难, 针对这种情况, 专门进行了研究和测试。

通过分析发现霍尼韦尔TPS系统支持MODBUS通信协议, 通信的接口方式为串口RS-232/485。结合Honeywell TPS系统这一特点, 研究如何通过这种协议进行数据采集开展本次课题。

2 采用MODBUS通讯读取TPS系统数据

在TPS系统中SI卡就是支持Modbus通讯的卡件, 在通讯时只能作为主站, 而与之通讯的485设备只能作为从站, 一个SI卡可以连接多个从站。利用TPS系统的CL程序将控制系统的点送到TPS系统的数组点里, 数组点是被分配地址的, 地址的分配和参数的设定遵循MODBUS通讯协议规则, 这样485设备就能读取到SI卡485端口的数据了。

2.1 TPS系统对MODBUS协议支持情况

Honeywell TPS系统在MODBUS通信中只能作为主设备。在使用TPS系统与其它系统进行通信时还需注意TPS系统并不能完全支持所有标准的MODBUS功能码, 一般通信中所用到的布尔量、整型量、浮点量、字符串TPS系统均有良好的支持, 值得说明的是在使用功能码16向从设备写浮点数时, 一次只能写一个浮点数, 多个浮点数的写入, 必须多次使用功能码16, 同样的, 如果要向从设备写入布尔量也不能使用功能码15。

2.2 TPS系统MODBUS通讯组态

TPS系统通过SI IOP (Serial Interface Input/Output Processor) 及其对应的现场接线端子FTA进行串行通信。每个IOP可带1个或2个FTA, FTA通过电源适配卡与IOP进行连接。可与采用RS232/RS485标准接口的设备相连。TPS系统的RS485标准接口最多可以连接15个设备, 连接方法可参考用户手册, 终端要有120欧姆的终端电阻。TPS系统与串行设备连接的典型结构如图1所示。

2.2.1 SI卡组态

首先对SI IOP进行组态。进入工程师主菜单, 选择“Network Interface Module”, 再选择“Node Specifi c Confi guration”, 进行SI组态, 在HPM (APM) 控制功能组态中有以下一些参数与通信有关:

(1) NNUMERIC (Number of Numerics) 代表Numerics量的最多个数, 要求为16的倍数。

(2) NSTRING (Number of Strings) 代表Strings量的最多个数, 要求为16的倍数。

(3) NTIME (Number of Times) 代表Times量的最多个数, 要求为32的倍数。

(4) NARRSLOT (Number of Array Slots) 代表最多可以设置256个Array点, 其中最多80个可用于SI卡。

(5) SCANPER代表HPM (APM) 以多长的周期扫描SI数据并把它们打包进Array点中, 此参数影响到Array点的最大设置量。当扫描周期为1秒时, Array点最多设置80个;当扫描周期为0.5秒时, Array点最多设置40个;当扫描周期为0.25秒时, Array点最多设置20个。设置完参数后在IO Module Confi gration中组态SI卡, 组态方法与其他模件组态方法相同。

2.2.2 Array点的组态

TPS系统通过Array点与外设备进行串行通信, 每个SI卡能带32个Slot (Array点) , 16个Slot (Array点) 在FTA1, 另外16个Slot (Array点) 在FTA2。1个Array点可组512个Bool (Flags) 量、或16个Reals (Numerics) 、或32个Integers (Numerics) 、或64个Byte—sized (Numerics) 、或64个ASCII字符 (Strings) 。一个Array点只能用Strings、Flags、Numerics中的一种类型作为变量。选择“Network Interface Module Process Point Building--Array”进入过程点组态画面, 选择Array点, 取点名1COMU1。在1COMU1点组态画面中有以下重要参数需要设置:

(1) EXTDATA (External data option) :通信的数据类型IO NN;

(2) IOPNUM (the SI IOP module number) :SI IOP的模件号, 与在Node Specifi c Confi guration中的组态相对应;

(3) FTANUM (the FTA number, 1或2) :选择用哪一块FTA;

(4) DEVADDR:连接第三方设备地址, 默认为1;

(5) AUX DATA3:通信方式, RS485标准;

(6) AUX DATA4:通信的波特率, 9600;

(7) NNSTIX (Numeric array start index) :TPS给第三方设备的通信起始地址;

(8) NNUMERIC (Number of numerics) :通信个数, 若设为16, 那么结束时的通信地址就是20032。

2.2.3 PM点建立与CL程序编写

因为每个CL程序的运行都需要PM点的支持, PM点就是提供CL程序的运行环境, 选择“Network Interface Module”-“Process Point Building”进入过程点RPV组态画面, 建立PM点。

通过MODBUS向第三方系统读写数据时, 都是通过数组点来实现的。在向第三方系统写数据时, 使用CL程序与数组点形成数组映射, 当TPS数据改变时, 通过程序改变数组点的内容即可。下面就是一部分CL通信程序和简单说明。

通过CL程序实现数组点映射。

等待通讯数组点状态正常。

将数据写入数组点, 可以依次进行写入。

对CL程序进行编译和运行, 再将数组点、PM点激活, 可以再Native Window画面中利用细目可以调出数组点, 可以看到数据情况, 如图2所示.

可见, 利用MODBUS协议是可以读取到TPS系统数据的, 操作起来相对简单, 数据读取的速度在20点/秒, 基本满足了生产管理者的需求。

3 结束语

通过在实施过程, 第三方系统利用RS485标准接口连接到SI卡上, 进行MODBUS通讯, 就可以读到地址从20001开始的数据。数据多时需要建立多个数组点, 数量太多会影响系统的刷新速率, 实施中取200多点, 刷新速率在3秒左右。如果需要数据量大时, 可采用从多台操作站读取数据的方式来解决, 以满足实际需求。该方式通过实际测试取得了令人满意的效果, 资金投入比较小, 在一定程度上值得借鉴和推广。

参考文献

[1]Modicon公司.Modicon Modbus Protocol Reference Guide[EB/OL].1996.

Modbus数据通信 篇6

随着我国的基础建设规模增大,基础能源的需求量越来越大,因而煤矿资源的开发越来越重要。矿区里的管理、监测系统随着矿区规模扩张已经不能再由单一的数据采集网络构成,需要向更复杂的集管理、告警、双向通信式的总线网络转变。同时矿区的管理检测系统需要具备良好的兼容性、稳定性、高效率以及网络冗余性,以应对突发的事件,并且降低故障发生几率。目前,井下分站[1]之间通常采用不同的网络通信协议,采用不同的通信网络物理层结构,相互间不兼容,使得各分站间信息交流困难,而且井上主控系统难以及时获取井下分站的详细信息,第一时间作出正确的判断。

针对上述情况,提出了基于MODBUS协议的矿区监测系统数据采集方案,将各个井下分站的不同通信接口连接起来,使得信息交流、共享没有障碍,并且拥有对突发事件的处理机制。解决了传统矿区通讯平台间的低效率、难以统一管理的问题。

1 MODBUS RTU协议

MODBUS是OSI标准通信模型中第7层上即应用层上的报文传输协议,标准、免费是用户可以使用的开源协议,目前世界上支持MODBUS协议的厂家已经超过400家,支持MODBUS协议的产品突破600种。最早是由Modicon公司于1979年制定的应用于电子控制器上的通用协议,用于实现控制器之间、控制器经网络(例如以太网)和其它设备之间的通信[2]。它是一种应用层报文传输协议,与底层的物理接口及电气规范无关,如图1所示,传统的RS–232/422/485设备,最新的以太网设备等都得到了MODBUS协议的支持。

MODBUS通讯协议可分为ASCII协议及RTU协议,数据采集控制系统组网通信协议主要采用后者。数据通信采用主从通信方式,主站发出数据请求信息,从站无论是否接收到正确的消息都能发送响应帧到主站以响应请求;主站也可以直接发信息帧修改从站数据,实现双向读写。当主机在MODBUS网络上通讯时,它标定了自己的设备地址,并使用广播方式发送消息,从站接收到消息后,识别自己的地址,正确后除去地址码,读取信息,进行CRC 校验。从机完成通信后处于自动监听状态。信息帧结构如表1所示。两个消息之间的间隔至少要达到3.5个字符空闲以上。因而在传输完最后一个字符后,一个至少3.5 个字符时间的停顿表示了消息传输结束。再次传输消息帧可以在这个间隔时间结束后开始。整个消息帧必须作为一连续的流转输。MODBUS RTU协议通过16进制消息进行传输,并且采用16位的CRC进行校验,CRC校验编程时多采用查表法。

2 监测系统设计

2.1 系统主站软件结构分析

整体系统软件主要可分为数据采集部分,用户操作界面部分,以及数据配置信息部分。其架构如图2所示。

其中数据采集部分包括对定义IO设备的采集驱动程序,同时包含实时数据库,在本系统中该实时数据库采用xml文件,因为xml文件的规范统一,互操作性强且与平台无关等特点,无论是收集数据还是发送报文,都可以实现高效准确,此处的xml文件主要包含各个定义IO设备的实时状态,历史数据,即时命令,各类传感器的类型,数据类型,数据量度等,在数据采集驱动模块下实现高效调配。用户操作界面,主要负责界面的显示,实现便捷,简单的人机交互操作,同时调用底层驱动模块实现通信。主要有现场信息显示,温湿度信息采集,报警系统配置,是上位机的控制终端。而数据配置信息部分,则主要由单个xml文件构成,下位机配置xml文件中保存了下位机的连接方式、传输速率、设备地址、校验格式等信息。采集驱动模块通过Modbus协议与下位机通信[3],实现井下各种传感器参数的实时采集,并对采集到的数据进行相应处理和持久化。驱动模块以动态连接库(DLL)的形式发布, 减少系统运行负担,也有利于软件调试安装。

2.2 井下分站设计与实现

MODBUS RTU协议是一主多从的通信协议。所以每个接收控制器都要采用不同的设备地址。MODBUS RTU接收控制器主要实现消息帧的接收、执行和响应。根据接收到的消息帧执行相应的行为。给出响应并将响应的反馈发送给主设备。由于在井下环境复杂,电磁干扰严重,传输距离较远,模拟数据多,要求微处理器需要具有高速处理,抗干扰能力强,多通道采集等特点,故采用AT91RM9200作为本系统的井下分站微处理器[4]。整个分站系统如图3所示。其中AT91RM9200是ATMEL公司生产的基于ARM920T内核的可以适应功耗低,工作稳定的工业控制现场的高速处理芯片,片上资源丰富,片内集成了USART、SSC、SPI、USB及I2C等通信接口,能适应多种通信标准的要求,如103标准、MODBUS标准等。具有低功耗,多通道数据控制器,支持高速以太网等特点。在其外围电路搭建上主要有光耦隔离电路,RS485转RS232电路,电源接口,以及数据采集模块。电路采用模块化设计,也为将来的扩展和维护提供方便。

通过一块LCD12864显示屏把系统的设置信息和采集数据等显示给用户, 这部分电路直接连接于控制芯片的GPIO引脚上,实现数据显示。使得整个分站的状态能够及时显示给井下工作人员,让该系统的实用性大大增强。模拟量输入信号为(100~800 Hz)方波,经光电隔离后连接控制芯片的外部中断引脚上。由内部固件实现频率的采集。开关量输入输出信号经光电隔离后连接控制芯片的GPIO引脚。由内部固件来实现输入输出逻辑控制。AT91RM9200内置高级终端控制器,具有8个中断优先级,最多可处理32个中断源,利用这种高级终端控制器可以更加便捷地进行MODBUS通信模块编程,完善整个通讯由接收、校验、到响应的全过程。分站系统的软件部分主要分为功能处理模块和处理响应模块,其中功能处理模块是核心模块, 包括串口初始化、消息帧构造和解析以及发送消息帧等功能,处理响应模块部分是对主站传来的消息进行处理并响应。

2.3 数据采集模块设计

数据采集模块[5]按照其软件架构分层思想大致可分为表示层,业务层和网络数据层。其结构如图4所示。表示层主要为各用户操作UI的集合,是最上层的交互界面,可以对数据库信息进行交互。业务层负责收集传感器数据,现场环境信息,告警信息,进行系统管理等。而网络数据层则实现与数据库的连接、调用,实时将数据传递给相关的xml数据文件。这三层在设计时予以逻辑分割,为软件维护和扩展提供便利。

2.4 底层软件流程图

主站中的MODBUS驱动模块的主要程序流程如图5所示。

所有主站底层的操作都封装在该驱动模块内。含有超时报警机制。发送以及构造帧机制,应答帧机制。由用户操作界面调用该驱动实现上层发送命令、接收数据等操作。井下分站主要的程序包含接受数据帧,构造且返回应答帧、错误判断机制、CRC校验等。

3 软件运行测试与结果分析

图6所示为应用程序的工作界面。可以实现具体设备地址,具体传感器地址,功能选择以及相关现场温湿度的显示,并及时将数据传输给远程监控系统。在现场温度调控为20℃。湿度为30%的情况下,现场温度采集显示准确。同时利用数据采集模块随机采集三组传感器数据。采集模块的数据如表2所示,经测试表明,系统稳定可靠,能够实时正确检测到电压、温度,湿度,压力等现场环境指标,实现了数据采集的自动化和智能化。

4 结束语

针对矿区的现场环境复杂特性,以及高容错率,高兼容性通信标准的设定。并且针对目前井下各分站通信接口不统一,平台不相互共享等特点,基于MODBUS协议的可容错性以及高兼容性等优势,本文设计并提出了基于MODBUS协议的矿区监测系统数据采集方案,井下分站搭载于ARM9平台上,高速率,外围电路少并且稳定。整个系统在测试环境下已实测稳定,抗干扰性,和系统自我调控能力,人机交互等都趋于完善。下一步工作将在扩大规模和系统效率提高上继续提高。该方案也是矿区安全监测系统的一个良好借鉴和应用。

摘要:叙述了基于MODBUS的矿区监测系统数据采集方案,既提高了数据传输速度,又增强了系统的稳定性。根据矿区内信号特点,提出了一种以工业控制计算机为主站、以ARM9平台主控芯片为主构成从站的矿区数据采集系统结构。阐述了分站的系统设计思想,通过MODBUS协议统一了不同的网络物理层通信接口,在实测环境中,做到了数据传输可靠,速率快,满足数据交互要求。

关键词:MODBUS,工业控制,ARM9,通信接口,数据交互

参考文献

[1]祝木田,师勇.Modbus协议通讯的应用[J].微计算机信息,2004,20(6):9-11.

[2]司马莉苹,贺贵明,陈明榜.基于Modbus/TCP协议的工业控制通信[J].计算机应用,2005,25(12):29-31.

[3]王念春.基于Modbus协议的PC与下位机PLC间的通信程序[J].自动化仪表,2001,22(8):44-46.

[4]周立功.ARM嵌入式系统基础教程[M].北京:北京航空航天大学出版社,2005.

Modbus数据通信 篇7

信息机房作为各企业、政府机构等各类信息系统运行的场地,信息设备对机房环境有严格的温湿度要求。此外由于机房设备密度大,机房处于防尘密闭状态,一旦机房精密空调出现故障停机、运行异常等问题,将会迅速导致机房温度的升高以致各种计算机系统宕机。

2 技术要点

Modbus通信协议是广泛应用于各类工业电子控制器上的一种通用通信协议。通过此通信协议,控制器相互之间、控制器经由网络(例如使用RS232、RS485/422、Modem加电话线、甚至TCP/IP来联网)和其它设备之间可以实现通信。应用Modbus通信协议,不同厂商生产的控制设备可以连成工业网络,进行集中监控。

标准的Modbus是使用RS-232C兼容串行接口,RS-232C规定了连接器针脚、接线、信号电平、波特率、奇偶校验等信息,Modbus的ASCII, RTU协议则在此基础上规定了消息、数据的结构、命令和应答的方式。Modbus控制器的数据通信采用Master/Slave方式(主/从),即Master端发出数据请求消息,Slave端接收到正确消息后就可以发送数据到Master端以响应请求。Master端也可以直接发消息修改Slave端的数据。当在网络上通信时,Modbus通信协议规定每个控制器必须设置设备地址,消息接收方通过识别按地址发来的消息判断设备的发送方,根据消息包含的功能码从而决定要产生何种操作。如果是查询操作需要回应相应的设备状态信息,接收方控制器将生成应答消息,使用Modbus协议发送给询问方。

Modbus协议需要对数据进行校验,串行协议中除有奇偶校验外,ASCII模式采用LRC校验,RTU模式采用16位CRC校验。另外,Modbus采用主从方式定时收发数据,在实际使用中如果某Slave站点断开后(如故障或关机),Master端可以诊断出来,而当故障修复后,网络又可自动接通。

Modbus协议包括ASCII、RTU、TCP等通信模式,在这里仅介绍一下Modbus协议的RTU模式(如表1所示)。在RTU通信模式中,消息的每个8Bit字节包含两个4Bit的十六进制字符。该模式下消息发送至少要以3.5个字符时间的停顿间隔开始。传输过程中,网络设备不断侦测网络总线,在停顿间隔时间内,当第一个地址域接收到数据,相应的设备就对接下来的传输字符进行解码,一旦有至少3.5个字符时间的停顿就表示该消息的结束。

在RTU模式中整个消息帧必须作为一个连续的流转输,如果在帧完成之前有超过1.5个字符时间的停顿时间,接收设备将刷新不完整的消息并假定下一字节是一个新消息的地址域。同样地,如果一个新消息在小于3.5个字符时间内接着前个消息开始,接收的设备将认为它是前一消息的延续。如果在传输过程中有以上两种情况发生的话,必然会导致CRC校验产生一个错误消息,反馈给发送方设备。

3 数据采集程序实现

机房的环境数据采集可以通过支持Modbus通信协议的各类专用传感器、支撑Modbus的控制器等实现温度、湿度等数据的采集,如温湿度传感器、电流传感器、电压传感器、机房精密空调等等。文中所阐述的编程方法主要采集设备为北京昆仑温湿度传感器和梅兰机房精密空调,控制器的通信模式为RTU模式。采集设备接线如图1所示。

3.1 温湿度传感器的数据采集程序实现

(1)计算机发送查询温湿度消息给传感器,

如表2所示。

代码实现:

(2)传感器返回温度、湿度数据,

如表3所示。

其中CRCH为CRC16校验的高位字节,CRCL为CRC16校验的低位字节。温度H为返回当前温度的高位字节,温度L为返回当前温度的低位字节。

代码实现:

3.2 梅兰空调数据采集的程序实现

(1)梅兰空调通信协议

如表4所示。

由于机房精密空调控制器所具备的可采集参数包括空调内的各种运行信息和设备信息,以读取空调时间为例进行机房空调内部各种信息的读取方法阐述。

(2)计算机发送消息查询空调当前年份

如表5所示。

对于不同的数据类型,梅兰空调的数据长度是不同的,如年份的存储,在空调中使用4个BYTE进行数据的存储。而告警信息只需要一个字节进行存储。

(3)传感器返回温度、湿度数据

如表6所示。

对数据的读取,需要引用单精度浮点类型进行数据的转换。

4 注意事项

理论上可以将相同协议模式(RTU、ASCII)、相同通信速率下各种类型的支持Modbus通信协议等的传感器设备、工业控制器设备等通过同一根485总线进行连接,但是由于生产设备厂家制造水平千差万别,常常会互相干扰。可以通过在计算机采集控制端增加多串口卡的方式,将相同的设备进行归类接入同一串口以减小干扰。在较大数据量采集通信过程中,Modbus通信协议可以一次查询得到多各控制器寄存器地址内的数据,但为了提高通信的成功率,在开发过程中可以采用一次查询较少的数据,采用多次查询的方式,来进行寄存器的大数据量采集。

5 结语

Modbus通信协议具有开放性高、用户应用范围广、易实现、扩展性好、可靠性强等优点。采用Modbus协议结合串口硬件设备就可以简单实现监控数据的采集或与机房网管系统的集成,达到机房环境监测的目标。

参考文献

Modbus数据通信 篇8

1 腐蚀在线监测仪 (1)

中国石化荆门分公司在重油催化裂化、延迟焦化及常减压等装置上采用的腐蚀在线监测仪, 该仪表由电感探针、采送器、数采转换模块及附件等部件组成, 电感探针插入管道, 其上的金属薄片与工艺设备一起被工艺介质腐蚀, 引起电感探针内线圈磁阻信号变化;采送器负责采集电感探针内线圈磁阻信号的变化数据, 计算实时腐蚀量累积值, 推算腐蚀速度, 并通过数采转换模块经RS-485接口接入装置的CS3000, 以Modbus通信协议与CS3000通信, 在CS3000中完成数据显示与存储功能, 从而实现对设备与管道壁厚腐蚀状态的实时动态监测, 及时指导操作人员加药或采取其他措施。这些腐蚀量测量信号再通过现有数采服务器送至全厂实时数据库, 进一步充分利用CS3000和实时数据库功能, 实现从装置操作人员、专业管理人员到分管领导的全面数据共享。

以重油催化裂化装置为例, 在塔C202、容D-201和容D-301的入口线各安装一支电感探针, 采送器通过两路RS-485总线接入CS3000。

2 Modbus简介

Modbus是一项应用层报文传输协议, 用于通过不同类型总线或网络连接的设备之间的客户机/服务器通信。目前可以通过以太网上的TCP/IP、各种介质上的异步串行传输和Modbus+共3种方式实现Modbus通信。

该项目中, Modbus异步串行传输协议为主-从协议, 同一时间总线上只能有一个主站, 一个或多个 (最多247个) 从站。Modbus通信总是由主站发起, 如果从站没有收到来自主站的请求, 就不会发送数据。从站之间也不能相互通信。主站同时只能启动一个Modbus事务。

在异步串行传输方式中有远程终端单元 (Remote Terminal Unit, RTU) 模式和美国标准信息交换代码 (American Standard Code for Information Interchange, ASCII) 两种模式可供选择, 包括端口通信参数 (波特率及校验方式等) 。但在一个Modbus串行总线上, 所有设备的传输模式和端口通信参数必须相同, 两种模式禁止混用。在GB/T 19582-2008中, ASCII传输模式是可选项, 所有设备必须实现RTU模式。当设备在Modbus串行总线上使用ASCII模式通信时, 报文中的每个八位字节以两个ASCII字符发送, 其优势是报文中字符发送的时间间隔可以长达1s而不产生错误, 当通信线路或设备不符合RTU模式的定时管理时可以使用该模式, 由于一个字节需要两个字符, 因此ASCII模式比RTU模式效率低;当设备在Modbus串行总线上使用RTU模式通信时, 报文中的每个八位字节含有两个四位十六进制字符, 其优点是有较高的字符密度, 在相同波特率时比ASCII模式有更高的数据吞吐率, 此模式的每个报文必须以连续的字符流传输。

3 软、硬件配置

该项目中, 采送器与CS3000的通信采用Modbus异步串行传输方式, 传输模式为RTU, 传输介质为2.0mm×2.0mm×1.0mm屏蔽双绞线, 完成数据传送和24V直流电源的供电任务。采送器采集电感探针的数据并计算实时腐蚀量累积值, 通过数采转换模块经RS-485接口接入CS3000的ALR121 RS-422/RS-485通信卡件, 将腐蚀量累积值传输到CS3000。CS3000设为主站设备, 采送器设为从站设备。系统拓扑如图1所示。

3.1 采送器

采送器相关Modbus通信参数设置见表1、2, 采收器可以接收的Modbus请求指令说明见表3。

3.2 CS3000

3.2.1 ALR121通信卡件硬件连接

CS3000的ALR121 RS-422/RS-485通信卡件用于建立与子系统的串口通信, ALR121可以提供两个RS-422/RS-485端口, 支持RS-422/RS-485接口的Modbus协议通信[2,3]。

该项目中采用控制站FCS0103中已安装的备用ALR121卡件。CS3000与采送器采用RS-485两线制接法:将数采转换模块RS-485接口的端子2 (DATA+) 和端子1 (DATA-) 分别与ALR121的TX+和TX-端子连接。ALR121的TX+和TX-端子分别与其自身的RX+和RX-端子短接, 在其自身的RX+和RX-端子上并接一个120Ω的终端电阻。

3.2.2 ALR121属性设置

进入CS3000组态管理软件System View中, 按照表3设置ALR121通信卡件属性, 包括卡件类型、通信协议、两个端口的通信参数 (如波特率) 、奇偶校验、通信错误处理及接线方式等。此处参数的设置必须与采送器参数一致。该项目中, 端口1、2的参数相同, 其定义如图2所示。其中Card Common标签页中Connection Device (连接设备) 选择“MODBUS”。在Port1和Port2标签页的Communication Error Process (通信错误处理) 组中, Number of Retries Upon Response (响应错误重试次数) 项的数值根据实际情况设置, 系统默认为1次。该系统调试初期使用默认值, 运行过程中常出现系统通信错误报警, 经多次试验确认, 将此处设为两次以上后, 没有再出现通信错误报警, 因此最终将此数值设为3次。

3.2.3 ALR121通信I/O组态

通信I/O组态在Communication I/O Builder窗口完成。组态按照表1~3定义的从站相关参数进行。在该组态表格中需要定义以下主要参数, 其他保持默认设置即可:

a.Buffer (缓冲区) 。ALR121通信卡件存储的总数据大小, 以“Word (2Bytes) ”为计量单位进行分配, 宜根据与子系统通信的数据量来定义。该项目中每个通信点的数据类型为64位浮点数, 共有3个通信点, 因此可以将缓冲区定义为12。

b.Size (所选数据类型的数据长度) 。以“Word (2Bytes) ”为计量单位进行分配, 对于模拟量其范围在1~125。该值需要与所选数据类型的数据长度匹配, 否则会使系统将ALR121判断为故障。该项目中每个通信点的数据类型为64位浮点数, 因此必须将该值定义为4。

c.Port (ALR121通信卡件端口号) 。在Port中填入与采送器通信的端口即可。该项目中%WW0001和%WW0005端口号设为1, %WW0009端口号设为2。

d.Station (从站设备地址) 。即填写上述各采送器的地址, 必须保证与所通信的采送器地址一致。

e.Device&Address (从站设备的设备类型和通信数据起始内存地址) 。根据采送器提供的寄存器类型与Modbus通信起始地址设定。该项目设为A30001。Modbus设备内部数据的定义参见GB/T 19582-2008。

f.Data Type (数据类型) 。必须与从站的通信数据类型一致。该项目中采送器的通信数据类型为64位浮点数, 因此此处的数据类型定义为Input (64bit Floating) 。

g.Reverse用于确定是否将控制站FCS和从站中的数据位 (针对bit设备类型而言) 或字 (针对Word设备类型) 的位置进行交换, 可选择“No”或“Yes”。该项目的通信数据类型是Input (64bit Floating) , CS3000未提供“Yes”选项, 只能选择“No”, 因此不允许在CS3000中进行位置交换。

h.Scan (通信扫描方式) 。可选“Normal”或“Fast”。该项目中从站的数据每5min更新一次, 因此设置为“Normal”即可满足要求。

该项目中的具体组态参数设置如图3所示。

3.2.4 Function Block组态

Function Block组态 (图4) 在Control Drawing Builder窗口完成, 只需在CS3000中设定好量程的上/下限、报警值和单位即可, 无需进行额外的数据转换。

4 调试中遇到的问题

4.1 通信不通

在室内外软/硬件设备安装单调完毕后, 用厂家的调试软件进行联机调试, 通信状态和上位计算机显示数据均正常。但是将按照表1~3设计的通信卡件软、硬件组态下装到CS3000时, CS3000报警提示错误, 错误代码A3B0, 即无响应 (No response) 。之后利用第三方Modbus调试软件 (串口调试助手、Modscan主站模拟软件和Modsim从站模拟软件) 分别与数采转换模块和CS3000进行通信测试, 结果显示数采转换模块无法与串口调试助手和Modscan通信, Modsim与CS3000通信正常。

Modsim模拟的从站与CS3000通信时, 显示CS3000读08从站的命令是“08 04 00 00 00 04 f150”, Modsim返回给CS3000的响应命令是“08 0408 00 01 00 02 00 04 00 08 23 96”。其中, 划线部分是在Modsim中手动设置的8字节数据, 便于在CS3000的Process Report中按数据位显示观察。

厂家调试软件、串口调试助手和Modscan模拟主站与数采转换模块通信时, 从主站向数采转换模块发送读命令“08 04 00 00 00 04 f1 50”时, 主站显示的从站所返回的响应命令是“08 04 04xx xx xx xx CRC1 CRC2”, 在厂家调试软件中可以转换出腐蚀累积量数值, 但是在Modscan显示的却是错误值0.0。

比较“08 04 08 00 01 00 02 00 04 00 08 2396”和“08 04 04 xx xx xx xx CRC1 CRC2”两个返回命令发现:Modsim返回给CS3000的响应命令是严格按照Modbus通信协议的要求实现的, 即输入寄存器的数量是4个, 在响应中应该返回输入寄存器8个字节的内容, 但是数采转换模块在进行Modbus通信时返回给主站的却是输入寄存器4个字节的内容, 其数据帧没有严格按照Modbus通信协议的要求实现。因此CS3000与其通信时才会出现“没有响应”的错误报警。但是由于其自带调试软件在数据帧的处理上与数采转换模块保持一致, 因此才出现自带调试软件可以显示实时数据的现象。

明确故障原因后, 厂家按照Modbus通信协议的标准格式重新编写了数采转换模块的Modbus通信程序, 问题得到解决。

4.2 CS3000显示数据不正确

在解决了返回输入寄存器字节数不正确的问题后, CS3000与数采转换模块的Modbus通信应答正常。但是在CS3000中显示的实时腐蚀累积量数值非常小 (1.59×10-314) , 怀疑数采转换模块传到CS3000的64位浮点数格式可能不正确。查阅GB/T 19582-2008和CS3000随机资料发现:Modbus使用最高有效字节在低地址位存储的方式来表示地址和数据项。这就意味着当传输一个多字节数据时, 最高字节将首先被发送, 对于一个输入寄存器 (16位字设备, 两字节) 而言, 第一个字节包括高位, 第二个字节包括低位。依此类推, 32位或64位数据也是高位字先发送。但是在CS3000中, 当从地址n开始连续读取m个Modbus字设备时, 来自Modbus设备的数据存储在FCS中;对于一个32位字设备而言, 其低位字先存储, 高位字后存储 (图5) 。因此需要在CS3000的通信I/O组态窗口Communication I/O Builder中以字为单位进行交换位置 (Reverse) 操作, 才能得到正确的数据值。

但是, CS3000的Communication I/O Builder通信I/O组态中所提供的Reverse项, 针对Input (64bit Floating) 通信数据类型未提供“Yes”选项, 只能选择“No”, 因此不允许在CS3000中进行位置交换。

由于无法改动CS3000的设置, 因此再次修改数采转换模块的有关部分, 将需要传送的64位浮点数以字为单位从低字节到高字节反向排列。在修改之前, 通过Modscan和Modsim分别与数采转换模块以及CS3000进行模拟通信测试也显示如此处理是正确的。

利用Modscan读取数采转换模块上传的实时数值为492.0, 对应的64位数据位如下:

0000000000000000

0000000000000000

1100000000000000

0100000001111110

将该64位数据以字为单位反向排序, 通过Modsim向CS3000传送:

0100000001111110

1100000000000000

0000000000000000

0000000000000000

CS3000的Process Report窗口显示数据位如图6矩形框中所示, 点细目中可正常显示实时数值492。

4.3 系统故障报警

解决上述问题后系统投入试运行。试运行过程中再次暴露出一个问题:CS3000与数采转换模块之间的通信不定期地出现持续一个扫描周期的错误报警, 错误代码A3C1, 即响应信息错误。错误出现的间隔在10~40min不等, 虽然错误持续出现的时间短暂, CS3000上的数据显示不受影响, 但是经常性的系统报警给操作人员带来较大的压力。

经初步分析, 怀疑数采转换模块中处理64位数据时的同时性存在问题, 经厂家检查优化后没有改善。最后在CS3000中通过调整ALR121通信卡件属性设置解决了该问题:在端口1、2参数设置标签页的Communication Error Process (通信错误处理) 组中, 根据实际情况调整Number of Retries Upon Response (响应错误重试次数) 项的数值, 调试初期使用系统默认的一次, 经过多次试验设为两次后不再出现通信错误报警信息, 因此确定将此数值设为3次。

5 其他问题及解决措施

经过一段时间试运行, 确认腐蚀在线监测仪表运行稳定正常, 于是通过现有数采服务器将CS3000中各腐蚀量监测点采入全厂实时数据库系统, 并在实时数据库系统监控画面组态对应监测点, 发布到分公司网页。从专业管理人员到分管领导均可以通过浏览器登录全厂实时数据库系统后, 远程查看腐蚀数据和历史趋势。后续将考虑基于实时数据库进行数据分析和处理功能的二次开发, 从而充分利用CS3000和实时数据库的功能, 实现数据的长期存储、管理与共享, 有效发挥腐蚀在线监测仪表的指导作用。

6 结束语

该项目充分利用现有CS3000和实时数据库的功能, 实现了对中国石化荆门分公司在重油催化裂化、延迟焦化及常减压等装置重点设备和管道壁厚腐蚀状态实时动态监测, 以及各级人员的数据共享, 有效发挥腐蚀在线监测仪表的作用。由于该腐蚀在线监测仪表一直以独立成套系统的方式提供, 没有与第三方DCS等进行通信的经验, 因此在该项目将监测仪表直接接入CS3000的实施过程中, 暴露出较多软件设置方面的问题。建议DCS厂家完善通信卡件组态的不足;腐蚀在线监测仪表进一步完善通信软件功能, 增强设备的适应能力, 以降低项目实施的难度。

参考文献

[1]中国石化股份公司炼油事业部, 中国石化青岛安全工程研究院.炼油装置防腐蚀策略[M].北京:中国石化出版社, 2008.

[2]王翔, 丁伟.Modbus通信协议在CS3000中的应用[J].石油化工自动化, 2011, 47 (1) :57~60.

Modbus数据通信 篇9

变频器是一种常用的电机调速设备, 广泛应用于各种自动化生产线。变频器一般可以使用面板、多功能端子和通信等多种方式进行控制。本研究主要从应用角度, 利用MSComm控件, 按照Modbus-RTU通信协议编写了通信程序, 实现了计算机与变频器的串行通信。

采用RS-485通信总线, 1台计算机可以监控多台变频器, 可以控制变频器启停、设定运行频率、查询变频器的运行状态等。

1 系统构成

系统结构如图1所示。系统由6台1.5kW的变频器和1台计算机组成。计算机作控制器, 通过串行通信的方式监控6台变频器的运行。变频器采用欧姆龙的3G3MV小型变频器。该型号变频器支持Modbus-RTU通信协议, 可以通过RS-422A/485接口与计算机通信。计算机带有RS-232C串行通信端口, 通过适配器将RS-232C通信端口转换为RS-485通信端口, 再与变频器连接。系统中, 计算机作主站, 变频器作从站。

2Modbus通信协议

Modbus协议是应用于电子控制器上的一种通用语言。通过此协议, 控制器相互之间、控制器经由网络 (例如RS-232C, RS-422A/485或以太网) 和其他设备之间可以通信。它已经成为通用的工业标准。有了它, 不同厂商生产的控制设备可以连成工业网络, 进行集中监控。

Modbus通信使用主从技术, 即主设备首先发出命令, 从设备根据主设备提供的命令做出响应。从站不能主动发送数据, 只有主站发出命令时, 从站才能给出响应。主站可以向某一个从站发出命令, 也可以向所有从站广播发送信息。从站只响应单独发给它的命令信息, 而不响应广播信息。协议规定每个从站都需要设置其设备地址, 识别主站发来的消息。

Modbus可使用ASCII和RTU两种传输模式。用户选择想要的模式, 包括串口通信参数 (波特率、校验方式等) , 在配置每个控制器的时候, 在一个Modbus网络上的所有设备都必须选择相同的传输模式和串口参数。当控制器设为RTU模式通信时, 在消息中的每个8 bit字节包含两个4 bit的16进制字符。

欧姆龙公司的3G3MV系列变频器支持RTU模式。信息帧中包含CRC-16循环冗余校验码。校验码是两个字节, 检测整个信息帧的内容。主站发送指令时, 先计算出CRC-16校验码并加入到信息帧中。从站在接收到指令数据后向主站返回响应数据。

欧姆龙公司的3G3MV系列变频器的Modbus协议的信息帧结构如图2所示。

信息帧中包括从站地址、命令代码、数据以及校验码等几大部分。

从站地址:3G3MV变频器的从站地址可以设置为00H~31H。如果设定为00H, 则为广播发送, 变频器不给响应。

命令代码:3G3MV变频器支持的命令代码共有3种:03H——读取数据;08H——回路反馈测试;10H——写入数据。

数据:由变频器的寄存器编号 (回路反馈测试时为测试编号) 与其数据组合构成的一串数据。

校验码:CRC-16循环冗余校验。

计算机以通信方式读取3G3MV变频器的状态数据或控制其运行, 实际上是读取或修改变频器中对应寄存器的数据。

3 CRC-16校验码计算

在现代工业中, 利用微机进行数据通讯的工业控制应用得也越来越广泛。由于传输距离、现场状况等诸多可能出现的因素影响, 计算机与受控设备之间的通讯数据常会发生无法预测的错误。为了防止错误所带来的影响, 一般在通讯时采取数据校验的办法, 而循环冗余码校验是最常用的校验方法之一。

CRC-16校验码计算方法如下:

a) 设置16位的CRC寄存器, 并给其赋值FFFF (Hex) ;

b) 将数据的第一个8位与16位CRC寄存器的低8位进行异或运算, 并把结果存入CRC寄存器;

c) CRC寄存器向右移一位, MSB (最高位) 补零, 移出并检查LSB (最低位) ;

d) 如果LSB为0, 重复c) ;若LSB为1, CRC寄存器与已知多项式码 (A001) 取异或运算;

e) 重复c) 与d) , 直到8次移位全部完成, 此时一个8位数据处理完毕;

f) 用此时的CRC寄存器的值与下一个8位数据进行异或运算, 并进行如前一个数据似的8次移位;

g) 所有的8位数据处理完成后, 这时CRC寄存器内的值, 即为最终的CRC校验值。

4 变频器通信设置

将变频器按照使用手册正确的进行接线。每台变频器在通信前必须设置与通信相关的参数, 将运行控制方式、频率控制方式均设定为“通信”, 频率单位设为0.1Hz, 还要设置从站地址、通信波特率、奇偶校验等。通信参数设为1位启动位, 8位数据位, 1位停止位, 偶校验, 9600bit/s。

使用RS-485方式通信时, 将终端变频器的外部设定开关SW2设置为ON, 接入120Ω的终端电阻。将S+与R+, S-与R-连接。

计算机的串口通信参数必须与变频器的通信参数一致, 否则不能正常通信。

5 通信程序的编写

VC中利用MSComm控件通过串行端口传送和接收数据, 十分方便。MSComm控件提供了一种有效的处理串口交互作用的事件驱动方法:该方法利用OnComm事件捕获并处理通信及其错误, 当CommEvent属性发生变化时, 就产生事件并等待相应处理。每个MSComm控件都有一个串口相对应。

运行此程序, 在编辑框中编写Modbus数据帧 (不包含校验码) , 程序将计算出校验码, 并附加在数据帧后, 形成完整的Modbus信息帧, 并通过计算机的串口发送出去。变频器在接收到此信息帧后作出响应, 并将响应帧返回计算机, 在程序上显示。

通信程序主要由以下几部分组成:串口初始化、生成及发送Modbus命令数据帧、CRC-16校验码计算子程序以及串口事件消息处理等几大部分。

a) 串口初始化:程序的初始化部分主要完成了串行通信接口的初始化任务, 包括波特率、数据长度、开始位、停止位以及缓冲区设置等。

b) 发送数据:数据发送程序部分主要完成了数据的输入、数据转换、数据发送等任务。

c) 接收数据:本部分程序实现了变频器响应数据的接收、显示等任务。

d) 校验码的计算:本部分程序的功能是对要发送的数据帧进行校验并计算校验码。

6 结语

本文采用VC++6.0编写程序, 通过串行通信的方式实现了计算机对变频器的控制以及变频起运行状态查询的功能, 并给出了较完整的程序。文中所述方法对进一步开发计算机与变频器的应用系统提供了有价值的参考。

摘要:Modbus是用于控制设备的一种通用串行通信协议。简要介绍Modbus协议以及计算机与变频器之间进行通信的方法;讨论循环冗余校验码 (CRC-16) 的生成方法, 并设计了计算CRC-16的子程序。给出了计算机通过RS-485串行总线, 以通信的方式集中监控台分散变频的主要程序。实际应用表明:该方法简单易行, 可靠性高, 控制效果良好。

关键词:串行通信,Modbus,CRC-16,变频器

参考文献

[1]OMRON.3G3MV用户手册[Z].2003:84-95.

[2]吴伟, 邬冠华, 喻金科.基于RS-485的PLC与多台变频器通信的实现与应用[J].自动化仪表, 2005 (9) :55-57.

[3]OMRON.SYSDRIVER 3G3MV多功能小型变频器用户手册[Z].2003:84-95.

上一篇:《萌芽》下一篇:绿色环保施工理念