二、仿真模块的设计
在实际的工程项目中,数据采集模块和控制模块一般采用RS-485接口,因为这种接口只需要两根连接线,施工方便,同时,传输距离可以达到1200米左右。一般计算机都配有RS-232接口,可以通过RS-232/RS-485转换器进行转换,从而实现计算机与RS-485接口的模块进行通信。所以,仿真模块采用RS-232接口,仿真模块的主界面如图1所示。

图1左部是硬件实物的抽象,工作状态指示灯红灯表示空闲,绿灯表示正在工作。Power 指示灯为绿色表示本模块已加电,Tx 指示灯为绿色表示本模块正在发送数据,Rx指示灯为绿色表示本模块正在接收数据。下部是两个温度传感器,数据范围为00-0xFF,分别对应温度0-100℃。上部的两个输出开关由主控程序通过串行接口控制,如果 OUT0开关闭合,则形成一个环路,灯亮,对应的温度传感器S1升温,红色箭头朝上,数据递增;否则,对应的传感器温度下降。
图1的右部主要是通信协议的描述,通信协议是操作模块的约定。通信协议制订了三种,即读(Read)协议、响应(Reply)协议和写(Write)协议。Read 协议用来读取模块中的数据,EOT 是前导字符,ID 是模块的地址,RD 是读标志,BCC 是校验码,EM 是结尾码。 Reply 协议是对 Read 协议的响应,STX 是前导字符,DT1 和 DT2 是传感器的两个温度字节,DO 是输出开关的状态,OUT0 和 OUT1 使用一个字节的最低两位,1表示开关闭合,0表示开关打开。Write 协议的 WT 是写标志。三条协议的下部是对协议中的字符的说明,如 EOT 表示字节 04,WT 用 0x57 来表示等等。
Receive 文本框中显示收到的主控机发送的 Read 协议或 Write 协议。Send 文本框中是仿真模块发送给主控机的 Reply 协议。
Setup 按钮显示模块参数设置窗体,如图2所示。Port Setup 页签用来设置串口相关的参数,Protocols Setup 页签设置协议参数,包括协议的校验码与结尾码。ID 文本框设置模块的地址,Interval 文本框设置以秒为单位的时间间隔,Step 表示步长,图2所示,表示仿真模块每过6秒,传感器的数值上升(如果对应的输出开关闭合)或下降(如果对应的输出开关打开)5。所设置的参数都通过 My.Settings 方法保存,下次打开程序,将恢复这些数据。

使用仿真模块时,必须先点击 “Setup” 按钮设置参数,然后,点击 “Power” 指示灯,使其变绿,这时,仿真模块工作。通过1.4节的方法收到数据后进行处理,如果是主控机发送的 Read 协议,则将模块的当前数据组装成 Reply 协议,调用SendData 函数发送出去。如果是Write 协议,则调用SetByteBit 和 ResetByteBit 函数进行置位或复位,然后,调用 CheckByteBit 函数,来显示输出开关的状态,如果对应的位为1,就显示红线,表示开关闭合;如果对应的位为0,就隐藏红线,表示开关打开。
主窗体中用 timer_Comm 定时器配合数据的接收,用 timer_Signal 定时器来控制 Tx 与 Rx 指示灯的闪烁,用 timer_Step 定时器(Interval 属性由图2设置)来调整传感器的字节数据。
三、主控程序
仿真模块提供了一个串行接口,用于教学强于实物模块,因为是免费的,接口是真实的,可视化效果和方便程度远胜于实物模块。可以用汇编语言、C语言和 Java 语言开发应用程序对该仿真模块进行监控,使学生的学习更有针对性,也能激发学生的学习兴趣。这里提供一个用 Visual Basic 2008 开发的主控程序,其主界面如图3所示。
首先,点击 “Setup” 按钮,进行参数设置,出现类似图2所示的界面,但是,Protocols Setup 页签的底部如图4所示,其中,Interval 表示主控机查询仿真模块的时间间隔。根据采样定律,图4的Interval 应该小于等于图2的Interval 的一半。Up 是温度的上限,Down 是温度的下限。主控程序的串口参数、校验码、结尾码、地址码应该与仿真模块的一致,而且,应该有串行通信电缆连接,双方才能通信,完成监控。


