如何设计EIA RS-232-C/RS-485信号LonWorks节点

时间:2007-11-27

摘要:针对工业现场常见的EIA RS-232-C/RS-485信号设计了一类基于Neuron芯片的LonWorks节点,该节点构成了EIA RS-232-C/RS-485标准与LON的通讯协议之间的网关. 
关键词:LON Neuron芯片; EIA RS-232-C/RS-485标准; 节点
分类号:TP 393.03
  
  从80年代末开始现场总线(FieldBus)成为工业控制领域的热点,至今已出现多种现场总线标准,较为的有FF,CAN和LON等[1].

  以Neuron芯片为,辅以LonWorks收发器、现场信号的前置调理等电路即可构成LON的组成单元——典型节点.节点的作用是将工业现场的传感器或执行器的信号转换为包含LonTalk协议的数据,从而与现场的其他节点直接进行通讯,终使得测量和控制等功能全部下放到现场级设备[2].

  EIA RS-232-C/RS-485地标准广泛为工业现场设备所采用,是一种常见的电气和通讯接口,如PLC、智能仪器和调制解调器等设备均采用232或485标准.因此,将现场设备的232/485信号转换为包含LonTalk协议的信息,从而与现场的其他LON节点以及LON网络管理设备实现通讯,具有实际应用和拓宽LON应用范围的意义.

  Neuron芯片的11个I/O有34种可选工作模式,其中包括串行I/O方式.该方式的数据格式为1位起始位、8位数据位和1位停止位,数据速率可由软件设置为600,1200,2 400 和4 800 bps,且其工作方式为半双工.从数据速率和工作方式来看,Neuron芯片自身所提供的串行接口有很大的局限性,例如当数据速率要求大于4 800 bps或要求全双工方式工作等情况下均无法实现.鉴于此,根据现场具体应用的要求,本文设计了数据传输速率为115,200 bps、全双工的工作方式(不包括485信号)的LonWorks节点.该节点实际是RS-232-C/RS-485标准与LonTalk协议之间的网关.

1 节点硬件设计

1.1 Lon Works节点硬件结构框图
      该节点的框图如图1所示.
    
  该节点的工作原理如下:采用适当的接口芯片将现场信号电平转换为TTL兼容电平;采用硬件UART将串行信号转换为并行信号从而与Neuron芯片接口;Neuron芯片将输入数据处理为网络变量或其他包含LonTalk协议的数据并输出;采用LonWorks收发器将Neuron芯片的输出数据发送至LON的网络介质.

  该节点既可与进行测量的现场仪表相连,也可与执行控制功能的设备相连.也就是说,该节点可处理双向信号,而这是通过软件设计来实现的.

1.2 节点的硬件电路设计

  该节点中,Neuron芯片选用Motorola公司生产的MC143150.3150片内存储器的地址范围是E800H桭FFFH,包括2 kB的SRAM和512B的EEPROM.3150可以外接存储器,如RAM、ROM、EEPROM或FLASH,其地址范围是0000H桬7FFH.根据一般应用的性能和成本要求,该节点的外部存储器采用EPROM和RAM.EPROM选用27C256 120,RAM选用HY62256-10.27C256的地址范围由Neuron芯片的地址线和控制线E来确定.62256的地址范围通过可编程逻辑阵列(GAL)根据Neuron芯片的地址线和控制线E来确定.另外,当节点采用RS-485方式时,GAL通过来自UART的RTS信号对485接口处于发送还是接收状态进行控制.232信号的调理电路选用SN75LBC187,它将??12V的232电平转换为+5V电平,然后送至UART.选用MAX485芯片将485差分信号转换为单端信号.

  为提高节点所能处理的信号的数据速率,该节点采用异步串行通讯器件UART来实现信号与Neuron芯片I/O的接口.UART选用NS公司的PC16550D.16550D可将来自外设的串行信号转换为并行信号,或将来自CPU的并行信号转换为串行信号.通过对16550D内部寄存器进行编程,即可建立异步串行通信协议(数据传输速率、数据格式等)以及UART的操作方式(查询I/O或中断I/O).为了同UART的并行信号接口,将Neuron芯片的8个I/O进行地址、数据复用,其余3个I/O作为读写UART的控制信号通道.此处采用地址数据分离器件74HCT573进行地址的锁存,实现地址和数据的分离.

  Neuron芯片与LON的网络介质的接口采用一种LonWorks收发器棗自由拓扑型收发器FTT-10A.FTT-10A是一种变压器耦合收发器,可提供一个与双绞线的无极性接口,且支持网络的自由拓扑结构.网络通讯介质采用常用的双绞线.

1.3 节点的抗干扰设计

  工业现场的环境一般来说较为恶劣,存在多种干扰.为保证通讯的准确无误,延长硬件使用寿命,该节点除采用通常的供电和接地抗干扰措施外,主要是要避免和消除来自网络介质的静电泄放(ESD)和电磁干扰(EMI),即主要针对FTT-10A来设计抗干扰电路.

  对于ESD,在印刷电路板(PCB)设计中应提供一个导入大地的通道,还要不致引起整个PCB电压的升降,具体采用火花放电隙和箝位二极管来实现.对于EMI,因为FTT-10A对垂直杂散电磁场不敏感,而对水平杂散电磁场敏感,所以在PCB设计中应使FTT-10A尽量远离水平杂散电磁场区域,对于不可避免的杂散电磁场应使其相对于FTT-10A垂直分布.


