在线客服

modbus协议实用13篇

引论:我们为您整理了13篇modbus协议范文,供您借鉴以丰富您的创作。它们是您写作时的宝贵资源,期望它们能够激发您的创作灵感,让您的文章更具深度。

modbus协议

篇1

当在一个modbus网络上通信时,此协议决定了每个控制器须要知道它们的设备地址,识别按地址发来的消息,决定要产生何种行动。如果需要回应,控制器将生成反馈信息并用Modbus协议发出。在其它网络上,包含了Modbus协议的消息转换为在此网络上使用的帧或包结构。这种转换也扩展了根据具体的网络解决节地址、路由路径及错误检测的方法。

1.Modbus协议

1.1 Modbus协议族

Modbus协议中有ASCII、RTU、TCP等,其中前二者规定了消息、数据的结构、命令和应答的方式,数据通信采用Master/Slave(主从)方式,主端发出数据请求消息,从端接收到正确消息后就可以发送数据到主端以响应请求;主端也可以直接发送消息修改从端的数据,实现双向读写。此外,在校验上,ASCII模式采用LRC校验,RTU模式采用16位CRC校验。而TCP模式除了有奇偶校验外,没有额外规定校验,其原因就是TCP协议是一个面向连接的可靠协议。

1.2 Modbus网络上的数据传输

Modicon控制器上的标准Modbus端口是使用一个RS232兼容的串行接口,定义了连接器,接线电缆,信号等级,传输波特率,和奇偶校验,控制器可直接或通过调制解调器接入总线(网络)。控制器通讯使用主从技术而其它设备(从机)应返回对查询作出的响应,或处理查询所要求的动作。典型的主机设备应包括主处理器和编程器,典型的从机包括可编程控制器。

主机可对各从机寻址,发出广播信息,从机返回信息作为对查询的响应。从机对于主机的广播查询,无响应返回Modbus协议报据设备地址,请求功能代码,发送数据,错误校验码,建立了主机查询格式,从机的响应信息也用Modbus协议组织,它包括确认动作的代码,返回数据和错误校验码。若在接收信息时出现一个错误或从机不能执行要求的动作时,从机会组织一个错误信息。并向主机发送作为响应。

1.3 在其它总线上传输数据

除标准的Modbus功能外,有些Modicon控制器内置端口或总线适配器,在Modbus+总线上实现通讯或使用网络适配器,在MAP网络上通讯。

在这些总线上,控制器间采用对等的技术进行通讯,即任意一个控制器可向其它控制器启动数据传送。因此,一台控制器既可作为从机,也可作为主机,常提供多重的内部通道,允许并列处理主机和从机传输数据 在信息级,尽管网络通讯方法是对等的,但Modbus协议仍采用主从方式,若一台控制器作为主机设备发送一个信息,则可从一台从机设备返回一个响应,类似,当一台控制器接受信息时,它就组织一个从机设备的响应信息,并返回至原发送信息的控制器。

1.4 查询响应周期

查询:查询中的功能代码为被寻址的从机设备应执行的动作类型。数据字节中包含从机须执行功能的各附加信息,如功能代码03将查询从机,并读保持寄存器。并用寄存器的内容作响应。该数据区必须含有告之从机读取寄存器的起始地址及数量,错误校验区的一些信息,为从机提供一种校验方法,以保证信息内容的完整性。

响应:从机正常响应时,响应功能码是查询功能码的应答,数据字节包含从机采集的数据,如寄存器值或状态。如出现错误,则修改功能码,指明为错误响应。并在数据字节中含有一个代码,来说明错误,错误检查区允许主机确认有效的信息内容。

1.5 Modbus协议帧结构

Modbus协议帧通常也被称作Modbus信息包裹,一个协议帧由从前到后有以下四个部分组成:地址域:发送信息的目的地址,即主站请求时的从站地址或从站响应时的主站地址。从站地址域长度为一个字节,其中包括信息包裹传送的从站地址。从站地址范围为“1”至“255”。 功能码域:信息包裹中功能域长度为一个字节,用以通知从站应当执行何种操作。数据域:域长度不定,依据其具体动能而定。校验域:两种不同模式下,计算而得的校验码。

2.通信接口模块开发

Modbus通信接口位于上位机和下位机之间,若要完成Modbus通信,则上位机和下位机必须安装有能够实现Modbus协议的硬件和软件。在系统集成工程中,如果出现通信双方任何一方不具备Modbus接口的情况,则必须进行底层驱动模块的开发。

一般下位机一侧会出现不匹配,因为下位机系统中包括数据的采集和模数转换处理等等,那么下位机系统结构包括:数据采集处理模块、中央处理模块、通信模块。

3.Modbus集成工程应用

在系统集成的工程中,Modbus设备与中央监控软件间的通信是其一部分,其系统结构配置包括根据工程要求选择系统结构体系,然后选择Modbus设备;对所有主站和从站进行设置地址是至关重要的一点,Modbus寄存器地址通过0、1、3、4四种类型的前导数字标明四种类型的寄存组,它与数据库定义软件组件中数据表有着对应关系,其对应关系是:0xxxxDigital Output;1xxxxDigital Input;3xxxxInput Register;4xxxxHolding Register。

中央软件平台中工程的组态和人机界面的开发分为三个步骤:用组态软件对硬件进行组态,并存入数据库;在软件中以图形画面的形式开发出友好的人机界面;在主站上执行人机界面,实现对设备的监控。

篇2

1.1本系统主控芯片采用宏晶科技STC89C52单片机,与其它CPU芯片相比,具有显著特点,加密性强,超低功耗,速度快,可靠性高,驱动能力强,抗静电和抗干扰能力强。

1.2DS18B20传感器

DS18B20是美国DALLAS公司生产的一线式数字式温度计芯片,它具有结构简单,不需外接元件,测量温度范围在-55°C—+125°C之间。采用一根I/O数据线既可供电又可传输数据、并可由用户设置温度报警界限等特点,可广泛用于食品库、冷库、粮库等需要控制温度的地方。

1.3网络节点设计

网络节点结构示意图

1.4网络组成

该控制网由PC机和若干分节点组成,PC机主要负责轮询各分站点数据,发送请求数据包和控制数据包,然后分节点判断数据包,根据相应的指令通过RS232接口把数据发送给PC机,最大站点数可设50个节点,PC机对采集的数据进行分析处理。

2 控制网络通讯协议

2.1简单节点流程示意图

本控制网采用同一程序,通过面板按键设置本机的分节点地址,节点开始上电,CPU开始初始化I/O、串口等模块,接着根据设置的参数读取操作站点,从而执行相应的程序并分析数据,数据正确,进行正常显示,否则PC机根据不同的报警信息发出声光报警。

简单节点流程示意图如下

2.2数据包格式

通讯参数:波特率:1200,数据位为1,数据位为8,停止位为1,校验位为1,方式采用主从式通讯,计算机为主机,各下位分机为从机。主机先发数据请求命令,只有符合地址条件的从机才回传或接收数据,在数据传输中,为提高系统的可靠性和实用性,要求传送的数据包尽可能短,并且传送的信息量要大。

2.2.1请求数据包

本数据包用于PC机向分节点请求数据使用。请求数据包格式如下:长度为4个字节数,首位码、读标志、目的地址、数据量均为一个字节数。

2.2.2回送数据

本数据包用于分节点发送PC机所请求的数据,回送的数据包长度可以根据发送的指令而变,根据PC机发送的请求,数据包回送PC机所请求的数据。

回送数据包格式如下:首位码、地址均为1个字节数,回送数据根据发送指令确定字节数,备用字节、校验码为两个字节数。

2.2.3控制数据包

本数据包主要用于PC机向分节点发送数据使用。控制数据包格式如下:长度为5个字节数,首位码、写标志、目的地址均为1个字节数,数据量为2个字节数。

2.2.4协议的实现及应用

