第21卷 第1期
2006年3月       北京机械工业学院学报Journal of Beijing I nstitute ofM achinery       
Vol .21No .1
Mar .2006
文章编号:1008-1658(2006)01-0043-04
基于M odbus 协议的自动化设备之间通信实现
梅锐,牟永敏
(北京信息工程学院 计算机科学与工程系,北京100101)
摘   要:实现不同种自动化设备之间通信是系统集成的关键。基于Modbus 协议的串口
通信是较常用的方式之一。介绍了三菱FX1N P LC 与智能单回路调节仪的串行通信原理,详细分析了Modbus RT U 协议的报文格式。分析了软件编程的实现,通信程序开发过程中,出现的问题和解决方案。该方式对实现设备之间的互联有着重要的意义。
关 键 词:可编程控制器;单回路调节仪;Modbus 协议中图分类号:TP 212   文献标识码:A
Rea li za ti on of co mm un i ca ti on between auto ma ti c dev i ces
ba sed on M odbus protocol
ME I Rui,MU Yong 2m in
(Depart m ent of Computer Science &Engineering,Beijing I nf or mati on Technol ogy I nstitute,Beijing 100101,China )
Abstract :How t o realize communicati on bet w een different kinds of aut omatic devices is the key t o syste m integrati on .Serial communicati on based on Modbus p r ot ocol is a nor mal way t o realize it .Serial communi 2cati on theory ofM itsubishi P LC and s mart single l oop contr oller are intr oduced,and Modbus RT U p r ot o 2col f or mat is exp lained .The realizati on of s oft w are p r ogra mm ing,and s ome p r oble m s in the communicat on p r ocedure devel opment and the res oluti on are p resented .This method has significant app licati on t o de 2vices connecti on .
Key words :P LC;single l oop contr oller;Modbus p r ot ocol
  随着嵌入式系统和现场总线技术的发展,实现不同类型的自动化设备之间的互联已经不是一个难
题。串行通信由于其简单高效,易于编程实现,始终是各种自动化设备之间实现通信的最主要方式之一。目前的智能仪表为了实现与控制设备的连接,普遍都提供对串行通信的支持。基于串口的通信协议有很多,如Modbus 协议、CDT 规约等,甚至许多厂家都定义了自己专用的通信协议。其中,Modbus 因为其协议简单规范,功能齐全,易于编程实现等优点,在串行通信中得到了广泛的应用。
本文结合具体的实例,详细介绍了三菱FX1N 系列P LC 与山武S DC15单回路温度调节器通信的实现过程。该系统采用P LC 作为通信主站,与从站S DC15进行通信。在硬件上遵循I EC RS485规范,协议采用Modbus RT U 方式,共有2个数据点需要通信:仪表温度信号进行采集,目标值进行设定。编
程软件采用三菱P LC 专用面向工控的梯形图和指令语言,较好的实现了P LC 与智能仪表间的通信。
1系统介绍
1.1
FX1N PLC 说明
系统结构如图1所示,P LC 通过附加485-BD 通信板实现RS485的功能[1]
。由于P LC 本身提供的是无协议通信,所以要想通过串口和外设相连,必须用户自己编写相关的驱动程序。
图1 通信系统结构图
  FX1N 系列P LC 是三菱公司推出的中小型P LC 。由于其性能可靠,编程简单,以成为目前市面
