基于Moxa 嵌入式计算机UC-7408的协议转换
- 格式:doc
- 大小:528.50 KB
- 文档页数:9
基于M o x a嵌入式计算机U C-7408的协议转换一、引言随着工业自动化的高速发展和网络通讯技术的不断完善,在工业控制场合,后台监控系统中广泛应用着组态软件。
同时组态软件大多支持Modbus/TCP协议,而在电力监控应用中,绝大多数的继电保护设备采用的都是IEC60870-5-1-103传输规约(以下简称103规约),为了让组态软件能够监控继电保护设备的信息,我们需要做个103规约同Modbus/TCP协议之间的协议转换,这样就能够实现对下层的一些智能设备做统一的监控。
二、Moxa UC-7408介绍本项目中我们采用的协议转换设备是Moxa的UC-7408,该款设备是Moxa嵌入式计算机系列中的一种,采用Intel XScale IXP-422 266Mhz RISC CPU。
与采用CISC设计的X86 CPU不同的是,IXP-422的RISC设计架构和先进的半导体技术赋予了UC-7400强大的计算和通信能力,但发热量却很小。
内建32MB NOR FLASH ROM和128MB SDRAM 为应用软件提供了足够的存储空间,同时,IXP-422 CPU内置的双网口是安全网络通讯的理想解决方案。
另外它还有8个数字输入输出通道,可以直接采集数字量。
Moxa UC-7408出厂时就预装了操作系统,可以选择WinCE 5.0和Monta Vista Linux。
笔者使用的是Linux版本的UC-7408,Linux操作系统是一个开放式平台,使用GNU交叉编译工具,可以很方便的开发或移植基于该平台的应用程序。
Moxa UC-7408作为嵌入式计算机与通用计算机系统相比,具有系统功耗低,可靠性高,功能强大,性价比高,支持多任务,占用空间小,面向特定应用,可根据需要灵活定制等特点。
三、103规约简介与分析传输规约IEC60870-5-1-103继电保护设备信息接口配套标准由国际电工委员会TC57技术委员会(电力系统控制和通信技术委员会)出版,我国将其等同采用作为电力行业标准:DL/T667 –1999,已于1999年10月1日正式实施。
103规约是用于控制系统与继电保护设备信息交换中的继电保护设备的信息接口配套标准,传送的信息主要针对继电保护的相关信息。
此标准未必一定适用于将继电保护功能和测量、控制功能组合在同一个装置内并共用一个通信口的设备。
该标准的推出,在实现变电站自动化的过程中,使得变电站内一个控制系统的不同继电保护设备和各种装置达到互换,提高了继电保护设备的安全性,有利于变电站自动化系统不同继电保护设备和控制系统之间的互联。
103规约是在IEC60870-5系列标准的基础上,采用FT1.2帧格式,对物理层、链路层、应用层、用户进程作了大量的具体的规定和定义。
FT1.2帧格式有可变帧长和固定帧长两种,如图1所示。
图1 :FT1.2帧格式固定帧长帧格式用于继电保护设备(或者间隔单元)向控制系统传输的确认帧,或控制系统向继电保护设备(或间隔单元)传输的询问帧。
可变帧长帧格式用于同控制系统向继电保护设备(或间隔单元)传输数据,或由继电保护设备(或间隔单元)向控制系统传输数据。
四、Modbus/TCP协议简介与分析Modbus 协议是工业控制领域中的一种应用层协议,具有开放性和透明性。
尽几年来,随着Modbus 协议不断扩展,已经将串行链路、高速令牌传递网络、TCP/IP 等关键技术引入到Modbus 应用协议解决方案中,形成了Modbus 应用协议族,基于Modbus 应用协议族的工业以太网解决方案已经逐渐应用于各种现场级测控领域。
Modbus 与以太网TCP/IP 结合成为Modbus/TCP,该协议采用客户/服务器的通讯模式,以一种非常简单的方式将Modbus 帧嵌入到TCP 帧中,使其成为工业以太网应用层协议。
1、协议体系结构Modbus/TCP 协议体系结构如图2所示:图2:Modbus/TCP 协议体系结构2、Modbus/TCP 的应用数据单元(ADU)Modbus 协议定义了一个与基础通信层无关的简单协议数据单元(PDU)。
为了在特定总线或网络上进行Modbus 协议映射,在应用数据单元(ADU)上引入一些附加域,(如图3)为Modbus/TCP 的应用数据单元,最大长度为256 字节。
Modbus 应用协议建立客户机启动的请求格式。
客户机启动Modbus 事务处理,并创建Modbus 应用数据单元。
功能码向服务器指示将执行哪种操作。
用一个字节编码Modbus 数据单元的功能码域。
有效的码字范围是十进制1-255(188-255 为异常响应保留)。
当从客户机向服务器设备发送报文时,功能码域通知服务器执行哪种操作。
向一些功能码加入子功能码来定义多项操作。
从客户机向服务器设备发送的报文数据域包括附加信息,服务器使用这个信息执行功能码定义的操作,这个域还包括离散量或寄存器地址、处理的项目数量以及域中的实际数据节数。
如果在一个正确接收的Modbus ADU 中,不出现与请求Modbus 功能码有关的差错,那么服务器至客户机的响应数据域包括请求数据。
如果出现与请求Modbus 功能码有关的差错,那么响应数据域包括一个异常码,客户机应能通过这个异常码确定下一步所执行的操作。
图3:Modbus/TCP 的应用数据单元3、Modbus 数据模型Modbus 数据模型基于有不同特征的一系列数据表。
四种基本数据表格为:主表对象类型访问类型内容离散量输入单个比特只读 I/O系统提供这种类型的数据线圈单个比特读写通过应用程序改变这种类型数据输入寄存器 16-比特字只读 I/O系统提供这种类型的数据保持寄存器 16-比特字读写通过应用程序改变这种类型数据上述表格中任何一项,协议都允许单个地选择65536 个数据项,而且读写操作可以包括多个连续数据项直到ADU 字节限制。
很显然,必须将通过Modbus处理的所有数据放置在设备应用存储器中。
但是,存储器的物理地址不应与数据参考地址相混淆。
要在数据参考地址与物理地址之间建立映射关系。
对于Modbus 数据模型实现来说,在设备中有两种构造数据的方法,每个设备根据其应用都有自己的数据结构。
4、Modbus 功能码如Modbus ADU 所示,客户所请求的服务和服务器所提供的服务均通过功能码(Function Code)标识。
Modbus 功能码有三种,即公共功能码、用户自定义功能码和保留功能码,如图 4 所示。
图4:功能码公共功能码是已定义的功能码,保证其唯一性,包含现存已定义的公共指配功能码和未来使用的未指配保留功能码。
现存已定义的公共指配功能码如下表所示:用户定义功能码有两个定义范围,即65 至72 和十进制100 至110。
用户没有Modbus 组织的任何批准就可以选择和实现一个功能码。
如果用户要重新设置功能作为一个公共功能码,那么用户必须启动RFC(Request For Comments,请求注解,Internet 标准草案),以便将改变引入公共分类中,并且指配一个新的公共功能码。
保留功能码是一些公司对传统产品通常使用的功能码,并且对公共使用是无效的功能码。
五、方案设计由于103规约同Modbus/TCP协议之间通讯模式以及数据类型存在着很大的差别,所以我们不能简单的对数据做拆包和组包处理。
我们需要将Moxa UC-7408模拟成103规约的主站,主动的按照103规约同下面的设备通讯,将相应的数据取得之后,做分析处理,然后存储到相应的内存空间。
也就是说Moxa UC-7408上要运行一个103规约的虚拟机。
同时对于Modbus/TCP,我们也要在Moxa UC-7408上运行相应的虚拟机,从组态软件那边读取Modbus/TCP的指令,并对指令做分析,之后从相应的存储空间中获取对应的数据返回给组态软件。
这样对于组态软件来说,它只知道下面有个Modbus/TCP的设备,可以提供一系列满足需要的数据,而并不知道Moxa UC-7408下面连接的是什么样的设备。
所以在该系统中我们需要两套虚拟机进行数据的转换,即103虚拟机和Modbus/TCP虚拟机,它们之间的数据转换方式如图5:图5:数据转换方式1、103规约虚拟机设计对于103规约虚拟机,我们要实现一个主站的功能,包括:初始化从站,从站对时,总查询,召唤1、2级数据。
(1) 初始化从站当控制系统启动以后,主站(即控制系统)发送初始化命令给子站,子站复位后发送确认帧给主站,主站接收到确认帧后用轮询方式发送请求1级用户数据或2级用户数据帧,子站先回标明该设备的标识报文,然后按照系统要求回相应的1级用户数据或2级用户数据,初始化过程结束。
(2) 从站对时主站定时向子站发送时钟同步命令,可以采用广播方式向所有的子站发送时钟,也可以采用一对一的方式向某一个确定的模块发送时钟。
时钟同步目的是为了在设备之间规定一个共同的时间参考。
(3) 总查询主站定时向每个子站发送总查询命令,子站将子站内含有的一张属于总查询的表内容依次传送给主站。
如果在传送过程中出现优先级高于总查询的报文,则优先传送。
然后再继续传送总查询的表内容,表中所有内容都传送完后,子站传送总查询结束报文给主站。
总查询过程结束。
(4) 召唤1、2级数据1级用户数据传送的优先级高于2级用户数据,同时出现1级用户数据时,优先级别高的优先传送。
例如SOE(事件顺序记录)的优先级高于遥信的优先级,当出现遥信变位时,子站马上通知主站有1级用户数据,主站同意接收后,子站传送SOE的报文,只有在主站发送总查询命令时,子站才将遥信量上传给主站。
103规约中2级用户数据是一些遥测量,当没有1级用户数据时,主站不断的向子站请求2级用户数据,子站实时传送这些遥测量给主站。
(5) 程序实现根据103规约规定的通讯模式和主站要实现的功能,我们可以按照下图(图6)来实现在Moxa UC-7408中运行的103规约虚拟机程序。
图6:103通讯程序流图我们将从站返回的信息按照遥测量、遥信量、脉冲量、遥控量、以及SOE分类存储,在通过数据转换,将这些信息量转换成Modbus中对应的线圈和寄存器数值,并对这些转换后的数据进行统一的编址,以方便按照Modbus/TCP协议读取数据。
2、Modbus/TCP虚拟机设计上位机的组态软件可以通过Modbus/TCP协议与设备通讯,从而取得相应的数据,并在组态软件上形象的反映数据变化。
我们可以先利用103规约虚拟机将从站的信息取出,并将其转换成了Modbus/TCP的地址方式,这样我们的上位机组态软件通过相应的配点就可以轻松的取得相应的数据。
Modbus/TCP协议采用的是客户/服务器通信模式,在此我们的Modbus/TCP虚拟机作为服务器端。