在设计基于RS-485的分布式测控系统时,在上位机呼叫下位机地址之后就可以利用本协议的规范来设计具体的通信流程。 基于本协议的通信可以有两种机制。一种是面向握手的,即每发出一帧,总是要等待确认帧,否则将认为是通信出错。这是一种可靠的通信方式,适合传输系统命令和一些非常重要的系统参数。另一种是无握手的,即发送方假设接收方总是接收正确,从而无须等待确认帧就不停地发送,适合大量前端采集数据的发送。这种机制的优点是发送过程简 单、快速,缺点是不能保证传输过程的可靠性。

本协议利用握手通讯方式已经成功地运用到多个冷库、粮库监测系统中,不仅简化了通信程序的设计,而且保证了通信的高效和可靠。下位机负责现场的温度的采样和存储,上位机负责循环呼叫下位机,以了解现场情况是否正常,并且每隔一定时间收集下位机存储的数据并对数据进行分析管理。

2.3通讯的可靠性

本系统采用主从结构,利用PC机轮询各节点,能有效解决网络冲突问题。传输数据增加了冗余,并且在所传送的数据中进行了硬件的循环冗余校验。

3 结束语

本系统上位机软件采用Delphi开发,数据库采用Firbird,上位机设计分为组态部分和监控运行部分,可视化直观的界面操作,组态方便,可根据分节点所接传感器数量不同,自由分配通道,利用上位机强大的数据处理能力,进行数据分析和处理,可对各节点进行数据显示、上下限报警、实时趋势显示,具有很大的实际应用价值。

篇3

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所示。

篇4

系统中有一个主机和三个从机。从机的地址已由其控制器的P1口分别设置为1、2、3。主机能控制从机1和从机2的继电器,并且显示其工作状态。主机能读入从机3采集的电压数据,并实时显示。图3中还设置用于显示通信状态的若干个LED。图3中的液晶模块上显示从机1和从机2的继电器开关被主机分别控制成闭合和断开,从机3采集的两个电压数据分别为4.98V和0V。系统前端通信接口选用的芯片是MAX485。MAX485接口芯片是Maxim公司的一种RS-485芯片,采用单一电源+5V工作,额定电流为300μA,采用半双工通讯方式。它完成将TTL电平转换为RS-485电平的功能。MAX485的内部含有一个驱动器和接收器。它的RO和DI端分别为接收器的输出和驱动器的输入端,与单片机连接时只需分别与单片机的RXD和TXD相连即可;/RE和DE端分别为接收和发送的使能端,当/RE为逻辑0时,器件处于接收状态;当DE为逻辑1时,器件处于发送状态,因为MAX485工作在半双工方式,所以只需用单片机的一个管脚控制这两个引脚即可;A端和B端分别为接收和发送的差分信号端,当A引脚的电平高于B时,代表发送的数据为1;当A的电平低于B端时,代表发送的数据为0。由于RS-485芯片的特性,接收器的检测灵敏度为±200mV,即差分输入端VA-VB≥+200mV,输出逻辑1,VA-VB≤-200mV,输出逻辑0;而A、B端电位差的绝对值小于200mV时,输出为不确定。如果接收器输入端(A、B)开路或总线浮空(总线上所有驱动器输出为高阻)时,若接收器输出低电平,则UART可能认为是通信帧的“起始信息”而引起工作不正常,克服此问题的方法是在A端接上拉电阻,在B端接下拉电阻,从而保证A、B开路或浮空时,输出处于确定状态(高电平)。本系统此处的上拉电阻和下拉电阻都为10KΩ。另外,在应用系统工程的现场施工中,由于通信载体是双绞线,它的特性阻抗为120Ω左右,所以线路设计时,在RS-485网络传输线的始端和末端各应接1只120Ω的匹配电阻,以减少线路上传输信号的反射。

3.系统程序设计

本系统的软件遵循模块化设计思想,包括主程序、初始化程序、串行通信程序和液晶显示程序等。系统的主机主程序流程图如图4所示。主机遵循Modbus协议,实现了发送串口命令和读取响应信息,以及数据处理和最终显示输出。Modbus协议是一个一主多从的通信协议,所以需要对每个从机分配不同的地址。从机主要实现数据帧的接收和存储,并且根据接收到的数据帧中的功能代码给出一应答消息作为对主机的回应。从机的程序设计流程图同图4类似。首先也需要对系统初始化,包括定时器初始化、串口初始化等,然后调用串口接收命令读取主机发送来的数据帧,并判断接收到的数据帧中的地址与本机是否相符,如果不符,直接结束,否则对数据帧进行CRC校验。当校验正确的时候就可以根据相应的功能代码调用对应的函数去执行功能操作,否则向主机返回一个错误信息的应答帧。下面给出主机和从机程序中几个重要的子程序设计的关键之处。

3.1定时器T0的初值

RTU模式中,信息开始时和结束时都至少应有3.5个字符的静止间隔时间,这个间隔时间可根据波特率用定时器T0中断来实现。当单片机每收到一个数据时立即检测与上一数据间隔是否大于3.5个字符时间,如大于则说明该帧发送结束,单片机准备接收下一帧。程序用定时器T0来控制和标识图1中1.5字符和3.5字符的时间时隔。对于系统所选择的波特率9600bit/s,则每位传输时间为1/9600s,在程序配置的串口模式1下,发送每字符信息时输出1个起始位、8个数据位及1个停止位,故每字符传输时间为1/9600*10s,又由于中断程序是在接收1个字符后再判断时间间隔,故主程序将1.5字符的帧内字节间隔时间定义为:1/9600*10*(1.5+1)≈2604.2us;3.5字符的帧间隔时间定义为:1/9600*10*(3.5+1)≈4687.5us。在11.0592MHz晶振的作用下,相应的定时器初值分别为2604和4688。

3.2CRC校验

RTU模式中每一消息帧最后2字节是CRC循环冗余校验字节。CRC校验是将整个字符串(不包括最后两个字节)按规定的方式进行位移并进行异或运算,计算结果存于字符串的最后两个字节内。当一帧消息结束后,需要对收到的地址码、功能码、数据段进行CRC校验。倘若校验结果与消息包含的CRC校验码吻合,则表示通信正常,否则直接返回,表示此帧通信存在错误,要求重发此帧。

篇5

在油库和各种石化单位,定量装车作业十分繁忙,装车操作过程又要求相对精确。更加重要的是,涉及石化产品具有一定危险性。为了提高了装车精度和效率,降低损耗,减轻工人的劳动强度,同时尽可能保证安全作业,本文设计了基于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月

篇6

在生产和生活中监控系统起到的作用越来重要,如在交通、银行、电力等部门对监控系统的要求越来越越高、需求也在不断增大。在远程监控系统中,作为一种种分布式控制系统和工业通信协议Modbus协议在工业领域得到很好的应用,本文针对其含义、系统设计构架和系统性能进行详细的阐述。

二、浅析Modbus协议

(1)Modbus协议开发的Modbus协议是一种分布式控制系统和工业通信协议,在分布式控制系统和工业设备通讯中得到很好的应用,采用RS485方式作为物理接口。控制器经由网络、控制器相互之间、通讯协议等可以通讯,在工业生产中已经成为通用标准,可以连接不同的控制设备成为工业网络,实现集中控制和监控。

(2)作为一种主从网络Modbus网络允许多个或一个从机和一个主机进行通信,其中应答报文和命令报文是相对应的关系,也就是采用命令/应答方式。主机发出命令报文,当收到主机发来的报文的时候,相应的应答报文发出对命令报文进行响应。每个从机在网络中都拥有一个唯一的地址,访问的从机地址包含在主机发出的命令中,对相应的命令做出应答的是具有该地址的从机。

(3)传输模式ASCII和RTU被应用在Modbus协议中。没有奇偶校验位、2个停位、8个数据为是RTU的传输格式。依靠接收字符间应用的时间RTU接收设备对一个帧的开始进行判断,在时间为3个半字符之后没有完成帧或没有新的字符,该帧会被接收设备放弃,新帧的开始以设下一个字符为标准。1字节的信息在RTU模式中被看作一个8为字符进行发送,

