《ModBus通信协议及编程.pdf》由会员分享,可在线阅读,更多相关《ModBus通信协议及编程.pdf(4页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、ModBus通信协议及编程朱小襄(南京信息职业技术学院,江苏省南京市210013)【摘 要】通过现场总线技术可以实现测控设备的分散化、网络化、智能化。现场总线技术的核心是通信技术及通信协议,ModBus协议是其中之一,目前已成为一种应用于工业控制器上的标准通信协议,受到多种工业组态软件的支持。文中介绍了ModBus协议的通信格式,指出了编程要点并给出了命令列表及CRC码的生成程序。关键词:ModBus,通信协议,控制系统中图分类号:TP336收稿日期:2005204212;修回日期:2005205212。0 引 言现场总线技术是20世纪80年代中期发展起来的一种先进的工业控制方式,通过这项技术
2、可以实现测控设备的分散化、网络化、智能化。该技术一经产生便成为全球工业自动化技术的热点,受到业界的普遍关注。近年来,工业测控设备几乎都具有构成现场总线的功能。现场总线技术的核心是通信技术及通信协议。ModBus是工业控制器网络通信协议中最常用的协议之一,组态王、FIX等通用工业组态软件都支持ModBus协议。我们研制的MMC系列电动机管理控制器也支持ModBus协议。本文以此为例介绍ModBus协议及编程要点。1M odBus协议1.1 简介ModBus是MOD I CON公司最先倡导的一种通信协议,经过许多公司的实际应用,逐渐被认可,成为一种应用于工业控制器上的标准通信协议,通过该协议,不同
3、厂商生产的控制设备可以连接成工业网络,实现集散控制。ModBus通信采用主从方式,在同一个网络中有一个主设备及最多达255台从设备,从设备的地址编码为1255。通常情况下,主设备只与1台从设备通信,但当主设备发出的地址码为0即采用广播方式时,可以将消息发送给所有的从设备。标准的Mod2Bus使用RS2232C串行接口,因此ModBus通信以帧为单位,帧的数据结构与RS2232C帧相同。ModBus一次通信其发送和接收的数据包由若干帧组成,协议正是定义了这些帧的意义,控制器只要按照协议解释其接收和发送的帧数据,就能与在同一网络中采用同样协议的控制器实现通信。ModBus协议有两种通信模式:ASC
4、II模式和RTU(远程终端单元)模式。ASCII模式是将一个字节分为两个ASCII字符发送,而RTU模式以十六进制传送数据,一个字节就是一帧,因而数据传送的效率高于ASCII模式,大多数工业控制器采用RTU模式。在同一个网络中,无论主机还是从机,都必须采用相同的通信模式及相同的传输速率。目前,ModBus协议常用的传输速率为1 200 bit/s19 200 bit/s。1.2M odBus协议数据包的格式一个典型的ModBus协议数据包的格式如图1所示。图1 典型的M odBus协议数据包的格式其中,第1帧为从机地址,第2帧为功能码,第3、4帧为主机欲访问的从机的起始寄存器地址,第5、6帧为
5、要访问的寄存器个数,最后两帧为16位CRC校验码。对任何一个ModBus协议数据包,其第1、2、3帧及最后两帧的意义都是相同的,其他帧则根据功能码不同而有所区别。通信开始时首先由主机向从机发送地址,所有从机都会接收到地址并与本机地址比较,若地址不同则可不接收其余帧或对其余帧不做处理,若地址相同则准备接收本次数据包的其他帧。从机接收完毕后,生成接收数据(CRC码除外)的CRC校验码,并与主机发送的CRC码比较,若相同则认为接收正确,从机按功能码的要求完成操作并生成回送数据包发送给主机,若校验出错则从机向主机发送出错数据包,出错数据包的特征是将功能码的最高位置位,即大于127的功能码是出错功能码。
6、主机发送的两个数据包之间的24第31卷第7期2005年7月电 子 工 程 师ELECTRON IC ENGI NEER Vol.31 No.7Jul.2005间隔应大于3.5帧,从机检测到线路上空闲时间大于3.5帧就认为主机的数据包已经发送结束,下一帧数据即为地址帧,所有的从机都将接收,因此在一个数据包中帧与帧的间隔不能超过3.5帧,否则将可能引发通信出错。1.3M odBus通信命令格式下面是2个ModBus命令的主 2 从机收发的数据包格式,其余的命令可以参照其格式。1)功能码03H代码功能:读寄存器数据。数据包格式:见表1和表2。表1 主机发送数据包格式主机发送例(Hex)从机地址1字节
7、01与01号从机通信功能码1字节03读寄存器数据寄存器首址2字节00 01寄存器首址为0001H寄存器数2字节00 03连续读3个寄存器CRC2字节76 87前6个字节的CRC校验码表2 从机回送数据包格式从机回送例(Hex)从机地址1字节01与01号从机通信功能码1字节03读寄存器数据数据字节数1字节063个寄存器占6个字节数据12字节02 2B0001H寄存器中的数据数据22字节00 000002H寄存器中的数据数据32字节00 640003H寄存器中的数据CRC2字节C8 B8前9个字节的CRC校验码2)功能码06H代码功能:写一个寄存器数据。数据包格式:见表3和表4。表3 主机发送数据
8、包格式主机发送例(Hex)从机地址1字节01与01号从机通信功能码1字节06写寄存器数据寄存器地址2字节10 20写入寄存器地址为1020H写入数据2字节01 F4写入1020H寄存器的数据CRC2字节8E 47前6个字节的CRC校验码表4 从机回送数据包格式从机回送例(Hex)从机地址1字节01与01号从机通信功能码1字节06写寄存器数据寄存器地址2字节10 20写入寄存器地址为1020H写入数据2字节01 F4写入1020H寄存器的数据CRC2字节8E 47前6个字节的CRC校验码 更多的常用命令见表5。表5M odBus常用命令及功能功能码名称功能说明01读取线圈状态取得1组逻辑线圈的当
9、前状态02读取输入状态取得1组开关输入的当前状态03读取保持寄存器 读1个或多个保持寄存器04读取输入寄存器 读1个或多个输入寄存器05强置单线圈强置1个逻辑线圈的通断状态06预置单寄存器把具体二进值装入1个保持寄存器07读取异常状态取得8个内部线圈的通断状态08回送诊断校验通信诊断16预置多寄存写多个连续的保持寄存器128255保留用于异常应答2M odBus编程ModBus编程主要需处理好CRC校验码的生成及数据包开始标志的测试。2.1CRC校验码的生成首先将一个16位CRC寄存器置为全“1”,并设一个16位的CRC因子(例如该因子为A001H)将接收到的第1个字节数据与CRC寄存器低字节
10、相异或,然后将CRC寄存器右移1位,最高位补“0”,若移出的最低位为“1”,则再将CRC寄存器与CRC因子异或,如此循环8次即完成1个字节的CRC校验码的生成。若有多个字节则重复以上过程。图2是CRC码生成的程序流程。图2CRC码生成流程下面给出用MCS251汇编语言编制的CRC码生成子程序,读者可参照使用。程序名:CRC_create。34第31卷第7期朱小襄:ModBus通信协议及编程 计算机与自动化技术 程序入口:com_buff=字节数;R0=字节存放首地址;crc_L=01H,crc_H=A0H。程序出口:R7,R6存放CRC校验码的高、低字节。CRC_create:pushaccp
11、ushbmova,#0ffh;CRC码置为全“1”movb,#0ffhcrc_2:movr6,a;CRC码低位暂存mova,r0;取1个字节数据incr0 xrla,r6;CRC码低位与8位数据异或movr7,#8;设置循环次数crc 4:clr cxcha,b;CRC码右移1位rrcaxcha,brrcajnccrc_6;判断移出的最低位是否为“1”xrla,#crc_l;移出的最低位为“1”xcha,b;则与CRC因子异或xrla,#crc_hxcha,bcrc_6:djnzr7,crc_4;是否运算了8次(1个字节)djnzcom_buff,crc_2;是否所有的字节都已运算movr6,
12、amovr7,b;CRC码结果存入R7,R6popbpopaccret2.2 通信程序编制通信程序必须处理好数据包开始的标志,因为主机向某一从机发送数据时,其他的从机也会接收到,只有地址相同的从机才能响应,因此地址的判别至关重要。在两个数据包之间ModBus协议提供了3.5帧的空闲时间,在这之间所有的从机都必须做好接收准备,一旦主机有数据包送出,第1帧即为地址帧。程序中常设置一个3.5帧计时器,当线路上有数据时就刷新该计时器,线路空闲时则停止刷新,直至该计时器被清除,一旦该计时器被清除,则下一帧数据即为地址帧。有一点必须注意,3.5帧时间并非常数,应根据传输速率及帧校验方式(奇/偶校验或无校验
13、)而定。由于篇幅关系,图3仅给出ModBus通信从机接收中断处理程序的简要流程图。图3 接收中断处理程序流程3 控制系统的组成下面以我们研制的MMC系列电动机管理控制器为例简要说明一个控制系统的组成及工作过程。图4是由1台上位机(主机)与多台从机通过RS2485总线构成的控制系统图。图4 电机管理控制系统每台从机管理和控制一台电动机,实时检测电动机电流、电压、功率、功率因数、温度等参数,并对电动机提供过流、过压、缺相等多种保护。多台从机通过RS-485总线与上位机构成主从式分布系统,上位机运行工控组态软件,轮流与各台从机通信,读取各台电动机的运行参数或向从机发出各种控制命令。4 结束语ModB
14、us通信协议是工业自动化控制系统中一种重要的通信协议,由于其构筑的硬件平台是RS2485总线,并且得到多种通用工控组态软件的支持,其应用将越来越广泛。参 考 文 献1李 华.MCS251系统单片机实用接口技术.北京:北京航空航天大学出版社,19932 VisualBasic与RS-232串行通信控制.北京:中国青年出版社,20023 GE750应用手册。美国通用电器公司,20014 MMC电动机管理控制器应用手册.南京科工电气有限公司,2003(下转第55页)44 计算机与自动化技术 电 子 工 程 师2005年7月5 Wagner D,Dean D.Intrusion Detection v
15、ia Static Analysis.In:Proceedings of the 2001 IEEE Symposium on Research inSecurity and Privacy.Oakland(CA,USA),2001.Piscataway(NJ,USA):IEEE,2001.1561686 Giffin J T,Jha S,MillerB P.DetectingManipulated RemoteCall Streams.In:Proceedings of the 11th USEN IX SecuritySymposium.San Francisco(CA,USA),2002
16、7 Sekar R,Bendre M,Dhurjati D,et al.A Fast Automaton2based Method for Detecting Anomalous Program Behaviors.In:Proceedingsof the IEEE Symposium on Research in Secu2rity and Privacy.Oakland(CA,USA),2001.Piscataway(NJ,USA):IEEE,2001.1441558 Feng H,KolesnikovO M,Fogla P,et al.AnomalyDetectionUsing Call
17、 Stack Information.In:Proceedings of the 2003IEEE Symposium on Research in Security and Privacy.Berke2ley(CA,USA),2003.Piscataway(NJ,USA):IEEE,2003.62759 LindqvistU,Jonsson E.How to Systematically Classify Com2puter Security Intrusions.In:Proceedings of the 1997 IEEESymposium on Research in Security
18、 and Privacy.Oakland(CA,USA),1997.Piscataway(NJ,USA):IEEE,1997.15416310 Sekar R,Cai Y.Classification of CERT/CC Advisories from1993 to 1998.http:/seclab.cs.sunysb.edu/sekar/papers/cert.htm,2003An I mprovedMethod Based on System Call Anomaly DetectionLuo Ning,Yu L i,Wang Yu(Huazhong University of Sci
19、ence and Technology,Wuhan 430074,China)【Abstract】System call based anomaly detection can not predict the intent of attacks,to solve thisproblem,a further analysis method was proposed,which conducted further analysis on system call sequenceand the detection results of traditionalmethod.The basic idea
20、 is to record system call frequency infor mation,construct file access distribution models of properly running programs at train phase,at detection phase,tradi2tionalmethodswere modified to take these information and models into account to determine the classes of at2tacks.Experiments show that ourm
21、ethod can effectively predict attacks intent,while its detection rate andfalse positive perfor mance is comparable to or better than the other approaches.Keywords:system call,anomaly detection,misuse detection,correlation,analysis arithmetic(上接第44页)Modbus Protocol and Program i ngZhu Xiaoxi ang(Nanj
22、ing College of Information Technology,Nanjing 210013,China)【Abstract】Fieldbus technique is a kind of advanced industrial controlmode,which was developed inthe midter m of 1980s over the world.By this technique,the decentralization,latticing and intelligentizing forcontrol and test equipment can be r
23、ealized.And it has become the hot point for global industrial automationtechniques once occurred.The core of fieldbus consists of mechanics of communication and communicationprotocol;ModBus is one of those protocols and at present it is the standard communication convention appliedin industrial cont
24、roller,which is supported by various configuration soft ware.This article introduces the com2munication pattern ofModBus,and indicates the key programming points aswell as the command list and thegenerating program for CRC code.Keywords:Modbus protocol,communication protocol,control system55第31卷第7期罗 宁,等:一种基于系统调用异常检测的改进算法 计算机与自动化技术