公务员期刊网 精选范文 modbus协议范文

modbus协议精选(九篇)

modbus协议

第1篇:modbus协议范文

【关键词】 Modbus协议 嵌入式实时操作系统 系统设计

一、引言

Modbus协议是由Modicon公司在1978年发明的一种工业通信协议,正式为工业网络拉开了序幕。Modbus 标准定义了 OSI 模型第7层上的应用层报文传输协议,它在连接至不同类型总线或网络的设备之间提供客户机/服务器通信。由于其开放性标准、支持多种电气接口、帧格式通俗易懂的特点,特别是工控领域上HMI、PLC、前端仪表等设备间通信得到了广泛使用。通常Modbus协议由串行链路通过一个主/从总线模型实现。同一时刻,只有一个主站连接于总线,一个或多个从站连接在同一个串行总线上。

二、硬件结构设计

在工业仪表内除了实现主要的监测物理量之外,仪表还需具备数据通信互连功能。本文所指的工业仪表是基于STM32L152RBT6为控制器的硬件环境实现的对外界环境温度监测的仪表,并通过在其内部构建Modbus协议实现数据通信。STM32L152RBT6是属于由ST公司的STM32L152系列微控制器,该系列属于是超低功耗,高数据安全性,高效能的ARM Cortex-M3微控制器芯片。其低功耗运行模式电流为10.4μA,能够满足实际的工业应用中低功耗稳定的需求。同时利用STM32内提供的串行口外设和485总线转换模块实现通信接口。转换模块采用的是SP3072EEN接口芯片,采用半双工通讯方式,与单片机引脚连接简单。硬件结构框图如图1所示。

三、软件功能设计

为了在基于嵌入式的工业仪表内构建一个实时性强、运行稳定的Modbus协议,使用了μC/OS-II作为整个仪表的软件平台,其是由Jean J. Labrosse于1992年编写的一个嵌入式多任务操作系统,凭借其足够的稳定性和安全性在数十年之间得到了许多机构的标准认证。在μC/OS-II内具体应用的软功能都是通过系统提供的多个用户任务来实现。

3.1 Modbus主站设计

实际工业应用中,工业仪表需要向前端传感设备或其他仪表进行数据交互,以便实时读取到需要的数据值,仪表内部需要构建一个Modbus主站作为主动发送数据请求命令的客户端。Modbus主站工作原理如图2所示。

本设计利用了μC/OS-Ⅱ所提供的系统服务将主站模块分为三个部分:请求主站服务的用户任务、主站服务管理任务、串口底层驱动函数。

请求主站服务的用户任务是指的是那些用户任务中有调用Modbus主站服务的需求。各个用户任务通过实际应用发送特定的主站请求命令,并通过操作系统提供的消息队列进行命令缓冲。

主站系统中的主站管理任务是负责专门管理来自各个请求主站服务的任务的具体请求。该任务也属于一个用户任务,只是对请求命令的缓冲队列进行集中处理。

串口底层的中断处理实现了串行链路上具体的数据发送与接收。

主站服务由请求主站服务的任务发起,各个请求主站服务的任务按优先级顺序执行并依次调用主站服务调用函数,该函数完成数据帧的建立与命令的填充最后将缓冲区传递给主站管理任务。主站管理任务优先级是低于所有请求主站服务的任务,它将依次处理接收到得数据帧内容,对数据帧进行封装并交给串口底层驱动实现最终的发送和接收工作。当接收到从站回复或者发生接收超时,主站管理任务将在缓冲区中产生一个标志符通知上层请求任务进行处理。为了发送和接收的实时性考虑,这里将数据帧的校验和处理工作交给上层请求任务完成。

3.2 Modbus从站设计

为了实现数据互连,后台上位机或者现场PLC需要实时获取前端仪表的数据信息。前端仪表内部需要构建一个Modbus从站作为服务器提供前端数据。Modbus从站工作原理如图3所示。

由基于μC/OS-II的平台,可将从站功能模块化到一个μC/OS-II的独立任务内,通过内核的多任务管理调度对从站进行状态轮询并且通过底层中断进行实际的数据帧接收工作。当收到一个请求时,从站在首先需要校验报文包。若发生通信错误则不作任何响应,回到空闲状态。若无通信错误,则按照Modbus协议规定解析请求包,进行具体的事务处理。若发生错误,则返回一个异常响应给主站。当要求的处理完成后,单播报文需要一个格式化的响应发往给主站。

第2篇:modbus协议范文

[关键词] Modbus; 监控; 功能码

1 引言

在油库和各种石化单位,定量装车作业十分繁忙,装车操作过程又要求相对精确。更加重要的是,涉及石化产品具有一定危险性。为了提高了装车精度和效率,降低损耗,减轻工人的劳动强度,同时尽可能保证安全作业,本文设计了基于Modbus协议的定量装车自动监控系统,并交付某公司使用。实际应用表明系统监控画面直观,人员操控方便,具备一定的主动安全保障能力。

2 Modbus协议

Modbus通信协议是美国Modicon公司开发的一种通信协议,它采用Master/Slave方式工作,一个主站可以连接多个从站,从站只能根据主站的请求作出相应的应答。它是一种开放、标准、免收许可费的通信协议。目前该协议已经广泛应用于自动化控制和测控仪表,并且已经成为我国工业自动化网络协议规范的国家标准之一。

Modbus协议有2种传输模式,即RTU模式和ASCII模式,相对于ASCII模式,RTU模式表达相同的信息需要较少的位数,且在相同通信速率下具有更大的数据流量,因此本系统选用该模式完成设计与实现。

Modbus协议的采用LRC和CRC两种校验模式来保证控制命令传输无误。本文采用CRC-16校验方式,该方式会根据当前发送或接收的命令字节码,计算对应的2个字节的CRC校验码。并将其加到命令字节码之后一并发送,组合之后的命令字节码格式为:

系统在实现过程中,考虑到最终将会采用普通的X86系列PC机作为监控终端,而该型机都是big-endian方式做多字节数据存储,与Modbus协议要求的little-endian刚好相反, CRC的计算结果必须满足这一要求。本文稍微调整了CRC-16校验码的产生方式如下:

Step1:将0xFFFF装入CRC寄存器;

Step2:将命令字节码的第一个字节与CRC寄存器异或,结果存放在CRC寄存器中;

Step3:CRC寄存器右移1位,高位填充0;

Step4:检查CRC寄存器的最低有效位,如果该位为0,则重复Step3;如果该位为1,则将CRC寄存器的值与0xA001异或;

Step4:重复Step3和4,直到完成8次移位之后,完成命令字节码中的对一个字节的处理;

Step5:对命令字节码的下一个字节重复Step2到Step5的处理,直到所有的字节都处理完成为止;

Step6:最终CRC寄存器中的内容就是该条命令字节码对应的CRC校验值;

例如,某命令字节数据[ 1 | 15 | 0 25 | 0 12 | 2 | 168 3 | 216 120 ]的含义为:给1号地址设备15号命令(写多个线圈),从它的25号起始地址开始(0 25),连续写12个线圈(0 12),写入内容为命令数据区的1010 1000 0011(168 3),根据命令计算出CRC校验码为(216 120)。

3 系统工作原理

本系统采用典型的RS232/485总线将上位机服务器端、上位机客户端以及各个下位机组成一个工业可控以太网,各下位机选取符合Modbus plus规范的相关设备,便于直接获取的操作过程中的各种数据信息,并封装成协议标准进行传输和通讯。主操作界面如图1所示。

系统工作原理框架如下:

(1)下位机通过传感器采集温度计、流量计、比重计等相关数据,并封装成Modbus协议格式数据供上位机客户端查询。

