modbus通讯

2024-05-21

modbus通讯(精选7篇)

篇1:modbus通讯

MODBUS通讯协议学习总结

1、协议分3个层次看:

协议应用函数层,如读写coil,寄存器; RTU或者ASCII传输层 硬件底层

2、比如上位机发来:01 06 00 01 02 D5 00 55 含义:表示上午12点05分开始采集,12*60+5=725=0X02D5 01地址

06表示功能码 00 01寄存器地址 02 D5数据 00 55 crc

3、就当是一个简单的协议看。其它的都是格式。比如:上位机发送A,下位机知道这个是>90分

按照他给的框架,自己再自由定义

比如:从机地址,可以写01-FF 255个这个是从机先固定好的。比如从机是01。上位机发了一串16进制数据,如果第一个字节是01,说明是在和自己通信。每台从机地址都不一样

再判断功能码。如03。这个看你写程序是怎么定义的。比如我这里是要读下位机采集到的数据,我这里就是设置了一个数组,把数据存了起来,等判断03的时候就把数据给上位机。

4、寄存器地址。自己定义,我这边是随便写的一个固定值

5、还有一个crc判断。读数据的时候,判断下。如果上位机发过来的crc,和自己计算出来的crc一样,才给返回数据

6、那个CRC怎么计算呢?

有固定的计算格式,只需调用即可。crc 在通过modbus串口传数据的时候用,网络上不用。

篇2:modbus通讯

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次移位。这样处理完了一个完整的八位。

篇3:Modbus通讯协议及应用

关键词:Modbus协议,串行通信,CRC校验,RS-232C

1 Modbus协议简介

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

l.l在Modbus网络上转输

标准的Modbus口是使用一RS-232C兼容串行接口, 它定义了连接口的针脚、电缆、信号位、传输波特率、奇偶校验。控制器能直接或经由Modem组网。

控制器通信使用主—从技术, 即仅一设备 (主设备) 能初始化传输 (查询) 。其它设备 (从设备) 根据主设备查询提供的数据作出相应反应。典型的主设备:主机和可编程仪表。典型的从设备:可编程控制器。

主设备可单独和从设备通信, 也能以广播方式和所有从设备通信。从设备回应消息也由Modbus协议构成, 包括确认要行动的域、任何要返回的数据、和一错误检测域。

1.2 查询—回应周期

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

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

2 两种传输方式

控制器能设置为两种传输模式 (ASCII或RTU) 中的任何一种在标准的Modbus网络通信。用户选择想要的模式, 包括串口通信参数 (波特率、校验方式等) , 在配置每个控制器的时候, 在一个Modbus网络上的所有设备都必须选择相同的传输模式和串口参数。

2.1 ASCII模式

当控制器设为在Modbus网络上以ASCII (美国标准信息交换代码) 模式通信, 在消息中的每个8Bit字节都作为两个ASCII字符发送。这种方式的主要优点是字符发送的时间间隔可达到1秒而不产生错误。

2.2 RTU模式

当控制器设为在Modbus网络上以RTU (远程终端单元) 模式通信, 在消息中的每个8Bit字节包含两个4Bit的十六进制字符。这种方式的主要优点是:在同样的波特率下, 可比ASCII方式传送更多的数据。

3 Modbus消息帧

两种传输模式中 (ASCII或RTU) , 传输设备以将Modbus消息转为有起点和终点的帧, 这就允许接收的设备在消息起始处开始工作, 读地址分配信息, 判断哪一个设备被选中 (广播方式则传给所有设备) , 判知何时信息已完成。由于RTU模式的可以传输更多的信息, 现在已被广泛应用。

3.1 RTU帧

使用RTU模式, 消息发送至少要以3.5个字符时间的停顿间隔开始。在网络波特率下多样的字符时间, 这是最容易实现的。

3.2 地址域