而作为两个ASCII字符在ASCII模式中被发送。

三、系统设计构架

数据采集的RTU设备、数据交互的监控设备、远程监控的服务器是这个系统硬件的主要组成部分。应用串口通信RTU设备与监控设备之间通信并使Modbus TCP协议的转换实现,应用TCP套接字技术服务器与监控设备之间进行通信并使Modbus TCP协议的转换实现。

(1)设计协议转换

在Modbus TCP协议中进行通信时候,是经过何种网络不需要考虑,因为它定义了一个消息结构体,并且对消息域内容和格局的公共公式进行了制定。在通信的时候这个协议对每个RTU设备的地址进行定义,对按地址发来的信息进行识别,并且对即将产生的行动进行决定。在需要回应的情况下,反馈信息将在RTU设备中生成,采用Modbus TCP协议发出信息。相互转换Modbus TCP协议与Modbus协议的时候,不需改变RTU,只需相应的转换MBAP报文头。服务器的请求被接收到的时候,MBAP报文头被Modbus TCP协议去掉并且被出送到RTU设备中。按照接收到的命令RTU设备进行数据读取,而且对CRC进行差错校验;RTU设备的相应被接收到的时候,相应的MBAP报文头被加在Modbus TCP协议上,CRC差错校验被去除并且传送回服务器。通过这样的过程实现两个协议的相互转换。

(2)实现设备参数读写

采用C/S模型实现设备参数读写模块。建立Socket通信是第一步,远程监控终端与数据服务器建立连接是通过发送注册包实现的,TCP保活机制被启动,等候服务器发出命令,写入或读取设备参数命令由数据服务器发送的时候,按照Modbus TCP协议远程监控终端接收命令,在传入设备之前把它转化为Modbus协议,根据其命令RTU设备对相应设备参数进行写入或读取,并向远程监控终端发送响应。在写入或读取成功的条件下,按照Modbus TCP协议接收到的响应被远程监控终端被封装,并且发送给数据服务器;如果是失败的写入或读取,按照Modbus TCP协议异常响应被远程监控终端发送到数据服务器。

四、分析系统性能

(1)在监控系统的作用和功能方面,在空压机中对压风机房管理、操作效率低下以及人力物力浪费等问题进行解决,使处理、交换、传递信息的速度加快,使监控系统的可靠性和安全性得到保证,使控制系统的人性化、智能化、自动化水平提高。主要功能在远程监控系统中得以实现的有:使工作报表正常运行,各种故障中的报警得以实现;供气压力参数可以远程设定,能够在线修正参数;实时监测供气压力,供气过压和欠压都会进行报警;供电系统的可靠性得以提高;等等。

五、结束语

通过上述浅析Modbus协议、系统设计构架、分析系统性能,可以得知,基于内嵌Modbus协议的远程监控系统,可以实现设备参数读写和套接字通信,使处理、交换、传递信息的速度加快。总之,这一系统具有很多优势,需要我们加大这这方面的研究和应用。

参考文献

[1]蔡茂蓉,姜龙,丁光辉,等.哈夫曼树的实现及其在文件压缩中的应用[J].现代计算机,2008(11):99-102.

[2]任子晖,付华科,杜艳,等.基于GPS/GPRS的校园定位监控系统设计[J].徐州工程学院学报(自然科学版),2011,26(3):7-10.

[3]王防修,周康.通过哈夫曼编码实现文件的压缩与解压[J].武汉工业学院学报,2008,27(4):46-49.

[4]卢智嘉,王俊社,李玉萍.基于Modbus远程监控系统的通信研究[J].微计算机信息(测控自动化),2008.24:157-158.

篇7

水位自动监控系统主要对辖区范围内各水闸监控点的水位高度,水l开关状况,实时图像进行远程的集中监控,告警以及水文信息历史记录等功能。替代了原有的人员分点巡视的工作方式,实现无人守值的24小时不间断监控,有更高的安全性。

2 监控中心传输网络设计

水位自动监控系统以PLC与全天候高清数字图像采集系统相集合,通过网络化控制技术,于集中监控系统中实时收集所有水闸监控点的实时信息,以及实现水闸的远程控制。系统分为两大部分,第一部分为分布于每一个水闸监控点内的现场监控模组;第二部分为位于中控室的集中控制系统。集中控制系统由水闸集中监控软件,历史数据存储系统,实时多屏监控系统,声光告警装置,不间断电源UPS供电系统等组成

3 平台软件设计

现场监控模组由PLC控制系统,全天候高清数字图像采集系统,水闸阀控装置,水位检测器,网络模组,UPS供电系统等组成。建立自动检测水位项目工程,保证水位正常。水利自动监管系统实现24小时自动监控,是以减少人力投入为基础,促进水位自动化管理体系,使用PLC与C语言程序结合的控制系统。

考核指标:

(1)水位检测:通过现场多个传感器检测现场水位波动情况,获取实时水位信息,反映至中控室的集中控制系统。

(2)信号传输:使用屏蔽线以及MODBUS通信协议进行高效,准确的信号传输,避免干扰以及错误信息的传输。MODbuss是应用协议,有两种模式ASCII,RTU。传输介质是网线、串口线。网线需要在TCP传输层上包一个头,用特殊的502端口。MODBUS的三种方式:TCP、RTU、ASCLL,通讯方式是通过串口形式通讯,走232或485通讯方法,TCP的通讯方法是TCPIP是通过以太网形式通讯,MODBUS包含三种方式:TCP、RTU、ASCLL、ASCLL通讯方式是通过串口形式通讯。

modbus协议和modbus tcp/ip协议的区别,按应用协议的物理方式,Modbus协议用于串行链接,是RS232/422/485的任何一种,有两种类型:Modbus RTU和Modbus ASCII;Modbus TCP/IP协议通常用于以太网链接,RJ45接口。Modbus协议是应用层协议,TCP/UDP协议是传输层协议,不是层级并列关系。Modbus协议像总经理,TCP/UDP协议是公司里的商务车。若一端用的是Modbus TCP协议,另一端用TCP协议,仅是数据包到达另一端,数据包没有得到处理,通信的目标没有完成。Modbus rtu和Modbus tcp两个协议的都是MODBUS协议,都是靠MODBUS寄存器地址进行数据交换;进行IP环境下数据传输,即一台计算机发出的字节流无差错的发到网络上其他计算机,计算机A接收数据包时,向计算机B回发数据包,产生部分通信量,全双工多路复用服务,进行端到端传输。UDP面向非连接、传输不可靠、传输少量数据。标准的Modicon控制器采用RS232C串行的Modbus。Modbus的ASCII、RTU协议约定好消息、数据的结构、命令和应答方式,通讯采用Maser/Slave方式。

Modbus协议要对数据进行校验,串行协议要进行奇偶校验,ASCII模式采用LRC校验,RTU模式用16位CRC进行校验,Modbus TCP模式没有规定校验,可靠协议。Modbus协议包括ASCII、RTU、TCP,S7-200 CPU224 CN 和S7-200 CPU226 CN 进行通讯。写好通讯指令后下载到micro/win里面,S7-200有两个通讯口Port0、Port1,两个口可以做mobus主站,port0可以做modbus的从站,用PLC进行连接时,Port0连PPI线上,一台做主站,一台做从站,地址在程序库中调用时在进行设置,先不用接线图,可以通讯就行,Port0都接在PPI电缆上,CPU224 只有一个port0口,先把主站程序通过PPI下载到PLC里面,然后把从站指令通过PPI下载到另外的PLC上。若CPU程序运行走modbus,编程软件失去通讯,modbus库是单独下载,要把两个PLC的三个通讯口都接在PPI上,先把224的Port0系统块地址设置为2,226的Port0系统块地址设置为3,226的Port1地址设置为4,224的mobus从站地址设置为2,226的Port0的主站mobus地址为3,在224程序中把一个mobus访问区W100复制到QW0上,在226程序内设置VW100去和224的VW100同步,下载PLC后,226设置VW100,224QW0外部DO灯是否按照VW100的数据进亮灯,即连通。协议的实现与编程环境无关,用多种语言都可以,如果是嵌入式的用C语言。中控室的集中控制系统分为以下几点:

(1)信息收集。由现场检测装置通过信号的形式直接连接PLC装置,以获取最新的实时信息,控制系统以实时曲线形式在全天候高清数字图像采集系统中反映出来,并且每个水位检测装置都有对应的曲线,以便查看不同位置的水位变化情况。水位变化曲线时间轴可根据需要调整。

(2)信息处理与情况分析。系统自动把收集到的数据进行分析计算,当检测水位达到限定高水位百分之九十五时,全天候高清数字图像采集系统高水位指示灯闪烁预警,集中控制系统发出信号给PLC系统,PLC系统控制动作装置进入预备放水状态,一旦水位高于限定高水位,动作装置启动放水降低水位,直到水位到达正常范围;当检测水位达到限定低水位时,全天候高清数字图像采集系统高水位指示灯闪烁报警,PLC系统控制动作装置立即补充水量,直到水位到达正常范围;当水位波动范围过大时,异常报警器响起,并且在全天候高清数字图像采集系统显示异常原因、故障点、以及应对方案。

(3)记录入档。可通过以太网把数据发送到计算机设备,以方便入档。通过全天候高清数字图像采集系统事件记录功能随时可翻看过去发生事件以及每个测试点水位的变化情况。

篇8

1、引言

MODBUS作为一种简单易用的通讯协议已经越来越多的应用在各类仪器仪表中,下面笔者以西门子公司的S7200PLC通过自由口与ABB公司的ACS510变频器使用MODBUS协议进行通信为例,对MODBUS通讯的应用进行叙述,以期达到抛砖引玉的效果。

2、硬件配置

图1给出了SIMATIC S7-200CPU与四台ABB ACS510变频器构成的MODBUS网络。S7-200CPU为主工作站。变频器1、变频器2,变频器3和变频器4为从工作站。设置变频器的通讯协议参数9802均为1,即变频器通过RS485串行通讯口和MODBUS总线相连。设置通讯速率参数5303为19.2kb/s。设置校验方式参数5304为偶校验,1个停止位。设置控制类型参数5305为 ABB传动简版。从左到右变频器1、2、3和4的站地址参数5302分别设置为3、4,5和6,并将变频器4的总线终端电阻DIP开关置ON。在对变频器以上参数设置完成后应对传动重新上电激活,使新地址及通讯协议生效。

变频器控制要求:

变频器分现场和远程两种控制模式,现场控制柜设置三位置模式选择开关,分别为停止、本控和远程。在本控模式下启动/停止命令由现场开关触发数字输入DI1控制,频率由现场的电位器改变模拟输入AI1的输入电压进行调节。当选择远程模式时,数字输入DI2接通,通知PLC现变频器已经处于远程控制模式。为能够实现以上功能并在人机界面能够观察到变频器的运行频率和通过模拟输入AI2输入的实际流量,还需要对变频器其他部分参数进行设置,见表1。

3、程序设计

3.1 通讯内容

主工作站轮流发送请求报文到每个变频器从工作站,随之每个从工作站产生响应报文。PLC主工作站分别对每个变频器从工作站进行如下操作:

(1)对每个变频器的输出线圈1~3的状态进行查询;

(2)查询变频器状态寄存器40004状态字、40005实际值、40006实际值和40007实际值。40005~40007数据值对应于表1中变频器参数5310、5311和5312中的实际值。

(3)写变频器控制字,对变频器的远程启停进行控制。

(4)写变频器寄存器,对变频器的外部2给定进行控制。

对一个变频器的数据全部读写完成后,开始对下一站号变频器的数据进行读写。当所有变频器的数据读写完成后,主工作站重新开始对最小站号变频器的数据进行读写。数据的传输及接受采用PLC自由通讯口模式进行,报文按照modbus的协议组织。

3.2 通讯格式

MODBUS请求报文格式如表2。

因在S7-200PLC发送指令XMT中,发送缓冲器的第一个字节指定的是数据传输的字节数,从第二个字节以后的数据为需要发送的数据。因此,结合MODBUS请求报文格式,PLC发送数据的格式如表3。

在整个网络通信过程中,主工作站轮流发送请求报文到每个从工作站,随之每个从工作站必须产生响应报文返回到主工作站。当主工作站向从工作站发送请求报文和接受从工作站返回的响应报文时,在主工作站储存区开辟了发送缓冲区和接受缓冲区。主工作站向从工作站发送请求报文时,首先对相应从工作站输出缓冲区的数据进行CRC运算生成校验码,并将校验码叠加在输出缓冲区的数据之后再传送到发送缓冲区,然后再由发送指令发出。建立一个远程循环结束标志位,当响应报文全部接受完成,置该位为ON。主工作站在接受从工作站的响应报文时,先把响应报文输入到接受缓冲区,再把接受缓冲区中的数据传送到输入缓冲区。为此,在主工作站中要留有两个数据存储区,一个作为报文请求(输出缓冲区),另一个作为报文响应(输入缓冲区)。

在MODBUS RTU通讯协议中都必须要求有CRC循环冗余校验。CRC循环冗余校验为两个字节,附加在报文后面的CRC的值由发送设备计算,当放置CRC 值于报文时,高低字节必须交换。首先发送低位字节,然后再发送高位字节。故此在发送缓冲区中的数据要比输出缓冲区的数据多两个CRC循环冗余校验字节。接收设备在接收报文时重新计算CRC的值,并将计算结果于实际接收到的CRC值相比较。如果两个值不相等,则传送的数据为错误。

3.3 程序描述

SBR0子程序:在PLC上电初始化阶段,设置通讯口为自由口通信方式,并设置波特率及校验方式,允许全部中断时件,并设置定时中断的时基为20毫秒。在这里设置波特率为19.2KB/S,偶校验,每字符8个数据。注意必须与从工作站的通讯参数相同。为输出和输入缓冲区的数据地址建立间接寻址指针。并设置请求报文的剩余数目为4,设置从工作站的查询剩余数目为4。

将输出缓冲区指针中指出的地址为起始地址的12个字节通过块传送命令传送到发送缓冲区单元中。并复位远程循环结束标志位。

对发送缓冲区中的报文进行运算生成CRC,交换CRC 寄存器中的高低字节,并将交换完成的CRC 寄存器叠加到发送缓冲区中。

启动定时中断和发送中断,并通过发送指令将发送缓冲区中的请求报文发送。

建立跳转入口,标号1。

若循环未结束,跳转到标号1。程序不向下执行,直至远程循环结束,标志位为ON。

远程I/O更新完成,将接受的报文通过块传送命令传送到接受缓冲区指针指出的接受缓冲区中。

修改发送缓冲区和接受缓冲区指针值,指向下一个输出和输入缓冲区字节地址。将请求报文的剩余数目减1。

当请求报文的剩余数目为零时,重新设置请求报文的剩余数目为4,将从工作站的查询剩余数目减1。

当工作站的查询剩余数目为零时,重新设置从工作站的查询剩余数目为4,为输出和输入缓冲区的数据地址重新建立间接寻址指针。

INT_0中断程序:在接受报文超时情况下,禁止接受中断和接受定时中断,置远程循环结束标志位为ON。

INT_1中断程序:在发送超时情况下禁止发送中断和发送定时中断,置PLC为STOP模式。

INT_10中断程序:禁止发送完成中断,启动接受定时中断INT_0和接受数据中断程序INT_11。

INT_11中断程序:若接受的首字符(从工作站地址)为从工作站的正确地址,则建立一个接受字符的地址指针。并把接受到的字符装入到接受字符指针指出地址中。增加指针的数值,指向下一个地址。并启动中断程序INT_12。

INT_12中断程序:把接受到的第二个字符(功能码)装入到接受字符指针指出地址中,增加指针的数值,指向下一个地址。启动中断程序INT_13。

