图1 系统整体结构
1.PC机监控软件的设计
(1)首先完成组态王和VB的DDE对话。
动态数据交换(DDE)是Windows平台下的一个完整的通讯协议,它使应用程序间能彼此交换数据和发送指令。要实现DDE对话需进行如下几步的工作:①设计VB控制界面,包括采集数据、开关状态等文本框。编写VB在DDE对话上的程序。并生成tx1.exe文件。②用组态王设计用户界面,包括菜单、封面、监视控制、报警等。在组态王中新建一个DDE设备,命名为tx1,服务器的名称为VB程序窗体的名称,建立一系列需要与VB进行数据交换的I/O变量,其设备为tx1,寄存器类型为VB程序中对应文本框的名称。③系统要求以组态王进行监控,VB程序隐藏于后台执行,将VB应用程序窗体的Visible属性设为False,在编写组态王的启动时应用程序命令语言,用StartApp函数启动VB程序,在用RebuildDDE函数重新建立DDE对话。
到此完成了DDE对话,而面向操作人员的只是组态王设计的画面,如图2所示。
图2 监视控制界面
(2)其次完成组态王数据库的访问。本设计采用Access数据库,建立“my.mdb”数据库,并在计算机上配置好数据源。该数据库存放的是火情报警的历史记录。此系统在数据库上有以下功能:①系统启动时,可自行建立表格。②实时记录报警。在报警出现时使用组态王提供的函数,将数据写入所连接的数据库中指定的表格。③按照选择日期条件显示符合日期的历史报警数据。为了方便使用,系统中使用组态王提供的KVDBGrid控件,设置好该控件的属性,就可以实时显示所连接的数据库的数据情况。查询所使用的控件是组态王提供的日期控件。在进行历史数据查询时,可以根据所选择的日期条件显示出对应的历史数据。
2.1无线串口通信的实现
首先制作RS-232电平和TTL电平的双向转换电路。由于PC机使用
图3 MAX232电平转换电路
RS-232接口,而无线模块使用TTL电平,两者连接必须有电平转换电路,如图3所示,按照电路图将相关直插式元件焊在在单面板上完成。
(2)完成串口通信。
①制定双向通讯协议,采用异步通信方式,使用和校验。双方通信协议如表1和表2所示。
表1 PC机→机器人串口通信协议
WWW_PLCJ-S_COM-PLC-技.术_网(可-编程控-制器技术-门户) |
bit7 WWW_PLC※JS_COM-PLC-技.术_网(可编程控※制器技术门户) |
bit6 W1WW_P4LCJS_COM-PLC-技.术_网 |
bit5 WWW※PLCJS_COM-PL#C-技.术_网(可编※程控※制器技术门户) |
bit4 WWW_P※LCJS_CO※M-PLC-技-.术_网 |
bit3 WW.W_PLCJS_COM-PLC-技.术_网 |
bit2 WWW_PLC※JS_COM-PLC-技.术_网(可编程控※制器技术门户) |
bit1 ——可——编——程——控-制-器-技——术——门——户 |
bit0 WW.W_PLCJS_COM-PLC-技.术_网 |
WWW.PLCJS.COM——可编程控制器技术门户 |
out_Send[0] WWW_PL※CJS_COM-PLC-技.术_网 |
0XAB WWcW_PLCJS_COM-PLC-技.术_网 |
包头 WWW_PLCJS_COM-PLC-技.术_网 | |||||||
out_Send[1] ——可——编——程——控-制-器-技——术——门——户 |
0XCD WWW.PLCJS.COM——可编程控制器技术门户 | ||||||||
out_Send[2] WWW_PLC※JS_COM-PmLC-技.术_网 |
WWW_PLCJS@_COM%-PLC-技.术_网 |
WWcW_PLCJS_COM-PLC-技.术_网 |
P_L_C_技_术_网——可——编——程——控-制-器-技——术——门——户 |
手动或自动 WWW_PLC※JS_COM-PmLC-技.术_网 |
车是否向前 WWW_PLCJ-S_COM-PLC-技.术_网(可-编程控-制器技术-门户) |
车是否后退 plcjs.技.术_网 |
车是否向左转 WWcW_PLCJS_COM-PLC-技.术_网 |
车是否向右转 WWW_PLC※JS_COM-PmLC-技.术_网 |
开关量 ——可——编——程——控-制-器-技——术——门——户 |
out_Send[3] WWW_PLCJS_COM-PLC-技.术_网 |
PID参数(K) WWW_PLCJS※COM-PLC-技.术_网(可※编程控※制器技术门户) |
数字量 WWW_PLCJS※COM-PLC-技×术_网(可编程控※制器技术门户) | |||||||
out_Send[4] WWW_PLCJS※COM-PLC-技.术_网(可※编程控※制器技术门户) |
PID参数(Ti) P.L.C.技.术.网——可编程控制器技术门户 | ||||||||
out_Send[5] WWW_PLCJ-S_COM-PLC-技.术_网(可-编程控-制器技术-门户) |
PID参数(Td) WWW_PLCJS@_COM%-PLC-技.术_网 | ||||||||
out_Send[6] WWW_PLCJ-S_COM-PLC-技.术_网(可-编程控-制器技术-门户) |
SUM CHECK(低字节在先) WW.W_PLC※JS_C,OM-PL,C-技.术_网 |
和校验 WWW_PLCJS@_COM%-PLC-技.术_网 | |||||||
out_Send[7] W1WW_P4LCJS_COM-PLC-技.术_网 |
表2 机器人→PC机串口通信协议
WWW_PLCJS※COM-PLC-技.术_网(可※编程控※制器技术门户) |
bit7 WWW_PLCJS※COM-PLC-技×术_网(可编程控※制器技术门户) |
bit6 WWW_P※LCJS_CO※M-PLC-技-.术_网 |
bit5 WW.W_PLC※JS_C,OM-PL,C-技.术_网 |
bit4 WWW_PLCJS@_COM%-PLC-技.术_网 |
bit3 WWcW_PLCJS_COM-PLC-技.术_网 |
bit2 plcjs.技.术_网 |
bit1 WWW_PLCJS_COM-PLC-技.术_网 |
bit0 WWW_P※LCJS_CO※M-PLC-技-.术_网 |
WWW.PLCJS.COM——可编程控制器技术门户 | |
in_Rece[0] WWW_PLCJS_COM-PLC-技.术_网 |
0XAB WWW※PLCJS_COM-PL#C-技.术_网(可编※程控※制器技术门户) |
包头 plcjs.技.术_网 | ||||||||
in_Rece[1] WW.W_PLC※JS_C,OM-PL,C-技.术_网 |
0XCD WWW_PLCJ-S_COM-PLC-技.术_网(可-编程控-制器技术-门户) | |||||||||
in_Rece[2] P.L.C.技.术.网——可编程控制器技术门户 |
左轮正反转 WWW_PLCJS_COM-PLC-技.术_网 |
右轮正反转 WWcW_PLCJS_COM-PLC-技.术_网 |
左电机状态 P.L.C.技.术.网——可编程控制器技术门户 |
右电机状态 WWW_PL※CJS_COM-PLC-技.术_网 |
左红外传感器 WWW_PL※CJS_COM-PLC-技.术_网 |
中红外传感器 WWW_PLCJS※COM-PLC-技×术_网(可编程控※制器技术门户) |
右红外传感器 WWW_P※LCJS_COM-PLC-)技.术_网 |
灭火风扇 WWW_PLCJS※COM-PLC-技.术_网(可※编程控※制器技术门户) |
WWW_PLC※JS_COM-PLC-技.术_网(可编程控※制器技术门户) 开关量 WWW_PLCJS_COM-PLC-技.术_网 | |
in_Rece[3] WWW.PLCJS.COM——可编程控制器技术门户 |
前左碰撞开关 WWW_PLCJS_COM-PLC-技.术_网 |
前碰撞开关 WWW_PLCJS※COM-PLC-技×术_网(可编程控※制器技术门户) |
前右碰撞开关 WWW※PLCJS_COM-PL#C-技.术_网(可编※程控※制器技术门户) |
后左碰撞开关 WWW.PLCJS.COM——可编程控制器技术门户 |
后碰撞开关 plcjs.技.术_网 |
后右碰撞开关 WWW_PLCJS※COM-PLC-技.术_网(可※编程控※制器技术门户) |
WWW_PLC※JS_COM-PmLC-技.术_网 |
WWW_P※LCJS_CO※M-PLC-技-.术_网 | ||
in_Rece[4] WWW_PLC※JS_COM-PLC-技.术_网(可编程控※制器技术门户) |
左轮脉冲计数(低字节) WWW_PLCJS@_COM%-PLC-技.术_网 |
WWW_P※LCJS_CO※M-PLC-技-.术_网
plcjs.技.术_网 数字量 WWW_PL※CJS_COM-PLC-技.术_网 | ||||||||
in_Rece[5] WWW_P※LCJS_CO※M-PLC-技-.术_网 |
左轮脉冲计数(高字节) WWW_P※LCJS_COM-PLC-)技.术_网 | |||||||||
in_Rece[6] WWW_PLCJS_COM-PLC-技.术_网 |
右轮脉冲计数(低字节) WWW.PLCJS.COM——可编程控制器技术门户 | |||||||||
in_Rece[7] plcjs.技.术_网 |
右轮脉冲计数(高字节) WWW_PLCJ-S_COM-PLC-技.术_网(可-编程控-制器技术-门户) | |||||||||
in_Rece[8] WWW_PLCJ-S_COM-PLC-技.术_网(可-编程控-制器技术-门户) |
指南针与车所成角度 WWW_PLC※JS_COM-PmLC-技.术_网 | |||||||||
in_Rece[9] WWW_PLCJS_COM-PLC-技.术_网 in_Rece[10] WWW※PLCJS_COM-PL#C-技.术_网(可编※程控※制器技术门户) |
SUM CHECK(低字节在先) P.L.C.技.术.网——可编程控制器技术门户 |
和校验 WWW_P※LCJS_CO※M-PLC-技-.术_网 | ||||||||
②设计VB串口数据接收发送程序,使用专门串行通信的MSComm控件,使用OnComm触发事件中的CommEvReceive数据接收事件,就是数据中断。接收数据的流程图如图4所示。发送程序则利用Timer控件设置PC机的数据发送时间,定时向机器人发送数据。发送和接收程序都按照协议来进行编程。
③设计机器人串口数据接收发送程序,接收数据使用的是查询方式,不断查询串口是否有数据,直到接收完一帧数据。其流程图与图4类似。发送程序是通过对机器人传感器的取值,将这些值按照协议组合起来进行发送。发送和接收程序都按照协议来进行编程。
1.机器人程序的实现。
除了发送接收数据程序外,还有自动程序和手动程序。其中主要包括有:碰撞开关程序:即行进过程中碰到障碍物绕开;灭火程序:即通过远红外传感器检测火源,并对准火源打开风扇灭火;PID程序:即从接收到的串口数据中获取PID参数,对机器人的直线行走进行PID控制。手动程序:即按照PC机的指令来控制机器人向前向后等。整个程序如图5所示。