引言
自动抄表系统主要由主站系统、数据传输通道、数据集中器、数据采集器构成,其中数据集中器不仅要实现通信协议的转换,还要完成命令下达、数据存储、数据上传等功能,是个似乎不起眼但技术含量很高、现场服务量大的重要环节。
1 系统组成
自动抄表系统结构如图1 所示。数据集中器处于抄表系统的中间层,是抄表系统的中枢,既完成对下级采集器的数据收集,也能够响应主站指令,完成数据通信任务。
数据集中器与数据采集器采用CAN 总线的通信方式。
CAN 总线相比其它的数据通信方式具有突出的可靠性、实时性和灵活性。数据集中器还可通过红外方式与手持设备通信,用于本地抄表及现场设备调试与配置。
2 数据集中器的硬件设计
数据集中器采用模块化设计,根据其功能分为不同的模块,它的结构框图如图2 所示:
图2 数据集中器的硬件结构图
数据集中器使用了uPD78F0881 单片机,它是NEC 公司推出一种高性能价格比8 位单片机,其基本特性如下:1.8~5.5V 的宽工作电压范围;最低1A 的工作电流(停止模式下);内置上电清零(POC)电路、低电压检测器(LVI)和看门狗定时器,合理使用这些功能可有效提高系统可靠性;内置CAN 总线控制器,简化了CAN 总线的电路设计同时降低了成本;2 通道串行接口、8 路外部中断、2 个16 位定时/计数器、4 个8 位定时/计数器。
下面就集中器中一些主要电路的设计作简要介绍。
2.1 CAN 总线电路设计
图3 CAN 总线节点硬件电路原理图
在本自动抄表系统中,数据集中器与数据采集器是通过CAN 总线通信的,设计了如图3 所示的CAN 总线接口电路。从图中可以看出,电路主要由3 部分组成:单片机uPD78F0881、CAN 总线驱动器TJA1040、高速光电耦合器6N137 和光电耦合器PS2501.
TJA1040 的STB 经光耦2501 隔离后连接到uPD78F0881的P17.P17 为1 时可使TJA1040 处于待机模式,在该模式下可大大降低功耗,此时TJA1040 的接收与发送器都会关闭,同时监视总线状态,一旦检测到显性位则将RXD 置0.而RXD 的变化会使uPD78F0881 将P17 置0,这就使TJA1040 重新工作在了正常模式。
为增强CAN 总线节点的抗干扰能力,uPD78F0881 的CTXD 和CRXD 是通过高速光耦6N137 与TJA1040 相连的,且光耦两侧电路通过采用小功率电源隔离模块实现了电源的完全隔离,很好的实现了总线上各CAN 节点间的电气隔离,提高了节点的稳定性和安全性。
TJA1040 的CANH 和CANL 引脚各自通过一个0.2A 的自恢复保险与CAN 总线相连,这样可保护TJA1040 免受过流冲击。CANH 和CANL 与地之间各自接了一个30pF 的小电容及一个瞬态电压抑制二极管(TVS)。小电容可以起到滤除总线上的高频干扰和一定的防电磁辐射的能力。瞬态电压抑制二极管可保护TJA1040 免受瞬变干扰和瞬态高能量的冲击。
2.2 红外通信电路设计
红外通信电路由发射电路与接收电路组成,如图4 所示。
其中SE303 是用于发射红外线的二极管,波长为940 nm ,TL0038 是一体化红外接收器。
图4 红外数据通信电路原理图
uPD78F0881 的TXD0 发送串行数据信号,并通过三极管驱动SE303.TO00 输出38kHz 的脉冲序列作为载波信号,通过三极管对红外信号进行调制。为增强红外发射电路的性能,利用单片机输出的脉冲信号占空比可调的特性,降低信号的占空比来提高发射电流幅度。
TL0038 将接收到的38kHz 红外光调制信号解调为二进制数字信号,提供给单片机处理。接收器的数据输出端接到uPD78F0881 的串行数据接收端RXD0.
3 数据集中器的软件设计
程序中设置了一个单片机忙标志位,单片机忙时置位该标志位,空闲时被复位。正常模式时主程序中会不断检测该标志位,一旦检测到该标志位被复位即将单片机转入待机模式来降低功耗。主程序流程图如图5 所示。
软件功能的实现由各个子程序完成。主要的子程序有CAN总线通信子程序、红外通信子程序、GPRS 通信子程序、存储器操作子程序、实时时钟操作子程序。这里只介绍CAN 总线通信子程序,它由初始化程序、数据发送程序及数据接收程序组成。
(1)初始化程序。
uPD78F0881 中集成了CAN 控制器,其中有16 个长度为8字节的数据缓冲区,这些数据缓冲区既可单独使用又可联合使用,大大提高了使用的灵活性。初始化程序主要包括对控制寄存器、总线传输速率寄存器、中断使能寄存器及各数据缓冲区的控制寄存器、验收码寄存器和验收屏蔽寄存器等的设置。
(2)数据发送程序。
数据的发送是由CAN 总线控制器自动完成的,用户只需将待发送数据送入数据缓冲区,再启动发送命令即可。通过查询相应的标志位即可得知发送状态。
(3)数据接收程序。
数据的接收采用中断方式,接收程序在CAN 控制器产生接收中断后,从数据缓冲区中读取接收到的数据,再进行相应处理即可。
4 通信协议设计
4.1 上位机与数据集中器通信帧格式
上位机与数据集中器之间为主从结构的半双工通信方式。
上位机为主站,数据集中器为从站。每个数据集中器均有各自的地址。通信链路的建立与解除均由主站来控制。协议中规定了三种帧格式,分别是:命令帧、广播帧及应答帧。
(1)命令帧。
命令帧由上位机发送给数据集中器,由地址、命令、数据和校验码组成。
地址长2 字节,表明将接收该帧的数据集中器。命令长1字节,表示该帧的功能。数据长1~9 字节,其内容随命令帧的功能改变。校验码长2 字节,为从帧起始到校验码之前的所有字节的CRC16 校验码,用于数据校验。
(2)广播帧。
广播帧也是由上位机发出的,它用来向数据集中器发送校时及数据冻结命令。其格式中不含地址域,其它与命令帧相同。
(3)应答帧。
应答帧是数据集中器对上位机发来的命令的响应,格式与命令帧相同,地址中为数据集中器自身地址。
4.2 数据集中器与数据采集器通信帧格式
CAN 总线的技术规范只定义了数据链路层和物理层,因此要实现系统的通信就需要根据实际情况单独设计应用层的通信协议。
协议中有命令帧、应答帧、数据帧和报警帧四种帧格式。其中命令帧由数据集中器发出,含有一个数据采集器识别地址。
应答帧是采集器对集中器所发命令的响应。当集中器发出的地址与某个采集器地址一致时,该采集器会发送应答帧。由于CAN 总线采用的是短帧结构,每帧数据最多8 字节,当采集器要上报的数据大于8 字节时就要在应答帧之后再传送数据帧直到所有数据发送完成。报警帧是采集器出现断线、数据存储出错等故障时发出的报警信号。
(1)命令帧。
命令帧由地址、命令、数据组成。由于CAN 总线本身具有15 位CRC 校验,其校验强度完全可以满足本系统对通信可靠性的要求,故没有设置校验部分。各个部分的具体含义与约定如下:1)地址表明要与哪一个采集器通信,每个采集器唯一对应一个地址。地址为1 个字节,可使用标识符ID.0~ID.7 记录此地址,这样就可通过CAN 控制器的设置由硬件自动完成地址过滤。2)命令为1 个字节,用于指定具体的命令内容。不同的内容对应不同的命令代码。3)数据部分长度一般为1~8 字节。
(2)应答帧。
应答帧格式基本与命令帧格式相同,只不过其地址部分是自身地址,而不是目的地址。
(3)数据帧。
该帧是紧跟在某些应答帧之后发送的,因此只有地址和数据两部分。
(4)报警帧。
报警帧格式与应答帧格式相同,它的数据部分为1 个字节,表明了故障类型。
4.3 差错控制
为保证数据传输的可靠性,建立了上位机与数据集中器之间、数据集中器与数据采集器之间的差错控制。
当上位机或数据集中器发出命令帧后,在规定时间内如果未收到数据集中器或数据采集器的应答帧,即认为传输出错,并重发先前的命令帧。重发最多3 次,当重发3 次仍无法收到应答帧时,发出相应的提示信息。
5 结束语
以上述方式设计的数据集中器具有低功耗、可靠性高和成本低廉的特点,特别适合作为自动抄表系统中数据集中器设计的一种解决方案被推广和应用。在实验条件下对所设计的系统进行测试,测试表明所设计的系统运行平稳、功耗低,能够可靠地完成抄表系统数据采集需求,达到了设计要求,具有很好的应用前景。