INT_13中断程序:把收到的第三个字符(字节数)装入到接受字符指针指出地址中,并修改指针值。第三个字符为接受的不含CRC校验码字符的总数目,剩余接受字符数目为将字节数加2,若反馈的功能码为十六进制数0F,全部剩余字符数目为5。将全部剩余字符数目置入到累加器AC1中,当累加器AC1为零时,接收字符也就完成。启动中断程序INT_14。

INT_14中断程序:将接受到的字符装入接受字符指针指出地址中,并修改地址指针值和将将累加器AC1数值减一。若累加器AC1的数值为零。则关闭字符接受中断和定时中断,并将远程循环结束标志位置ON。

4、结语

该系统自投入在线运行以来,系统调节迅速且运行稳定,并取得了良好的经济效果,在助剂添加中具有较高的推广价值。

参考文献

[1]殷洪义.可编程序控制器选择、设计与维护.机械工业出版社,2002年.

篇9

在工业控制中经常需要观察系统的运行状态或者修改运行参数。触摸屏能够直观、生动地显示运行参数和运行状态,而且通过触摸屏画面可以直接修改系统运行参数,人机交互性好。单片机广泛应用于工控领域中,与触摸屏配合,可组成良好的人机交互环境。触摸屏和单片机通信,需要根据触摸屏采用的通信协议为单片机编写相应的通信程序。Modbus协议是美国Modicon公司推出的一种有效支持控制器之间以及控制器经由网络(例如以太网)和其它设备之间进行通信的协议。本文以AT89S51单片机和威纶通科技有限公司的MT6070iH型触摸屏为例,介绍其通信程序的开发过程。

一、系统结构

实现触摸屏与单片机的通讯,主要是解决通讯协议的问题。本文使用开放的Modbus通讯协议,以触摸屏作主机(Master),单片机作从机(Slaver)。MT6070iH触摸屏本身支持Modbus通讯协议,只要单片机按照Modbus协议进行收发数据,就可以进行通信了。触摸屏与单片机之间采用RS-485标准接口直接连接,传输速率设置为9600bps。图1为该系统的电路图。

图1 系统电路图

将AT89S51单片机的TXD、RXD口设置为异步串行通信模式,经过MAX485芯片将TTL电平转换为RS485电平,再与MT6070iH触摸屏RS-485 2W接口相连,即完成了硬件连接,其中P3.2作为收发控制信号。论文大全。MT6070iH触摸屏RS-485 2W接口的管脚2为485A,管脚1为485B,管脚5为公共地。

二、如何将MT6070iH设定成Modbus装置

将MT6070iH触摸屏设定成Modbus装置(以称为Modbus Server),单片机或其它装置只需使用Modbus协议,透过RS232/485接口,即可读写MT6070iH上的数据。将MT6070iH设定成Modbus装置的方法如下:

首先需在MT6070iH使用的MTP程序的设备清单(device table)中增加一个新的设备,此时PLC种类需选择“MODBUS Server”,PLC接口可以选择RS232、RS4852W、RS485 4W或Ethernet,这里选择RS485 2W。如图2所示。论文大全。

图2 将MT6070iH设定成Modbus装置

当接口选择使用RS485时,需选择使用的连接端口(COM1~COM3),并设定正确的通讯参数及站号。这里选择COM1(9600,N,8,1),站号设定为1。

按下“确定”键后可以在设备清单中发现一个新的装置:MODBUS Server,此时即完成了Modbus装置的设定,在完成MTP档案的编译并将获得的XOB档案下载到触摸屏后,即可透过Modbus协议读写MT6070iH上的数据。

三、Modbus通信协议介绍

Modbus通信协议是一种串行的主从通信协议,网络里仅有一台设置可作为主机(称Master),其它设备作为从机(称Slaver),主机不需编号,从机必须编号。协议定义了主机查询及从机应答的信息帧格式。论文大全。通信时,主机首先向从机发出请求信息,符合相应地址码的从机接收通讯命令,并除去地址码,读取信息,如果没有出错,则执行相应的任务,然后把执行结果返给主机。若从机接收到的校验码与本机计算的不同,则说明数据在通信过程中出现错误,从机把这次请求视为无效,功能代码将被修改以用于指出回应消息是错误的,同时数据段包含了描述此错误信息的代码。当主机收到这一信息时,会重新发送请求信息。校验方式分为LCR(传送数据为ACSII时)校验或CRC(传送数据为二进制时)校验,这里采用CRC校验方式。信息传输为异步方式,并以字节为单位。主从站之间通讯的字格式如下:

字格式(串行数据) 10位二进制

起始位 1位

数据位 8位

奇偶校验位 无

停止位 1位

Modbus协议可支持ASCII码或二进制格式的数据传输。ACSII码方式下每一个字节数据分两个字节传送,二进制方式下用一个字节传送,为了减少数据传输量,一般选二进制数据方式。各个区允许发送的字节均为16进制的0~9,A~F。二进制信息帧标准结构为:

初始结构 ≥4字节的时间

地址码 1字节

功能码 1字节

数据区 N字节

错误校验 16位CRC码

结束结构 ≥4字节的时间

二进制模式中,信息开始至少需要3.5个字符的静止时间,依据使用的波特率,很容易计算这个静止时间。发送完最后一个字符后,也有一个至少3.5个字符的静止时间,然后才能发送一个新的信息。网络上的设备连续监测网络上的信息,包括静止时间。

四、通信程序的开发

MT6070iH触摸屏只支持Bit和Word地址类型,而实际的单片机或其它控制器还有Byte、Double Word等表示方法,因此在进行通信时,需要把单片机和触摸屏的数据进行变换。触摸屏画面元件读取地址的设备类型有LW、0x、1x、3x、4x、RWI、RW等选项。其中,LW表示该元件读取的是触摸屏内部的地址,如其它元件的地址;0x表示读取的是控制器的输出信号;1x表示读取的控制器的输入信号;3x和4x指控制器的寄存器地址类型,其中4x是可读可写的,3x是只读的;RWI、RW都是触摸屏的内部地址,起辅助作用。这里仅以读写LW的0地址的数据为例说明读写过程。

MT6070iH触摸屏与单片机以Modbus协议通信,用到的Modbus功能码如下:

功能码 名称 作用 01 读取线圈状态 取得一组逻辑线圈的当前状态(ON/OFF) 02 读取输入状态 取得一组开关输入的当前状态(ON/OFF) 03 读取保持寄存器 在一个或多个保持寄存器中取得当前的二进制值 04 读取输入寄存器 在一个或多个输入寄存器中取得当前的二进制值 05 强置单线圈 强置一个逻辑线圈的通断状态 06 预置单寄存器 把具体二进值装入一个保持寄存器 1. 串口程序的初始化

使用定时器1作为波特率发生器,对串口的初始化程序如下:

void Initial(void)

{

SCON=0x50; //串口方式1,允许接收

TMOD=0x20; //定时器1方式2

TL1=0xFd; //波特率设为9600

TH1=0xFd; //存储定时器初始值

EA=1; //全局中断允许

TR1=1; //启动定时器

}

2. 向MT6070iH触摸屏LW的0地址写入数据

向MT6070iH触摸屏LW的0地址写入数据0x3A4B,功能码为6,程序如下:

void DateWrite(void)

{

ES=0; //关中断

unsigned int a;

unsigned int crc;

inData[0]=1; //站号

inData[1]=6; //功能码

inData[2]=0; //起始地址高位

inData[3]=0; //起始地址低位

inData[4]=0; //寄存器个数高位

inData[5]=1; //寄存器个数低位

inData[6]=2; //字节数

inData[7]=0x3A; //要写入数据高位

inData[8]=0x4B; //要写入数据低位

crc=0xffff;

crc=calccrc(9,&inData[0]); //根据前9个字节计算CRC值

inData[9]=crc&0xff; //CRC值低8位

inData[10]=crc>>8; //CRC值高8位

for(a=0;a<11;a++) //共发送11个字节

{

SBUF=inData[a]; //发送数据

while(!TI);

TI=0;

}

ES=1; //开串行口中断

}

