>
首页 » 技术文章 » 远动系统RTU的CAN总线适配卡设计

远动系统RTU的CAN总线适配卡设计

作者:■ 中国科学院 半导体研究所 肖宛昂华东交通大学 电气学院 陈剑云  时间:2005-04-27 18:01  来源:本站原创

摘 要: 本文结合一个具体的CAN总线工业控制系统,先分析了CAN卡的功能和体系结构,接着分析了工控机的ISA总线和CAN卡的接口电路设计方法以及CAN总线的收发电路。给出了一个完整远动系统RTU的CAN总线适配卡的硬件电路设计方法。
关键词:远动系统;RTU;工控机;CAN总线适配卡;接口电路

引言
远动系统是指控制设备远距离控制被控对象,以及两者交换信息的一种控制系统。当前的远动系统均是数据采集与监视控制系统,它是以计算机为核心,综合利用计算机技术、通信技术、控制技术等以完成遥控、遥测、遥信、遥调的一种控制系统。远动系统可分为三大部分:调度端、通道、远方终端单元(RTU)。 RTU主要是接受调度端的命令去控制现场的各个被控对象,以及对现场被控对象进行数据监测并将数据送往调度端。图1是一个基于CAN总线的RTU体系结构图。 本文要讨论的是插在工控机ISA槽中的CAN适配卡的硬件设计技术。

CAN适配卡的功能和结构
智能适配卡插在工控机的ISA扩展槽中,它位于工控机和CAN总线节点之间,本身也是CAN总线系统的一个节点机(主节点)。主要功能是接收工控机的命令,下发给下位CAN总线节点机(RTU的各个功能模块),并从下位CAN节点机接收现场数据传送给工控机。适配卡的结构见图2所示。

工控机的ISA总线和CAN适配卡的接口电路设计
要实现PC机和CAN控制器之间的数据传送,必须在PC机和适配卡上的MPU之间建立起双向的数据交换通道。通过ISA总线实现单片机系统与主机之间交换数据有以下两种实现方法:一是静态数据传送。采用并行接口器件8255等,或锁存器如74LS373等构成一字节深度的FIFO。这种方法较为简单,但一次传输的数据量小,只适应数据量小、速度要求不高的场合;二是共用单片机系统外部数据存储器。此时可直接采用集成双端口RAM或通用RAM,加上一些控制逻辑组成双口RAM电路。本设计选择后者。
目前市场上常见的双口RAM有IDT公司和Cypress公司的产品,本卡选用2K×8位的IDT7132。
MCU和双口RAM的接口电路设计
将IDT7132的右侧信号按普通接法和MCU相接,具体电路见图3所示。当MCU发出读/写IDT7132的命令时,锁存IDT7132右边的/BUSY-R信号,将此信号送到P10口,然后读P10口,若为1,则表示MCU刚才读IDT7132不存在冲突,读/写有效;若为0,则说明MCU刚才对IDT7132的读/写存在冲突,本次读/写无效,MCU要重新操作。
ISA总线和双口RAM的接口电路设计
PC机对接口的寻址方式有存储器寻址方式和I/O寻址方式。存储器寻址方式可以有较大的地址空间,可达32K甚至64K,且指令丰富,可以实现快速传送。但由于其选在高端内存块UMB (640K~1M范围),而UMB内存分配已比较拥挤,选择不当就会引起地址冲突导致死机。I/O寻址方式使用专门的指令,指令明确,但一次只能传送一个字节或字。这里采用I/O寻址方式,使用的控制线为和。
PC机的I/O寻址范围为64K,有16根地址线。但是主板和OEM生产商生产的I/O扩展卡通常只对地址线A0~A9译码,即只定义了其中的1K寻址空间。当I/O指令的地址高6位不同而低10位相同时会选中同一个I/O地址。且PC机内部由于软盘驱动器、串行口、并行口等用掉了一些空间,剩下的空间并不连续,且远远不足本卡双口RAM所需要的2K地址空间,因此必须通过高6位地址来扩展地址空间。扩展地址的方法如图4所示。将A15~A0和A10L~A0L非对应连接,将可以任意编址的A15~A10和A4~A0 共11根地址线组成2K的地址空间,与IDT7132的A0L~A10L一一相连,将剩下的A9~A5作为基地址码,经数据比较器74LS688和地址拨码开关的输入值比较。相等时比较器74LS688的输出有效,也即IDT7132左边的片选端有效。从而可灵活地选择空闲的I/O端口地址。这样构成的地址空间在PC机中是不连续的,各个小段相互隔开。当PC机端访问双口RAM时,应先将物理地址换码,以得到正确的I/O地址。设双口RAM地址为X,则PC机端地址为400H×N1+340H+N2。式中N1=X/20H(取整),N2=X%20H(求余)。一般330H~360H是用户可以自由使用的I/O空间。这里所加的340H是为了避免与计算机系统占用的资源相冲突。这时PC机端空闲的A9~A5=11010,将拨码开关的第一和第三个开关拔到地端。下面对换码公式进行推导。
由双口RAM的地址X求出ISA总线上I/O地址的步骤如下:
首先,求出双口RAM的低5位(A4~A0)和高6位(A10~A5);将X÷25=32=20H,其余数为低5位代表的值,其商为高6位代表的值。
然后,将双口RAM的低5位拼接到ISA地址的低5位上,将双口RAM的高6位拼接到ISA地址的高6位上(A15~A10),再加上拨码开关设定的A9A8A7A6A5,就拼接成16位的I/O地址。
最后,若将A9A8A7A6A5指定为11010,则它表示的值是11010,00000B=11,0100,0000B=340H;高6位代表的值是N1×210=400H×N1;低5位还是N2。
所以得出结论,若双口RAM的地址为X,则换到ISA总线的地址为:400H×N1+340H+N2 (1)
其中N1=X/20H(取整),N2=X%20H(求余)
参照地址变换公式(1),当要在ISA总线侧按I/O方式写双口RAM的某个单元时,首先要变换成ISA侧的I/O地址,这样在ISA总线侧就可以按写I/O口的方式操纵双口RAM了。

