基于ARM微处理器的多串口多协议网关设备设计

来源 :上海海事大学学报 | 被引量 : 0次 | 上传用户:ll05
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘 要:为实现船舶电站监控系统中底层独立的发电机控制单元与上层工控机之间有效快速的数据传输及可靠的数据通信,采用ATMEL公司的AT91R40008高性能ARM处理器以及EXAR公司的多路UART扩展芯片ST16C654设计网关设备.此网关设备的作用是将发电机控制单元的数据以通信方式转发给船舶电站监控系统中的工控机,在工控机中实现数据共享,具有4路隔离的RS232/RS485通信接口,2路非隔离的RS232通信接口.该网关设备已在船舶监控系统中成功应用,实现与底层发电机控制单元多种协议的通信(包括Modbus协议、HostLink协议和自定义协议),符合工业控制现场应用要求,满足工程的需求.
  关键词:网关设备; 状态图; 多串口并发操作; 船舶电站; 微处理器
  中图分类号:N941.5; U697.1文献标志码:A
  
  A gateway device design with multi serial ports plus multi
  protocols based on ARM microprocessor
  ZHONG Mingquan, HUANG Xuewu, ZHENG Huayao
  (Logistics Engineering College, Shanghai Maritime Univ., Shanghai 200135, China)
  Abstract: In order to realize the fast and reliable data communication between the PLC of marine power station monitoring system and upward processors, AT91R40008 high-proficiency ARM processor by ATMEL and multi-line UART enlarged chip ST16C654 by EXAR are used to design the gateway device. Its function is general engine control units data to industry monitoring computer on marine power station monitoring system by the method of communication. The data is shared in industry monitoring computer and the common possession of the data which has 4 ports with isolating RS232/RS485 communication interfaces, and 2 ports with non-isolated RS232 communication interfaces. The gateway device has been sucessfully used in marine monitoring system to achieve multi-protocol communication (application requirement in Modbus protocol, HostLink protocol and user-definied protocol). It is complied with industry control field and satisfies the demand of engineering.
  Key words: gateway device; statechart diagram; concurrent operation of multi serial ports; marine power station; microprocessor
  
  0 引 言
  
  随着智能设备的不断发展,控制系统需要与其他智能设备(如PLC,变频器,称重仪表等)互连,进行有效快速的数据传输及可靠的数据通信.基于船舶电站监控系统中底层独立的发电机控制单元与上层工控机之间的通信而设计的网关设备,其作用是将发电机控制单元的数据通过通信方式转发给船舶电站监控系统中的工控机,在工控机中实现数据共享.通过ATMEL公司的AT91R40008高性能ARM处理器以及EXAR公司的多路UART扩展芯片ST16C654,实现4路隔离的RS232/RS485通信接口和2路非隔离的RS232通信接口.
  此外,多路串口通信需要等待时间,所以要实现多串口的并发操作,最好的选择是用多任务操作系统.但由于工业控制系统一般要求稳定性可靠,而操作系统移植可能会带来系统的不稳定性.因此,在多串口多协议功能模块的软件设计上采用单线程扫描方式结构,没有使用多任务操作系统,可以利用状态图方法(详见后面的分析)在单线程程序中实现有限的多任务机制,实现多个串口的并发操作.
  
  1 硬件电路设计
  
  船舶电站网关设备的多串口扩展部分硬件结构框图见图1.
  
  AT91R40008是1款ARM7内核的处理器,该CPU内部有256 KB的RAM,在存取32位指令和数据时只需要1个时钟周期,因此可以把对速度要求较高的程序放到内部RAM中运行.AT91R40008的外部数据总线为16位,因此外部存储器只能采用16位总线.[1]AT91R40008有两路UART接口,通过MAX232芯片扩展为两路RS232通信串口,分别为COME和COMF.
  多串口通信部分电路采用1片ST16C654扩展出4路RS232和RS485通信串口COMA,COMB,COMC和COMD,其中COMB和COMC未在图中表示,其结构与COMA和COMD相同.ST16C654与AT91R40008之间接口见图1,A0~A2是地址线选通,选择要进行读写的寄存器;D0~D8是数据线,进行数据、命令和状态的读写;INT0~INT3为4路UART的中断信号线,直接与AT91R40008的中断线相连,作为接收和发送的中断信号.ST16C654是1款4串口的带64字节FIFO的UART芯片.通过对寄存器的读写访问方便地实现通信数据方式(包括同步方式、数据格式、奇偶校验、波特率等)、中断处理、发送和接收FIFO大小等.[2]它与CPU通过中断和并行方式通信,提高通信速度;当需要发送与接收数据时,可将数据放入ST16C654的FIFO中,CPU的执行效率极大提高.
  ST16C654产生的发送、接收和控制信号通过6N137光耦和5V DC/DC隔离电源模块完全隔离,从而防止外部通信信号对CPU等核心电路的干扰.4路串口分别提供RS232和RS485通信方式,两者之间通过短路块方便地实现通信切换.
  
  2 软件设计
  
  2.1 多串口的并发操作原理
  由于通信过程有许多等待操作,而且发送和接收的操作过程相对于CPU运行速度非常慢.因此,发送和接收操作应该在中断中进行.按这样的方式,程序中只要建立1个内存变量与智能设备寄存器的映射关系表,后台(中断驱动)的协议通信流程负责操纵通信程序并不断刷新内存变量或把内存变量数据下载到智能设备中即可.这样,对智能设备的读写就变成程序中对这些内存变量的读写,解决了实时性问题.[3]
  这样的操作实际上是把串口通信等慢速操作转移到中断驱动的协议通信流程,该流程可以用状态图方式处理(以主机模式为例说明),见图2.图中,把1个串口的1次协议通信过程分成若干个步骤(状态)进行,每次只执行1个步骤(STEP),只有上个步骤(状态)执行完,才能转移到下个步骤(状态),而每个步骤没有任何等待操作,因此这样的流程是快速的.另外,该流程中的通信操作命令也是快速的,如启动发送只是将要发送的数据发往通信缓冲区(如ST16C654自带的FIFO,AT91R40008中开设的1片RAM空间),启动接收只是向通信硬件发启动接收的命令,而检查发送和接收是否完成等操作只是检查一下标志而已,具体的通信操作则由通信中断执行,因此操作速度极快.
  
  该流程解决了多串口的并发工作问题,只要每个串口各自保存自己的STEP分别运作即可.该通信过程与协议有关,不同的协议可能有不同的流程,但大部分情况下类似.以下为Modbus协议的串口通信程序.
  void MODBUS-RTU(void)//Modbus协议通信过程
  {
   switch(STEP){ //(每个通信口保存着各自的STEP)
  caseIDLE:
   MBusRTU-sendcmd(); // 向串口发送读写命令
   TEP=STEP1;
   break;
  caseSTEP1:
   if( IsSendOK() ){
  SetTimOut(500); //设置响应超时间
  StartReceive(); //启动接收
  STEP=STEP2; //转到下一步
   }
   break;
   caseSTEP2:
   if( IsTimOut() ){ //响应超时
   STEP=IDLE;
   break;
   }
   if( IsReceiveOK() ) { //判断接收是否完毕
  MBusRTU-getmsg(); //收到1帧数据,进行解析
  STEP=IDLE; //数据解析完毕,串口转为空闲
   }
   break;
   default:
  STEP=IDLE;
  break;
   }
  }
  2.2 多串口并发协议的任务解析调度
  如图3所示,假定在程序中已定义变量与智能设备数据的映射关系,例如V1对应挂在COMA口的PLC(运行Modbus协议)中的数据T1(如18号线圈状态),V2对应PLC中的数据T2,当然,COMA必须运行Modbus的通信过程.同样,V3对应着挂在COMC口的PLC中的数据T3.在配置变量映射时,已把变量注册到相应串口的注册表中.如COMA的变量注册表中注册V1和V2,COMC的变量注册表中注册V3,COMD的变量注册表中注册V4.然后,建立扫描过程,依次扫描每个串口.注册在同一个串口下面的变量按注册表中的次序执行通信程序,不同串口则可同时运行通信程序.
  图3 多串口多协议并发通信实例
  举例说明:首先扫描COMA,如果COMA空闲(即STEP=IDLE),那么先执行V1的协议通信过程,然后扫描COMB,执行定义的协议通信程序过程,然后扫描COMC,处理V3的协议通信过程……下次再扫描COMA时,如果V1的通信过程完成,即COMA又回到空闲,那么将执行V2的通信程序……
  由图3的流程说明可见,不同串口变量的通信过程可以并发操作(例如V1,V3,V4),使用同一个串口变量的通信过程必须轮流操作(如V1和V2),这样的关系是合理的,而且按照图3的流程分析,每个通信过程是无等待的,因此能够实现多串口的多协议并发实时通信.
  上述扫描方式的流程见图4.该流程被不断执行,很容易用定时器中断实现(利用AT91R40008的定时器2产生的2 ms中断实现).这样,基本解决多串口多协议的并发操作问题,每个串口每隔2 ms被分配到CPU使用权.这是网关设备在编程上需要解决的问题.
  
  2.3 软件工作流程
  首先定义主程序中每个串口的数据结构,包括接收和发送缓冲区、该串口所连PLC的协议处理函数指针、波特率等通信参数;再定义每个需要操纵的PLC位号数据(该数据可以是PLC的1个寄存器或连续的1片寄存器)的内存数据结构,该结构记录每个PLC数据的PLC地址、使用的串口号、数据在PLC中的地址、数据类型及该PLC数据在内存中的存放地址等.如下所示:
  BYTE coil[37];//存放线圈状态
  WORDinputreg[1];//存放设定输入寄存器的数值
  Floatai[10];//存放模拟量
  BYTE str[10];//存放字符串
  main ()
  {
   if(PHASE == 0)//配置通信口和变量映射
   {
   SetCom(COM0, 9600, 8, 1, PAR-NO, RS232,&MODBUS-RTU);
  SetCom(COM1, 19200, 8, 1, PAR-NO, RS232,&HOSTLINK);
  SetCom(COM2, 9600, 8, 1, PAR-NO, RS232,&SLAVE);
  SetCom(COM3, 1200, 8, 1, PAR-NO, RS232,&WEIGHT);
  
   CfgVar(0, COM0, 17, COIL,19, 37, coil,READ);
  CfgVar(1, COM0, 17, INPUTREG,20,1,inputreg,WRITE);
  CfgVar(2, COM2, 17, AI, 196, 10,ai, READ);
  CfgVar(3, COM3, 17, CHR, 19,10,str, READ);
  ……
  PHASE=1;
   }
   ……
   ……// 以下可以用映射变量代替对智能设备的操作
   -TAG(“DI-001”)=coil[1];
   -TAG(“T101”)=inputreg[0];
   ai[0]=TAG(“SV-000”);
   ……
   ……
  }
  假定建立V1,V2,V3,V4,V5和V6这几个结构数据分别对应各个PLC中的数据(如线圈、输入寄存器、保持寄存器等),而且V1,V2和V3使用同一个串口, V4 属于1个串口,V5和V6同属于1个串口,每个串口使用的协议可能不同.
  那么,定时中断扫描程序如下:
  定时中断驱动的扫描(每隔10 ms或更短调用1次)
  void NetGate-Loop(void)
  {
   WORD i,j,k;
   for( i=0; i   {
  comptr=&ComDev[i]; //全局变量指针指向当前通信口
   if(comptr->Protocol){ //[ZK(]如果该通信口指定通信协议[ZK)]
  if(comptr->Step ==IDLE ) {//通信口空闲,可以处理下一个变量
  k=comptr->PsInTab++; //指向注册表中下一个元素
  if( k>=comptr->NumOfTab ){
   k=comptr->PsInTab=0;//到了队尾
   j=comptr->RegTab[k]; //取出注册表中的变量序号
   varptr=&Var[j]; //全局变量指针指向该变量
   }
   if(varptr==NULL)
   varptr=&Var[MAX-VARS-1]; //空指针不安
   comptr->Protocol();//执行该通信口通信协议
   };
   };
  }
  NetGate-Loop()函数依次扫描V1…V6. 处理V1时,如果发现对应的串口有空,则把相应的命令发到串口的发送缓冲区,至于发送缓冲区数据如何通过串口外发,则由另外的进程(中断)执行, 协议处理函数不必操心.接下去处理V2,由于V1和V2同处于1个串口,故此时串口标记为忙,V2将被忽略,接下去处理V3, 同样道理,V3也被忽略.处理V4时,由于V4对应的串口有空,所以可以把相应的命令发到V4对应串口的发送缓冲区,同样,也可以用V5发送读写命令,V6则同样被忽略.因此,本次扫描过程中,V1,V4和V5被允许与PLC通信.
  再次执行NetGate-Loop()函数时,仍然依次扫描V1…V6. 处理V1时,发现V1对应的串口忙,并且正在处理V1,那么就检查串口缓冲区是否已收到所有PLC回应数据,如果没有收全,则接下去处理V2, 同样,V2仍然被忽略……假如查询V1,发现对应的串口缓冲区已经收满PLC的回应数据,即把1帧数据解包,把PLC数据送到V1 的保存地址供BUF读取.处理完V1以后,标记串口为空闲.处理V2时,发现串口为空闲,那么就把新的读写命令发给对应的串口缓冲区……
  以上过程不断执行,实现不同串口的数据同步传送、同一个串口的数据依次传送的工作流程,因此逻辑上是每个串口实际各有1个线程独立工作.
  至于串口收发缓冲区数据如何通过多串口芯片交互,则可以用定时查询或中断方式实现,该层软件不涉及具体的协议.至于NetGate-Loop()被哪个模块驱动,可以有多种方法:(1)嵌入到主控卡大循环中;(2)定时执行.
  
  3 结束语
  
  所设计的网关设备已在船舶监控系统[4]中成功应用,实现与底层发电机控制单元的多种协议的通信(包括Modbus协议、HostLink协议和自定义协议).6个串口能够执行与发电机控制单元的并行通信任务,并能高效、快速地收发数据.而且,现在使用的多串口多协议网关设备,可针对特定协议的网关设备对原有单一串口进行升级,并节约成本、增加不同种类的协议、提高响应时间、实现主从机模式运行等.因此,所设计的网关设备符合工业控制现场应用,满足工程需求.
  
  参考文献:
  [1]ATMEL Corporation. AT91R40008. DataSheet[K]. 2002.
  [2]EXAR Corporation. ST16C654. DataSheet[K]. 2003.
  [3]BRUCE E. Thinking in C++[M]. 刘宗田, 译. 北京: 机械工业出版社, 2000.
  [4]郑华耀. 船舶电气设备及其系统[M]. 大连: 大连海事大学出版社, 2005.
  (编辑 廖粤新)
  
  注:“本文中所涉及到的图表、注解、公式等内容请以PDF格式阅读原文。”
其他文献
摘要:在互文性理论视域下,分析讨论非裔美国女性作家赫斯顿、沃克、莫里森及内勒的代表作文本之间多维度的互文勾连关系,即从克里斯蒂娃的广义互文角度来探讨小说对非洲及非裔文化的挖掘和指涉,以及从热奈特的狭义互文角度来探析几位作家对颠覆圣经文化的表达技巧。通过讨论小说之间的创作思想内涵之间的观照,论证非裔美国女性作家的文学书写传承性。  关键词:互文性; 指涉; 非裔美国女性作家; 文学书写  中图分类号
期刊
摘 要:基于《2007年内罗毕国际残骸清除公约》(以下简称《公约》)的通过,从《公约》基本框架及其特点,结合我国现行船舶残骸清除方面的法律、法规以及制度现状,分析《公约》给我国未来沿海水域残骸清除、航运业以及海事管理带来的影响,提出我国为履行《公约》在残骸清除方面的立法、实施、制度建设和相关部门履行职责的对策,建议:(1)做好清除残骸的立法工作;(2)在保赔协会、商业保险商和船舶所有人中大力推行船
期刊
摘 要:为进行船舶电站仿真系统中多种发电方式联合运行的研究及管理、操作、训练,实现多个学员的同时教学和实操,克服集中型仿真系统缺点,对船舶电站多种发电方式联合运行仿真采用分布式结构,由下位机完成各自的柴油发电机组、轴带发电机组、透平发电机组的仿真,并由上位机实现电力管理,通过CAN总线通信实现多种发电方式联合运行.对CAN总线运行过程中偶尔出现通信失败的状况进行分析,从而改进CAN总线通信接口硬件
期刊
摘 要:为更好地运用全球海上遇险报警系统(Global Maritime Distress and Safety System, GMDSS),针对GMDSS的误报警、紧急无线电示位标(Emergency Position Indicating Radio Beacon, EPIRB)使用及MF/HF海岸电台减少等带来的问题,提出完善GMDSS系统遇险报警设计、确保卫星EPIRB可靠高效运行、合理
期刊
2009年1月23日上午,上海海事大学育海航运公司总经理苏飞、宣传部长彭东恺等一行4人在振华长兴基地3号码头参加为在亚丁湾海域英勇抗击海盗的“振华4”轮举行的隆重的欢迎仪式.参加欢迎仪式的有上海市副秘书长肖贵玉、中交集团领导、振华港机领导以及40余家新闻媒体的记者.  在欢迎仪式上,“振华4”轮船长、上海海事大学校友彭维源发表热情洋溢的讲话,感谢党中央、国务院领导的关心、各级相关部门的支持以及上海
期刊
摘要:辅导员年度人物是高校优秀辅导员形象的代表,参考麦克利兰的“冰山模型”,对历年112名全国高校辅导员年度人物的文本研究发现,优秀辅导员的专业化内涵体现在专业知识、技能、自我概念、特质和动机五个方面。因此,应以专业化内涵为基本要素,完善选聘制度、考核制度、培训制度,助力辅导员专业化发展。  关键词:优秀辅导员; 专业化; 年度人物; 文本  中图分类号:G 641 文献标志码:A  文章编号:1
期刊
2009年3月2—3日,BIMCO(波罗的海国际航运公会)高级海事技术官员SOERENSEN先生访问上海海事大学,就上海海事大学参与“BIMCO/ISF 2010年海员人力资源研究报告”作资格评估.上海海事大学副校长金永兴会见来宾.   “BIMCO/ISF 2010年海员人力资源研究报告”是BIMCO与ISF(国际航运联合会)的合作科研项目,是分析全球商船海员供/需形势最全面的研究.该项目每5
期刊
摘要:对《单向度的人》一书中的革命理论进行再研究,有助于加深对马尔库塞相关思想的研究,也有助于促进对马克思主义革命理论当代发展的思考。马尔库塞认为,技术异化使得发达工业社会呈现出单向度的特征,因此革命有其必要性。而革命的可能性则在于对现存单向度社会的超越性筹划,具体为发展新的技术、新的艺术和寻找新的历史主体。将马尔库塞的革命理论与马克思主义革命理论进行對比,可发现前者在对“现实的人”的关注和对异化
期刊
并与韩国仁荷大学签署两校合作备忘录     2009年2月12日,中韩物流合作第4次会议在韩国首尔举行,中国交通运输部冯正霖副部长率团与会.上海海事大学校长於世成、上海海事大学物流研究中心主任林国龙作为交通运输部代表团成员出席本次会议.   林国龙教授就中国以及上海海事大学物流专业人才的培养作发言.   会议期间,於世成校长与韩国仁荷大学代理校长李本守博士签署两校合作备忘录,两校将加强人员交流与项
期刊
摘要:基于LexisNexis新闻语料库,以《中国日报》《中国日报美国版》和《中国日报欧洲版》有关“中国国际进口博览会”的报道为语料,综合运用语料库语言学、力动态图式模型、话语分析等方法定量和定性考察《中国日报》三个对外版本对“进博会”话语报道的差异及情感态度的异同。研究发现三个版本在进博会相关报道中态度保持高度一致性,在对外宣传中做到针对性传播,高度基于事实、实践而得出结论,塑造并维护良好的国家
期刊