《ModBus协议在工业控制系统中的应用.docx》由会员分享,可在线阅读,更多相关《ModBus协议在工业控制系统中的应用.docx(8页珍藏版)》请在三一办公上搜索。
1、ModBus协议在工业控制系统中的应用(1)2008-08-11 10:07:19 来源:互联网随着计算机网络、通讯、控制等技术的发展,信息交换沟通的领域正在迅速覆盖从工厂的现 场设备层到控制、管理的各个层次。基于现场总线的智能仪表对现场总线技术在我国的推广应用具有非常 重要的意义。本文在Modbus现场总线协议的基础上设计了一个工业温度控制系统。关键字:现场总线冬174篇ModBus协议 是5篇单片机控制 2篇一、ModBus协议简介当今世界,工业控制已从单机控制走向集中监控、集散控制。在进入网络时 代的今天,工业控制器连网也为网络管理提供了方便。ModBus协议就是工业控 制器的网络协议中
2、的一种。ModBus协议是Modicon公司于1978年发明的一种用 于电子控制器进行控制和通讯的通讯协议。通过此协议,控制器相互之间、控制 器经由网络(例如以太网)和其它设备之间可以进行通信。它的开放性、可扩充 性和标准化使它成为一个通用工业标准。有了它,不同厂商生产的控制设备可以 简单可靠地连成工业网络,进行系统的集中监控,从而使它成为最流行的协议之ModBus协议包括ASCII, RTU, PLUS, TCP等,并没有规定物理层。此协议 定义了控制器能够认识和使用的消息结构,而不管它们是经过何种网络进行通信 的。标准的ModBus是使用RS-232C兼容串行接口,RS-232C规定了连接
3、器针 脚、接线、信号电平、波特率、奇偶校验等信息,ModBus的ASCII, RTU协议则 在此基础上规定了消息、数据的结构、命令和应答的方式。ModBus控制器的数 据通信采用Master/Slave方式(主/从),即Master端发出数据请求消息,Slave 端接收到正确消息后就可以发送数据到Master端以响应请求;Master端也可以 直接发消息修改Slave端的数据,实现双向读写。ModBus可以应用在支持ModBus协议的PLC和PLC之间、PLC和个人计算机 之间、计算机和计算机之间、远程PLC和计算机之间以及远程计算机之间(通过 Modem连接),可见ModBus的应用是相当广
4、泛的。由于ModBus是一个事实上的 工业标准,许多厂家的PLC, HMI、组态软件都支持ModBus,而且ModBus是一个 开放标准,其协议内容可以免费获得,一些小型厂商甚至个人都可根据协议标准 开发出支持ModBus的产品或软件,从而使其产品联入到ModBus的数据网络中。 因此,ModBus有着广泛的应用基础。在实际应用中,可以使用 RS232, RS 485 /422 , Modem 加电话线、甚至 TCP/IP 来联网。所以,ModBus 的传输介质种类较多,可以根据传输距离来选择。二、ModBus协议的通讯格式ModBus可分为两种传输模式:ASCII模式和RTU模式。使用何种模
5、式由用户 自行选择,包括串口通信参数(波特率、校验方式等)。在配置每个控制器的时 候,同一个ModBus网络上的所有设备都必须选择相同的传输模式和串口参数。2.1 ASCII 模式当控制器设为在ModBus网络上以ASCII模式通信,在消息中的每个8Bit 字节都作为两个ASCII字符发送。这种方式的主要优点是字符发送的时间间隔可 达到1秒而不产生错误。表1 ASCII模式的消息帧起始位设备地址功能代码数据LRC校验结束符译字符;3个字符才字符n个字符;知字符蠢字符如表1所示,使用ASCII模式,消息以冒号(:)字符(ASCII码3AH)作 为起始位,以回车换行符(ASCII码0DH, 0AH
6、)作为结束符。传输过程中,网络 上的设备不断侦测“:”字符,当有一个冒号接收到时,每个设备就解码下个位 的地址域,来判断是否发给自己的。与地址域一致的设备继续接受其它域,直至 接受到回车换行符。除起始位和结束符外,其他域可以使用的传输字符是十六进 制的09,AF,当然也要用ASCII码表示字符。当选用ASCII模式时,消息 帧使用LRC (纵向冗长检测)进行错误检测。2.2RTU模式当控制器设为RTU模式时,消息帧中的每个8Bit字节包含两个4Bit的十六 进制字符。表2 RTU模式的消息帧起始位设备地址功能代码数据CRC校验结束符T1-T2-T3-T48Bit8Bitn 个16BitT1-T
7、2-T3-T4该模式下消息发送至少要以3.5个字符时间的停顿间隔开始。传输过程中, 网络设备不断侦测网络总线,包括停顿间隔时间内。当第一个域(地址域)接收 到,相应的设备就对接下来的传输字符进行解码,一旦有至少3. 5个字符时间 的停顿就表示该消息的结束。在RTU模式中整个消息帧必须作为一连续的流转输,如果在帧完成之前有超 过1.5个字符时间的停顿时间,接收设备将刷新不完整的消息并假定下一字节是 一个新消息的地址域。同样地,如果一个新消息在小于3. 5个字符时间内接着 前个消息开始,接收的设备将认为它是前一消息的延续。如果在传输过程中有以 上两种情况发生的话,必然会导致CRC校验产生一个错误消
8、息,反馈给发送方设 备。当控制器设为RTU (远程终端单元)模式通信时,消息中的每个8Bit字节 包含两个4Bit的十六进制字符。这种模式与ASCII模式相比在同样的波特率下, 可比ASCII模式传送更多的数据。三、系统设计本文所设计的系统是一个基于modbus的工业控制网络,它主要由实现现场 控制功能的智能控制仪表、实现对智能控制仪表在线配置与监控功能的主机两部 分组成。作为从机的现场智能控制仪表主要任务有:实现现场温度采集、输出控 制、显示、系统配置以及响应主机激励;主机的主要任务是在线配置从机、监控 从机从而得到相应从机的状态、历史温度数据分析;两者之间的通讯是基于现场 总线技术的。Mo
9、dBus协议在工业控制系统中的应用(2)2008-08-11 10:07:19 来源:互联网随着计算机网络、通讯、控制等技术的发展,信息交换沟通的领域正在迅速覆盖从工厂的现 场设备层到控制、管理的各个层次。基于现场总线的智能仪表对现场总线技术在我国的推广应用具有非常 重要的意义。本文在Modbus现场总线协议的基础上设计了一个工业温度控制系统。关键字:现场总线 174篇ModBus协议 Q 5篇单片机控制 Q 2篇3.1系统的硬件设计系统主要由通讯电路(输入)、数据采集、输出控制、LCD显示、通信及电 源模块等组成。如图1所示,系统具有对外界温度信号进行采集的能力,采集的 模拟信号经A/D模块
10、转换为相应的数字量,送入微处理器进行处理。采集到的每 一路温度都要与系统此路的温度设定值进行比较,然后根据结果调用合适的控制 算法,并通过控制相应的继电器的占空比实现对温度的调节。考虑到系统实际应用,在硬件设计方面,微控制器选用了台湾Syncmos公司 生产的8位微控制器SM5964,它是80C52微控制器家族的派生产品,其强大的 片内资源,只需添加少量的外围器件即可实现系统的要求。温度测量利用Pt (100。)热敏电阻,测量的模拟信号经A/D模块转换后送入微处理进行处理。模数转换器选用凌特公司(Linear Technology)推出的20位无延迟模数转换器 LTC2430,此模块可直接对测
11、量的毫伏级信号进行处理,并能够满足精度要求。 其它也选用了与通信和输出控制相关的器件。通讯电路温度信号多路模罄换器图1系统结构框图由于篇幅关系,只介绍本系统通信部分的电路原理。由于标准的ModBus物 理层采用了 RS-232串行通信标准,在PC机上模拟MODBUS通信通过使用RS-485 插卡或者RS-232/ RS-485转换模块,实现多点通信,这里选用的是 RS-232/RS-485转换模块。电路图如图2所示:TXP 3图2通信电路原理图SM5964的串行发送端口 TXD和接收端口 RXD经MAX232芯片进行电平转换后, 分别与PC机的数据接收端口 RXD和数据发送端口 TXD相连接。
12、SM5964串行通信 的发送端TXD连接到的11引脚,发出的数据信号经过MAX232芯片转换后,由0 5V的TTL电平变为-12+12V的RS232电平,从14引脚输出到PC机串行口的第二引脚。按RS232通信协议规定,PC机串行口的第二引脚为数据输入端,这样, 发出的数据就可被PC机接收到。由PC机串行口的发送端TXD(PC机串行口的第 三引脚)传输来的数据,作为RS232电平的信号输入到MAX232芯片的第13引脚, 经过MAX232芯片进行电平转换后变为TTL电平,再由MAX232的12引脚输出到 SM5964串行口的接收端口 RXD。从而完成数据的双向传输。在设计中,使用了两个发光二极
13、管D7和D8监视通信的工作状态。3.2系统的软件设计本系统的软件设计是基于软件开发平台p C/OS-II,它是由Labrosse先生 编写的一个开放式内核,最主要的特点就是源码公开,清晰明了。在单片机系统 中嵌入p C/OS-II将增强系统的可靠性,并使得调试程序变得简单起来。但由于 它没有功能强大的软件包,基于具体应用需要自己编写驱动程序,对内核进行扩 充。为使其能够正常工作,要根据具体的硬件平台完成相应的移植工作。p C/OS-II是一个占先式的内核,即已经准备就绪的高优先级任务可以剥夺正在 运行的低优先级任务的CPU使用权。这个特点使得它的实时性比非占先式的内核 要好。根据要实现的功能,
14、我将系统划分为如下6个任务:按键处理、LCD显示、 串行通信、输出任务、控制运算、信号采集处理。这里只介绍和ModBus总线协 议相关的部分。当选用的是ModBus的RTU模式时,一帧报文中字节与字节之间的时间间隔 比帧与帧之间的时间间隔小得多,因此主要的难点在于如何判断一帧报文接收结 束与否,这可以利用单片机内置的定时器来进行判断。若实际实现时,我们选择 了 19200的传输速率,那么空闲间隔时间TN1/19200*8*3.5=1.5ms。每当接 收到一个新的字节,就启动定时器开始计时,定时器的时间设定为帧与帧之间的 最小时间间隔(上面提到的例子中是1.5ms)。波特率不同,该时间的间隔也不
15、 同。若不到预定时间又接收到下一个字节,则说明一帧报文尚未结束,定时器重 新开始计数;若定时器顺利计数到预定时间,就会触发相应的中断,在该定时中 断服务程序中设定帧结束标志字节,表明一帧报文接收完毕。这样就可以防止报 文接收不完整,导致该帧通讯任务无法结束而影响下一帧的接收。随着计算机网络、通讯、控制等技术的发展,信息交换沟通的领域正在迅速覆盖从工厂的现 场设备层到控制、管理的各个层次。基于现场总线的智能仪表对现场总线技术在我国的推广应用具有非常 重要的意义。本文在Modbus现场总线协议的基础上设计了一个工业温度控制系统。图3接收程序流程图ModBus协议在工业控制系统中的应用(3)2008
16、-08-11 10:07:19 来源:互联网关键字:现场总线 174篇ModBus协议 Q 5篇单片机控制 Q 2篇如图3所示,在一个帧开始接收时判断接收的第一个字节是否为本机地址, 如果是则保存到接收缓冲区中,不是则继续等待下一帧报文的到来,这样节省了 保存数据的时间,接收中断服务程序只是保存数据而不处理数据,只是在一帧新 的报文接收结束后,通知系统(通过发出信号量来实现);ModBus协议还规定了 从方接收报文不正确时发问的出错帧。考虑到装置内部通信的过程不是很复杂, 在实际应用中如果从方收到的报文校验不正确,采取不作应答的方式。主方若在 规定时间内未收到从方的应答报文时,将重发请求报文;
17、若多次末收到从方应答 报文,则报通讯故障。上面的措施大大缩短了中断服务程序的执行时间,防止了 系统资源的无谓浪费。在数据处理方面设计了一个环形的缓冲区,用来存放接收到的数据,这个缓 冲区是一个两维数组。假设一个帧不超过12个字节,可以定义了一个5*12的 二维数组。数组的第一个元素是标志位,前四位用来表示数据是否已经处理,后 四位存放接收的数据的个数;每接收一个帧的数据,数组下移一个。当接收的数 据要覆盖未处理数据时系统报警,这种情况一般不会发生,因为数据处理程序在 本系统中被设成优先级最高。在ModBus协议中另外一个问题就是CRC校验和的计算问题,一般情况下它 是由硬件电路直接产生的,这样
18、速度比较快,系统负载小;但是在本文中介绍的 单片机中没有这种专用电路,而且一般的中低端的单片机一般也不具有这种专用 电路。这里我们只有充分利用现有的资源,如果直接计算的话,单片机负载很大,而且浪费了大量的系统时间,影响系统的实时性,考虑到我所使用的MCU的 Flash ROM比较大,可以存储大量的常量线性表数据,利用查表方式可以非常方 便的计算出CRC校验码。四、结束语在本文中比较详细地介绍了 ModBus总线协议,并最终设计了一个实现多点 温度测量和控制的使用系统,希望本系统对类似的通讯应用有所帮助。参考资料1. Modicon ModBus Protocol Reference Guide.PI 一 MBUS 一 300 Rev. J2. Mark Nelson著.串行通讯开发指南.北京:中国水利水电出版社,20003. 王田苗主编.嵌入式系统设计与实例开发.北京:清华大学出版社,2002