消息帧的地址域包含8Bit。可能的从设备地址是0...247 (十进制) 。单个设备的地址范围是1...247。主设备通过将要联络的从设备的地址放入消息中的地址域来选通从设备。当从设备发送回应消息时, 它把自己的地址放入回应的地址域中, 以便主设备知道是哪一个设备作出回应。

3.3 如何处理功能域

消息帧中的功能代码域包含了8Bit。可能的代码范围是十进制的1...255。

Modbus功能代码分类:公用功能码、用户自定义功能码、预留功能码。其中公用功能码经Modbus组织团体验证, 保证每一代码的唯一性, 基本上可以满足大部分用户需要。公用功能码的主要代码定义见下表:

3.4 数据域

数据域是由两个十六进制数集合构成的, 范围00...FF。

从主设备发给从设备消息的数据域包含附加的信息:从设备必须用于进行执行由功能代码所定义的所为。这包括了象不连续的寄存器地址, 要处理项的数目, 域中实际数据字节数。

3.5 错误检测域

当选用RTU模式作字符帧, 错误检测域包含一16Bits值 (用两个8位的字符来实现) 。错误检测域的内容是通过对消息内容进行循环冗长检测方法得出的。CRC域附加在消息的最后, 添加时先是低字节然后是高字节。故CRC的高位字节是发送消息的最后一个字节。

3.6 字符的连续传输

当消息在标准的Modbus系列网络传输时, 每个字符或字节以如下方式发送 (从左到右) :最低有效位...最高有效位

3.7 错误检测方法

标准的Modbus串行网络采用两种错误检测方法。奇偶校验对每个字符都可用, 帧检测 (LRC或CRC) 应用于整个消息。用户可以配置控制器是奇或偶校验, 或无校验。这将决定了每个字符中的奇偶校验位是如何设置的。

4 Modbus在宣钢的应用

宣钢球团的生球计量秤及熟球计量秤的仪表采用Modbus协议与主机 (AC800F) 通讯, 实现了产量的计量, 现将通讯格式及数据转换过程说明如下:

3号竖炉的计量仪表 (XR2001) 采用RTU传输模式, 1个启始位, 无校验位, 2个停止位, 通过485物理接口与主机相连, 联接速率为19200bps。

采用Modbus通讯统计球团矿, 数据采集设备和计算机设备, 不必投入很大的实施费用, 不仅可以对这两台仪表进行远程实时监测, 而且充分用计算机的特点, 可以对球团矿生产数据进行存盘, 方便以后调用、查阅;可以多点显示, 在工长室及布料操作室都可直接显示这两台秤的数据, 布料工根据这些数据对整个竖炉生产进行最优化控制。系统投运以来运行稳定可靠。

5 结束语

篇4:modbus通讯

关键词:Modbus;VB; SQLServer;PLC

在现代工业中使用PLC设备进行分散化控制,上位机监控软件提供图形界面并对下位设备进行数据采集、管理,已经成为工业控制系统中普遍使用的监控形式。其中Modbus协议以标准、开放等优点广泛应用于工业通讯当中,本文基于西门子的CP341模块作为Modbus从站,使用Visual Basic语言进行编程,在上位计算机中采集、存储PLC中状态变量,实现对设备的实时监控。

1.Modbus协议

一个Modbus通讯数据帧由若干个字节组成,一般通信数据帧的格式包括:地址域、功能码、数据域、错误校验(16位CRC校验)

地址域长度为1个字节,表示从站的地址。功能码是数据帧中传送的第二个字节,不同的功能码对应数据域格式不尽相同,常用的功能码有1、2、3、4、5、6、15和16,分别表示读线圈、读输入状态、读保持寄存器、读输入寄存器、写单个线圈、写单个输入状态、写多个线圈、写多个保持寄存器[1]。数据帧最后两个字节是CRC错误校验域。

若需要读取05从站以00 00为起始地址的两个REAL型数据:3.4和8.9,则主站发送的报文:05 03 00 00 00 04 C5 8F,从站返回报文:05 03 08 40 59 99 9A 41 0E 66 66 D6 72。