3. 从MT6070iH触摸屏LW的0地址读取数据

从MT6070iH触摸屏LW的0地址读取数据,功能码为3,程序如下:

void DateWrite(void)

{

ES=0; //关中断

unsigned int a;

unsigned int crc;

inData[0]=1; //站号

inData[1]=3; //功能码

inData[2]=0; //起始地址高位

inData[3]=0; //起始地址低位

inData[4]=0; //寄存器个数高位

inData[5]=1; //寄存器个数低位

crc=0xffff;

crc=calccrc(6,&inData[0]); //根据前6个字节计算CRC值

inData[6]=crc&0xff; //CRC值低8位

inData[7]=crc>>8; //CRC值高8位

for(a=0;a<8;a++) //共发送8个字节

{

SBUF=inData[a]; //发送数据

while(!TI);

TI=0;

}

ES=1; //开串行口中断

}

发送完读取数据的信息,一旦MT6070iH触摸屏接收到该信息,经过CRC校验,如果没有错误,就会把LW的0地址数据发送给单片机,共7个字节,数据格式如下:

字节 数据段名称

1 站号

2 功能码

3 读取字节数

4 寄存器数据高位

5 寄存器数据低位

6 CRC校验码低位

7 CRC校验码高位

单片机接收完这7个字节,根据站号、功能码及CRC校验判断是否正确,如果接收正确,则第4个字节和第5个字节的值就是所需要的MT6070iH触摸屏LW的0地址的数据。

篇10

在工业生产过程中,流量是需经常测量和控制的参数之一,随着流量计功能的扩展,已经把温度、压力等变量的采集与流量整合成一个仪表,完成了原先需要采用流量计、温度计、压力计和二次仪表才能完成的功能。现场总线在仪表中的使用日益广泛起来。目前使用较多的现场总线有基金会现场总线(Foundation Fieldbus,简称FF),基于CAN通信的DeviceNet,以Siemens等为首的PROFIBUS,Rosemount的HART,三菱电机为主导推出的CC-Link等[1]。现需要在原有的流量仪表上加入Modbus现场总线通信的功能,搭建Modbus现场通信的平台,以及制作基于Modbus通信的样机。

1 需求分析

需求分析是一个项目的开端,也是项目建设的基石。在以往建设失败的项目中,80%是由于需求分析的不明确而造成的[2]。因此一个项目成功的关键因素之一,就是对需求分析的把握程度。涡轮流量计是运用最为广泛。目前正在进行开发的是智能涡轮流量计转换器,具备流量系数的分段修正、可选的温度压力补偿等功能,需要设置的参数和需要读取的过程变量比前几代都有明显的提高。因此亟需采用现场总线的方式对仪表进行访问。

根据之前的预研,确定采用RS-485总线加Modbus通信协议作为智能流量计转换器的通信方式。使程序实现最基本的Modbus通信功能:波特率固定为19200bps,校验为偶校验,能实现最基本的寄存器读写访问,如Modbus的03号功能Read Holding Register、04号功能Read Input Register和06号功能Write Single Register[3]。

2 概要设计

为了能与智能流量计转换器程序上无缝接轨,在选择单片机是使用了与转换器一致的ATmega168芯片。但是为了原型板的搭建方便,尽管在转换器设计中采用了贴片封装的芯片,此处还是选择了双列直插芯片。两者仅封装不同,在功能上对于实现通信功能是完全一致的[4]。对于通信部分RS-485的物理层接口芯片选择了目前广泛使用的MAX485芯片。该芯片为MAXIM公司出品,供电电压为5V[5]。为了配合5V芯片,采用78L05作为整机的供电。仪表输入电压为12V~24V通用。

在ISO/OSI网络模型中,将网络分为七层,从下至上依次是:物理层、数据链路层、网络层、传输层、会话层、表示层、应用层。Modbus在串行链路RS-485上的实现采用了其中的三层——物理层、数据链路层和应用层[6]。本仪表采用C语言进行开发,支持AVR系列单片机的C编译器主要有CodeVisionAVR、AVR-GCC、IAR、ICCAVR等。C语言编译器由于它具有功能强大、 运用灵活、代码小、运行速度快等先天性的优点,使得它在专业程序设计上具有不可代替的地位。

3 详细设计

本仪表采用MAXIM公司的485接口芯片MAX485作为物理层芯片,并连接到ATmega168的通用串行口进行数据收发。下图为整个仪表原型机的电路图:

电路中使用78L05作为稳压芯片,由于设计仪表输入电压为12V~24V±20%,使用78L05即可满足需求。D1的作用是防止电源反接烧坏仪表。

物理层除了硬件部分,也包含部分的软件。这些软件的功能是将物理层接收到的数据发送给数据链路层,或是将数据链路层需要发送的数据写入物理层硬件设备。这部分软件的主要功能是操作ATmega168的特殊功能寄存器,将UART收到的数据存入特定的缓冲区,或将缓冲区的数据向UART写入并通过ATmega168发送。在本次设计中,UART的波特率固定为19200bps;数据位由于使用Modbus RTU模式,固定为8位,停止位1位;奇偶校验采用偶校验。

3.1数据链路层软件

根据MODBUS Application Protocol Specification V1.1b的描述,Modbus协议定义了一种简单的协议数据单元(Protocol Data Unit,PDU),它是与下层通讯协议(如RS485、以太网等)无关的。而下层特定的数据单元将Modbus PDU进行封装,并被命名为应用数据单元(Application Data Unit,ADU),如下图所示:

数据链路层在一个Modbus设备中的功能是在物理层和应用层间建立一个联系,将物理层接收到的数据经过地址域的比对和错误校验(此处使用的是CRC校验)后,去除地址域和错误校验部分后,将其中的Modbus PDU部分提供给应用层;或者将应用层需要发送的Modbus PDU经过打包,加入地址域和错误校验后,生成Modbus Serial Line PDU后,由物理层进行发送。由于Modbus是基于命令-响应的主-从机制,因此在从机(Modbus设备)中,不需要实现重发机制。

在MODBUS over Serial Line Specification and Implementation Guide中规定了两种传输模式——RTU模式和ASCII模式。本仪表采用了RTU模式。由于本仪表使用Modbus over RS-485的RTU模式,因此需要实现CRC校验。Modbus规定了CRC生成多项式为X16+X15+X2+1,CRC寄存器初始值为全1(0xFFFF)。

CRC校验的程序如图4所示。

该段程序的作用是计算从buf开始,长度为len的数据缓冲区的CRC校验。其中,函数 _crc16_update为AVRGCC的C语言运行库avr-libc自带的高效CRC计算代码,使用了内嵌汇编实现,具体代码在头文件util/crc16.h中。

4 调试与测试

在开发过程中,调试与测试是两个既有区别又有联系的概念。在一般的情况下,当开发过程进入编码阶段后,就需要不断的进行调试,来确保每个功能块的错误是最少的。而当整个系统基本完成或可运行后,就可以对系统进行测试。可以说,测试是偏向于系统级的,而调试是基于模块或更低的层次(从硬件上说是芯片或电路,从软件上说是代码)来说的。在测试中发现了问题,又需要采用调试来对错误进行定位和修正。

4.1 测试平台简介

本设计主要是基于单片机的,但是为了实现通讯功能,还需要与上位机进行配合。上位机可以是个人电脑、工业控制计算机或PLC(Programmable Logic Controller,可编程控制器)等,通过RS-485总线与仪表进行通信。

在物理连接上,通过PC机的串行口连接一个RS-232转RS-485的无源转换器,通过约2米的电缆连接两台仪表。为了模拟比较恶劣的环境,没有使用双绞线,而直接采用两根电线进行连接。并在导线两头分别接上120Ω的终端电阻。使用两台仪表的目的是试验Modbus下的多机通信。