收稿日期:2005-11-14
作者简介:梅 锐(1978-),男,湖北松滋人,北京信息工程学院计算机科学与工程系硕士研究生,主要从事软件工程和计算机控制方面的研
究。
北京机械工业学院学报                 第21卷
上的同类型中的主流之一。FX1N P LC最多可以达到128实际物理点控制,而通过串行通信,可以极大的扩充物理容量;P LC最多能支持8256个M型辅助继电器,8256个D型数据寄存器,32个子程序,程序容量可达8000步节。因此,就附加的串行通信程序而言,由于编写的程序较小,对P LC系统资源的占用并没太大影响。在编程语言上,FX1N系列P LC支持27种基本指令,支持梯形图和顺序流程图两种语言。在本通信程序中,就是采用了梯形图和基本指令相结合的方式,较好的实现了整个过程。
FX1N P LC提供内部接口,可扩充FX1N-485 -BD通信板实现RS485通信功能。如图1所示,该通信板通信为全双工模式,含两对收发端子: RNA/RNB,S DA/S DB。由于单回路调节仪为二线制,所以该通信板接线时同极性的收发端子必须相连。但这样做又会带来另一个问题,即P LC接收缓冲区会和发送缓冲区数据“窜扰”,P LC每发出的报文自己又会接收。有关这个问题的解决在后面讨论。
S WOPC-FXGP/W I N-C软件是三菱公司提供的FX系列P LC编程软件。该软件提供了丰富的编程功能,可以通过线路符号、列表语言和SFC符号创建顺序控制程序。FX1N P LC能够支持多种内存变量:数据寄存器有D型、V型、Z型3种,辅助继电器M型,其中有效的D寄存器和M继电器可达到8000个。通过有效利用P LC提供的编程语言和寄存器,可以编写高效的通信程序。
1.2山武S DC15介绍
S DC15是山武公司推出的一体化小型单回路温度控制器,可完成对现场单点温度控制。仪表在通信上
采用RS485二线制方式,可支持CP L和Modbus 两种通信协议。其中,CP L是山武公司专有上位通信协议,考虑到与其它设备连接的通用性,这里没有采用。S DC15能够支持Modbus ASC II和RT U两种方式,同一链路上最多可达到31台仪表,最大通信速率可达到38400b/s[2]。
由于实际需要,P LC需要读取S DC15的温度值(P V),并对温度的设定值(SP)进行设定。P V值地址为238D H,SP值地址为238E H。
plc编程软件app1.3M odbus协议
Modbus协议最初是Modicon公司针对自己的P LC通信推出的一种通信协议。由于该协议方便简洁,功能强大,很快成为工控界通用的通信标准之一。Modbus是一种设备级的现场总线通信协议,最大可支持256个站地址(0为广播地址),最大传输速率为1M b/s[3]。该协议采用请求/响应方式,主站提出读/写请求,从站对请求报文做出响应。共有两种传输方式:RT U方式和ASC II方式。RT U(re2 mote ter m inal unit)模式即传统二进制模式,每字节即为实际发送二进制数据。因此能保证较高的传输效率,同时也方便程序实现。ASC II方式将数据转化为ASC II码发送,每字节含两个ASC II字符。比起RT U方式来,这种方式最大优点是可以使传输间隔达到1s,从而保证了传输的正确性。
在本项目中采用Modbus RT U方式,消息帧格式如图2所示。对于请求帧和响应帧,只是传输数据内容和校验码不同,站号和功能码必须一致。功能码表明该数据帧的功能,对于单点读和单点写分别是03H
和10H。传输数据项根据报文类型不同而异,如为读请求帧包含地址和长度,如为写请求帧则包含地址、长度、字节数和数据内容4项。本程序分别是对单点读和单点写,共有两条请求报文和两条响应报文
图2 Modbus RT U报文格式
2软件实现
2.1FX1N通信指令介绍
FX1N P LC提供了RS指令和一套特殊的寄存器来完成整个对串口的操作。RS指令定义发送/接收缓冲区地址和大小,格式如下:
RS D1000 D1043 D1020 D1043
D1000和D1020分别定义为发送和接收缓冲区首地址,D1043寄存器表示缓冲区长度。由于通信过程共有两个不同的请求/响应数据包,且数据包的长度不同,所以D1043必须要根据当前发送数据包类型而定义不同长度。
44
 第1期             梅 锐等:基于Modbus 协议的自动化设备之间通信实现
程序中用到的重要辅助寄存器如表1所示。
表1 辅助通信寄存器表
D8120通信格式,用于初始化串口;
D8122发送数据剩余数;D8123接收数据数;
M8122发送标志,用于控制写串口;M8123
接收标志,用于控制程序流程;
  D8120寄存器定义了串口通信初始化参数,必须在程序初始化时设定,如表2所示。