(2)上位机客户端通过串口和桥接器连接各个下位机,利用多线程串口读取函数主动进行数据收集,下位机按照上位机客户端的要求回传相应数据。然后,上位机客户端将收到的数据按功能码进行解析,并以图例、表格、文本等多种形式实时显示和记录。

(3)上位机服务器端通过TCP/IP网络与各个上位机客户端相连,对多个上位机客户端的状态信息进行收集、分析和存档,并通过主动发送命令的方式给上位机指令,进而通过上位机客户端给下位机下达控制命令,达到“监视――控制”双功能。

4 软件系统设计

上位机服务器通过接收Modbus请求,与上位机客户端进行交互,并对操作过程实时监控,利用成熟的数据库管理系统,接收、存储、处理和备份整个过程中产生的所有数据,为客户提供服务,并为进一步的数据分析提供历史依据。上位机服务器端主要功能包括:

(1)系统管理:该模块包括了各类管理员,操作人员的用户注册,授权和管理等等,防止非法操作人员恶意登录造成操作失误,也避免非授权操作员随意更改系统工作参数可能造成系统运行偏差。

(2)数据库管理:该部分模块选择成熟的数据库管理系统SQL Server2005对整个系统运行过程中所需要记录的所有数据信息就行存储和管理,为整个系统的运行和监控提供可靠的数据支持;

(3)系统工作状态显示:该模块负责以图像模拟显示多种数据状态,有利于管理人员实时监控各下位机客户端的操作情况。并且提供多种显示图像帮助管理人员分析各种操作情况,这是系统的核心功能之一, 在实现获取个下位机状态之后,对下位机进行直接控制是系统必需的核心功能之一,虽然在实际装车控制中主要使用的功能码只有2、4、15、16号命令,但是本系统实现了全部Modbus功能码,便于今后对新设备的扩充。。

(4)Modbus协议命令:该模块能够按照标准的Modbus协议,接收来自上位机客户端传送来的Modbus请求,完成数据采集、数据分析和数据存储工作,是系统工作状态显示实现的基础;

(5)安全警报功能:授油工作本身是具备一定危险性的工作,安全责任事故问题必须引起足够的重视。可以根据各种系统状况进行报警处理,保证系统工作状态安全可靠,避免业务事故的发生,并且具备自动报警信息记录功能,收集历史上曾经出现的安全事故信息,为安全人员分析发现安全事故规律,查找安全隐患提供数据支撑。

上位机客户端能有效地按照预定订单号自动完成装车作业,或者在操作员的控制下,进行控制参数设置,定量控制、数据采集、业务受理和报表打印等具体业务。上位机客户端主要功能包括:

(1)实时授油监视:该模块负责实时动画模拟显示整个下位机控制分组内所有鹤管的出油状况,及相关关键参数数值显示。例如:发油订单号、车号、油品类型、参数设定、误差范围等等;

(2)强制发油控制:该模块在特殊情况下,可以人为指定操作指令,以取代自动发油过程,控制启动发油、暂停发油、恢复发油、强制结束等方式来进行特殊操作,扩展控制功能,更加适应实际操作的变化;

(3)业务计划管理:该模块下,客户可以根据预约过的订单号,自动完成装车过程。也可以在没有订单号的情况下,有操作人员生成新的装车业务,并进行结算;

(4)业务查询:该模块按照操作员和客户要求的方式(诸如进行订单号、装车时间、油品类型、装车单位、操作员编号等等)进行多种关键字查询和统计功能,并且自动生成相关联报表。

(5)打印功能:其自定义打印功能,更加贴近实用,可以由用户自主选择打印;

5 结论

本设计采用OOAD思想,用UNL建模,并使用Borland C++作为开发工具,规范化的设计和编程过程,以及大量集成的成熟控件足以支撑本软件系统的快速开发。结果表明,软件系统既可以对标准Modbus功能码进行调试,也可以对自定义功能码进行设置,还可以实时监测和控制下位机状态,并结合数据库功能记录所有关键操作和核心设备配置参数信息,保障差错恢复。系统运行稳定可靠,使用简明方便,很好地满足项目要求。

[参考文献]

[1] AEG Schneider Automatic Inc. Modicon IBM host based devices user’s guide Apr.1996

[2] 张克涵,张呼和,顾李冯.VC环境下的电机状态监测软件设计[J].测控技术2012年第31卷第2期

[3] 吕国芳,唐海龙,李进.基于ModbusRTU的串口调试软件的实现[J].计算机技术与发展 2009年第19卷第9期

[4] 袁辉,李延香.基于Modbus通讯协议数据采集系统的设计[J].科技咨询导报 2007 No.19

[5] 陈柏金.通过串行口访问modbus现场控制网络[J].微计算机信息 2003.19(1)

[6] 王念春.基于Modbus的PC与下位机PLC间的通信程序[J].自动化仪表 第22卷第8期 2001年8月

[7] 徐涛,闫科.基于Modbus协议的串行接口实现与DCS通讯[J].工业控制计算机 2002年4月

[8] 罗朝霞,张高记.基于TMS320F240TA DPS的Modbus通信协议的实现[J].微计算机信息2005.21(72)138-139

[9] 房传礼,李建华.基于Modbus协议的大屏幕在线监视系统设计[J].自动化与仪表 2010年7月

[10] 卢文俊,冷杉.基于Modbus协议的控制器远程监控系统[J].电力自动化设备 2003年第23卷第6期

[11] 甑君,卫强,于耀.应用多线程技术实现串行通信与信号采集识别的同步[J].计算机工程 2003(10)196-197

[12] 李俊,徐红兵.基于Modbus协议的汽轮机保护系统通讯设计[J].自动化与仪表 2006年7月

[13] 方羽,梁广瑞.基于uCOS的Modbus协议的实现.装备制造技术[J] 2009年第1期

第3篇:modbus协议范文

关键词:RFID电子标签;场强值;MSP430;MODBUS协议

中图分类号:TP277 文献标识码:A

1引言目前,铁路罐车主要通过机械式碰撞的方式来实现自动装卸,具有噪声大、易磨损、维护工作量大等缺点。文献[1]提出了一种通过跟踪RFID接收最大场强值进行定位的方式,其定位精度可满足罐车自动装卸的需要,从而开拓了RFID的应用方式,即将RFID用作位置传感器。该方式将无线通信、有线通信、位置识别于一体,极大地简化了列车自动装卸系统的结构。该方法由地面阅读器作位置信标,当移动的标签最接近阅读器时,标签接收场强最大,通过跟踪此最大场强,可知标签当前的位置。由于每个地面定点阅读器的信标信息不一样,因此,标签可随时获取到达位置的信息,并将此信息通过RS485发送给PLC控制器,完成指定的装卸动作。该控制方式提高了灌装流动货物装卸的自动化程度,使铁路货场装卸技术装备水平得到提高。在文献中[1]]中,PLC与RFID电子标签通信采用基于RS485接口的自定义通信协议,该协议采用多对一的方式,虽然通过合理安排,完成该系统的通信任务没有问题,但理论上存在数据传输不可靠的缺点,尤其是在将来进行应用拓展,定点位置比较密集,定位点比较多的情况下,其隐患会更加突出。

基于此控制系统中的不足,本文对基于MODBUS协议的PLC与RFID电子标签通信方式进行了研究。MODBUS协议是目前工业中普遍使用的通信标准,该协议的可靠性进过了实践验证,其轮询工作方式不仅可以避免通信过程中数据丢失情况的发生,同时也便于该技术在定位点距离更密集,定位点更多情况下的应用,使该系统的控制更可靠,通用性更强。

计算技术与自动化2013年6月

第32卷第2期严政新等:基于MODBUS协议的PLC与RFID电子标签通信方式的研究

