发表于:2003-04-03 09:53:00
楼主
内容来源: www.loncontrol.com
EIA RS-232-C/RS-485信号LonWorks节点
赵家贵 文 波
北京科技大学信息工程学院, 北京 100083
摘要:针对工业现场常见的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
A Kind of LonWorks Node for EIA RS-232-C/RS-485 Signal
Zhao Jiagui, Wen Bo
Information Engineering School, UST Beijing, Beijing 100083, China
ABSTRACT A kind of LonWorks Node based on Neuron chip was developed for EIA RS-232-C/RS-485 signal. The node actually works as a gateway between RS-232-C/RS-485 standard and LonTalk protocol.
KEY WORDS LON Neuron chip; EIA RS-232-C/RS-485 standard; node
从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所示.
图1 BS-232-C/485信号的LonWorks节点结构框图
该节点的工作原理如下:采用适当的接口芯片将现场信号电平转换为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