表2 通信参数设置表站号1波特率9600b /s 数据位8b 校验位NONE 停止位
1
2.2程序流程
P LC 通信程序在实现上采用轮循的方式,初始
化后就进入了周期性的执行过程。程序分生成数据包,发送请求,等待响应,解析报文几个步骤,流程如图3所示。发送标志和接收标志分别由寄存器M8122和M8123
完成。通过控制这两个寄存器的ON /OFF 状态,可以有效的保证程序能够正确的执
图3 主站程序流程图
行。在读和写两个操作之间设置了100m s 的延时,
这样可以降低同一时间内请求的次数,保证更高效的运行。在等待通信响应过程中,必须增加等待超时判断,避免由于通信故障导致P LC 程序死锁。
2.3
需要注意的问题
①信号量问题
这也是串行通信最容易出的问题。通信信道只有一个,却有读/写两种不同的报文需要发送,同时还要等待各自报文的响应。如何保证各操作的同步
关系,使对串口这种临界资源能够互斥的访问,需要充分利用好信号量机制。本程序中分别定义了两个信号量:
M0  发送/接收互斥信号量
M16 读/写互斥信号量
在发送报文和接收报文时,必须执行对M0的P /V 操作,否则两种数据会发生冲突。当响应时间超时,必须要对M0复位,否则程序会产生死锁。M16信号量用于区分两种不同的请求报文,使程序结构更加清晰完整。
②全双工和半双工问题
如前所述,P LC 的485-BD 通信板采用全双工通信方式。当把P LC 四线制的接线改为二线制时,会出现接收缓冲区又收到P LC 发送的数据这个问题。这种情况对程序调试带来一定困难。因此,在程序中需要在解析收到的报文时必须进行严格的类型鉴定。这里,主要根据功能码和CRC 校验码来判断报文正确性。一旦检测当前缓冲区内容不是调节仪返回数据时,立即重新开始接收,并对接收状态标志M8123复位。
③CRC 程序问题
CRC -16算法虽是公开的,但要移植到P LC 那套指令系统上去,还要考虑到具体的实现问题。由于FX1N 指令系统中没有移位功能,因此在算法中需移位时要用乘法或除法来代替。FX1N 系统中D 型数据寄存器最高位是符号位,如果是16位乘除,符号位是保留的。这样采用传统的乘以2或者除以2的方式来左移或者右移,结果会发生错误。解决的办法是,在做移位前将16位数据转化为32位数
据,这样就不会产生上述的情况。部分程序如图4所示。
图4 CRC 算法部分程序图
5
4
北京机械工业学院学报                 第21卷
3结束语
一般而言,Modbus通信程序都是采用高级语言实现(如C语言),采用这种面向工控的语言(如梯形图)来实现,无论是在编程上还是程序调试都没有高级语言方便。比如CRC算法采用C语言实现就比较简单,但用P LC的程序语言来实现的代码量就将近300步,并且程序跟踪困难。整个P LC通信程序近500步,占系统最大执行步数的1/16,P LC 内部寄存器占用不超过100个,因此基本上不会对P LC的控制程序的运行造成影响。整个通信程序能够正常对仪表温度值读取,对设定值进行写入,时间间隔能达到100m s,完全满足对温度控制的实时性要求,较好的完成了对单回路控制器的控制问题。参考文献:
[1]三菱电机株式会社.三菱FX2N/FX2NC/FX1N/
FX1S中文编程手册[M].上海:日本三菱电机
株式会社,2001
[2]山武株氏会社控制产品事业部.数字指示调节
仪S DC15使用说明书[M].东京:山武株氏会
社,2003
[3]I ndustrial Aut omati on System s.Modbus Pr ot ocol
Reference Guide[M].North Andover,Massachu2
setts:MOD I CON I nc,1996
(上接第26页)
机,通过轴定义语句为电机分配轴来建立坐标系;其次,根据所需运动来选择适当的运动指令,然后按照P MAC语法编写运动程序,下载到P MAC内存,运行。
4.3.2 编写P LC程序
运动程序的顺序特性使得它能很好的适应一系列的运动并相互协调其他坐标系的动作;然而在执行那些不是用运动的顺序来直接协调的动作时,就需要编写“P LC程序”。P LC程序的工作方式与可编程逻辑控制器相似,主要用于在任何运动程序运行的同时,在后台可以极高采样速率监视模拟输入和数字输入,设定输出值,发送信息,监视运动参数,改变增益值,以及命令运动停止或启动。P LC程序还可以像主机发送命令那样对P MAC运动控制器发送命令。
5机器人控制系统软件应用
本机器人控制系统软件是在W indows2000平台上利用V isual Cγγ6.0开发的单文档(S D I)MFC应用程序,可以在W in95/98/NT/2k/XP等W indows平台上运行。该程序具有良好的W indows应用程序风格,使用方便,操作简单,目前该系统软件运行良好。
参考文献:
[1]蔡自兴.机器人学[M].北京:清华大学出版社,
2000
[2]郑瑞华.液下搅拌机器人的智能控制方法的研
究[D].北京:北京机械工业学院机械工程系,
2005
[3]徐竟青,黄俊峰,李一平.水下机器人通用实时
控制软件研究与实现[J].机器人,2003,25
(5):404-408
[4]张云生.实时控制系统软件设计原理及应用
[M].北京:国防工业出版社,1998
[5]侯俊杰.深入浅出MFC[M].第2版.武汉:华中
科技大学出版社,2001
64

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。