2通信方式总体方案设计

PLC与RFID电子标签通信方式原理:在RFID电子标签中移植MODBUS协议,PLC通过MODBUS协议读取RFID电子标签的状态,并通过RS485接口与PLC进行数据传输。

3.1MODBUS总线协议

MODBUS总线协议是应用于电子控制器上的一种通用语言。MODBUS协议[9]完全公开、实现简单、硬件要求低、可靠性好等特点,可使不同厂商生产的控制设备连成工业网络,进行集中监控,所以在工业控制领域中得到了广泛应用[2]。

MODBUS协议通信使用主从技术,即仅一设备(主设备)能初始化,查询其它设备(从设备),从设备根据主设备发送的数据请求作出相应应答。MODBUS协议建立了主设备查询的格式:设备地址、功能代码、所有要发送的数据、错误检测域。从设备的回应消息也由MODBUS协议数据包构成,包括确认要行动的域、任何要返回的数据、和一个错误检测域。如果在消息接收过程中发生错误,或从设备不能执行其命令,从设备将建立一个错误消息并把它作为回应发送出去[3]。

3.2MODBUS协议在MSP430单片机中的移植

MSP430系列单片机是一种超低功耗的混合信号控制器。具有16位RISC结构,有着丰富的片内资源[4][5]。符合MODBUS协议移植要求。所谓移植就是根据MODBUS协议标准在MSP430上编程实现。图2为MODBUS协议移植程序流程图。MSP430单片机上电,完成时钟、串口、定时器、I/O口初始化,开串口中断,然后等待接收MODBUS协议信息帧,接收完并作CRC校验码匹配,CRC校验匹配正确则解析该数据包,提取相应的数据,否则返回一带异常码的数据,对这些响应的数据做CRC计算,合成为响应的MODBUS协议信息帧,然后发送给主机,进入下一个MODBUS协议信息帧的等待接收状态。

4PLC与RFID电子标签通信机制

MODBUS协议采用轮询工作机制[10],在MSP430单片机上移植了MODBUS协议后,主站PLC对RFID电子标签进行状态查询,完成两者基于MODBUS协议的轮询工作。图3为具体的工作机制原理图,该轮询机制可详述为:将3个RFID电子标签分别设置为电子标签1,电子标签2,电子标签3。轮询工作开始后,PLC发送MODBUS协议信息帧到电子标签1,电子标签1根据接收到的数据请求,提取数据之后,组成一带校验码的MODBUS协议信息帧返回给PLC;PLC收到信息帧后,接着发送下一MODBUS协议信息帧到电子标签2,电子标签2也根据接收到的数据请求,提取数据之后,打包成一带校验码的MODBUS协议信息帧返回给PLC;PLC收到信息帧后,同样发送一MODBUS协议信息帧到电子标签3,电子标签3也根据接收到的数据请求,提取数据之后,也组成一带校验码的MODBUS协议信息帧返回给PLC,就此就完成了一次轮询。一次轮询完成后,然后开始下一次轮询[6]。PLC依据多次轮询的结果进行数据分析,并作出相应的动作控制。该轮询机制极大的改善了数据丢失的情况,多次轮询使得整个控制系统的准确度也有了极大的提高。

5实验结果

实验中,将三个RFID电子标签的ID号分别定义为01,02,03。3个阅读器的编号定义为1,2,3,当各RFID电子标签与各阅读器之间的位置发生改变时,3个RFID电子标签通过接收主站的信息,将感应到场强值(RSSI值)的变化和定点位置的变化;RFID电子标签相应RSSI值寄存器会随之发生改变,从接收到的信息可知是哪个定点位置。PLC通过MODBUS协议去轮询RFID电子标签的RSSI值寄存器和阅读器编号,并进行数据分析,然后作出相应的的动作控制[1]。图4是使用串口调试助手采集到的数据。采集的数据为完整的MODBUS协议信息帧,其中“01”为RFID电子标签1的ID号,“03”为MODBUS协议读寄存器功能码,“02”为返回数据的长度,“FF 94”为RSSI值的十六进制,“FB 1B”为CRC校验码[8]。相应的“02 03 02 FF 8F FC 10”为RFID电子标签2返回的MODBUS协议信息帧,“03 03 02 FF 92 01 D9”为RFID电子标签3返回的MODBUS协议信息帧。通过采集到的数据可以看出,PLC和RFID电子标签之间完成了轮询的工作机制,其中第一排数据为第一次轮询,第二排数据为第二次轮询。为简化实验,定义:当RFID电子标签与阅读器处在同一垂直位置时,两者之间的距离为0(即到达指定位置);当RFID电子标签在阅读器左边位置时,两者之间的距离为负;当RFID电子标签在阅读器的右边位置时,两者之间的距离为正。表1是PLC对RFID电子标签多次轮询得到的数据,根据数据可以看出,当3个RFID电子标签和3个相应的阅读器都处于同一垂直位置时,即两者之间距离为0,此时RSSI值最强。通过轮询三个场强值,就可以准确定位出两者之间相应的位置,然后依据相应的位置就可以进行准确的PLC I/O控制,从而实现各种所需动作的控制。

6结束语

本文研究的基于MODBUS协议的PLC与RFID电子标签的通信方式,运用到列车自动装卸系统中,不仅规范了系统的通信协议,而且解决了通信过程中数据丢失和系统通用性等问题。轮询机制可以实现数据后台处理,通过修改相关参数来完成系统的修正工作,相当大的提高了系统调试的方便性,是系统能更有效地实现罐车的准确定位和自动装卸。

参考文献

[1]吴利清,王英健.基于RFID技术的车辆行程定位系统[J].计算机技术与自动化,2011,30(1):39-44.

[2]张铮,刘晓伟.基于PLC的MODBUS通信协议的实现[J].湖北工业大学学报,2010,25(4):20-22.

[3]孟华,王鹏达.基于MODBUS协议的触摸屏与PIC单片机的通信实现[J].仪表技术与传感器,2009,10:58-61.

[4]谢楷,赵建.MSP430系列单片机系统工程设计与实践[M].北京:机械工业出版社,2009.

[5]胡大可.MSP430系列单片机C语言程序设计与开发[M].北京:北京航空航天大学出版社,2001.

[6]舒凯.基于MODBUS-RTU协议的PLC多路数据采集系统[J].水电自动化与大坝监测,2008,32(2):66-69.

[7]张琦,张英.PC机与MSP430单片机串行通信的实现方法[J].中国工程机械学报,2007,5(1):22-25.

[8]冯向科,邓莹.基于MODBUS RTU通信协议下CRC算法实现技术[J].电脑知识与技术(学术交流),2006(3).

第4篇:modbus协议范文

关键词:RTU;无线仪表;Modbus;XML

DOIDOI:10.11907/rjdk.171492

中图分类号:TP319

文献标识码:A 文章编号:1672-7800(2017)006-0050-03

0 引言

随着计算机网络技术、通信技术的快速发展,石油行业对油田的数字化、信息化、智能化要求越来越高,目前各大油田都在致力于数字化油田的建设。在传统的油田现场,仪表和RTU之间采用RS485串行接口或通过模拟量输入进行数据通信,该方式以其高可靠性、高适应性、易扩展性[1],在油气田监控中得到了广泛的应用。但是这种方式也存在以下不足:①调试人员需要去油田现场通过串口调试软件或者直接修改仪表程序对仪表进行配置,浪费时间且容易出错,对调试人员的专业技能要求比较高,而且由于部分油田距离较远,环境恶劣,增加了现场维护成本;②由于油田现场环境复杂多变,抽油机机械运动导致传输线路容易损坏,加之其它因素使得传输信号受到的干扰加剧,导致信号不稳定。

