基于Moxa 嵌入式计算机UC-7408的协议转换_第1页
基于Moxa 嵌入式计算机UC-7408的协议转换_第2页
基于Moxa 嵌入式计算机UC-7408的协议转换_第3页
基于Moxa 嵌入式计算机UC-7408的协议转换_第4页
基于Moxa 嵌入式计算机UC-7408的协议转换_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

基于Moxa嵌入式计算机UC-7408的协议转换一、引言随着工业自动化的高速发展和网络通讯技术的不断完善,在工业控制场合,后台监控系统中广泛应用着组态软件。同时组态软件大多支持Modbus/TCP协议,而在电力监控应用中,绝大多数的继电保护设备采用的都是IEC60870-5-1-103传输规约(以下简称103规约),为了让组态软件能够监控继电保护设备的信息,我们需要做个103规约同ModBus/TCP协议之间的协议转换,这样就能够实现对下层的一些智能设备做统一的监控。二、MoxaUC-7408介绍本项目中我们采用的协议转换设备是Moxa的UC-7408,该款设备是Moxa嵌入式计算机系列中的一种,采用IntelXScaleIXP-422266MhzRISCCPU。与采用CISC设计的X86CPU不同的是,IXP-422的RISC设计架构和先进的半导体技术赋予了UC-7400强大的计算和通信能力,但发热量却很小。内建32MBNORFLASHROM和128MBSDRAM为应用软件提供了足够的存储空间,同时,IXP-422CPU内置的双网口是安全网络通讯的理想解决方案。另外它还有8个数字输入输出通道,可以直接采集数字量。MoxaUC-7408出厂时就预装了操作系统,可以选择WinCE5.0和MontaVistaLinux。笔者使用的是Linux版本的UC-7408,Linux操作系统是一个开放式平台,使用GNU交叉编译工具,可以很方便的开发或移植基于该平台的应用程序。MoxaUC-7408作为嵌入式计算机与通用计算机系统相比,具有系统功耗低,可靠性高,功能强大,性价比高,支持多任务,占用空间小,面向特定应用,可根据需要灵活定制等特点。三、103规约简介与分析传输规约IEC60870-5-1-103继电保护设备信息接口配套标准由国际电工委员会TC57技术委员会(电力系统控制和通信技术委员会)出版,我国将其等同采用作为电力行业标准:DL/T667-1999,已于1999年10月1日正式实施。103规约是用于控制系统与继电保护设备信息交换中的继电保护设备的信息接口配套标准,传送的信息主要针对继电保护的相关信息。此标准未必一定适用于将继电保护功能和测量、控制功能组合在同一个装置内并共用一个通信口的设备。该标准的推出,在实现变电站自动化的过程中,使得变电站内一个控制系统的不同继电保护设备和各种装置达到互换,提高了继电保护设备的安全性,有利于变电站自动化系统不同继电保护设备和控制系统之间的互联。103规约是在IEC60870-5系列标准的基础上,采用FT1.2帧格式,对物理层、链路层、应用层、用户进程作了大量的具体的规定和定义。FT1.2帧格式有可变帧长和固定帧长两种,如图1所示。揑制域(q

揑制域(q

箍飪地址域IA)

谜豁用口数据

軸校於和(匚勺

給桌孑符(1和【』

〔讪川」魅帧兵軸格式心动了彳曲碉Hi

揑制城《C)

链路地Jil越【A)

帧隨聆审ii(:汨

紬巣字符【1611k山川4宦倾心柚搭式图1:FT1.2帧格式固定帧长帧格式用于继电保护设备(或者间隔单元)向控制系统传输的确认帧,或控制系统向继电保护设备(或间隔单元)传输的询问帧。可变帧长帧格式用于同控制系统向继电保护设备(或间隔单元)传输数据,或由继电保护设备(或间隔单元)向控制系统传输数据。四、Modbus/TCP协议简介与分析Modbus协议是工业控制领域中的一种应用层协议,具有开放性和透明性。尽几年来,随着Modbus协议不断扩展,已经将串行链路、高速令牌传递网络、TCP/IP等关键技术引入到Modbus应用协议解决方案中,形成了Modbus应用协议族,基于Modbus应用协议族的工业以太网解决方案已经逐渐应用于各种现场级测控领域。Modbus与以太网TCP/IP结合成为Modbus/TCP,该协议采用客户/服务器的通讯模式,以一种非常简单的方式将Modbus帧嵌入到TCP帧中,使其成为工业以太网应用层协议。1、协议体系结构Modbus/TCP协议体系结构如图2所示:Message图2:Modbus/TCP协议体系结构2、Modbus/TCP的应用数据单元(ADU)Modbus协议定义了一个与基础通信层无关的简单协议数据单元(PDU)。为了在特定总线或网络上进行Modbus协议映射,在应用数据单元(ADU)上引入一些附加域,(如图3)为Modbus/TCP的应用数据单元,最大长度为256字节。Modbus应用协议建立客户机启动的请求格式。客户机启动Modbus事务处理,并创建Modbus应用数据单元。功能码向服务器指示将执行哪种操作。用一个字节编码Modbus数据单元的功能码域。有效的码字范围是十进制1—255(188—255为异常响应保留)。当从客户机向服务器设备发送报文时,功能码域通知服务器执行哪种操作。向一些功能码加入子功能码来定义多项操作。从客户机向服务器设备发送的报文数据域包括附加信息,服务器使用这个信息执行功能码定义的操作,这个域还包括离散量或寄存器地址、处理的项目数量以及域中的实际数据节数。如果在一个正确接收的ModbusADU中,不出现与请求Modbus功能码有关的差错,那么服务器至客户机的响应数据域包括请求数据。如果出现与请求Modbus功能码有关的差错,那么响应数据域包括一个异常码,客户机应能通过这个异常码确定下一步所执行的操作。MHAPHr.-i4-?r'h'l■Ihblihj3图3:Modbus/TCP的应用数据单元3、Modbus数据模型Modbus数据模型基于有不同特征的一系列数据表。四种基本数据表格为:主表对象类型访问类型内容离散量输入单个比特只读I/O系统提供这种类型的数据线圈单个比特读写通过应用程序改变这种类型数据输入寄存器16—比特字只读I/O系统提供这种类型的数据保持寄存器16—比特字读写通过应用程序改变这种类型数据上述表格中任何一项,协议都允许单个地选择65536个数据项,而且读写操作可以包括多个连续数据项直到ADU字节限制。很显然,必须将通过Modbus处理的所有数据放置在设备应用存储器中。但是,存储器的物理地址不应与数据参考地址相混淆。要在数据参考地址与物理地址之间建立映射关系。对于Modbus数据模型实现来说,在设备中有两种构造数据的方法,每个设备根据其应用都有自己的数据结构。4、Modbus功能码如ModbusADU所示,客户所请求的服务和服务器所提供的服务均通过功能码(FunctionCode)标识°Modbus功能码有三种,即公共功能码、用户自定义功能码和保留功能码,如图4所示。1271101007265图4:功能码公共功能码是已定义的功能码,保证其唯一性,包含现存已定义的公共指配功能码和未来使用的未指配保留功能码。现存已定义的公共指配功能码如下表所示:优巳1tJ戢020?艸購庫研席!3四氓间-两射苗"iFTTTOTOkq单十扭・C5倜15OFC4CM曲工r口百鳥0303C60515忻彗17耻烈代眄耳苓疔巒型文荐讷就!?Ill记*3014J玮2115XM114?1420用户定义功能码有两个定义范围,即65至72和十进制100至110。用户没有Modbus组织的任何批准就可以选择和实现一个功能码。如果用户要重新设置功能作为一个公共功能码,那么用户必须启动RFC(RequestForComments,请求注解,Internet标准草案),以便将改变引入公共分类中,并且指配一个新的公共功能码。保留功能码是一些公司对传统产品通常使用的功能码,并且对公共使用是无效的功能码。五、方案设计由于103规约同Modbus/TCP协议之间通讯模式以及数据类型存在着很大的差别,所以我们不能简单的对数据做拆包和组包处理。我们需要将MoxaUC-7408模拟成103规约的主站,主动的按照103规约同下面的设备通讯,将相应的数据取得之后,做分析处理,然后存储到相应的内存空间。也就是说MoxaUC-7408上要运行一个103规约的虚拟机。同时对于Modbus/TCP,我们也要在MoxaUC-7408上运行相应的虚拟机,从组态软件那边读取Modbus/TCP的指令,并对指令做分析,之后从相应的存储空间中获取对应的数据返回给组态软件。这样对于组态软件来说,它只知道下面有个Modbus/TCP的设备,可以提供一系列满足需要的数据,而并不知道MoxaUC-7408下面连接的是什么样的设备。所以在该系统中我们需要两套虚拟机进行数据的转换,即103虚拟机和Modbus/TCP虚拟机,它们之间的数据转换方式如图5:Mp^/TCP虚啊10S协议虚拟机Modbus/TCP写103遥控指令指令信息存储区信息存薦国图5:数据转换方式1、103规约虚拟机设计对于103规约虚拟机,我们要实现一个主站的功能,包括:初始化从站,从站对时,总查询,召唤1、2级数据。初始化从站当控制系统启动以后,主站(即控制系统)发送初始化命令给子站,子站复位后发送确认帧给主站,主站接收到确认帧后用轮询方式发送请求1级用户数据或2级用户数据帧,子站先回标明该设备的标识报文,然后按照系统要求回相应的1级用户数据或2级用户数据,初始化过程结束。从站对时主站定时向子站发送时钟同步命令,可以采用广播方式向所有的子站发送时钟,也可以采用一对一的方式向某一个确定的模块发送时钟。时钟同步目的是为了在设备之间规定一个共同的时间参考。总查询主站定时向每个子站发送总查询命令,子站将子站内含有的一张属于总查询的表内容依次传送给主站。如果在传送过程中出现优先级高于总查询的报文,则优先传送。然后再继续传送总查询的表内容,表中所有内容都传送完后,子站传送总查询结束报文给主站。总查询过程结束。召唤1、2级数据1级用户数据传送的优先级高于2级用户数据,同时出现1级用户数据时,优先级别高的优先传送。例如SOE(事件顺序记录)的优先级高于遥信的优先级,当出现遥信变位时,子站马上通知主站有1级用户数据,主站同意接收后,子站传送SOE的报文,只有在主站发送总查询命令时,子站才将遥信量上传给主站。103规约中2级用户数据是一些遥测量,当没有1级用户数据时,主站不断的向子站请求2级用户数据,子站实时传送这些遥测量给主站。程序实现根据103规约规定的通讯模式和主站要实现的功能,我们可以按照下图(图6)来实现在MoxaUC-7408中运行的103规约虚拟机程序。

图6:103通讯程序流图我们将从站返回的信息按照遥测量、遥信量、脉冲量、遥控量、以及SOE分类存储,在通过数据转换,将这些信息量转换成Modbus中对应的线圈和寄存器数值,并对这些转换后的数据进行统一的编址,以方便按照Modbus/TCP协议读取数据。2、Modbus/TCP虚拟机设计上位机的组态软件可以通过Modbus/TCP协议与设备通讯,从而取得相应的数据,并在组态软件上形象的反映数据变化。我们可以先利用103规约虚拟机将从站的信息取出,并将其转换成了Modbus/TCP的地址方式,这样我们的上位机组态软件通过相应的配点就可以轻松的取得相应的数据。Modbus/TCP协议采用的是客户/服务器通信模式,在此我们的Modbus/TCP虚拟机作为服务器端°Modbus/TCP服务器端主要完成的任务是负责解释来自客户端的Modbus/TCP帧,执行相应的请求。服务器端程序的基本要求是能够并行处理来自多个客户端程序的通信请求,由于笔者使用的MoxaUC-7408采用的是Linux系统,所以Modbus/TCP虚拟机将基于Linux中的多线程编程技术来实现。多线程并发TCP服务器和客户机交互的程序结构如图7所示。处理线和A心配迪信鑫涯7按收连接(阻龜}为连按创述利工的处坯线刃心配迪信鑫涯7按收连接(阻龜}为连按创述利工的处坯线刃图7:多线程并发TCP服务器和客户机交互的程序结构在设计服务器时,应该让它的守候线程在Modbus协议注册的TCP-502端口监听来自客户端的Modbus/TCP连接请求。多线程服务器的处理过程如下:⑴使用listen()监听TCP—502端口的连接请求;如果收到连接请求,用accept()接收并产生一个新的线程处理连接;在新线程中,用recv(6)建立一个接收6个字节Modbus/TCP报头的请求,不要在此设置超时,而要等待直到一个请求到达或是连接关闭。两种情况都能自动激起线程。分析报头,获取协议标识符以及后续报文长度等信息。如果看上去已经破坏(如协议字段非零或报文长度超过256字节),从一侧关闭连接。这是服务器对隐含TCP编码出错的情况的正常反应。用recv()接收剩下的报文,此时报文长度已知。特别注意的一点就是,带有报文长度限制的recv()可以承受客户用“管道技术”持续发送的通信请求;在当前请求具有完整服务时,任何管道技术的通信请求会留在服务器端或客户端的TCP缓冲区中。处理接收回来的Modbus报文,即PDU。此时挂起当前线程直到正确的响应被计算出来;最终返回正常应答报文或异常应答报文;为响应构造Modbus/TCP前缀,从请求的字节0和1拷贝“事务标识符”字段,并重新计算长度字段;提交包括Modbus/TCP前缀在内的应答,调用send()将响应报文送至套接字发送缓冲区;返回,等待读取下一个6字节前缀。

(4)最终,当客户机主动关闭连接时,recv()得到的6字节前缀是无效的,舍弃。正常关闭通常导致recv()的返回字节数为0,强制关闭会使re

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论