4.2 硬件电路调试

本系统硬件结构较为简单,单纯从硬件上来划分,可以分为3块:供电,控制和通信接口。首先不插入ATmega168和MAX485芯片,给表头分别加12V和24V供电,测试供电电流和78L05的输出电压,确认正常后,插入ATmega168和MAX485芯片再进行供电电流和电压的测量,结果如下:

4.3 系统测试

在Modbus应用层协议处理的代码编写完成后,整个系统就初具雏形了,能进入系统测试阶段了。系统测试将从正常数据处理、异常数据处理和大数据量处理这三个方面来进行。

本测试主要依靠Modbus Tester软件,通过读、写不同的寄存器来实现验证。首先进行Input Register的读操作,对总线上的两台仪表分别进行,查看读取的数据是否正确。然后进行Holding Register的读操作,验证数据是否被正常读取。最后进行Holding Register的写操作,验证数据写入正确,再通过读操作读回寄存器的值,看是否与写入的一致。

4.4 异常情况处理

作为一个健壮的系统,除了需要对正确的请求作出响应,在各种异常情况下,也需要能够有正确的反应,至少不能造成程序跑飞等不可逆转的情况发生。对于工业控制领域来说,这是尤为重要的。

以本系统为例,可能出现的异常情况有:

1)Modbus发送了错误的数据包,如错误的功能码或寄存器地址等;

2)数据包奇偶校验错或CRC出错。

第一项可以通过Modbus Tester软件来完成,通过设置无效的功能码(如读线圈的功能本系统没有实现,可以作为无效的功能码来进行测试)和错误的寄存器地址或长度,应当能看到仪表返回Modbus的异常响应数据包。

第二项的奇偶校验部分,也是通过Modbus Tester来实现的。通过设置通信参数,将校验位设为“奇校验”与“无校验”后,仪表不应再有返回数据包。CRC出错部分,通过串口调试软件进行。先通过串口调试软件发送一个正常的数据包请求,此时仪表应能有响应。然后修改其中某一个数据,使得CRC校验失效,此时再发送数据包,仪表应不响应。再将数据改回原值后,仪表应能继续正常响应。

5 结束语

经过几个月的开发,从测试结果来看,目前基本达到了设计要求,实现了仪表以Modbus通信协议进行数据的传输,而不足之处在于目前仅实现了固定的波特率和校验位,而以后应该改成可设置;目前也没有考虑程序占用CPU时间,而最终的流量计转换器实现中,需要考虑整个系统的中断响应时间和执行效率等,从而真正实现智能流量计在工业生产过程中的通信应用。

参考文献:

[1] 阳宪惠.现场总线技术及其应用[M].北京:清华大学出版社,1999.

[2] 张海藩.软件工程导论[M]. 4版.北京:清华大学出版社,2003.

[3] Modbus-IDA.MODBUS Application Protocol Specification V1.1b.Dec 28, 2006.http:///docs/Modbus_Application_Protocol_V1_1b.pdf.

[4] ATMEL Corporation.ATmega48/88/168 Datasheet (revision M).09/2007.http:///dyn/resources/prod_documents/doc2545.pdf.

篇11

0.前言

钱家营矿的涌水量比较大,共设置了3个水平的泵房,伴随着全自动化矿井的建设,需要对-600水泵房和-850水泵房进行升级改造,水泵和电机的温度参数保证着水泵的安全运行,每个水泵房共设置10台排水泵,每台水泵通过YBD-200温度巡检仪进行温度采集,该仪表采用的是modbus协议通过RS485总线接口传输到PLC,经过PLC处理,传输到地面上位机实时显示。

1.温度巡检仪通信协议

YBD200型仪表采用的是标准modbus协议,RTU传输模式。Modbus协议是一种主-从通信协议。任何时刻只有一个设备能够在线路上进行发送。由主站点管理信息交换,且只有它能发起。它会相继对从站进行轮询。除非被主站批准,否则任何从站都不能发送消息。从站之间不能进行直接通信。协议帧中不包含任何消息报头字节或消息字节结束符。

1.它的定义如下(见表1):

从站地址:消息中的地址包含一个字节,从站地址范围是1…255。主设备通过将要联络的从设备的地址放入消息中的地址域来选通从设备。当从设备发送回应消息时,它把自己的地址放入回应的地址域中,以便主设备知道是哪一个设备做出回应。数据:以二进制代码传输。CRC16:循环冗余错误校验。采用的是9600bps的波特率。字节数据格式:一位起始位,八位数据位,一位偶校验位,一位停止位。从站地址编号:仪表地址必须在1~255之间,且同一总线上,每个仪表的地址不可重复。当字符间隔时间长于或等于3.5个字符时,即作为检测到帧的结束。

2.读取寄存器

主站请求(表2):

从站响应(表3):

例如温度巡检仪的地址为10,利用串口调试软件Com Monitor,进行发送数据:0A 03 00 00 00 07 05 73得到的数据为:0A 03 0E 00 C6 00 BA 01 0B 01 3C 01 8F 01 8F 01 8F DC ED,表示该仪表通信正常。

3.硬件组成和接线

水泵的电控系统主要由一台集控柜和10台就地柜等组成,集控柜安装有315-2DP的CPU模块和CP343-1的以太网模块、CP340-RS422/RS485通信模块以及数字量、模拟量输入输出模块等,温度探头选用的是Pt100铂电阻类型的,把7点的温度数据接到YBD-200型温度巡检仪对应的端子上,一共采集10台水泵的温度数据,每块温度巡检仪均通过RS485总线接至集控柜中CP340-RS422/RS485的接口上,把10块温度巡检仪的A端并联的一起接到CP340-RS422/RS485的1#端子,B端并联的一起接到CP340-RS422/RS485的2#端子即可,并且需要把CP340-RS422/RS485的5#端子进行接地处理,抗干扰能力强。

4. PLC程序的编写

现场使用YBD-200型温度巡检仪的地址编号为4-13,为了防止数据的读取错误,编写主站PLC程序时,可通过增计数器进行从站地址4-13的轮询,并设置0.5s时钟寄存器进行控制。为了保证发送报文的准确性,发送报文之前先利用事先编好CRC校验子程序检验一下,CRC校验子程序采用的是CRC16算法。

PLC与温度巡检仪主要通过调用FB2、FB3系统块实现主从站的请求和读取功能。需要注意的是,调用FB2、FB3时,地址为CP340-RS422/RS485硬件组态时的地址352;主站请求时从DB3数据块中的DBB0字节开始调用,字长为8。主站读取从站数据时,从DB8数据块中的DBB0字节开始写入,DB8块数据先进行CRC子程序检验其正确性,然后再编程实现分组对应到DB7数据块中,从DB7.DBD0字节定义存储温度巡检仪4#地址数据,依次是电机前轴、电机后轴、泵前轴、泵后轴、定子A相、定子B相、定子C相。依次类推,从DB7.DBD28开始存储5#地址的7点温度数据,一共存储10台水泵的温度参数。

通过CP343-1以太网模块将PLC中的数据可以全部接入全矿自动化平台进行数据共享,上位机利用西门子公司的wincc6.2进行编写绘制,通过编程实现将DB7中的温度数据全部读取到wincc中,同时也可以增加其他的故障信息。

结语

本文通过modbus协议RS485总线技术实现了现场温度的采集,但在现场使用中发现,温度巡检仪的地址是固化的,如若巡检仪损坏后,互换性较差,先已进行温度巡检仪的升级,使每台温度巡检仪的地址可在0~255之间任意调整,并将温度巡检仪使用的RS485总线模块更换为MAX485具有光电隔离功能,大大增加了设备的安全性和稳定性。

参考文献

篇12

1概述

Modbus协议最初由Modicon公司开发出来,在1979年末该公司成为施耐德自动化部门的一部分,现在Modbus已经是工业领域全球最流行的协议。此协议支持传统的RS-232、RS-422、RS-485和以太网设备。在我国,Modbus已经成为国家标准GB/T19582-2008。据不完全统计:截止到2007年,Modbus的节点安装数量已经超过了1000万个。