Zigbee以其低复杂度、低功耗、低成本、高可靠等优点,在智能家居等领域得到广泛应用。近年来,在油田现场,无线仪表开始兴起,实践证明,Zigbee作为仪表和RTU之间的通信方式完全可行,油田现场仪表-RTU-上位机通信结构如图1所示。

本文在考察数字化油田信息传输流程的基础上,设计与实现了基于Modbus通信协议的油田RTU调试软件。

1 软件总体设计

1.1 设计目标

首先,本系统可以根据油田现场实际情况选择RTU与上位机之间的通信方式是串口Modbus还是网口Modbus,从而实现数据的读写交互;其次,可以读取RTU型号代码、序列号、固件版本、软件版本等常规数据以及RPC信息、仪表信息,采集示功D数据并且绘制示功图;最后,可以配置仪表、井口、RTU的相关参数,开启或者关闭RTU等功能。系统功能模块如图2所示。

1.2 系统开发流程

本系统首先编程实现串口Modbus和网口Modbus通信,然后用ModScan32软件验证数据包的正确性,最后进行数据读取,即获取信息和配置参数。系统软件开发流程如图3所示。

2 通信模块实现

2.1 Modbus通信协议

Modbus是由Modicon在1979年发明的,是全球第一个真正用于工业现场的总线协议,也是目前工业现场总线中较为流行的总线协议,标准的Modbus协议物理层接口有RS232、RS433、RS485和以太网口[2]。本系统RTU和上位机物理层使用的接口为RS232和以太网口。Modbus协议是一项应用层报文传输协议,包括Modbus ASCII、Modbus RTU、Modbus TCP/IP 3种报文类型[3]。其中Modbus ASCII、Modbus RTU在串行链路上传输,Modbus TCP/IP在以太网上传输。

由于标准Modbus RTU协议的物理层为串口通信,因此应用层数据单元ADU的最大长度为256字节。如图4所示为Modbus RTU通用数据帧格式,因此,协议数据单元PDU的长度为:256-Server address(1 byte从地址)-CRC(2 byte CRC校验)=253 bytes。

Modbus TCP/IP是运行在传输控制协议上的Modbus 报文传输协议[4]。互联网编号分配管理机构IANA给Modbus协议赋予TCP端口号为502[5]。Modbus TCP/IP通用数据帧如图5所示。

功能码占一个字节,编号为0的功能码未定义。因此,共有127功能码,它们一共分为3类:公共功能码、用户自定义功能码、保留功能码[6]。

2.2 通信模块实现

使用VS2010开发环境集成的SerialPort控件实现串口数据的读写,自定义一个控件ipBox用以接收用户输入的RTU的IP地址。使用ComboBox下拉菜单显示调试软件和RTU的通信方式,即计算机串口的COM口或者网口。在实际应用中,仪表和RTU的数据及相关参数都存储在RTU的寄存器中,由于油田现场的仪表较多,因此参数也较多,每个参数所占用寄存器的单元个数也较多。为了方便管理,将这些参数有规律地存放在RTU的寄存器单元中,并绘制成如图6所示的点表,然后根据点表将这些信息编成XML文件,当需要对某个寄存器读写时,只需要加载rtu.xml文件并读取相应的信息即可。

本文在Modbus协议的基础上,将Modbus数据帧的Data部分划分为两部分,第一部分占用2个字节,表示参数存放的寄存器的起始地址,第二部分占用2个字节,表示占用的寄存器个数。

因此,定义一个函数public int MakeData(byte cmd,short addr,short len,ref byte[]data)形成Modbus数据帧。函数参数含义:

cmd:功能码,该参数的含义为读/写单个或者多个RTU单元的数据。

addr:RTU存储单元起始地址。

len:一次读/写RTU存储单元的个数。

data:前3个参数形成的数据帧存放在data数组中。

当数据帧形成以后,判断RTU与上位机之间的通信方式,如果是串口通信,则使用SerialPort控件的成员函数Read(byte[]buffer,int offset,int count)、Write(byte[]buffer,int offset,int count)和RTU交互,完成稻莸亩列床僮鳎蝗绻是以太网口通信,用Socket套接字实现与RTU的通信,WSAStartup()、socket()、bind()、send()、recv()函数可以完成一次通信,使用的TCP端口号为502。

3 显示界面设计和通信测试

显示界面设计主要是调试软件的界面布局,使用的控件主要有:Button控件、ComboBox控件、自定义的IpBox、Label控件、TextBox控件、DataGridView控件以及Chart控件等。

测试通信和数据帧是否正确的方法为:利用ModScan32软件向RTU发送和调试软件相同的命令,对比数据帧每一个字段,看是否相同。经过测试,RTU和上位机之间能进行正常通信,数据帧的格式正确。

4 结语

该软件实现了与RTU之间的串口和网口通信。经测试,能够实现正常通信,且可准确获取RPC、仪表、RTU信息的各项参数,同时可正确采集功图数据并绘制示功图。在仪表、RTU和上位机能正常通信的前提下,该软件能完成仪表、RTU、井口的配置。经过现场测试,该软件运行稳定良好,并成功应用于某油田现场。

参考文献:

[1]李涛,王双友.智能化配电系统中Modbus协议转换的实现[J].自动化与仪表,2016(1):30-33.

[2]杨艳华,周永录,苏红军.通用串口到Modbus RTU的协议转换器设计与实现[J].计算机测量与控制,2014(2):604-606.

[3]王兴贵,张明智,杜莹.Modbus RTU通信协议在智能仪表与工控机通信中的应用[J].低压电器,2008(2):8-11.

[4]张隆希.嵌入式Modbus协议交换机的设计[J].机电工程技术,2016(Z2):232-236.

[5]王力.Modbus RTU从站通信协议在嵌入式系统中的实现[J].石油化工自动化,2011(5):46-48.

[6]吕国芳,唐海龙,李进.基于Modbus RTU的串口调试软件的实现[J].计算机技术与发展,2009(9):236-238,241.

第5篇:modbus协议范文

【关键词】 Modbus协议 保护装置 报文丢失

南京地铁二号线变电所内高压供电设备的保护装置(P139保护装置和P521保护装置)与所内SCADA系统的网络通信服务器(WTS-65C)通过RS485接口运用Modbus协议进行通信。在正常运行状态和调试状态下,保护装置的信号能够准确、及时地传输给SCADA后台。地铁实际投运后,发生了多次重要保护动作没有被后台采集到的故障。这些故障的共同特点是保护装置本身可以观察到保护动作的完整信号记录,SCADA系统后台却只显示了开关跳闸的动作而无法查阅与之相关的保护告警报文。

1 Modbus协议介绍

1.1 背景介绍

Modbus协议是由美国MODICON公司在1978年开发的一种通信协议,最初是用在MODICON公司开发的PLC可编程控制器上,它支持传统RS232、RS422以及RS485通信标准。1996年MODICON公司又推出了基于TCP/IP的Modbus协议使得其在工业领域的应用更加广泛[1]。

1.2 Modbus通讯协议关键技术

各种不同公司和厂家的PLC、RTU、SCADA系统、DCS或与兼容Modbus协议的第三方设备之间可以通过Modbus协议连成工业网络,构建各种复杂的监控系统。参考ISO/OSI模型,可以发现在物理层,Modbus协议可以采用RS232、RS422、RS485接口以及以太网的物理层结构;在数据链路层,Modbus主要采用串行主从协议;由于Modbus现场总线的实时性特点,所以在网络层、传输层、会话层和表示层,Modbus协议模型中均没有定义;在应用层中Modbus规定了协议的模型,主要包括消息帧格式、功能码、校验、通讯时序控制等内容[2]。