2.西门子CP341的组态与编程

2.1西门子CP341组态

本文涉及与计算机通讯的从站为西门子S7-300PLC加装CP341-RS422/485模块。在安装CP341之前需要插入硬件狗Dongle,安装驱动软件CP_PTP_PARAM和Modbus-Slave318,然后才能在Step7中对CP341进行组态。

设置模块时必须与计算机确认设置的内容:从站地址、波特率、数据位停止位,校验位。CP341模块的参数应按确认后的内容进行配置,波特率通常设为9600即可。本文中通讯参数设置为9600, 8, 1, n,从站地址为5。

传输DINT、REAL数据时,应设置FC 03,06,16选项卡,并建立一个DB块存储待传数据。本文中所需传输的变量数据类型为DINT、REAL。传输模式选择Half-Duplex。配置完成后,向CP341下载Modbus Slave驱动。

2.2PLC编程

在Step7中打开 “zXX21_05_PtP_Com_MODSL”项目,将Modbus通讯程序OB100、FB7、FB8、FB80、DB80复制到Step7程序中。在程序中调用FB80,并将通讯数据块名称DB80和CP341起始地址填入。建立与计算机通讯用的FC块并调用FB80,将通讯数据块名称DB80和CP341起始地址填入。其中FB80中的OB_MASK的值应始终为1,其余变量根据需要进行分配。

3.Visual Basic编程实现

为计算机安装RS485通讯卡,添加各个数据显示控件数组和MSComm控件。Modbus RTU模式的报文发送必须控制好字符间隔,1byte数据发送后延时应小于1.5倍字符时间,两帧报文之间的间隔必须大于3.5倍字符时间间隔。一个字符时间是指按照用户设定的波特率传输一个字节所需要的时间[2]。

软件通过串口发送查询数据帧,对PLC返回的数据分解、显示,PLC返回的内容包括各开关状态、元件状态、运行速度、运行负荷等。从通讯内容来说,包括开关量、模拟量,其中开关量均打包为DINT型变量整体发送。

3.1串口通讯与数据处理

在界面中加载VB自带的MSCOMM控件,在软件启动时,程序调用API函数自动从配置文件中读取设置的控件属性参数,在控件的CommEvent事件中编写响应程序。

使用Timer控件按照要求的周期發送报文。主站发出的查询报文为05 03 00 00 00 24 44 55(十六进制),通过MSComm.Output指令发送给从站。

取得从站返回给主站的数据帧后,从第4个字节开始,每4个字节为一个数据。数据帧中的DINT型变量按位进行分解,与相应的开关量对应显示,浮点数转换为小数并显示在界面上。

3.2数据管理

为及时记录设备运行状态,分析设备使用情况,软件将打包传输的数据存储在SQLServer数据库中,以备日后查询,存储数据的过程根据MSComm.CommEvent事件触发。VB应用程序开发中,可以通过ADO对微软所支持的数据库进行操作。

在数据库中建立存储表,建立不少于传输内容的字段,分别存储各开关量数据、模拟量数据。在VB中编写读写数据库的ADO语句对SQLServer进行操作。

Set Cnn = New ADODB.Connection

Cnn.Open strCnn

Cnn.Execute "INSERT INTO Database (iTime, …) VALUES (SQLtxt)"

需要读取存储信息时,可使用SQL查询语句读取相应字段进行数据转换和位处理即可,本文不再赘述。4 结论

本文实现了在Modbus通讯的条件下,使用Visual Basic编程实现了在计算机上读取PLC中少量数据,并存储入SQLServer数据库的功能。在只需要监控少量数据的情况下,可以不必在计算机上安装其他专业的工业控制软件就能够满足需求,只安装相应的控件补丁和硬件驱动即可。本文所实现的功能降低了监控软件对计算机性能的要求,也使得部署程序更加简便。