2 节点软件设计

2.1 Neuron芯片的编程语言——Neuron C

  Neuron芯片有一套专门的开发语言——Neuron C.Neuron C派生于ANSI C,并增加了对I/O、事件处理、报文传送和分布式数据对象的支持,是开发Neuron芯片应用程序的重要工具.与ANSI C不同的是,Neuron C不支持文件I/O和浮点运算;但是,Neuron C有专用的实时库和语法扩展以支持Neuron芯片的智能分布式控制应用.其语法扩展包括软件定时器、网络变量、显式报文、多任务调度、EEPROM变量和附加功能等.其中,网络变量的使用为LON节点间的通讯及互操作提供了基础.通过不同节点的、相同类型的网络变量的互连,即可实现节点之间的数据传递.也就是说,LON节点通过网络变量实现了数据的共享.

2.2 节点的软件设计

该节点的应用程序采用Neuron C语言编写.其功能是实现现场设备的232C/485信号与包含LonTalk协议的数据之间的相互转换.

以节点与现场测量设备相连为例进行讨论.根据硬件设计,将Neuron芯片的I/O定义为多总线(muxbus)I/O对象类型.多总线I/O为并行I/O对象,使用11个I/O构成8位地址和双向数据总线接口,即采用地址和数据的总线复用.定义多总线I/O对象的Neuron C源代码如下所示:IO_0 muxbus IO_BUS,其中,IO_BUS为所定义的I/O对象名称.

节点程序包括:初始化16550D,从16550D的接收缓冲寄存器读取所测量的数据、进行相应的数据处理并打包为输出网络变量等3个部分.

初始化16550D主要包括:初始化线路控制寄存器(LCR), 确定数据格式为8位数据位、1位停止位、无奇偶校验位,并使其D7位为1以允许设置波特率因子寄存器;然后初始化波特率因子寄存器(DLL和DLM)为允许范围内的某一值(50bps~115,200bps);将LCR的D7位设置为0以允许访问接收缓冲寄存器、发送保持寄存器或中断允许寄存器.

      初始化16550D的Neuron C源代码如下所示(以波特率600bps为例):
      io_out(IO_BUS,0x03,0x83);
      io_out(IO_BUS,0x00,0x0c);
      io_out(IO_BUS,0x01,0x00);
      io_out(IO_BUS,0x03,0x03).
      Neuron C是一种基于事件的编程语言.本节点程序使用两类事件.一类是reset,当节点加电、掉电或watchdog定时器终止时该事件被触发,进行初始化Neuron芯片和16550D;另一类是监测16550D的线路状态寄存器事件,当数据准备好时Neuron芯片对UART进行读操作,读取数据后设置为输出网络变量以供其他节点或网络管理设备共享数据.读取数据的Neuron C函数为io_in(),其格式如下:

io_in(ioobject_name,address)其中,ioobject_name为IO对象名称,address为UART接收缓冲寄存器的8位地址.
值得注意的是,Neuron芯片的应用CPU在执行该io_in()函数时会处于等待状态,也就是说等待数据时应用CPU不能处理其他IO事件、定时器终止、网络变量更新或报文到达事件.如果20字符时间内尚没有接收到数据,则可能使watchdog定时器产生超时错.在10 MHz的输入时钟下,watchdog的超时时间是0.84 s(该时间随输入时钟而改变).通常情况下调度程序(scheduler)会周期性地对watchdog定时器进行复位,但当程序处理一个较长的任务(task)如io_in()时,则有可能终止watchdog定时器,这将导致整个节点的复位.为避免产生这种情况,同时使程序尽可能多地接收到达的数据,本节点程序在接收数据这个任务中周期性地调用函数watchdog_update().节点的调试和实验证明这样做不会出现系统不断复位的情况.采用LonWorks开发工具——LonBuilder中的Neuron C编译器对节点程序进行编译,生成ROM映象文件,编程到片外EPROM中.另外,可对节点程序进行适当修改以适应具体应用的需要.

3 结论

  本文所设计的节点可与EIA RS-232-C/RS-485标准的串行I/O设备进行接口,将232或485信号转换为包含LonTalk协议的数据,或可将LON网络介质上的信息转换为232或485标准的信号,从而实现现场节点之间以及与网络管理工具之间的数据传递.

  Neuron芯片内部固化了LonTalk协议,使得二次开发者不必过多关心通讯细节,而是集中力量处理具体的应用.Neuron芯片对现场通讯和控制的强大支持以及Neuron C为分布式控制所作的语法扩展使得LON的应用开发周期短、开发效率高、产品性能好.局部操作网LON将在更多的领域得到更为广泛的应用.



  
上一篇:FPGA在语音存储与回放系统中的应用
下一篇:PCB设计指引(3)

免责声明: 凡注明来源本网的所有作品,均为本网合法拥有版权或有权使用的作品,欢迎转载,注明出处。非本网作品均来自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。

相关技术资料