电力系统中Modbus协议的数据分为四类:开入量;开出量;只读模拟量(输入寄存器),例如遥测值等;可读写模拟量(保持寄存器),例如保护定值、设备参数等[4]。Modbus需要处理的所有数据都需要存放在装置的存储器中,为了不把存储器物理地址和寄存器编号混淆,就需要把寄存器编号与存储器地址建立链接,通过统一管理存储器地址来管理寄存器。

Modbus的数据存储模型也分为两类,分别是带有四个独立数据块的数据存储模型和仅有一个数据块的数据模型。四个独立的数据块模型使用四个独立的存储器分区分别存储四种数据,这样有助于针对不同类型的数据进行相应的硬件处理,但是不同的工业应用场合使用的数据类型不会完全相同,因而可能产生存储器资源的耗费;共用一个独立数据块模型进行数据存储的方式可以节省存储器的硬件资源,但需要软件针对不同的数据类型对存储器空间进行划分。南京地铁二号线高压保护装置使用了仅有一个数据块的数据存储器结构。

2 保护信号丢失的原因分析及解决方案

2.1 南京地铁二号线Modbus规约数据传输方式

南京地铁二号线站内SCADA系统在RS485通信标准下采用Modbus一对多通信协议。作为Master的网络通信服务器采用RTU方式轮流向每一台35kV保护装置发送数据请求广播。请求报文为8字节报文,其数据格式如(表1)。

2.2 保护信号丢失的原因分析及解决方案

通过调查所有历史告警记录,我们发现故障中被丢失的保护信号也曾经被系统采样到并形成报文传至SCADA系统后台。这说明保护信号丢失的现象并不是必然发生,也就排除了系统结构倒致故障的原因。

通过查看保护装置的保护信号点表配置,我们发现保护信号的采样和维持皆取自于保护信号的条件信号。保护条件是否满足是判断保护动作是否发生的关键,所以保护动作信号从保护条件信号上采样并判断并没有问题。但是保护信号的维持也依靠保护条件信号的维持就产生了矛盾。对比试验条件和现场环境,可以发现实验条件下保护条件信号是人工手动加载于装置的接线端子之上的。信号的发生与消失的速度完全依靠人手工操作的速度,而这个速度明显慢于网络通信服务器的一个循环检测周期,因而保护信号因得到了手工延时可以被网络通信服务器采集到。现实条件下保护信号却是一个瞬态量。当有保护动作时,相应机构的动作延时一般不超过50ms,机构动作完毕后,作为保护动作的条件就消失,保护条件信号和保护信号随之消失。所以保护信号在保护装置中的维持时长一般短于50ms。当保护信号发生时网络通信服务器在保护信号维持的时间段内恰巧能够采集到相应的保护装置,则保护信号能够被采集并上传;如果此时网络通信服务没有采集到这一台保护装置,那么在保护信号消失之后网络通信服务器就不会采集到相应的告警。

3 结语

循环检测是Modbus协议的主要特点。作为串行通信条件下的一种通信协议,Modbus无法通过自身的构架改良来解决瞬态信号的采样问题。设法延长信号时长和提高采样器件的采样频率是两种可行的方法。后一种方法需要硬件升级,耗用较高的成本;前一种方法成本较低,但是需要合适的使用环境以及可实现的信号延时方法。

参考文献:

[1]李伟.基于Modbus协议的工控节点设计与实现[J].计算机工程,2007-36(16):226-228.

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

[3]卢文俊,冷杉,杨建军.基于Modbus协议的控制器远程监控系统[J].电力自动化设备,2003-23 (6):54-56.

第6篇:modbus协议范文

关键词:工业现场总线;modbus

中图分类号:TP23 文献标识码:A 文章编号:1674-7712 (2013) 10-0186-01

一、工业现场总线技术概述

现场总线是在上个世纪80年代末、90年代初国际上发展形成的,发展初期的主要功能是将当时的可编程逻辑控制器(ProgrammableLogicController,简称PLC)以一种较简洁的方式连接起来。但是,随着计算机技术引入PLC,计算机通信技术被引入现场总线;PLC功能的增强对现场总线提出了更高的要求,计算机通信技术的引入大大增强了现场总线的功能,成为现场总线技术发展的主要趋势。

二、Modbus总线协议概述

Modbus是由Modicon(现为施耐德电气公司的一个品牌)在1979年发明的,是世界范围内第一个真正应用在工业现场的总线协议,于1979年推出,现由IDA(分布式自动化接口)组织进行管理。Modbus不仅可应用在串行链路(RS-232/RS-485)上,还可应用于令牌环网(Modbusplus)、以太网(Modbus/TCP)上。在不断的发展和进步的过程中,Modbus已经逐渐被人们认可,并成为了真正意义上的工业自动化标准。据不完全统计,到2007年为止,已经有多于1000万个Modbus的节点被安装使用。伴随着工业自动化技术的发展以及Modbus协议的不断扩充完善,如今Modbus现场总线已经成为世界范围内应用最为广泛的现场总线之一。2008年,Modbus已经正式被批准成为我国工业自动化领域国家标准GB/T19582-2008《基于Modbus协议的工业自动化网络规范》。

Modbus是应用在生产现场、在微机化测量控制设备之间实现双向串行多字节数字通信的系统,也被称为开放式、数字式、多点通信的底层控制网。现场总线属于控制网络的范畴,是构成网络控制系统的关键环节。

三、Modbus总线在水泥行业中的应用

袋装水泥是常见的一种水泥包装形式,其出厂包括装包,喷码,装车计数,运输等几个环节。在水泥厂中,存在有大量以PLC或者ARM为处理器的设备自动完成喷码和计数工作,但不具有通讯接口或者只具有RS-232/RS-485等传输距离较近的通信接口,需要人工现场操作,无法实现集中控制和远程控制。因此,Modbus总线在水泥行业具有极大的发展空间。

(一)Modbus总线的拓扑结构

Modbus总线具有Modbus/RTU传输模式和Modbus/TCP传输模式,分别适用于早期的RS-485设备和具有以太网TCP/IP接口的设备,其系统(二)Modbus协议的两种数据帧结构

因为Modbus总线具有Modbus/RTU传输模式和Modbus/TCP传输模式,当在Modbus串行链路上使用RTU模式通信时,报文中的1个字节(8bit)是由含有2个十六进制字符(4bit)构成。图2给出了Modbus/RTU模式下的报文帧格式,主要由地址域、功能码域、数据域和CRC校验组成。

MODBUS总线的另一种传输模式是modbus/tcp模式,这是一种固有的协议数据单元(PDU),底层通信无关,对于特定网络上的的Modbus应用数据单元(ADU),可以引入一些附加域(如附加地址域等)。Modbus/TCP实现时,在ModbusPDU之前附加MBAP报文头(Modbus应用协议报文头),图3所示为Modbus/TCP数据帧结构。Modbus/TCP帧结构中不包含CRC校验域,这是由于在TCP/IP协议中已经使用了CRC-32差错校验码,无需进行重复校验。

(三)Modbus总线的差错控制

Modbus协议的差错控制采用LRC校验和CRC校验,在发送方通过一定算法在原始数据上添加必要的校验信息,接收方接受到数据后通过同样的算法进行数据校验,以防止以数据在传输过程中产生的错误而引起误操作。

四、结论

通过Modbus总线,可以实现水泥行业中现场设备的远程控制和集中控制,使操作人员远离恶劣的现场环境,提高了企业运行效率,保障了员工的人身安全,提升了企业形象。

参考文献:

[1]许杰.浅谈Modbus现场工业总线技术在煤矿的应用[J].中国科技博览,2011(35).

第7篇:modbus协议范文