参考文献:

[1]白焰,钟艳辉,秦宇飞.基于VC的Modbus协议通信测试软件的实现[J].现代电力,2008 25(6):76-80

篇5:modbus通讯

一种基于MODBUS的嵌入式人机界面的设计与实现

错误检测主程序 ">

现场总线是一种用于底层工业控制和测量仪表之间的总线,人机界面设备就是作为现场总线中,控制器和操作者之间的通信员它可以完成现场控制器与操作者之间数据的接收和发送。本设计使用Atmel单片机89C52作为主要控制芯片,用以东芝丁6963C为控制芯片的128*64液晶比O作为显示界面,采用工业标准通信协议MOOBUS作为数据信息交互的介质,主要功能是完成对工业网络中现场控制器数据的采集显示,根据需要设定数据并发送到现场控制器完成控制任务,实现人机之间控制信息的交互传送。文章分别介绍了硬件设计电路和软件的设计过程,并介绍了一种好用和简单的MOOBUS从设备调试工具 Modbus slave。

系统硬件电路框图如图2。

电路部分十分简单,包括看门狗电路、4个按键的直接连接、程序扩展电路、RS232电平转换部分、液晶点阵连接部分。

MAX7OS的功能是:上电复位程序监视。89C52正常工作,执行喂狗程序时,不断从P17输出脉冲信号至MAX705的WDI脚,当单片机程序跑飞后,Pl.7不再输出脉冲信号MAX705的WDI脚在1.6S内收不到脉冲信号,将在MAX70S的RESTE端产生高电平,产生复位信号,将单片机复位,迫使程序复位到入口处。

针对AT89C52硬件资源比较丰富,考虑采用直接方式设计键盘电路,而且可以简化电路。键盘采用4个开关直接控制。开关的一段通过电阻连接电源和 欢迎到访我的豆丁主页:http:///hechaoscut(文档精灵)本文格式为WORD,能编辑和复制,感谢您的阅读。

AT89C52的P10~P13管脚,而另一端接地。由于P10~P13是低电平工作,当不同的开关接通时,根据采集到不同端口是高还是低电平,来执行相应的按键子程序。

考虑到使用LCD具有较强的表现能力和丰富的表现方式,所以扩展了32K的EPROM27256。是为实现产品升级,完成丰富菜单,强大功能,表现动画准备的。

128*64液晶显示器LCO采用直接访问方式,直接访问方式是把内置T6963C控制器的液晶显示模块作为存储器或I/O设备直接挂在单片机的总线上。模块的数据线接单片机的数据总线上,片选及寄存器选择信号线由单片机的地址总线提供,读和写操作由单片机的读写操作信号控制。按口电路如图2所示,在图中使用了地址线AS作为模块的寄存器选择线C/D,使用地址线A15作为模块操作的片选线;模块的VO端所接的电位器是作为液晶驱动电源的调节器,调节显示的对比度。使用该种连接方式,不用考虑T6963C的时序图,不用对LCD的管脚进行单独的操作来满足时序,就像读写外部RAM一样,笔者认为比采用要在程序中实现时序的间接访问连接方式方便。

考虑到在常温下,LCD的额定电流为0。4ma所需的功率很小,再加上RS232串口集成电路MAX232有两路发送器、两路转换器,使用其中一套完成电平转换用来通信,另一套正好用来产生-10V,该电压由MAX232的14端供LCD显示画面使用。

下面介绍软件部分,主要完成一下功能按键的查询和响应、画面的显示和刷新通过MOOBUS协议完成数据的接收和传输通信。

软件结构清晰,按模块分为三大块主程序部分、T0定时中断、串口中断部分。

(1)主程序部分