Intouch软件是由美国wonderware公司开发的过程可视化组态软件,其功能强大、易用性好,市场占有率高,结合其他的软件,如IO Server和D/A Server,可以完成许多工业项目。

通过水厂泵站案例:一种基于Intouch和Modbus协议的监控系统,上位机采用安装有Intouch软件的工控机,下位机采用AB系列LOGIX5000的PLC系统,并通过MVI56-MCM通讯模块,和现场仪表构架了完整的通讯链路,系统开发方便,扩展性和稳定性好。

2 Modbus协议概述

当在网络上通信时,Modbus协议决定了每个控制器须要知道它们的设备地址,识别按地址发来的消息,决定要产生何种行动。如果需要回应,控制器将生成应答并使用Modbus协议发送给询问方。标准的Modbus口是使用一RS-232C兼容串行接口,它定义了连接口的针脚、电缆、信号位、传输波特率、奇偶校验。控制器能直接或经由Modem组网。

Modbus协议测试软件:

Modbus协议测试软件有很多,比较典型的有Modscan和Modsim,这两款软件联合使用,可以使获得完整的仪表通讯连接情况。其中Modscan软件用于电脑模仿上位机环境和仪表进行连接,Modsim软件用于电脑模拟仪表环境和PLC系统进行连接。

2.1 Modscan软件及设置

Device Id为仪表设定的通讯地址,一条线路中,每个仪表地址必须指定(1-256之间)并且唯一;Address为读取仪表的首地址,一般仪表读取地址为40001开始,而软件设置中,定义为00001开始;Length为连续读取的位数;MODBUS Point Type选择03 HOLDING REGISTER锁定寄存器地址,接下来设置如下图:

点击Connection,下拉菜单,选择Connect,出现如图对话框。其中Connect Using下拉菜单,选择电脑用哪个COM口和现场仪表通讯;Baud Rate选择仪表波特率,通常有2400,4800,9600,19200这几个选项;Word Length默认8位;Parity奇偶校验,根据仪表,通常为NONE;Stop Bits停止位,通常为 1;RTS Control为请求允许发送,相当于一种握手协议,通过COM口测试时通常为ENABLE,高电平触发,在和PLC直连中,默认DISABLE也可通讯。然后点击OK按钮,一切正常情况下,即可实现通讯,会有回码显示从00001开始,到指定Length长度下,读取出仪表地址读数。

2.2 Modsim软件及设置

Modsim的界面和设置基本上和Modscan相同,所不同的是Modscan软件用于电脑模仿上位机环境和仪表进行连接,Modsim软件用于电脑模拟仪表环境和PLC系统进行连接,具体的设置就不再一一叙说了。

3 MVI56-MCM模块的配置

3.1 硬件配置

MVI56-MCM模块属于基于AB公司LOGIX5000系列PLC的第三方通讯模块,主要功能是可以支持LOGIX5000系列PLC读写基于标准MODBUS协议下的仪表通讯。通讯模块MVI56-MCM是Modbus网络和AB PLC之间的一个网关。处理器的数据传送异步于Modbus网络上的数据活动。模块内部具有5000个字的寄存器,用于处理器和Modbus网络之间的数据交换,MVI56-MCM模块共有3个端口P1、P2、P3:

其中SETUP区域插口默认不用改,PRT2和PRT3分别对应P2端口和P3端口,该端口设置MVI56-MCM模块以何种端口读取现场仪表的MODBUS协议,第一排表示以RS-232端口读取,第二排表示以RS-422端口读取,第三排表示以RS485端口读取,现在通常以RS232端口读取。

前端P2,P3端口由该模块专用转接头,接出一个9针接口的端口,该端口可以配置成232,422,485接口的任意一个。注意这三种接口的接线方式不一样。

3.2 MCM模块工作方式

MODBUS从站端口驱动,从ControlLogix处理器接收设置信息,用这些信息设置串口,并且定义从站节点特征。然后主站设备向模块节点地址发送读或写的命令,端口驱动在接收前进行验证。一旦命令被接收,数据立即传输到从模块的内部数据库;如果是读命令,数据从数据库中读出并创建相应信息;如果是写命令,数据直接写入到数据库中并创建相应信息。当处理过程结束后,模块相应信息到主站。在状态数据库中计数器使梯形逻辑图对从站的状态进行判断。

3.3软件配置

MVI56-MCM模块随机附带了一张光盘,上面会有样例程序,分别对应LOGIX5000软件不同版本,目前从13.0-21.0都有,以样例程序为蓝本编程将较为简易,内部通讯均有程序,只需在Controller Tags里定义相应的参数,即可在LOGIX5000的PLC中读写仪表地址,不同版本的样例程序,在Controller Tags的定义以及内部通讯程序上均有不同,因此样例程序版本和PLC版本必须严格一致,以确保可以正常通讯。目前泵站管理所对仪表为只读不写。

1)以17.0版本样例程序为例,在Monitor Tags模式下,点击MCM,MCM.CONFIG.ModDef中,分别设置MCM.CONFIG.ModDef.WriteStartReg(写仪表的首地址),MCM.CONFIG.ModDef.WriteRegCnt(写仪表的连续位数),MCM.CONFIG.ModDef.ReadStartReg(读仪表的首地址),MCM.CONFIG.ModDef.ReadRegCnt(读仪表的连续位数),注意地址不能重复。

2)然后在MCM.CONFIG.Port1和MCM.CONFIG.Port2中分别设置两个端口的参数,PORT1和PORT2分别对应于硬件的P2和P3端口。以下为需要设置的一些参数:

1)然后是MCM.CONFIG.Port1MasterCmd参数的设置,该参数下有100个数组,每个数组可以读写一次仪表数据段;

2)如果仪表设置和MCM设置均正确,且硬件连接均正常,通过MCM.DATA目录下,相应的MCM.DATA.ReadData[X]就会有相应的仪表地址的读取显示,表明数据连接正常。然后数据就可以正常在LOGIX5000里编程,并通过INTOUCH对应相应的OPC SERVER读取数据了。

4 应用实例

上海市自来水市南泵站管理所从2000年开始采用PLC系统,PLC系统采用AB公司的LOGIX5000系列,CPU采用L61系列,工控机的通讯采用ENBT以太网通信模块,涉及到和现场的仪表通讯,大多数采用了MODBUS通讯,用了MVI56-MCM通讯模块,该模块的优点如前文所述有集成化的软件,只要软件参数做修改调整即可对现场仪表进行读写,操作很方便,涉及到的仪表通讯,包括变压器温度控制仪、高压系统综合保护器和LOGIX5000的PLC通讯,均通过这些方法得到了实现。其中综合保护器读取了电机绕组及轴承7个温度、电压、电流、功率、电量参数、电机电能参数等多个信号,通讯规约为 MODBUS协议下RTU半双工方式,RS-485通讯接口频率采用9.6kbps。

要注意的是,MVI56-MCM光盘自带软件,要结合LOGIX5000版本的不同,采用相应版本的样本程序,这样能保证和PLC的通讯正常。另外MVI56-MCM模块的接口为232接口或485接口,如果通讯电缆有室外,最好室外部分通过光纤连接,室内通过光模转换成为相应的232或485信号,这样可以去除雷击对信号线路的影响,甚至会导致MVI56-MCM模块故障。

由于PLC系统的成功引入,基于MODBUS协议下仪表通讯连接的成熟稳定,水厂泵站的控制由离散的人工操作方式,逐步转型为远程集约化操作的模式,上海市自来水市南有限公司泵站管理所下属十几个泵站目前均实现了远程集约化监控,绝大多数泵站实现了无人值守模式的运行,在极大程度提高了设备监控水平的同时,节约了可观的人力成本,为企业的可持续发展打下良好基础。

参考文献

[1]任胜杰.电气控制与PLC系统. 机械工业出版社, 2013.

篇13

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.