关键词:Modbus;数据传送 ;相互通讯

Step7 200指令库中有Modbus协议的子程序和终端服务程序。Modbus 协议只有一个主站 , 可以有1~247 个从站 。Modbus 通信只能从主站发起 , 从站接受。此外Modbus从站库仅支持端口0通讯。

1 .Modbus通信协议

Modbus 协议是法国施耐德公司推出的一个全开放的“主从式(Master/Slave)”通信协议,通过此协议,控制器之间、控制器经由网络(例如以太网)和其它设备之间可以进行通信。它的开放性、可扩充性和标准化使它成为一个通用工业标准。

1.1.Modbus通讯特点

1.1.1.标准、开放,用户可以免费、放心地使用Modbus协议,不需要交纳许可证费,也不会侵犯知识产权。目前,支持Modbus的厂家超过400家,支持Modbus的产品超过600种。

1.1.2.Modbus可以支持多种电气接口,如RS-232、RS-485等,还可以在各种介质上传送,如双绞线、光纤、无线等。

1.1.3.Modbus的帧格式简单、紧凑,通俗易懂。用户使用容易,厂商开发简单。

1.2. Modbus传输方式:

在ModBus系统中有两种种传输模式可选择。这两种种传输模式与从机PC通信的能力是同等的。选择时应视所用ModBus主机而定,每个ModBus系统只能使用一种模式,不允许两种模式混用。一种模式是ASCII(美国信息交换码),另一种模式是RTU(远程终端设备)

ASCII可打印字符便于故障检测,而且对于用高级语言(如Fortran)编程的主计算机及主PC很适宜。RTU则适用于机器语言编程的计算机和PC主机。

用RTU模式传输的数据是8位二进制字符。如欲转换为ASCII模式,则每个RTU字符首先应分为高位和低位两部分,这两部分各含4位,然后转换成十六进制等量值。用以构成报文的ASCII字符都是十六进制字符。ASCII模式使用的字符虽是RTU模式的两倍,但ASCII数据的译码和处理更为容易一些,此外,用RTU模式时报文字符必须以连续数据流的形式传送,用ASCII模式,字符之间可产生长达1s的间隔,以适应速度较慢的机器。本文案例主要采用RTU通信模式。

2. Modbus通信在浙江某城市污水处理项目中的应用

该项目使用Step7 200 含有的I/O点共有160个,如果用单个cpu226,无法满足要求,故使用两个cpu。因为自动化程序要求很高,所以cpu之间必须满足相互通讯,相互连锁。

2.1.硬件需求

2台CPU226,一台EM243,2台EM223(32入/32出),8台EM231,3台EM232

用串口电缆连接 Modbus 主从站 , 可在线监控,实时数据传输。连接如图1所示。

图1 PLC模块之间的通讯连接

2.2. Modbus之间的软件实现

2.2.1.从站组态说明

2.2.1.1.初始化Modbus从站,将从站地址Mode设为1,波特率设为9600,无校验,无延迟。每次扫描时执行Modbus_Slave

2.2.2.主站组态说明

2.2.2.1.每次扫描时调用 MBUS_CTRL 指令来初始化和监视Modbus主站设备 。Modbus主设备设置为9600 波特,无奇偶校验 。允许有1S钟的应答时间。

2.2.2.2. MBUS_MSG指令读取从站的地址 Addr的数值 。保持寄存器存储区DataPtr从VB200开始,长8个字节。

将程序分别下载到主站PLC和从站PLC中。用PPI电缆线连接主站PLC,并分别将主从站PLC设为RUN。进行在线监控。Modbus通讯可以满足,从站读取的模拟量,主站可以同步读取传输:主站的命令,从站可以完全执行。

3. 结束语

自本通讯系统运行以来,PLC与Modbus间的通讯一直正常,从未出现过任何软、硬件故障以及其它干扰现象,有效地保证了自动控制系统的正常运行。可见,PLC之间使用Modbus通讯是一种行之有效的方法。PLC和上位机WINCC可以读取仪表中温度测量值、设定值等,同时可以远程设置继电保护装置和直流屏设备中的数据,极大地方便了现场的控制和操作。由此看来,利用Modbus通讯可以很好解决两个或者多个PLC之间的通讯,尤其在分布式控制系统中,这种通讯是一个值得推广的方式,在电力自动控制系统中,一定会取得更加成功的应用。

参考文献:

[1]韩婷 郭彤颖 邱继红 魏宏基 Modbus通信在城市轻轨变频器控制中的应用

[2]GB 19582.3―2004 基于MODBUS协议的工业自动化网络规范

第8篇:modbus协议范文

引 言

每一个油田都拥有众多的油气井, 并且分布在山川旷野里,油气井的管理方式多为由人工每日值守,定时检查设备运行情况,记录相关数据。这种方式增加了用工人数,加大了护井工劳动强度,最重要的是影响对设备的监控。当抽油机、电泵出现微小故障时,往往很难被人工及时发现,从而得不到有效地防护与控制[9]。

为了能有效地发现油井、地层、油藏的变化,可用油井远程测控系统,通过在抽油机上安装位移传感器和载荷传感器,检测抽油机的工况,实时在线监测抽油机工作参数,及时发现故障并报警,及时维护。本文提出了一种基于rtu的油井远程测控系统的数据采集与传输层设计方案,并将该方案用于实际的井场应用中。

1 油井远程测控系统总体架构

油井远程测控系统的总体架构如图1所示,整个测控系统的组网架构分为现场局域网、企业信息网两大部分。网络拓扑采用分层星型拓扑,是为了在中央测控室的中央测控服务器与现场局域网的各个测控服务器的测控对象之间建立更有效的连接方式。每个测控分站设测控服务器,实时发送或读取的井场设备数据先经测控服务器处理后再并行传输到中央测控服务器,这样既让等级高的设备预警信号得到现场级的及时响应,又减轻了中央测控服务器处理数据的压力。web服务器与中央测控服务器通过数据库服务器连接,这种连接方式使web服务器面向的对象是数据库服务器,有利于web服务器在处理管理用户的指令时与中央监控服务器保持一定的时差,避免了相互动作间的冲突[2]。而所有这些数据来自于测控服务器通过井场数据采集与传输层得到的。it目前最常见的数据采集与传输层的工作方式有图1所示的两种情况。其中井场1针对安装多个传感器的油气井,在每个油气井处安装一个rtu从站,能够对该油气井的传感器进行统一管理,并在每个井场设置一个rtu主站,采用主叫/从响应的方式,采集各从站的传感器数据,然后将各从站数据上传到上位机(测控服务器);井场2针对安装几个传感器的油气井,在每个井场放置一个rtu,直接将传感器的数据采集后发送到上位机;为了能够兼容这两种工作方式,本文设计了一个基于rtu的数据采集与传输层系统软件。

2 数据采集与传输层硬件基础——rtu

有些油气田由于地理原因,不易铺设电缆,本系统引入物联网技术,加入无线通信zigbee模块,并利用其自组织原理,实现在井场无线自组织寻址和数据传输,可以简单、方便地实现井场实时数据采集,利用这些有效数据指导油田油气生产,提高产量,其构成一个物联网回路,改变了油田生产方式[5]。

油井远程测控系统rtu采用samsung公司的s3c2440a,具有400 mhz的工作频率,主要控制数据流的输入输出;采用具有2 mb存储能力的nor flash (en29lv160ab)存储程序;用有128 mb存储能力的nand flash(k9f2g08u0b)存储数据;利用ad转换器ads7952采集8通道12位模拟数据;系统环境温度由温度传感器tmp100获得;考虑到zigbee模块的接口以及有线方式下的长距离传输等因素,rtu的串行链路口为rs 232及rs 485;为与测控服务器pc机相连,rtu采用dm9000实现以太网连接;rtu的初始配置信息采用e2prom存储;rtu内还包含隔离电路、控制单元等几个部分。rtu的硬件框图如图2所示。

