摄像机在煤矿监控系统中使用广泛,尤其对一些重要场所更需要在集控室远程操控摄像机实现移动、调焦等功能。对摄像机的控制使用RS一485总线的较多,文献[1]以AT89C52单片机为控制器设计了构建于RS.485总线基础上的矿用摄像机工作台控制系统。在现场使用这种方法进行控制的过程中,笔者发现:当控制距离较远(超出1 km)以及挂接控制器较 (在某矿发电厂实测大于36台)时会出现部分摄像机失控、误动现象,其中频繁地误动还会导致工作台的故障,给工作带来不便。为解决以上问题,本文以嵌入式处理器LPC2129为主控芯片设计了矿用摄像机控制器,并通过CAN(contoller area network)总线实现了远程控制。CAN总线属于现场总线的一种,它具有可靠性 高、通信距离远、连线简单、性价比高等特点。
CAN采用非破坏总线仲裁技术,从而大大节省了总线冲突仲裁时间。尤其是在网络负载很重的情况下,也不会出 现网络瘫痪情况(以太网则可能)。CAN的通信距离最远可达10 km(速率5 kbit/s以下时) ,因此煤矿 远程控制很适合采用CAN总线。另外CAN总线可以使用双绞线作为通信介质,这使得原有RS-485网络 的控制系统不用重新布线就可以升级为CAN总线控制系统,可大大节约成本。
当前嵌入式系统技术成熟、应用广泛。这主要得益于它的处理器将通用CPU中许多由板卡完成的任务精简到芯片内部,在保证特定功能的前提下使系统设计趋于小型化,便于系统集成。LPC2129是飞利浦公司生产的基于16/32位ARM7TDMI—S内核的嵌入式处理器。其内部具有256 KB的Flash、16 KB的 RAM、2路CAN控制器。其他外围接口也很丰富,这样无需外扩存储器就可以移植实时操作系统。因此,本文选用LPC2129作为主控芯片,另外使用嵌入式系统所设计的控制器尺寸小,从而使其可方便地嵌入到防爆工作台。
1 控制系统工作原理
控制系统如图1所示,监控上位机通过RS-232串口与1/S.232-CAN转接器相连,转接器与控制器构成CAN总线网络,控制器直接控制摄像机和工作台。系统控制原理如下:上位机通过鼠标及键盘接收特定摄像机控制动作命令,通过软件转换为摄像机控制器地址及控制命令,然后打包为控制字,再通过串口发送给转接器。转接器按协议将控制字转换为CAN总线帧格式并将帧发送到总线上。地址相符的控制器接收该帧数据,根据控制命令产生控制信号,控制摄像机及工作台完成相关动作。
图1 控制系统
2 控制系统电路设计
控制系统的电路设计按功能分为3个部分:控制器电路、CAN总线电路、转接器电路。
2.1 控制器电路
考虑到本系统的被控对象是摄像机和工作台,而摄像机选用索尼FCB系列的摄像模块,该模块支持RS-232串M通信,所以控制器电路设计如图2上部所示。图中利用LPC2129的串口0(P0.0、P0.1)经电平转换芯片ST3232构成控制器串口,外接摄像机模块,完成对摄像机的控制。由于本设计没有采用传统的拨码开关设定控制器地址,地址的设定要通过上位机来完成,因此通过LPC2129的串口1(P0.8、P0.9)完成与上位机的通信,实现地址的写入。对工作台的控制实际上是控制工作台的两个驱动电机,使用LPC2129的PWM接口P0.7、P0.21以及通用I/O接口P1.17、P1.19经光电隔离后进行驱动,控制电机的转动,从而带动工作台的转动。
图2 电路原理图
2.2 CAN总线电路
LPC2129内部集成了CAN控制器,使用它无需外接单独的CAN芯片就可以方便地构成CAN总线。电路如图2下部所示,由LPC2129的CAN引脚P0.23、P0.24外挂收发器模块CTM8250接入CAN总线系统。CTM8250是周立功公司生产的一款带隔离的通用CAN收发器芯片,该芯片内部集成了所有必需的CAN隔离及CAN收发器件,芯片的主要功能是将CAN控制器的逻辑电平转换为CAN总线的差分电平并且具有DC 2500 V的隔离功能。此处使用该模块是为了保证在煤矿现场总线工作的稳定性和可靠性。与RS-485总线类似,在总线的最远端要串接120Ω电阻R20a为防止掉电后控制器CAN地址丢失,系统外扩了一片I2C总线的非易失性存储器24C04,I2C总线上的电阻R4、R5的作用是进行电位上拉。
2.3 转接器电路
转接器的作用是连接上位机与CAN总线。由图2可以看出,只需将对摄像机和工作台的控制部分去掉就可以完成此功能。为简化没计,本文没有使用其他处理器,转接器仍然利用LPC2129的串口1完成与上位机的通信,并通过CAN引脚外挂收发器模块CTM8250完成CAN总线通信。在转接器里也外扩了24C04,主要用于存储控制器的地址映射表。
3 控制协议
控制系统中上位机要首先与转接器通信,传送控制命令,这部分需要一个串口通信协议。通信时采用两次握手的方法,地址使用逻辑地址(详见控制器地址配置部分),数据的格式直接采用后面的CAN数据格式,在数据之后加一个字节的校验和作为通信校验。鉴于串口通信的文献较多,此处不再赘述。
由于转接器里的控制命令要通过CAN总线远距离传输,而CAN V2.0B规范只规定了底层协议标准,并没有对高层协议做统一规定,因此高层的控制协议需要单独开发。CAN的报文由4个不同的帧类型表示和控制,即数据帧、远程帧、错误帧、过载帧。鉴于摄像机控制系统中控制命令不多,故本文采用数据帧的标准格式发送控制命令,这样做的优点是可以减少网络传输的数据量,提高控制系统响应的实时性。协议具体设置如图3所示,数据帧包括帧起始、仲裁域、控制域、数据域、CRC域、应答域以及帧结束共7个部分。其中帧起始、CRC域、应答域、帧结束4个部分在文献[5]中已经详细规定,此处从略。
图3 CAN控制数据报文帧格式图
本协议以标准格式的11位标识符(ID10一ID0)为控制器、转接器地址,由于CAN协议规定IDIO—ID4必须不能全为隐性1,因此有效地地址数为2032个。根据CAN规定RTR位在数据帧格式里必须为显性0,标识符和RTR位构成数据帧的仲裁域。需要指出的是由于仲裁域决定数据在总线上传输时的优先级,因此在设置时应将重要场所的摄像机配置为高优先级地址。控制域的r位是两位保留位,后面的DLC3一DLC0用于确定数据域的长度,本协议所需数据域为8字节,故控制域取值为:DLC3一DLC0=1000。
所有控制命令全部在数据域的8个字节中设置,其中最后1个字节Byte0用于决定发送的是控制器更新地址还是控制字节,当其取值O*O1时表示发送的是更新地址,且其前面的Bytel~Byte2的高1 1位表示逻辑地址,Byte3-Byte4的高11位表示原地址,Byte5-Byte6的高11位表示要更新的地址;当字节Byte0取值0x02时表示其前面的6个字节Bytel—Byte6是控制字节,控制字节的详细设置如图3下部所示。
① 字节Bytel。第7位控制摄像机电源开关,取值0控制电源开,取值1控制电源关闭;第6位控制摄像机缩放,取值0控制摄像机进行缩放,取值1维持原状不缩放且第0~5位的取值无意义;第5位表示在进行缩放时是缩还是放,0则缩,1则放;第4位取值0表示按标准格式缩放,取值1表示按可变格式缩放,且前面的第0~3位表示可变格式的控制,取值范围由低到高分8级,以二进制数0~7表示,等于8时表示按步进格式缩放,取其他值无意义。
②字节Byte2。用来控制摄像机的调焦,设置与Bytel相似,从略。
③字节Byte3。第7位是控制工作台移动的开关,取值0为开即进行移动,取值1则关闭工作台移动;第6—3位表示工作台移动的方向,取值0表示移动方向有效,1表示无效。
④字节Byte4的第7~4共4位控制工作台左右移动速度,第3—0共4位控制工作台上下移动速度,分9个等级,以二进制数0—8表示,取其他值无意义。需要说明的是:控制字节的Byte2第7位、Byte3低3位以及Byte5、Byte6在协议中没有使用,编程时全部取值1,Byte5、Byte6留作协议进行下一步拓展时使用。虽然CRC域可以实现校验,但是为了确保通信的可靠性,本协议仍以Byte7作校验码,校验码的计算方法为取Byte0~Byte6累加和的低8位。另外需要说明的是:由于工作台的控制采用PWM调速,所以分了4个方向、9个速度等级,由Byte4控制,上下、左右的速度等级可以取不同值对应不同的速度。
在本文中摄像模块的控制要使用SONY的VISCA协议,因此还要在控制器中设计CAN控制协议到VIS—CA协议的转换。VISCA协议是公开的,此处只需将控制命令转换为VISCA协议的控制码通过串口发送即可。
4 软件设计
控制系统软件包括上位机软件、转接器软件以及控制器软件。其中,上位机软件主要是设计控制界面,以及与转接器的串口通信。在此可基于微软的VS2008平台用C#语言开发上位机软件,该平台提供了串口的控件,程序编写相对简单,文献也较多,限于篇幅不再详述。以下重点说明控制器地址配置与修改方法以及控制器软件设计。
4.1 控制器地址配置与修改
当前市场上的监控摄像机控制器(解码器)地址设定都是采用DIP开关来完成的。这在实际煤矿现场使用时很不方便,若要改变地址就必须到现场去手动没定,而煤矿中有许多地方人员由于会带来安全问题不便出入。基于此,本文设计了地址可实时在上位机直接修改的方案,彻底抛掉了DIP开关。
方案采用了地址映射的方法。将摄像机地理位置与监控界面对应的地址称为逻辑地址,摄像机控制器的CAN标识符对应的地址称为物理地址。在上位机程序中建立一张逻辑地址与物理地址的对应表,并将其映射到转接器的程序地址表里,转接器根据表的状态变化实时修改控制器的物理地址。这样控制命令采用物理地址进行传输就不会影响上位机对摄像机地理位置的判断,只是控制器使用前必须在上位机设定一次逻辑地址与物理地址,修改时使用图3所示的控制器更新地址命令即可完成。这种方案的另一个优点就是不会引起手动设定时的地址冲突(可编写程序在设定地址前检查有无冲突)。
4.2 控制器软件设计
控制器软件由主程序、子程序和中断程序组成。主程序主要完成处理器的初始化。初始化内容主要包括:将P0.0、P0.1、P0.8、P0.9设置为串口功能,串口0工作为查询模式,串口1工作为中断模式,并设置其中断优先级及通信波特率,使能相应中断位;设置P0.2、P0.3为I C总线功能,禁止其中断功能;设置P0.7、P0.21为PWM功能,置P1.17、P1.19为通用I/O口功能;设置P0.23、P0.24为CAN控制器功能,工作为中断方式,读取存储在24C04中的控制器物理地址,根据该地址设置CAN控制器的滤波寄存器,使能CAN中断控制位;开全局中断控制;初始化完毕后主程序即进入循环等待过程。
子程序主要有:24C04读写子程序、摄像机模块控制命令发送子程序(该程序同时完成CAN控制命令到VISCA协议的转换)、工作台控制子程序、控制器地址修改子程序。
中断程序只有串口1中断和CAN中断。串口1开始通信进入中断后要先进行两次握手,然后接收4字节的地址值,前2个字节的高11位是逻辑地址,后2个字节的高11位是物理地址。再接收1字节的校验码,然后按接收的数据计算校验码是否正确,若正确则调用24C04读写子程序写入地址信息,若不正确返回发送错误信息,写入24C04时,若发生错误,返回写入错误信息,否则,返回写入正确信息。通信过程中若发生超时,则返回超时信息。CAN通信进入中断后先读取接收缓冲区的CAN报文,计算校验码。若校验码不正确则发送错误帧后返回;若正确则先调用摄像机模块控制命令发送子程序控制摄像机动作,再调用工作台控制子程序完成工作台控制,然后返回。
5 结束语
本文设计的矿用摄像机CAN总线远程控制系统经试验测试运行稳定可靠,无摄像机和工作台失控、误动现象,适合在煤矿现场使用。虽然是控制的SONY摄像模块,但电路在后端改造后也可控制其他摄像模块。系统还可以在错误检测及操作系统移植方面进一步改进。该控制系统是煤矿现场总线远程控制的典型应用。