主程序流程图如图3所示,主要完成一些初始参数的设定,其中LCD的初始化包括:液晶屏的尺寸光标的位置和形状等这部分程序在购买LCD时厂家会附带的,根据需要修改一下即可满足要求;还有就是将需要显示的汉字进行编码。定时器使用的是T0选择方式1,采用50ms中断查询按键,考虑到还有串口中断,使用了默认的中断优先级,即T0中断高于串口中断。这种安排已通过试验调试。在等待中断部分安排了循环执行喂狗程序目的是在程序正常执行时起到看门狗的作用,在等待中断过程中系统又不认为是死机。

欢迎到访我的豆丁主页:http:///hechaoscut(文档精灵)本文格式为WORD,能编辑和复制,感谢您的阅读。

main: Icall clearmemory;清内存 Icall initlcd;初始化Icd mov sp,#stackpointer;堆栈为65h mov tmod.#21h:t0方式1,t1方式2 mov radixcursor.#10h mov currentpagenumber,#01h;指定初始 页号为1 mov page number,currehtpagenumber setb es setb ea mov th1,#Ofdh;设定波特率9600bps mov tl1.#Ofdh setb tr1;启动定时器t1 mov scoh.#Od0h mov 2ch,用来辅助发送 mov 2bh.#10h Icall setuptimer0;初始化定时器t0,并启动t0 setb ren Icall chaxuhsj;发送查询命令 Icall showpage;显示页面 dieloop: 欢迎到访我的豆丁主页:http:///hechaoscut(文档精灵)本文格式为WORD,能编辑和复制,感谢您的阅读。

nop Icall feeddog;执行喂狗程序

jmp dieloop;循环等待中断

(2)T0定时中断部分

流程图如图4所示,这部分主要功能是完成按键的查询,并转去执行相应的子程序本系统中一共有四个编程键,依次可实现修改数据、增加值、减少值和翻页功能。当我们按下修改键后(即光标被激活)修改键可以用来移动光标位置此时按增加键和减少键可以分别增加和减少数值。其中翻页键是一个复用键如果直接按翻页键(不激活光标),那么它的功能就是在不同的页面之间切换,并从现场收集各页数据并显示到LCD上:而当光标处在被激活状态下时,按下翻页键就可以向现场控制器(如DSP)发送数据达到控制目的这种一键复用的设计,在电子商品中特别常见通过软件的设计减少了按键的数量,是一个比较有实际价值的设计已被广泛使用。键盘采用50ms定时中断设计,一般人手按键的起落时差远大于50ms所以可以满足设计要求而且在后面软件部分进行了去抖动,等待按键抬起功能的设计。timer0int: pushdph pushdpl pushacc pushpsw movthi0。#4bh 欢迎到访我的豆丁主页:http:///hechaoscut(文档精灵)本文格式为WORD,能编辑和复制,感谢您的阅读。

movtl0。#Dfdh clrtr0;关定时器

movp1,#Offh;置p1口为输入状态

mova,p1;读按键

epla anda,#00001111b;屏蔽高4位

jzgoret00;无键按下

movpgbkey,a Icalldelay;有键按下delay10ms去抖动

Icallwait;等待按键抬起

Icallseankey;转去执行相应的按键子程序

goret00: setbtr0;开定时器

poppsw popacc popdpl popdph ren(3)串口中断部分

这部分的主要功能是通过MODBUS协议完成数据的查询和发送。先对MODBUS做个简单的介绍该协议通信使用主从技术,即仅主设备能初始化传输(查询)其它设备(从设备),根据主设备查询提供的数据作出相应反应。按传输模式分为ASCII和RTU方式。本设计采用RTU方式。这种方式的主要优点是:在同样的波特率下,可比ASCII方式传送更多的数据。每个消息必须以连续流的方式传输。

MODBUS协议建立了主设备查询的格式设备地址、功能代码、所有要发送的数据、错误检测域从设备回应消息也由MODBUS协议构成,包括确认要行动的域、任何要返回的数据和错误检测域。如果在消息接收过程中发生错误或从设备不能执行其命令,从设备将建立错误消息并把它作为回应发送出去。

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

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

举一个关于功能码03H的例子。