3 数据采集与传输层系统软件

3.1 数据采集与传输层通信协议

modbus通信协议已经非常广泛地应用于自动控制和通信领域中,通过此协议,控制器相互之间、控制器经由网络(例如以太网)和其它设备之间可以实现通信。modbus网络属于一种主从网络,允许一个主站和一个或多个从站通信。它采用命令/应答方式,每种命令报文都对应着一种应答报文。网络中的每个从站都必须分配一个唯一的地址。主站发出的命令中含有要求访问的从站地址,只有具有该地址的从站才会对该命令响应。

3.1.1 modbus/rtu通信协议

rtu主/从站串口通信时,通常使用的是modbus/rtu传输模式。在modbus报文rtu帧中,如果两个字符之间的空闲间隔大于1.5个字符时间,那就认为报文帧不完整,此时接收站应该丢弃这个报文。时长至少为3.5个字符时间的空闲间隔将报文帧区分。rtu消息帧的典型格式如表1所列。

表1 modbus/rtu消息帧典型格式

地址设备功能码数据crc校验

8 bits8 bits8n bits16 bits

转贴于

3.1.2 modbus/tcp通信协议

modbus/tcp是一种应用层的协议,上层为 modbus协议,下层为 tcp协议,它规定了网络互联节点间的请求/应答的通信方式。帧格式必须严格遵守协议所规定的adu(application data unit)格式,才能在以太网上实现数据的传输。图3所示即为 modbus/tcp的数据帧格式[3]。

mbap报文头 (modbus application protocol header)是tcp/ip使用的专用报文头,用来识别modbus的应用数据单元。mbap共有 7个字节,其具体组成及含义如表 2所列。

国际互联网编号分配管理机构iana(internet assigned numbers authority)专门为其赋予了一个tcp端口号502端口,利用tcp发送所有的modbus/tcp adu[1]。

3.1.3 modbus/tcp与modbus rtu数据帧的区别

modbus/tcp虽然包括了从站地址、功能码和传输的数据,但是没有校验控制码,这是因为modbus/tcp校验功能已经在下面的四层如 tcp/ip协议和链路层的校验机制得到了保证。

3.2 数据采集与传输层系统软件设计

油井远程测控系统的数据采集与传输层主要完成的功能:传感器数据的采集、传输和对继电器的控制。图1中提到了两种常见的工作方式。在井场1中存在rtu主站和从站:主站主要负责对各从站进行轮询、数据打包和向上位机发送数据,从站主要负责数据的采集、继电器的控制和轮询命令的响应,主从站之间的通信使用的是modbus/rtu。在井场2中只存在一个rtu,主要完成数据的采集、继电器的控制和向上位机发送数据,通信使用的是modbus/tcp。在数据采集与传输层的工作过程中,考虑到系统的兼容性,对rtu软件设计提出了可配置的要求,不需要重新下载程序,只需要使用系统配置软件就可选择不同的工作方式和通信方式,这就保证了系统的可操作性和兼容性,系统的适应性大大加强。

在软件开发过程中,考虑到串行通信速度较慢的特点,采用多线程技术,故引入实时操作系统μc/os_ii,将modbus/rtu通信、modbus/tcp通信等放在单独的线程中进行,而数据采集和控制等则采用另外的线程实现。

3.2.1 μc/os_ii的移植

μc/os_ii是可移植、可剪裁的抢占式实时多任务操作系统内核,适用于工业控制中的实时监控。本系统成功地将实时操作系统μc/os_ii移植到s3c2440a微处理器上,并实现了modbus通信协议。

μc/os_ii可以管理64个任务,具有信号量、互斥信号量、消息队列、任务管理、时间管理和内存块管理等系统功能。μc/os_ii的移植主要包括三部分代码:μc/os_ii核心代码、μc/os_ii配置代码、μc/os_ii移植代码。其中μc/os_ii移植代码包括1个汇编文件、1个c程序文件和1个头文件。这部分代码与微处理器相关,是移植的关键[6]。

3.2.2 modbus通信的实现

rtu与上位机使用modbus/tcp进行以太网通信时,需不断接收上位机发送的查询命令,处于服务器(从站)状态。rtu在使用modbus/rtu进行串口通信时,需单独完成主从站功能。在实际应用中,不存在modbus/tcp和modbus/rtu的从站并存在同一rtu的情况,因而在程序编写过程中,modbus/tcp和modbus/rtu的从站使用同一个modbus从站库,但对其帧头的处理略有不同。以下分别讲述modbus/tcp服务器(从站)在tcp/ip协议栈上的实现以及modbus/rtu主站在串口通信上的实现。

(1) modbus/tcp通信协议实现

由于操作系统μc/os_ii本身没有tcp/ip协议栈,故先移植嵌入tcp/ip协议栈,再编写modbus/tcp服务器(从站)程序。在μc/os_ii下嵌入了tcp/ip协议栈后就监听tcp502端口的连接请求,只有在与客户机建立了连接之后才能进行数据处理。服务器端在收到客户机的请求之后,会确认和客户机的连接,同时接收并分析客户机的请求报文。如果 mbap报文头正确,则读完所有的报文,只有协议类型值为0x00时才对请求帧进行下一步操作,否则直接丢弃报文。接着分析 pdu中的功能代码,不同的功能对参数要求也不同,最后根据数据域中的参数规定,执行相应的操作。若有错误出现,直接丢弃报文,仍继续处理 pdu的数据显得不必要,影响实时性。根据对客户端请求报文的分析处理,有两种响应结果,一种是正常的响应报文,另一种是异常响应报文,即返回的是错误信息。其modbus/tcp的从站通信流程如图4所示。

图4 modbus/tcp服务器(从站)设计流程图

(2) modbus/rtu通信协议实现

modbus主站需要处理发送请求帧、等待应答、处理应答、处理差错和等待转换延时等事件。其主站设计流程如图5所示。

modbus/rtu报文帧是否完整和帧与帧之间的区分可以通过空闲间隔来实现,但这需要使用定时器完成1.5个字符和3.5个字符的定时,并在定时到后,进入接收处理函数,然后实现adu数据到pdu数据的处理。

3.2.3 系统软件的实现

系统上电后,首先进行初始化操作,主要包括设置串口、定时器等内容,并读取eeprom中的配置信转贴于

息,对rtu进行配置,包括主从工作模式选择、ip地址设置、轮询的通信方式选择、传感器的开关状态、继电器输出状态等。若处于主站状态,还可以获取从站配置信息并配置从站,配置成功后,主站开始对各从站进行扫描,并对从站报文进行处理;每扫描完一个从站,主站就对轮询到的数据进行存储;在扫描从站的同时,如果主站传感器和外部继电器处于开状态,会同时采集模拟通道和数字通道的数据并控制外部继电器,采集到的数据存于相应寄存器中,等待上位机请求命令,按照modbus协议将相应数据打包,并上传到上位机。若处于从站,采集模拟通道和数字通道的数据并控制外部继电器,采集到的数据存于相应寄存器中,并等待rtu主站轮询命令,当轮询到该从站时,按modbus协议打包数据并发送到rtu主站。不管该rtu是主站还是从站,其tcp/ip的服务器程序一直等待系统配置软件的配置信息,当收到配置信息后,将数据存入eeprom并复位系统程序,整个系统设计流程图如图6所示。