假如烘箱用灯泡加热,每个烘箱中均有一个温度传感器。主控程序每过2秒查询一次仿真模块,即发送一次 Read 协议。对于响应的数据,提取温度字节,然后,转换为0-100℃的数值,实时显示,同时,绘制曲线。对于输出开关的状态,用指示灯表示,绿灯表示闭合,红灯表示打开。主控程序以手动(Manual)和自动(Automatic)两种方式工作,如果在自动状态,则温度超过上限60将发送控制命令(Write 协议),使得相应的输出开关打开;如果温度低于下限50,则发送控制命令,使得相应的输出开关闭合加热。自动状态,控制按钮 On/Off 无效。手动状态,可以直接通过 On/Off 按钮控制输出开关。
四、辅助工具的设计
RS-232/RS-232 转换器管理两个串行接口,因而,可以将两个不同通信协议和不同波特率的主控机或受控机连接起来。主控设备可与COM1相连,受控设备与COM2相连,协议转换器将一个接口收到的数据进行协议变换后发送到另一个接口。通过此协议转换器,主控和受控设备之间的接口参数,如波特率等可以不一样,协议格式也可不一致,这对改造原装设备具有重要意义,而且,在协议转换过程中,可以直接截取主控设备和受控设备之间的通信协议,并记录接口引脚信号的变化情况,加上时间戳,便于分析和处理。
RS-232/RJ-45协议转换器软件的主要功能是用软件转换器来实现硬件转换器的功能,实现串口数据与网口数据的直接转发,不涉及到通信协议的变换。串口只要进行常规的设置,与所连接设备的串口参数一致。由于主控机与嵌入式模块之间一般采用串口进行连接,另外,数据采集模块也大部分采用串口,因而,通过该协议转换器,可以将此类串口设备连接到Internet,进行远程处理。

图5所示是一个远程串行通信协议截取模型,配备串口的主控机通过运行RS232/RJ45协议转换器的现场PC将数据直接发送到远程PC,对方收到后,将数据通过RS232/RJ45转换器发送到RS232/RS232转换器,再通过RS232/RJ45转换器将数据发送到现场PC,该数据包又通过RS232/RJ45转换器,转换成RS232接口的数据包,发送到受控机。至于远程调试技术也类似,不过,都需要工程师与用户进行远程协作,如通报IP地址与端口地址,采用服务器还是客户机方式进行连接等。
RS232/RS232 协议转换器采用第1节的技术即可处理,RS232/RJ45 涉及到关于 TCP 客户机/服务器的编程,需要使用 .NET Framework 3.5 中的 TCPClient 和 TCPListener 类,还需要多线程编程技术。
五、测试工具
通用串口设备测试工具(TestPort)可以自动生成多种校验码及添加多种结尾码,既可以充当主控机对受控机进行测试,也可以充当受控机对主控机进行测试,并可以记录测试结果和通信协议。为了便于工具的使用,采用 Access 充当数据库,通信协议都保存在数据库中。图6所示是该工具的主窗体,打开该程序后,必须先设置工作参数方可使用。Hex 和 Char 文本框中是以两种方式显示的当前收发的数据包,下面的多行文本框显示收发数据及引脚信号变化的详细历史数据,便于分析使用。

图6 通用串口设置测试工具的主窗体
1.主要功能
TestPort 的工作模式分为三种:Normal、Master 与 Slave,如图7所示。Normal 为标准模式,用于手工发送数据,只要在图6中的Hex 文本框中输入16进制字符串或在Char 文本框中输入字符串,点击 “Send ”即可。图7中的显示模式(Display Mode)表示用字符形式还是16进制字符串显示收发的数据,对于调制解调器,显然使用 Char 模式更直观。Length 文本框中是协议的最大字节长度,根据该数据和波特率计算数据包的时间间隔。Sound 选项表示收到数据是否用声音提示。

Master 为自动主控机模式,即每隔 1000 毫秒,自动逐条读取数据库中的主控机协议(Master)发送出去,如图8所示。如果核选了 Error,则自动记录受控机的错误响应数据包,并对数据进行统计分析,测试报告如图9所示(通过菜单项的 Report 打开)。窗体标题显示了测试的时间段,上方的表格显示错误的发生时,开机以来所经历的毫秒数,以及当前时间,随后是错误数据。下方的表格显示统计数据,即主控机共发送28条协议,正确21条,错误2条,没有响应5条,正确率为 75%. 统计数据以文本文件保存,点击 “Save ”按钮即可保存到文本中。如果在图7核选了 Protocols,则自动记录受控机协议,存入图8的协议库中。


以Slave 方式工作时,TestPort 将收到的协议去掉校验码和结尾码后,与图8中的 Master 协议逐条比较,如果相等,并且,对应的 Slave 协议不为空,则自动发送该 Slave 协议作为对主控机协议的响应。如果在图7中核选了 Protocols,则对于数据库中没有的 Master 协议,将自动记录。
另外,TestPort 还可用来通过调制解调器拨打电话,如图10所示。Out 文本框中的9表示拨打外线电话需要先拨9,Local length 文本框中的4表示内线电话号码的长度为4。点击第1条记录,然后点击 OK 按钮,将生成内线电话的一个 AT 命令“ATDT1234;”;点击第2条记录(市话),将生成AT命令“ATDT9,12345678;”,自动添加了外线号码9;点击第3条记录(长途),将生成AT命令“ATDT9,17909,025-12345678;”,自动添加了 IP 号码 17909。AT 命令生成后,在图6中点击菜单项或快捷方式的 Dial,将自动向调制解调器发送 AT 命令,完成拨号,如果发现占线,重新点击 “Dial ”即可,因为 Dial 先关闭串口片刻,然后, 再打开串口发送数据,有电话机的“闪断”功能。

|