主站询问报文格式:

从站应答格式:

serialportint: 欢迎到访我的豆丁主页:http:///hechaoscut(文档精灵)本文格式为WORD,能编辑和复制,感谢您的阅读。

push dph push dpl push acc push psw jbc ri, receive Icall chaxunsj;发送查询命令

sjmp return receive: mov r0 ,2bh;指定用来存接收数据的地址指针

mov a,sbufall clr riall mov @r0 ,a inc 2bh mov a,2bh Icall crc;进行crc校验

Icall showpage return: pop psw pop acc pop dpl pop dph reti

欢迎到访我的豆丁主页:http:///hechaoscut(文档精灵)本文格式为WORD,能编辑和复制,感谢您的阅读。

笔者使用了Modbusslave软件仿真下位机,模拟MOD-BUS的从设备。通过该软件,用所设计人机界面可以读取具体设备的具体各类寄存器的数据,同样可以写数据到指定设备中指定的各类寄存器中,这样就完成了数据的接收和传送。

篇6:modbus通讯

Modbus通讯协议是由Modicon公司于上世纪六七十年代发明的一种开放式多设备间的串口通讯协议。通过该协议, 工业控制设备之间, 工业控制设备与现场设备现场仪表之间可以进行协议通讯, 各个设备厂家或仪表厂价也可以根据Modbus通讯协议的基本要求来编写自身设备的特定Modbus通讯协议, 使其能够与上位控制设备如PLC、DCS、工控机等进行协议通讯。上世纪80年代末, Schneider公司收购Modicon公司, 并且将该协议作为其下几个系列PLC的标准首选通讯协议, 随着PLC在工程控制领域运用范围的逐步扩大与影响力的不断加深, Modbus通讯协议以其开放性、灵活性、可靠性等优点, 成为了一种使用相当普遍的工业通讯协议方式。

如今, 在工业控制现场数据通讯方面, 越来越多的设备与仪表厂商使用Modbus作为自己产品的通讯协议, 通过该协议, 仪表向工控设备发送已经转换完成或者计算完毕的数据, 从而实现数据的实时更新与监控。这样就可以使原先一些检测起来不方便的设备参数, 诸如视在功率等实现了有效的监控。

目前, 协议在PLC与物位、电量、流速等仪表的通讯中有着极为广泛的应用, 它的优势就在于省却了部分的模拟量模块, 使得数据可以大批量、高速度地传送到上位机或PLC。减少了中间环节, 降低了连续变化的模拟量监控的成本。

电量监测仪表的简介

电量监测仪表是用于测量各种工业现场设备各大型设备用诸如电压、电流等电力电量参数的一种仪表, 现如今, 先进的电量监测仪表都是网络型通讯电表, 表内集合了测量仪表、显示仪表、数据计算单元、数据通讯单元等传统仪器, 能够完成集现场数据测量、数据显示、数据计算、数据通讯等多种功能。电量监测仪表可以大大地提高数据传输与通讯的效率, 这就使自控调试人员的工作变得更加高效和便捷, 有些只需少量编程, 有些甚至无需编程, 只要设置一下通讯地址、速率、格式即可实现与上位机的通讯。现在被较为广泛使用的是上海安科瑞生产的EFK系列 (图1) 的网络型电量监测仪表。

Modbus通讯方式又被公认为是通讯方式最简便, 通讯成功率最高, 通讯协议最精巧的通讯方式, 因此将Modbus通讯用于大型用电设备数据通讯与上传领域会极大地提高电量监控仪表的通讯效率与通讯准确率, 也正是这种高效快捷的通讯方式, 使得电力数据的即时监控变成更加精确, 更加可靠。

选择Modbus作为电量监测仪表通讯方式的原因

