基金项目:河北省高等教育学会2017年度高等教育科学研究课题“监控设备的仿真设计及其在教学中的应用(GJXH2017-176)”
摘要:文分析了监控系统中常用的云台控制器与计算机之间的通信协议,用软件编写了云台控制器的仿真器,实现了PELCO-D云台控制器主要的通信命令,用云台控制软件测试成功。然后用常用编程软件编写了监控程序,成功实现了计算机与云台仿真器的通信过程,该仿真器可用于工业监控课程实验教学中。
关键词:PELCO-D协议;云台;仿真;监控
引言
传统的监控教学实验中,采用实际的工业监控设备和实验台,需采购置大量的、昂贵的硬件设备,而且设备维护工作量也非常大[1]。常用的监控设备有各类主控台、报警器、监控矩阵和云台、摄像机解码器(也称为云台、摄像机控制器以下简称为控制器)等。这些监控设备都是在工业监控系统中使用的,其功能强、可靠性高,其价格昂贵。在实验教学中,为了降低监控系统学习成本,主控台采用电脑,云台控制器采用软件仿真器来实现,完成监控系统的实验教学中监控设备的仿真学习。PELCO (派尔高)的监控器材在我国有很广泛的应用,国内有大量 PELCO产品及其兼容产品。PELCO设备有PELCO-D和PELCO-P两种传输控制协议,其通信格式基本相同,而且简单、可靠,实现方便等特点,本文模拟PELCO公司的PELCO-D控制器的通信协议设计了云台仿真器。在监控实验教学中,有了云台控制仿真器,可以采用目前国内流行的组态软件或通用编程软件如VB、VC、C#等来学习监控软件设计。
本文介绍了PELCO-D控制器与计算机通信的协议,分析了PELCO-D控制器与计算机的通信过程,用软件实现了PELCO-D控制器的通信协议,并用通用软件编写了监控软件进行了通信测试,实现了仿真器与监控软件的通信。
1 PELCO-D协议
监控系统中控制台或计算机通过RS-485总线连接监控矩阵、云台,采用串行通信方式,其通信参数如下:
1位起始位、8位数据、1位停止位,无效验位。波特率:2400B/S。
监控系统中控制台或电脑控制监控矩阵、云台的控制命令采用PELCO-D协议,包括控制命令和停止命令两种类型,格式如下:
控制命令格式由7个字节构成,均以2位16进制数后加H表示,如ffH表示16进制的255。
同步码,始终为FFH;
地址码,也就是摄像头的地址号,范围在00H~FFH之间,是在安装控制器时手动设置的;
命令字因为功能较多,分为命令字1和命令字2,其中的位决定执行具体的操作,分别控制云台上、下、左、右转动或控制摄像机镜头视角、焦距和光圈的变化,具体含义如下:
其中:Sence码与Bit4和Bit3有关。在Bit4和Bit3为1的情况下,如果Sence码为1,则命令就是自动扫描和和摄像机打开;如果Sence码为0,则命令就是手动扫描和摄像机关闭。可以看到命令字中的位为1时,按表中说明动作,为0则无效。
数据字1表示镜头左右平移的速度,数值从00H(停止)到3FH(高速),另外还有一个值是$FF,表示最高速。
数据字2表示镜头上下移动的速度,数值从00H(停止)到3FH(最高速)。第5、6个字节表示数据码,用于指定云台的水平、垂直方向移动速度。
校验码,它是由第2、3、4、5、6个字节数据之和与100H取模获得的。
此外,在执行某一命令后,应执行停止命令,否则命令执行的动作会一直执行。例如,将摄像头向上移动。如果不发送停止命令,摄像头就会一直向上移动。在Pelco-D协议的停止命令中,第一个字节为FFH,第2个字节为地址码,第3、4、5、6个字节为00,第7个字节为第2个字节数据与100H的模。
PELCO-D协议还有一些扩展命令,可对设备进行一些高级控制,但这些应用并不常见,可参考资料[2]。
只要知道了控制命令,就可以通过向串口发送这些命令来控制云台了。
这里以常见的PELCO-D协议为例进行分析,若地址码01为例,常用的云台控制码如下:
上:ff,01,00,08,00,ff,08
下:ff,01,00,10,00,ff,10
左:ff,01,00,04,ff,00,04
右:ff,01,00,02,ff,00,02
停:ff,01,00,00,00,00,01
从上例中可以看到,控制器与控制台通信采用二进制数据,控制台采用查询应答方式与控制器构成主从通信。通信时由控制台主动发出查询请求命令,控制器处于被查询的应答执行状态,当收到与自己地址相符且正确的控制台命令后,对其进行处理,执行相应动作。
2 仿真器软件设计
本文采用Visual Basic编程软件实现云台控制仿真器[3]。串行通信采用微软的MSCOMM控件,其属性设置为:CommPort=3,即仿真器连接在串口3上;Rthreshold=1,即事件接收方式;Settings=”9600,n,8,1”,即仿真器要求通信波特率为9600,无校验,8位数据位,1个停止位。
根据前面对PELCO-D协议的分析,云台控制仿真器在收到主控台命令字节串后,先对前进行求和校验,若第2到第6个字节求和与校验码值相同,则通信过程中数据正常,可进入下一步处理;
取出地址码与自身设定地址进行比较,相符后则命令是针对该控制器的,可进入下一步处理;
分析命令字和数据字:根据2个命令字中的对应位判断是对对台进行操作还是对摄像机进行操作。如果是控制云台,还需要从数据字中提取上下左右转动的速度,由速度值控制云台旋转的角度;如果是控制摄像机,则根据命令字控制镜头焦距光圈及远近开关打开,延迟后关断。
在仿真器程序中,可以设置串口号和仿真云台的地址码,用串行口控件MSCOMM进行通信,用定时器延时。云台的显示变化采用计算机图形算法实现,上面的长方形表示摄像机,下面的锥形表示云台支架,可以通过文本框设定通信参数,设定云台控制仿真器的地址码,当收到主控台发来的数据后,对数据进行分析,变换长方形的旋转。
由于控制命令由7个字节的数据组成,云台仿真器采用事件触发方式接收二进制格式的数据。在接收事件中对命令进行分析,分类应答,再通过计算机图形运算,模拟云台的动作。其过程见图1。
3 仿真器测试
仿真器测试可作为监控实验课教学的一个环节,需要在电脑上建立软件实验环境。软件环境搭建需要三个软件,一个是前面设计的云台仿真器;一个是课程所学的编程软件,可能用组态软件,也可能用VB、VC或VC#等通用编程软件;第三个是ELTIMA公司的虚拟串口软件,它就像一条串口线一样,将编程软件和云台仿真器连接起来。
软件环境建立过程是先运行虚拟串口软件,并将COM3和COM4端口连接起来,这样该计算机中就有了可以通信且正确连接的COM3和COM4串口;再启动云台仿真器,它默认使用COM3端口;然后运行监控程序,利用COM4就可以和仿真器通信了。
实验前先用测试云台仿真器是否正常,可以先用常用的PELCO-D 云台测试程序检测自编的云台仿真器是否正常工作。在该程序中设置串行口为COM4,云台号为1,打开串行口,点击上下左右箭头,查看仿真云台按要求动作,控制效果和实际云台运转相同。
测试成功后就可以学习监控课的监控程序设计了。
下面以VB语言为例编写一个简单的云台测试程序,其中MSCOMM控件的属性设置为:串口号为4 Settings=”9600,n,8,1”,通信参数设置与仿真器所用相同;虚拟串口已经连接好串口4连接了串口3;窗体中设置有上下左右及停止按钮。点击测试程序的控制按钮,云台则按要求的方向和速度变化,形象直观,仿真器运行界面如图4所示,
图4 监测软件运行结果
上述测试表明,云台仿真器可满足监控课程中数据以二进制方式串行通信编程的学习使用。
4 结束语
本文分析了监控系统中应用广泛的PELCO-D 云台通信协议,并实现了其软件仿真的仿真器。该仿真器用于监控软件设计的实验教学中,将大大提高了学习效率,节约了大量的、昂贵的工业监控硬件设备,同时去除了硬件设备的维护工作量。云台仿真器已用于作者学校电气通信类专业的监控课程教学中,仿真器运行稳定,效果良好,使用简单方便。本文提出的云台仿真技术,实现了通用的PELCO-D 云台通信协议,可用于通用编程软件的通信程序设计学习,也可用于其它二进制串行通信方式的学习,对于设计其它公司的监控协议具有借鉴作用。该仿真软件教学方法在监控学习方面具有一定的推广价值。
参考文献
[1]刘心红,郭福田,孙振兴. Proteus仿真技术在单片机教学中的应用[J].北京:实验技术与管理:2007,24(3),96-87
[2]PELCO公司. D Protocol Manual 1999,3
[3]曾丽丽,刘心红,赵忖,张昕编著. VB通信编程技术[M]. 北京:中国石化出版社. 2014.106-128.
作者简介:郭福田(1965-),男,陕西蒲城县人,工学硕士,副教授,教师,现从事计算机控制应用方面的教学与研究工作。
论文作者:郭福田 刘心红
论文发表刊物:《知识-力量》2019年8月23期
论文发表时间:2019/5/7
标签:仿真器论文; 命令论文; 通信论文; 软件论文; 控制器论文; 串口论文; 字节论文; 《知识-力量》2019年8月23期论文;