从图6中可以同时看到modbus/rtu和modbus/tcp的从站处理函数,在实际应用中,rtu处于modbus/rtu主站时,其modbus/rtu从站的处理任务不运行,modbus/tcp从站的处理任务运行,该状态下rtu可用于图1中井场1的rtu主站和井场2的rtu两种情况;处于modbus/rtu从站时,该状态下rtu可用于图1中井场1的从站情况,以太网服务器任务只等待配置信息。

4 测试

本系统的测试采用了第三方的modbus测试工具modbus poll v4.3.3、modbus slave v4.3.1和实验室自主开发的配置软件。

4.1 轮询测试

利用系统配置软件的界面如图7所示,设置一个rtu主站和两个rtu从站,在一台pc机上运行modbus poll程序,模拟modbus/tcp客户机,通过以太网与rtu主站相连,rtu主从站之间通过无线zigbee模块(或rs 485模块)相连。串行通信的波特率设置为38 400 b/s,无校验位,停止位为1位。

pc端的modbus/tcp客户机可向rtu主站发送命令,并读取存于rtu主站输入寄存器的从站数据。当从站的数字输入端接高电平(24 v)时,从modbus poll的对应地址可读取到1,图8所示是modbus/tcp客户机接收到的轮询数据,其中地址500~507为从站1中8通道数字输入端对应的状态值;地址508~515为从站2中8通道数字输入端对应的状态值。经多次测量,均正确无误。

4.2 控制测试

pc端模拟的modbus/tcp客户机向rtu的保持寄存器写入数据,rtu会将对应寄存器的数据输出到对应的数字输出端口,例如地址100对应数字输出端口0,当对地址100置1时,对应指示灯亮,输出高电平。

4.3 数据采集测试

转贴于

rtu模拟输入端0接一定频率的正弦波,数字输入端接高电平信号,利用modbus poll查询rtu模拟输入端与数字输入端的数据。

图9所示为modbus/tcp客户机所接收到的采集数据。

rtu采集到数字输入端的脉冲值以及开关状态,地址0~7对应相应通道的脉冲值,地址8~15对应相应通道的开关状态值;地址19为rtu板上的温度传感器的值,当前rtu的温度是24 ℃;地址20~49为模拟通道0采集到的正弦波信号,之后为其他通道采集到的ad值,每个通道的采样点数和频率可调。

第9篇:modbus协议范文

论文关键词:Modbus,LabView,远程监控

 

0引言

随着工业的飞速发展,工业现场设备的增多且分散,我们需要从各类设备中读取实时信息,并根据这些信息发送相关命令去控制设备的运作。网络的出现给这种控制方式带来了极大的便利,让人们可以在任何一台主机上访问到网络上的各类设备,实现远程监控LabView,而Modbus作为工业控制协议的一种,产生于这样的大环境中,自然也具备了与网络相通的性能,并具有很强的开放性和可扩充性,通过它,控制器之间,控制器经由网络可以和其它设备进行通信,因而不同厂商生产的控制设备可以简单可靠地连成网络,进行系统的集中监控。

1 Modbus通信协议

Modbus是Modicon公司为其PLC设计的一种串行通信协议,此协议定义了一个控制器能认识使用的消息结构,而不管它们是经过何种网络进行通信的。它描述了一控制器请求访问其它设备的过程,如果回应来自其它设备的请求,以及怎样侦测错误并记录论文怎么写。下图所示是简单的Modbus传输模型。

从图上可以看出通信使用主—从技术LabView,即仅一设备(主设备)能初始化传输(查询)。其它设备(从设备)根据主设备查询提供的数据作出相应反应。而当在一Modbus网络上通信时,此协议决定了每个控制器须要知道它们的设备地址,识别按地址发来的消息,决定要产生何种行动。如果需要回应,控制器将生成反馈信息并用Modbus协议发出。在其它网络上,包含了Modbus协议的消息转换为在此网络上使用的帧或包结构。这种转换也扩展了根据具体的网络解决节地址、路由路径及错误检测的方法。

所发送的消息帧包括地址域,功能代码,数据域,错误代码,其中地址域唯一标识了网络上的一台控制器,功能代码指明了所要询问的内容,数据域的长度与内容会随着功能代码的不同而变化LabView,在协议中都有详细的说明论文怎么写。

Modbus分为两种传输模式,ASCII和RTU模式,其帧结构分别如下图所示:

ASCII模式中,每8bit作为2个ASCII字符发磅,以冒号字符为起始位,控制器不断侦测冒号字符,并解码地址域,判断是否发给自己的,如果是,则接收其它域直到回车换行。消息帧使用LRC进行错误检测。

RTU模式中,每8bit包含两个4bit的十六进制字符,相比上种模式LabView,能在相同的波特率下传送更多的数据,在最后一个传输字符之后,一个至少3.5个字符时间的停顿标定了消息的结束。一个新的消息可在此停顿后开始,并且它采用的是CRC检验。

2 LabView网络编程

随着网络的迅速发展,通过网络进行数据共享是各种软件和仪器的发展趋势,与传统仪器相比,LabView设计的虚拟仪器的优势是具有强大的网络通信功能,实现的技术有以下几种:使用网络通信协议编程实现,可现成使用的协议有TCP、IP、串口通信协议、均线网络协议等;使用DataSocket技术;使用客户端远程控制服务端的程序,包括远程面板和浏览器访问;利用共享变量进行网络通信。本文将采用共享变量实现网络通信,下面将介绍实现通信的步骤。

1.创建Modbus IO server

LabView中提供了可以直接创建ModbusIO server的express VI,如下所示,我们只需要配置其相应参数即可LabView,如下所示,下图中,所选择的是ModbusEthernet IO server。

其中,Processname指的是所要创建的server属于哪一个共享变量包中,IPAddress指的是它的地址,这些数据都可以通过配置文件来灵活配置论文怎么写。

2.创建共享变量

共享变量是LabView8为简化网络编程迈出的巨大一步,它可以设定其与网络中的哪台控制器的哪个变量连接,也可以与Modbus server 和OPC server相连接,用户不用了解任何网络协议,就可以轻松实现数据交换。

在工程中创建一个共享变量,它必须存在于一个lvlib之中,进行相关的设置LabView,为了方便,本文将共享变量和server放在同一个lvlib中,如图五所示,图中红框部分指的是该共享变量绑定了刚才用express VI所创建的Modbusserver,并指向了一个确定的地址。在程序之中,LabView也提供了相应的工具让用户实现动态绑定,通过共享变量的属性节点中的url属性,则可以随时改变该共享变量的绑定地址,可以读出创建好的Modbus IO server的I/O server url,再加上所要绑定的地址,即可组成图五红框中的path,如图六所示,

3结束语

本文利用LabView提供的便捷平台LabView,实现了对支持Modbus协议的设备的网络访问,程序可以访问设备上的各个端口值,并可以适应设备的变化,不管外接的是什么设备,只要其支持Modbus,只需要修改相应的配置文件即可,程序可以导入它进行动态的绑定和属性设置,可移植性较高,可以适应工业现场中设备种类多的环境。

当然,还有很多可以深入研究的地方,本文只是创建了Modbus Server,接下去还可以创建OPCserver等,用同样的手段也可以获得更多的兼容性。

参考文献:

[1]邹红利.简化的MODBUS通讯协议在实时通讯控制中的应用 武汉工业学院学报2009 /28 /04

[2]孙璐.Modbus/TCP协议在远程监测中的应用, 计算机软件及应用, 2009 /28 /04

[3]侯国屏,王珅等LabView7.1编程与虚拟仪器设计 清华大学出版社 2005.2 ISBN 7-302-10284-1

[4]ModiconModbus Protocol Reference Guide

MODICON, Inc., IndustrialAutomation Systems One High Street North Andover, Massachusetts 01845

精选范文推荐