有很多通讯方式可以选择, 为何现在的电量监测仪表大量地选择Modbus作为其通讯方式呢?原因有这样几方面:首先, Modbus为两线制通讯方式, 两根线分别是D+与D-, 这种通讯方式就大大地简化了通讯线路, 优化了通讯结构, 使其能够最大限度地发挥串行通讯的优势, 提高了通讯速率;此外, Modbus通讯方式会在其每一次通讯序列完成通讯以后随机产生一个循环冗余的校验码, 从而提高了通讯成功率, 降低了因为通讯等待而造成的数据丢失与延误;再次, Modbus通讯可以通过编制程序来实现, 因为Modbus通讯没有限制通讯序列的长度, 所以整个电量监测仪表的Modbus通讯的编程没有很高的难度, 很多程序都不复杂, 因此, Modbus通讯在电力监测仪表中的应用十分广泛, 可以毫不夸张地说, Modbus通讯已经成为电力监测领域的主要和首选的量化数据通讯方式。

上位机与电力监测仪表通讯的方法

上位机有多种方法与电力监测仪表进行数据交互, 目前使用比较广泛的有以下几种:

第一, 通过Modbus线缆的并接, 直接与上位机的串口相连进行通讯, 由上位机直接调用仪表相关存储区域, 来进行对应规律的转换或直接显示;这种方法能够比较直接地读到仪表的数据, 只需要对每个现场的仪表设置有规律的地址和相同的通讯速率即可, 这样做极大地减轻了工程人员的工作强度和压力, 但缺点是串口通讯对通讯距离有所限制, 通讯的有效距离较短, 如果仪表的现场与上位机所在的地相距较远, 那么使用串口直接通讯就不可行;那么就要采取一种能够适应于较长距离和长距离通讯的新方法了。

第二, 通过PLC中的Modbus通讯模块将现场的数据集合在PLC的内部变量存储区域内, 再通过上位机对相应存储区域的读取, 同样经过其定义的规则进行转换。该法的缺点是因为需要编程, 所以对工程人员的要求较高, 但这种方法的优点同样显而易见, 那就是不受通讯距离的影响;举个例子, 就算PLC通过无线网络进行程序的上下载, 那么该方法也可以通讯事先编制完成的程序由上位机进行现场数据的交互, 正是这样的与众不同的特点, 也使得通过模块进行的Modbus通讯得到了更为广泛的应用, 如今俨然已经成为了电力监测仪表与上位机进行通讯的最主要的最稳妥的方式。

第三, 通过串口装置进行辅助通讯, 即首先把串口通过屏蔽线缆进行连接, 然后将其末端连接到带有终端电阻的串口装置中, 最后由此类装置通过普通线缆完成与上位机的数据;该方式是前两种方法的结合, 优点是它在一定程度上延长了串口通讯的长度限制, 使通讯有效距离扩大了一倍, 且不用编程, 使用起来较为得心应手, 可是缺陷也不容回避, 那就是在加载了中间环节以后, 无法保证通讯的成功率, 会造成数据丢祯、数据突变等传统通讯中司空见惯的现象;正因为如此该方法仅在抗干扰较好或上位机与设备相距不远的场合使用。

下面我将针对使用相对广泛的前两种方法的上位机与网络型电量监测仪表的通讯以我实际使用过的Omron CJ系列 (图二, 右起最后一个为通讯模块, 红圈内为通讯端口) 的例子进行分析。

上位机与网络型电量监测仪表通讯的主要步骤

上位机要完成与网络型电量监测仪表的通讯需要以下几个步骤:

首先, 使用线缆将整个通讯回路中的所有仪表的数据端口按部就班地以正负分开并接的方式连在一起;最好是屏蔽通讯电缆, 这样就可以对以表进行接地处理, 使回路中的所有仪表拥有相同的比较点, 如此而为可以减少外界电磁波对通讯过程的干扰;现在主要使用的通讯缆为屏蔽网线, 根据到底是接入PLC的通讯模块还是直接串口通讯决定是否加入终端电阻, 因为直接串口通讯一定要终端电阻, 而PLC的通讯模块一般自带终端电阻;这样就完成了Modbus通讯的线路构建。

