引言
随着科学技术水平的提高,智能仪器仪表或微机装置等智能电子设备(IED)已广泛应用于工业现场。
网络打印服务器(network print server)可为智能电子设备提供可靠的共享打印服务,节约系统成本。CAN总线是一种支持分布或实时控制的现场总线,具有高可靠性、实时性和灵活性,广泛应用于汽车控制、工业控制、机器人、家用电器等领域。CAN总线已成为工业现场首选现场总线之一。设计的网络打印服务器采用CAN总线作为数据通讯网络,每个网络打印服务器可与几十甚至上百个智能电子设备构成总线型网络,采用屏蔽双绞线作为通讯介质减少节点干扰。通讯速率在10 Kb/s~1 Mb/s范围内可选。
2 系统硬件设计
网络打印服务器的核心处理器采用PHILIPS公司的LPC2129。LPC2129是一款支持实时仿真和跟踪的16/32位ARM7TDMI-S CPU“微控制器”,带有256 KB的嵌入式高速Flash存储器,16 KB支持8/16/32位访问的静态RAM,128位宽度的存储器接口和独特的加速结构,可使32位代码在最大时钟速率下运行。而对代码有严格控制要求的应用则可使用16位Thumb模式。LPC2129采用64引脚封装,低功耗,内带有46个GPIO,2个32位定时器,2路CAN控制器,多路串行接口,9路外部中断。选取该处理器主要考虑其内部资源丰富,无需扩展存储器、CAN控制器,且性能优异,抗干扰能力强;价格低廉,具有极高的性价比。
系统硬件电路设计框图如图2所示。调试接口直接与LPC2129连接,用于调试开发;由MAX232-EPE等器件构成的串口电路用于程序下载;看门狗负责监控程序是否出现异常或跑飞,若出现故障时,看门狗使整个系统复位;而电源电路由SP220-15D5D和DUP75-05S05等器件构成,为网络打印服务器提供工作电源。
网络打印机服务器的核心电路是CAN及打印机接口电路,如图3所示。打印机接口电路部分由光耦PS2701和电容电阻等元件构成,LPC2129的P0和P1端口引脚经该接口电路与针式打印机连接,实现打印功能;CAN总线接口电路由6N137和PCA82-C250等器件构成,LPC2129内部CAN控制器完成CAN协议处理,PCA82-C250可提高节点的驱动能力。为了增强CAN总线节点的抗干扰能力,LPC2129的CNTX和CNRX不能直接与PCA82C250的TXD和RXD相连,应经高速光耦6N137后再与PCA82C250相连,从而实现总线上各CAN节点间的电气隔离。高速光耦电路中的电源VCC和VDD必须完全隔离,采用隔离型电源模块DUP75-05S05实现隔离。PCA82C250与CAN总线的接口部分也采取了抗干扰措施,CANH和CANL与地之间分别并联一只1 000 pF/2 kV的电容,用于滤除总线上的高频干扰,并具有一定的抗电磁辐射性能。另外,在CAN总线接人端与地之间连接一个瞬态电压抑制二极管(TVS),保护PCA82C250免受ESD和EMI浪涌脉冲。通讯信号传输到导线的端点时产生反射,并干扰正常信号传输,在PCA82C250的两根输出数据线之间接一120 Ω的终端电阻可抑制反射信号。若忽略该终端电阻,则大大降低通讯的抗干扰性和可靠性,甚至导致无法通讯。
3 系统软件设计
网络打印服务器与各个智能电子设备之间采用主从方式,通过查询完成工作。软件主要由网络打印服务主程序、CAN驱动程序、打印接口驱动程序、定时器中断程序以及LPC2129启动程序组成。
LPC2129启动程序采用汇编语言编写,主要包括异常中断向量表、堆栈初始化、目标板初始化、存储系统初始化等。定时器中断程序是定时器0的中断处理程序,用于完成各种定时或延时功能,为打印和CAN通讯提供必要支持。打印接口驱动程序包括打印初始化和发送打印数据。打印初始化程序用于设置ARM的P0和P1端口部分引脚的工作方式,初始化打印机。发送打印数据程序首先检测打印机是否忙,若打印机忙则等待,若空闲则发送要打印的数据。然后选通打印机,最后回收打印机,即不选通并将数据寄存器置位。
CAN驱动程序主要包括初始化CAN控制器、发送报文和接收报文。初始化CAN控制器主要包括设置相应引脚功能、工作方式、波特率参数以及出错警告界限等。
LPC2129中有全局验收滤波器,该模块可为CAN控制器提供接收标识符的查询功能(验收滤波)。另外,验收滤波器为选择的标准标识符提供了FulICAN-style自动接收功能。在初始化CAN控制器中将验收滤波器设置为旁路,也可以根据实际需要进行设置,让其参与接收滤波的工作,有助于改善节点接收信息的选择性。完成初始化CAN控制器后,即可发送和接收报文信息。
发送报文驱动程序主要实现报文发送,发送报文流程如图4所示。发送报文时。将待发送的数据打包成符合CAN发送帧格式的数据送人CAN控制器的发送缓存区。在向发送缓冲区送报文之前,必须判断发送缓冲区是否空闲。若发送缓冲区繁忙则返回失败;若空闲则将数据写人发送缓冲区,写入完成后再判断写入是否成功,写入成功后启动发送命令,发送缓冲区中的数据,然后返回状态标志。
接收驱动程序主要完成报文接收以及其CAN异常情况处理。CAN发送报文流程如图5所示。接收报文驱动程序相对复杂些,因为在处理接收报文的过程中,同时也要处理总线关闭、错误报警、接收溢出等情况。该系统设计采片j中断接收方式获得较高的实时性,从而提高网络打印服务器性能。初始化CAN控制器必须使能接收中断。中断服务子程序读取CANICR控制器,判断是否为接收中断标志,若是则读取接收缓冲区数据;若是CAN异常情况,则进行相应处理。
在LPC2129启动程序后执行网络打印服务主程序。首先初始化,包括初始化看门狗、打印机、CAN控制器、定时器0及使能中断等;再与智能电子设备握手连接,然后打印首次握手成功的IED基本信息;最后执行无限循环程序代码。在这段程序中判断是否有定时器超时。若查询IED定时超时,则查询各个IED是否要打印,若无打印需求则进入下一循环状态;若有打印需求则申请数据信息完成打印。如果重新握手定时超时,则与IED设备重新握手连接,检测中途接人的智能电子设备可以满足系统需求,重新握手完成后执行无限循环程序。
在ADS1.2环境及EasyJTAG仿真器中进行软件调试。程序代码在ADS1.2环境下编译、连接后生成可执行文件,通过EasyJTAG仿真器仿真调试,最后写入Flash存储器中。经过现场调试使用,基于CAN总线的网络打印服务器能够可靠地完成网络打印功能。 |