Modbus协议及其在MCU与PLC通信中的应用
- 格式:pdf
- 大小:697.69 KB
- 文档页数:4
MODBUS通讯协议及编程ModBus通讯协议分为RTU协议和ASCII协议,我公司的多种仪表都采用ModBus RTU 通讯协议,如:YD2000智能电力监测仪、巡检表、数显表、光柱数显表等。
下面就ModBu s RTU协议简要介绍如下:一、通讯协议(一)、通讯传送方式:通讯传送分为独立的信息头,和发送的编码数据。
以下的通讯传送方式定义也与MO DBUS RTU通讯规约相兼容:初始结构= ≥4字节的时间地址码 = 1 字节功能码 = 1 字节数据区 = N 字节错误校检 = 16位CRC码结束结构= ≥4字节的时间地址码:地址码为通讯传送的第一个字节。
这个字节表明由用户设定地址码的从机将接收由主机发送来的信息。
并且每个从机都有具有唯一的地址码,并且响应回送均以各自的地址码开始。
主机发送的地址码表明将发送到的从机地址,而从机发送的地址码表明回送的从机地址。
功能码:通讯传送的第二个字节。
ModBus通讯规约定义功能号为1到127。
本仪表只利用其中的一部分功能码。
作为主机请求发送,通过功能码告诉从机执行什么动作。
作为从机响应,从机发送的功能码与从主机发送来的功能码一样,并表明从机已响应主机进行操作。
如果从机发送的功能码的最高位为1(比如功能码大与此同时127),则表明从机没有响应操作或发送出错。
数据区:数据区是根据不同的功能码而不同。
数据区可以是实际数值、设置点、主机发送给从机或从机发送给主机的地址。
CRC码:二字节的错误检测码。
(二)、通讯规约:当通讯命令发送至仪器时,符合相应地址码的设备接通讯命令,并除去地址码,读取信息,如果没有出错,则执行相应的任务;然后把执行结果返送给发送者。
返送的信息中包括地址码、执行动作的功能码、执行动作后结果的数据以及错误校验码。
如果出错就不发送任何信息。
1.信息帧结构地址码:地址码是信息帧的第一字节(8位),从0到255。
这个字节表明由用户设置地址的从机将接收由主机发送来的信息。
施耐德PLC MODBUS TCP说明1、通讯接口:以太网TCP\IP(MODBUS\TCP协议),MCU为客户端,主动连接PLC的502端口,当连接成功后,MCU定时轮循PLC的MW及M区,取得遥测、遥信数据,还可以把转发的YC、YX数据写到PLC内,可供PLC使用或者供HMI读(实现HMI上显示MCU上的其它装置上的数据)。
功能说明:操作员站具有遥信、遥测、总召、遥控(直控、选控)、遥调、校时、电度功能另外还可把其它装置的遥信、遥测数据转发给PLC以实现在HMI上显示其它装置的数据;无工程师站。
2、PLC寄存器说明:运行ModbusTCPMCU配置.exe,设置IP地址,连接,然后根据工程进行各项配置,设置即可。
注:每个MCU只能连1个施耐德PLC装置。
注:PLC各个区划分情况如下(以下寄存器地址以1为起始地址,如以0为起始地址,以下寄存器地址应均减1):遥测:%MW881~1200,每个寄存器存放一个量。
遥信:从%M1-4096,注意,DO紧跟在DI之后,具体DI、DO个数根据现场需要和PLC程序可用ModbusTCPMCU配置.exe进行设置。
电度:%MW1801~%MW1856,最多只能有56个寄存器(28个电度,两个寄存器表示一个电度)。
遥调:%MW736(点号)%MW737、%MW738(数据,标准float格式)直控:% MW757(点号)%MW758(命令,合(2)/分(1))选控:%MW768(点号)%MW769(命令,合(0xAA)/分(0x55))%MW770(返校标志,允许(0xF0)/不允许(0x0F))%MW771(命令,执行(0x80)/撤消(0xA0))校时:%MW730~%MW735%MW730、%MW731 0x0001%MW732 月年%MW733 时分%MW734 秒分%MW735 空(0)星期(0)时间为BCD码格式。
遥测转发写地址:%MW1001~%MW1065(可通过配置软件任意设定)遥信转发写地址:%MW1070~%MW1582(可通过配置软件任意设定)如查询从%MW881寄存器开始的遥测量,则其下发报文的起始地址应为:0x0370。
试论Modbus通讯协议在DCS与PLC通讯中的应用摘要:本文介绍了MODBUS协议具有侦错能力强、数据传输量大、实时性好等特点,因此成为自控领域使用非常广泛的通讯语言,介绍了Honeywell PKS 分散控制系统与Siemens PLC.通过MODBUS协议进行实时通讯的设计和开发,介绍了MODBUS协议的特点和应用过程,对两系统硬建设置、软利组态以及调试方面作了较为详细的介绍。
关键词:Modus通信协议;分散型控制系统;数据共享前言随着计算机、通信及自动控制等技术的发展,对企业自动化设备工作状况进行远程监测和控制,不仅可随时了解设备工作状态,设备出现异常时报警,便于及时发现,提高工作性能,在实际现场应用中,需要把不同厂家控制系统的数据进行共享互联。
某甲醇厂60万吨/年甲醇项目的主控制系统采用了美国先进的控制系统Honeywell pks,而现场低压煤浆泵、氮压机、磨煤机的装置系统的控制系统为各自独立配置SIEMENS S7-300 PLC控制系统。
为了有效的监控这些设备的运行参数,采用Modbus协议来实现控制系统与SIEMENS S7-300控制系统之间的串口通讯。
一、Modbus协议简介Modbus 协议是应用于电子控制器上的一种通用语言。
通过此协议可使控制器相互之间、控制器经由网络和其它设备之间进行通信。
它已经成为一通用工业标准。
可以把不同厂商生产的控制设备连成工业网络,进行集中监控。
Modbus协议是一种适用于工业控制领域的主从式串口通讯协议,它采用查询通讯方式进行主从设备的信息传输,可寻址1-247个设备地址范围。
协议包括广播查询和单独设备查询两种方式,二者区别就是广播查询不需要从设备回应信息。
控制器通信使用主—从技术,即仅一设备(主设备)能初始化传输(查询)。
其它设备(从设备)根据主设备查询提供的数据作出相应反应。
典型的主设备:主机和可编程仪表。
典型的从设备:可编程控制器。
主设备可单独和从设备通信,也能以广播方式和所有从设备通信。
PLC通讯协议有哪些PLC(Programmable Logic Controller,可编程逻辑控制器)是一种专门用来控制工业自动化过程的电子设备。
而通讯协议则是PLC用来与其他设备进行数据交换的规范和约定。
本文将介绍一些常见的PLC通讯协议,以及它们的特点和应用领域。
1. Modbus协议Modbus协议是一种串行通信协议,广泛应用于工业自动化领域。
它采用主从结构,主要包含以下几种变种:•Modbus RTU:基于二进制的协议,通过串行通信进行数据传输,速度较快,适用于简单的控制系统。
•Modbus ASCII:基于ASCII码的协议,通过串行通信进行数据传输,相对于Modbus RTU更易于调试和理解,但速度较慢。
•Modbus TCP/IP:基于TCP/IP协议的Modbus协议,通过以太网进行数据传输,速度更快,适用于大规模、复杂的控制系统。
Modbus协议具有简单、易于实现的特点,适用于各种不同厂家的PLC之间的通讯。
2. Profibus协议Profibus(Process Field Bus)协议是一种用于工业自动化通信的开放式通讯协议。
它支持多种传输介质,如串行通信、光纤通信和以太网通信。
Profibus可分为以下几种变种:•Profibus DP:用于PLC与分布式输入输出设备之间的通讯,传输速度较快,适用于较为复杂的控制系统。
•Profibus PA:用于传感器和执行器之间的通讯,适用于过程自动化领域。
Profibus协议具有高速传输、可靠性强的特点,广泛应用于工业自动化系统中。
3. CAN协议CAN(Controller Area Network)协议是一种广泛应用于汽车电子和工业自动化领域的串行通信协议。
它采用主从结构,支持多个设备之间的数据传输。
CAN协议具有以下特点:•高实时性:CAN协议的传输速度快,可满足实时性要求高的控制系统。
•抗干扰性强:CAN协议采用差分信号传输,具有良好的抗干扰性能,适用于工业环境中复杂电磁干扰较大的场景。
modbus协议例子Modbus协议是一种通信协议,用于在工业自动化系统中传输数据。
它被广泛应用于监控和控制设备之间的通信。
下面是一些使用Modbus协议的实际例子:1. 工业自动化控制系统:Modbus协议常用于连接PLC(可编程逻辑控制器)和其他设备,如传感器、执行器和人机界面。
通过Modbus 协议,PLC可以与其他设备进行数据交换,实现自动化控制。
2. 太阳能发电系统监控:Modbus协议可以用于监控太阳能发电系统中各个组件的状态和性能。
例如,通过Modbus协议,可以实时获取太阳能电池板的电压、光照强度和输出功率等信息,以便进行系统优化和故障排除。
3. 能源管理系统:Modbus协议可以用于监控和控制能源管理系统中的各个设备,如电表、电池、逆变器等。
通过Modbus协议,可以实时获取能源消耗情况、电池状态和逆变器运行状态等信息,以便进行能源优化和节能管理。
4. 智能家居系统:Modbus协议可以用于智能家居系统中各个设备之间的通信。
例如,通过Modbus协议,可以实现智能灯控制器与智能开关、智能窗帘控制器和智能温控器之间的数据交换,实现智能家居的自动化控制。
5. 智能交通系统:Modbus协议可以用于智能交通系统中的信号灯控制器和交通监控设备之间的通信。
通过Modbus协议,可以实时获取交通信号灯的状态和交通流量等信息,以便进行交通管理和优化。
6. 智能农业系统:Modbus协议可以用于智能农业系统中的各个设备之间的通信。
例如,通过Modbus协议,可以实时获取温室中的温度、湿度和光照强度等信息,以便进行温室控制和作物生长管理。
7. 智能楼宇系统:Modbus协议可以用于智能楼宇系统中各个设备之间的通信。
例如,通过Modbus协议,可以实现楼宇自动化控制器与空调、照明和安防设备之间的数据交换,实现楼宇的智能化管理和节能优化。
8. 工业设备监控系统:Modbus协议可以用于监控工业设备的状态和性能。
Modbus通讯协议在DCS与PLC通讯中的应用【摘要】本文介绍了MODBUS协议具有侦错能力强、数据传输量大、实时性好等特点,因此成为自控领域使用非常广泛的通讯语言,介绍了Honeywell TPS系统与Siemens PLC.通过MODBUS协议进行实时通讯的设计和井发,介绍了MODBUS协议的特点和应用过程,对两系统硬建设置、软利组态以及调试方面作了较为详细的介绍。
【关键词】Modus通信协议;分散型控制系统;数据共享 0.前言工业控制己从单机控制走向分散控制,并走入网络时代。
工业控制网络为数据采集、工业控制提供了方便,节省了成本,提高了性能。
实际应用中,往往需要不同厂家控制系统的数据共享,或某集成系统不能满足控制需要而额外加系统,需要将2种不同系统进行互联。
1.Modbus协议简介Modbus协议是应用于控制器上的一种通用语言。
通过此协议,控制器相互之间、控制器和其他设备之间可以进行通信。
它己成为一种通用工业标准。
通过Modbus 协议,不同厂商生产的控制设备可以连成工业网络。
标准的Modbus 协议使用RS-232C兼容串行接口,它定义了连接口的针脚、电缆、信号位、传输波特率、奇偶校验等。
控制器能直接或经山Modem组网。
Modbus协议将通讯参与者规定为“主”(Master)和“从”(Slave)。
主设备可单独和从设备通信,也能以广播方式和所有从设备通信,而从设备之间不能通信。
Modbus协议建立了主设备查询的格式:设备(或广播)地址、功能代码、所有要发送的数据、错误检测域。
设备(或广播)地址提供从机地址,从机根据地址判别是否接收请求,以做出相应响应,用户必须设置每台从机的地址。
功能代码告诉从机该完成什么样的动作,例如功能代码3表示读取从机保持寄存器并返回其中的内容,数据区的内容就必须包括从机的寄存器地址,需要读的寄存器的个数。
错误校验域用于校验信息是否正确传输,采用循环冗长检测方法,CRC域附加在消急的最后,添加时先是低字节然后是高字节。
施耐德PLC MODBUS TCP说明1、通讯接口:以太网TCP\IP(MODBUS\TCP协议),MCU为客户端,主动连接PLC的502端口,当连接成功后,MCU定时轮循PLC的MW及M区,取得遥测、遥信数据,还可以把转发的YC、YX数据写到PLC内,可供PLC使用或者供HMI读(实现HMI上显示MCU上的其它装置上的数据)。
功能说明:操作员站具有遥信、遥测、总召、遥控(直控、选控)、遥调、校时、电度功能另外还可把其它装置的遥信、遥测数据转发给PLC以实现在HMI上显示其它装置的数据;无工程师站。
2、PLC寄存器说明:运行ModbusTCPMCU配置.exe,设置IP地址,连接,然后根据工程进行各项配置,设置即可。
注:每个MCU只能连1个施耐德PLC装置。
注:PLC各个区划分情况如下(以下寄存器地址以1为起始地址,如以0为起始地址,以下寄存器地址应均减1):遥测:%MW881~1200,每个寄存器存放一个量。
遥信:从%M1-4096,注意,DO紧跟在DI之后,具体DI、DO个数根据现场需要和PLC程序可用ModbusTCPMCU配置.exe进行设置。
电度:%MW1801~%MW1856,最多只能有56个寄存器(28个电度,两个寄存器表示一个电度)。
遥调:%MW736(点号)%MW737、%MW738(数据,标准float格式)直控:% MW757(点号)%MW758(命令,合(2)/分(1))选控:%MW768(点号)%MW769(命令,合(0xAA)/分(0x55))%MW770(返校标志,允许(0xF0)/不允许(0x0F))%MW771(命令,执行(0x80)/撤消(0xA0))校时:%MW730~%MW735%MW730、%MW731 0x0001%MW732 月年%MW733 时分%MW734 秒分%MW735 空(0)星期(0)时间为BCD码格式。
遥测转发写地址:%MW1001~%MW1065(可通过配置软件任意设定)遥信转发写地址:%MW1070~%MW1582(可通过配置软件任意设定)如查询从%MW881寄存器开始的遥测量,则其下发报文的起始地址应为:0x0370。
PLC通讯MODBUS协议的应用及编程叙述:现为大家讲解一下MODBUS的应用,现在工业控制上位机和下位机通信大部分采用通信协议为MODBUS,可想而知机器与机器通信的重要性。
一:MODBUS系统框架图二:MODBUS运用MODBUS 通讯的底层为 RS485 信号采用双绞线进行联接就可以了,因此传输距离较远,可达 1000 米,抗干扰性能比较好,且成本低,在工业控制设备的通讯中被广泛使用,现在众多厂家的变频器、控制器都采用了该协议。
传送数据格式有HEX 码数据和ASCII 码两种,分别称为MODBUS-RTU 和MODBUS-ASCII 协议,前者为数据直接传送,而后者需将数据变换为 ASCII 码后传送,因此 MODBUS-RTU 协议的通讯效率较高,处理简单,使用得更多。
MODBUS 为单主多从通讯方式,采用的是主问从答方式,每次通讯都是由主站首先发起,从站被动应答。
因此,如变频器之类的被控设备,一般内置的是从站协议,而 PLC 之类的控制设备,则需具有主站协议、从站协议。
现在以 MODBUS-RTU 协议为例,说明通讯帧的典型格式:请求帧格式:从机地址+0x03+寄存器起始地址+寄存器数量+CRC 检验。
正常响应帧格式:从机地址+0x03+字节数+寄存器值+CRC 检验三:PLC 编程时应该注意以下信息:从机地址:主站发送帧中,该地址表示目标接收从机的地址;从机应答帧中,表示本机地址;从机地址的设定范围为 1~247,0 为广播通信地址。
操作类型:表示读或写操作;0x1=读线圈操作;0x03=读寄存器操作;0x05=改写线圈操作;0x06=改写寄存器操作。
对于变频器而言,只支持 0x03 读、0x06 写的操作。
寄存器起始地址:表示对从机中要访问的寄存器地址,对于 MD280、MD320 系列变频器的访问时,对应的就是"功能码号"、"命令地址"、"运行参数地址";数据个数:即从"寄存器起始地址"开始要连续访问的数据个数,对于寄存器变量,以 word 为单位。
本系统利用RS485总线来完成多机通讯的,而RS485只是ISO /OSI 七层模型的最底层—物理层,要完成可靠的多机通讯则必须还要加上应用层。
本系统则是采用Modbus 协议,Modbus 协议是应用于电子控制器上的一种通用语言。
通过此协议,控制器相互之间、控制器经由网络和其它设备之间可以通信。
它已经成为一通用工业标准。
有了它,不同厂商生产的控制设备可以连成工业网络,进行集中监控。
1系统总体方案设计本系统的上位机采用的是西门子S7-200PLC ,作为系统的主站,而多个AT89S52单片机则作为从机通过RS485连接至上位机S7-200。
本系统的通讯过程如下:上位机S7-200通过RS485总线发送控制命令,各个单片机从机接收数据帧,从数据帧中提取出地址信息并与自身的地址作较。
若不符合则丢弃该数据帧,反之,则接收数据帧,完成相应的功能,并返回数据帧给PLC 。
其中上述数据帧的格式在Modbus 协议中定义。
系统结构如图1所示。
2硬件电路设计单片机串行通讯口是标准的TTL 电平,为了完成和PLC 之间的多机通讯则需加上MAX485芯片。
采用MAX485芯片,一方面是了完成电平转换,降低了传输数据误码率;另一方面MAX485芯片有数据收发控制端,方便了多机通讯的实现。
单片机与MAX485的接线图如图2所示,其中P2.0控制了MAX485芯片的数据收发,当期高电平时,MAX485只能发送数据;反之则只能接收数据。
因此基于RS485总线的多机通讯是半双工的。
单片机的发送数据端和接收端分别接至MAX485芯片的发送数据端和接收数据端。
经MAX485芯片转换后,其输出引脚分别和其他所有单片机的A 、B 两端连接,无需交叉,最终汇总至S7-200的自由口。
图2单片机与MAX485芯片接线图3软件设计S7-200和单片机之间通讯除了借助于RS485总线这个物理层,还需应用层的支持,本系统应用层采用的是Modbus 协议。
第27卷第4期2010年4月机 电 工 程Journal of Mechanical &Electrical EngineeringVol .27No .4Ap r .2010收稿日期:2009-07-31作者简介:彭庆海(1983-),男,浙江乐清人,主要从事生产过程综合自动化、嵌入式系统等方面的研究.E 2mail:pengqinghai121@M odbus 协议及其在MCU 与P LC 通信中的应用彭庆海,胡小强(杭州电子科技大学自动化学院,浙江杭州310018)摘要:为解决P LC 设备的人机交互性能差的问题,分析了已广泛应用于P LC 、变频器和自动化仪表等设备的Modbus 协议,介绍了Modbus 通讯数据如何在芯片中组成消息帧;并结合目前在工业领域使用较为广泛的SI E M E NS S72200系列P LC 及STC89C58RD 单片机,详细阐述了MCU 与P LC 之间通讯的实现。
研究结果表明,该方法使P LC 设备可通过系统的人机界面程序进行控制,增加了其交互性能。
关键词:Modbus 协议;人机交互;STC89C58RD 单片机中图分类号:TP206文献标识码:A文章编号:1001-4551(2010)04-0052-04Modbus protocol and appli cati on i n the co mmu n i cati on between MCU and P LCPENG Q ing 2hai ,HU Xiao 2qiang(College of Aut omati on,Hangzhou D ianzi University,Hangzhou 310018,China )Abstract:I n order t o s olve the poor man 2machine exchange perfor mance of P LC equi pment,the Modbus p r ot ocol was analyzed which has been widely used in P LC,inverter and other aut omati on instru mentati on,and als o it was intr oduced that how t o composite the message fra me in the chi p.I n additi on,combined with SI E ME NS S72200series P LC and ST C89C58RD single 2chi p,itwas elaborated that how t o realize the communicati on bet w een the MC U and the P LC .The results show that it lets the P LC devices be contr olled by the syste m man 2machine inter 2face p r ogra m,in order t o address their shortcom ing in man 2machine exchange .Key words:Modbus p r ot ocol;man 2machine exchange;STC89C58RD single 2chi p m icr ocomputer0 引 言Modbus 通信协议是Modicon 公司于1979年开发的,用于实现其P LC 产品与上位机的通信。
由于其简单易用,目前Modbus 通信协议作为一种通用的工业标准已广泛应用于P LC 、变频器和自动化仪表等设备[124]中。
而P LC 、变频器等不具有方便、亲切的人机界面,增加了技术工人的操作难度;在很多应用领域需添加交互界面,但工业级的人机界面或工控机价格昂贵,大大增加设备的生产成本,对小型工业设备来说自然降低了产品的竞争力。
为解决此问题,本研究在分析Modbus 协议的基础上,结合目前在工业领域应用较为广泛的SI E MENS S72200系列P LC 及STC89C51系列单片机,详述基于Modbus 协议的MCU 与P LC 之间的通讯。
1 Modbus 通信原理Modbus 协议是一个主2从架构的协议,采用请求2响应方式;包括一个主站,而其他使用Modbus 协议参与通信的节点为从站,每一个从站都有一个唯一的地址;并且定义了一个控制器能够识别使用的消息结构,以此描述了一个控制器请求访问其他设备的过程,如何回应来自其他设备的请求,以及如何侦测并记录错误信息,从而使控制器可以在网络和其他设备之间完成信息和数据的交换与传送。
ModBus 协议有ASC II 和RT U 这两种报文传输模式,它们定义了在这些网络上连续传输的消息段的每一位,以及决定怎样将信息打包成消息域和如何校验。
ASC II 模式报文中的每8位字节都转换为两个ASC II字符发送;而RT U 模式报文中的每8位字节作为两个十六进制字符,以字节为单位进行传输;所以在相同的波特率下,RT U 模式能够获得更大的数据流量。
因此,工业智能仪器仪表一般采用RT U 模式[5]。
2 Modbus 2RT U 消息帧Modbus 2RT U 消息帧由站地址、功能码、数据域和CRC 校验域构成。
Modbus 2RT U 消息帧的结构如图1所示。
图1 Modbus 2RT U 消息帧的结构站地址:使用RT U 模式传输的第一个域是站地址,即从站的地址用来选择相应的“从设备”。
功能码:“从站”收到的“消息”里的“功能代码”将告诉“从站”,“主站”需要它完成的动作。
S72200系列P LC 支持的Modbus 从站协议功能如表1所示。
表1 S72200支持的M odbus 从站协议功能功能描述1读单个或多个线圈(数字量输出)状态,返回任意数量输出点的ON /OFF 状态2读单个或多个线圈(数字量输出)状态,返回任意数量输入点的ON /OFF 状态3读单个或多个保持寄存器,返回V 存储区的内容。
保持寄存器在Modbus 中以字为单位,在一个请求中最多读120个字4读单个或多个模拟量输入寄存器,返回模拟量输入值5写单个线圈(数字量输出),将数字量输出点置为指定的值,不是被强制,用户程序可以通过Modbus 请求改写数值6写单个保持寄存器。
在S72200的变量存储器V 中写入单个保持寄存器的值15写多个线圈(数字量输出),在Q 映像寄存器中写入多个数字量输出值。
输出的其实点必须是一个字节的最低位(例如Q0.0或Q2.0),而且写入输出的点数必须是8的整倍数。
这些点不是被强调,用户程序应Mod 2bus 请求改写该值16写多个保持寄存器。
在S72200的V 存储器中写入保持寄存器的值,在一个请求中最多可以写120个字 数据域:“主机”发给“从机”的“数据域”中,包含了“从机”要完成“功能域”指示的动作时所必需的附加信息。
如,寄存器地址等。
CRC 校验:使用RT U 模式时,信息包括了一个基于CRC 方法的校验域,判断数据传输的正确与否。
通常工业使用的CRC 编码方法有程序代码法和查表法。
查表法适合比较简单并且传输要求不高的通信,程序代码的编写也有很多不同的版本[628]。
典型的Modbus 2RT U 消息帧没有起始位,也没有停止位,而是以至少3.5个字符时间的停顿间隔标志1帧的开始或结束。
消息帧必须作为一连续的流传输。
如果在帧完成之前有超过1.5个字符时间的停顿时间,接收设备将刷新不完整的消息并假定下一字节是一个新消息的地址域。
同样地,如果一个新消息在小于1.5个字符时间内接着前个消息开始,接收的设备将认为它是前一消息的延续[9]。
3 硬件原理框图S72200系列P LC 的通讯口Port0可以支持Modbus 2RT U 协议,成为Modbus 2RT U 从站,其通信接口为RS 2485接口。
STC89C58RD 可以通过串行口与MAX485链接,并将操作数据在芯片中成帧,经过接口芯片电平转换发送到总线上以实现与S72200系列P LC 的串行通信。
系统硬件原理框图如图2所示,主要包括微控制器、Modbus 接口芯片(MAX485)、人机交互电路(液晶显示、键盘输入)、声光报警等,其中Modbus 总线可支持247个从站。
图2 系统硬件框图在本研究中,单片机选用STC89C58RD,它在指令集上与传统的MCS 251完全兼容;具有较强的抗干扰能力、高速及低功耗等特点;内部扩展了29K B E2PRO M ,可对用户数据进行断电保存,还具有支持程序在线调试和下载等特点。
人机交互电路主要由LCD (19264)显示电路、按键输入电路、声光报警等组成,可实现对系统功能与参数的设置、显示从站设备(如S72200等)的主要状态并对其进行操作等。
4 软件设计4.1 系统软件总体规划系统软件总框图如图3所示,主要包括用户人机界面程序、RS 2485异步通信程序和Modbus 2RT U 通信协议实现程序。
・35・第4期彭庆海,等:Modbus 协议及其在MCU 与P LC 通信中的应用图3 系统软件总框图其中,人机界面程序包括:LCD 显示程序、键盘扫描及用户参数设置、P LC 从站点返回数据进行保存并更新显示数据;RS 2485异步通信程序包括:单片机串口接收和发送数据、波特率及数据传输格式配置;Modbus 2RT U 通信协议实现程序包括:对需控制的从站点进行RT U 请求帧的配置、确定接收到的RT U 响应帧格式、对读取的RT U 响应帧进行帧解析、以及消息帧传递时的CRC 校验程序。
4.2 人机界面程序人机界面程序流程图如图4所示:其主要实现用户对P LC 设备的控制。
首先,用户根据界面提示通过键盘输入对P LC 设备的操作指令;其次,系统接收用户指令并配置Modbus 命令,通过通信程序实现系统对从站设备的操作,如改变P LC 寄存器的某个值、控制或者读取一个或多个I/O 端口等。
当从站设备接收到Modbus 命令后其自动发送Modbus 响应帧,如回送一个或者多个寄存器中的数据;主站设备获取响应帧,通过帧解析程序得到响应数据,将数据显示在人机界面对应位置上。
图4 人机界面流程图4.3 RT U 响应帧格式的确定Modbus 2RT U 通信协议程序实现的重点部分是确定接收到的RT U 响应帧格式,其主要包括:单片机对响应帧消息连续性的判断、将接收到的RT U 消息转为有起始和结束的响应帧。
响应帧的连续性是通过测量字符间隔时间来界定的,由串行口中断响应程序取定时器0的值和给定值进行比较实现,程序流程图如图5所示。