其次, 确定通讯速率;简而言之就是把所有的仪表的通讯设置速率调到一致;不过整个过程是一个相当复杂的过程, 在这里我长话短说, 将其概括为根据现场环境决定通讯速率的高低, 不要因为一味地追求速度快而忽略稳定性, 这样会造成数据丢祯, 也同样不要因为过分地强调数据的保全而将速率调得很低, 这样则会让通讯刷新率降低;因此要选择一个恰到好处的通讯速率, 保证速率稳定可以兼得。

再次, 设定通讯地址;即让地址按照事先安排好的顺序进行排列, 基本原则就是根据通讯线程的远近来决定地址的先后。

以上三个步骤的目的就是将所有的单个仪表在加在同一个通讯回路中, 并且使其具有各自独立且互相关联的通讯配置, 使其构成一个完整的系统。接下来, 我们需要对我们通讯回路进行合理整合了。

第四, 对PLC的模块编程。用专用编程软件对Modbus通讯模块进行编程, 通过这些程序对通讯步进行控制, 按事先制订好的顺序向电量监控仪表发出数据回传指令, 这些指令可以带回你需要的数据, 并将其存放在程序事先设定好的PLC的相应存储器中, 如此, 上位机就可以通过调用相应区域, 得到通讯的数值。

第五, 数据计算。如今绝大部分的电力监测仪表所给出的各类数据都不是直接的电量数据, 而是一个与其有关联的数据, 需要通过其厂家特定的转换规律通过同样从起仪表内部给出的一些参数进行计算的, 这些工作完全可以通过上位机来完成, 从而得到最终的实时数据。

第六, 分清通讯序列。由于电力监测仪表的Modbus通讯为串口通讯, 顾名思义就是每一时刻只能有一个通讯序列在工作, 如果出现在两个通讯序列同时在工作, 那么就会出现线路堵塞、通讯中断等情况, 更有甚者会给PLC本身的控制程序的工作带来问题;因此我们必须在模块本身的通讯程序中, 或者上位机组态中将多个通讯序列分开, 保证每一时刻只有一个通讯序列在工作, 保证通讯的正常和顺畅。

最后一点, 也是最重要的一点, 就是软硬件配合。何谓软硬件配合呢?就是选择合适的通讯器材, 构建稳妥的通讯回路, 编制完善的通讯序列控制程序, 从软件、硬件等多方面保证通讯的高速、高效、准确无误地进行。

Modbus通讯在电力监测领域的发展趋势

过去, 我们传统的电力监测仪表都是直接显示, 这样做虽然结构简单, 对设备管理人员要求很低, 但是需要经常来往于现场和中控室之间, 如此而为效率低下, 数据无法实现有效地保存。而现在, 在采用通讯方式之后, 尤其是Modbus通讯方式进行的数据交互可以实现数据的实时保存与调用, 这样做可以使管理人员做到对参数一目了然, 对现场情况心知肚明。说到它的发展趋势, 我们不难发现, Modbus通讯在包括电力监测仪表在内的仪表现代化监测中已经起到了举足轻重的作用, 在不久的将来, Modbus通讯在该领域会有更加突飞猛进的发展, 它可以实现通讯的器材最少化、效率最优化、线路集成化、数据动态化、仪表规模化与设备总线化, 随着现代移动通讯技术的发展, Modbus通讯还会在电力电量监测领域实现远程、长期、稳定的监测。

总结

Modbus通讯已经在网络型智能化电力电量监测领域成绩斐然, 目前已经成为网络型的各类监测仪表的标准通讯协议, 它的发展壮大见证了仪表从单一化 (如图3的左表) 向自动化 (如图3的右表) 突飞猛进的历程。

篇7:modbus通讯

关键词: 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.

上一篇:创新工作室探索下一篇:荣辱观宣讲以爱国为荣以危国为耻