CAN总线收发电路
图5是一个具体的收发电路。CAN协议控制器用的是SJA1000,光耦用高速6N137,收发器用82C250。设计时要注意以下几点。
首先,要根据时钟分频寄存器CDR中CBP的设置而决定RX1的接法:
CBP=1(比较器旁路激活),RX1接地;CBP=0,RX1端接参考电压。
其次,要注意斜率电阻的选取,本设计选47KW。
最后,CAN总线两端要接120W的平衡电阻。

结语
本文讨论了CAN总线适配卡的主要硬件电路的设计方法,并且经过了实际产品验证。看门狗电路和复位电路采用MAX706芯片。CAN总线适配卡的监控程序采用C51编写,和下位CAN节点机的通信采用DeviceNet协议。CAN总线适配卡从双口RAM读取工控机的命令并且将下位机的数据送双口RAM供工控机读取。工控机采用自己定制的Linux系统,同时还为该CAN卡编制了Linux下的驱动程序。■

参考文献
1 钱清泉. 电气化铁道微机监控技术.北京:中国铁道出版社,2000
2 邬宽明. CAN总线原理和应用系统设计.北京:北京航空航天大学出版社,2001
3 Philips Corporation. Stand-alone CAN Controller SJA1000 datasheet .2000
4 Philips Corporation. Stand-alone CAN Controller SJA1000 application .2000
5Philips Corporation. PCA82C250 Product specification. 2000,1

相关推荐

浅析人机界面市场发展现状及未来趋势

人机界面  工控机  2011-03-11

研华推出首款Intel® Core™ i7无风扇嵌入式工控机

工控机  研华  Core  嵌入式  2010-04-30

车载电源控制和电源设计标准

数控机床系统中的嵌入式工控机

NORCO工控机在中石化加油IC卡工程中的应用

NORCO  工控机  IC  2009-06-07

ADS8323与高速FIFO接口电路的CPLD实现

ADS8323  高速FIFO  接口电路  CPLD  2009-05-24
在线研讨会
焦点