在线工博会

串行通讯协议的研究及应用
东北大学秦皇岛分校 马玉春
为节省流量,手机版未显示文章中的图片,请点击此处浏览网页版
1、 引言
串行接口一般包括RS232/422/485,其技术简单成熟,性能可靠,价格低廉,所要求的软硬件环境或条件都很低,广泛应用于计算机及相关领域,遍及调制解调器、串行打印机、各种监控模块、PLC、摄像头云台、数控机床、单片机及相关智能设备,甚至路由器也不例外(通过串口设置参数)。在计算机监控系统中,主控机一般采用工控机,通过串口与监控模块相连,监控模块再连接相应的传感器和执行器,如此形成一个简单的双层结构的计算机监控系统。这种结构主要用于单独的中小型企业或部门,如果属于综合型企业或部门,如电力系统监控,高速公路监控和收费系统,则可以此为基础结构进行扩充,用集线器将众多双层监控系统连接起来,再用交换机将若干集线器连接起来,统一接上路由器,从而跟Internet互联(当然,软件结构也得作调整),如此即可形成一个庞大的计算机监控网络。由此可见,尽管现代计算机的新接口层出不穷,各种网络也日新月异,其规模也越来越大,但是,其基础结构却有不少是串行通讯系统,串行通讯也成了其中的核心技术。
2、串行通讯难点及协议
串行通讯是半双工形式,通过串口发送数据相对简单,在时间上可以随意控制,如果使用微软提供的通讯控件MsComm32.OCX,只要直接给Output属性赋值即可;使用Turbo C 2.0语言或汇编语言,也只要在一个循环之内向串口的数据端口写数据即可。但是,接收数据则比较麻烦,因为中断接收时,数据常常不均匀流畅,其中存在空白间隔,给数据处理带来困难。大部分监控模块都有串口初始化函数、数据发送和接收函数,如果直接使用数据接收函数来接收数据,则由于以上问题,常常接收到残缺的数据,使工作无法完成,尽管逻辑上没有任何错误。在具体实现上,应该在接收到第一批数据时,开始等待T时间片,将第一批数据与随后的第二批数据相加,如此继续循环,直到新的T时间片结束而无数据到达,再跳出循环。至于T时间片大小的选取,应该根据具体的模块或设备来调整,直到性能可靠为止,此时的时间片即为所需要的T。数据接收算法见图1所示。

(图片)

图1 数据收算法

为方便行文,将与计算机(主控机)串口相连的模块或系统统称为智能设备(有时包括工控机本身)。串行通讯的协议一般可分为两类,即读和写。读协议为读取智能设备的数据,写协议为设置智能设备参数或发送控制命令,读协议要求有响应,写协议可以没有响应。读写协议描述见图2所示(关于响应协议略)。常见的校验码有异或、累加和、CRC等。

(图片)

图2 通讯协议示例

3、 通用软件设计
目标为设计一个通用串行通讯软件,使运行该软件的计算机(在图示中用带阴影的文本框表示)作为主控机可以自动地测试智能设备,也可作为智能设备用来自动地测试主控机上的监控软件,至于临时发送数据以代替主控机或智能设备,则是其基本功能。为了提高通用性,软件主界面尽量简洁,用两个单行文本框显示当前接收或发送的数据,其一为16进制形式(如“41”),其二为字符形式(如“A”),用一个多行文本框显示历史数据,包括接收和发送的数据、串口信号线的变化以及发生的时间(精确到毫秒),其它按钮用来打开和关闭串口、发送数据、设置串口参数及系统参数等。用Access 2000数据库记录数据,其中包括智能设备表、协议标志表、历史通讯数据记录表等,与协议表相关的表必须包含主控机协议及智能设备协议两个字段。采用VB6.0环境来完成此软件,所用的主要控件包括数据控件、MsComm32.OCX、Timer等。为了灵活工作,模拟各种智能设备,需要设计一“协议生成器”,对于图2所示的“读协议”,协议生成器的功能为:首先选择智能设备(由此确定协议标志),设置地址范围(即动态数据),则软件在此范围内自动生成地址,然后计算校验码,有的智能设备还需要追加协议结束标志,如调制解调器的AT命令就需要以回车符结束方才有效。协议生成器构造如图3所示。

(图片)

图3 协议生成器

主控机与智能设备方式。充当主控机时,可以定时向智能设备发送读协议。充当智能设备时,用来响应主控机,其响应协议有两种生成方式,静态和动态。静态方式时,接收到主控机的协议,查找协议表,如果能匹配主控机协议,则将该条记录的智能设备协议发出(先让该软件以主控机方式工作,与实际的智能设备相连,从而记录下智能设备的响应协议,可参考下文的“截取通讯协议”部分);在动态方式下,找到匹配的主控机协议时,响应协议利用协议生成器动态生成。
自动与手动是针对主控机而言。自动方式需要设置定时器,定时向智能设备发送读协议;对于手动方式,则是通过发送按钮来发送数据,从而等待智能设备的响应并显示之。
软件的总流程为:设置串口参数,选择智能设备,设置协议生成方式及动态数据范围,设置主控机或智能设备工作方式,如果是主控机,还需要设置定时器,以及是否记录智能设备响应的协议;如果是智能设备,应选择静态响应或动态响应方式。主程序流程图见图4所示。

(图片)

图4 主程序流程图

4、 软件的应用
4.1 发送手机短消息
手机短消息协议如图5所示。将软件设置成主控机手动状态,选择手机设备,如果想发送“OK!”,只要在单行字符文本框中直接输入“OK!”,并点击“发送”按钮,则软件自动填充其它数据,并计算BCS校验码,然后将数据发出。此协议是手机短消息协议之一,所采用的模块来自西门子公司。

(图片)

图5 手机短消息协议

4.2 通过Modem进行远程测试
将软件设置成主控机手动状态,选择Modem设备,在单行字符文本框中输入电话号码(如025-1234567),点击发送按钮,则软件自动发送AT命令“ATDT025-1234567;”+回车符,完成与远程设备的连接,然后即可根据需要采用主控机或智能设备方式,自动或手动方式进行测试(AT命令中的“;”表示拨通对方后保持连接状态)。对Modem进行合适的设置,可以使其自动摘机。
4.3 模拟主控机用来测试智能设备的数据性能
在计算机监控系统中,需要选择或自行设计一些特殊的智能设备,但是,其数据性能如何?这可以通过模拟主控机来测试,将其设置成主控机自动工作方式,协议也采用动态生成方式,对智能设备响应的协议进行分析(包括协议标志及校验码),如果有错误,则记录发生时间、主控机协议与智能设备的响应协议。测试原理见图6所示,其中协议库中为动态生成的主控机协议,错误记录即为主控机协议与对应的智能设备响应的错误协议,虚线箭头表示协议来源(下同),实际通过主控机进行记录。总的测试报告内容见表1所示,单位为发送或接收的次数。详细的测试分析可以借助错误记录进行。

(图片)

图6 测试智能设备

表1 智能设备数据性能报告

(图片)
正确率=99.95%,所用时间22:35:19

4.4 模拟智能设备测试主控机软件性能
将软件设置成智能设备动态响应状态,充当智能设备角色,自动应答主控机的查询命令。如图7所示,当收到主控机协议并在协议库中找到匹配的协议时,动态生成智能设备的协议进行响应。这种功能可用来配合开发或调试主控机程序,特别地,当智能设备比较昂贵数量较少,或体积庞大不便运输时,采用此方式可以并行异地开发和调试针对智能设备的监控程序,既节省成本,也可极大地提高工作效率。作为一种特例,可用一台PC机进行模拟开发和调试,智能设备挂在COM2口,开发或调试的软件挂于COM1口,COM1和COM2对接。单机仿真开发模型见图8所示。

(图片)

图7 测试主控机

(图片)

图8 单机仿真开发模型

4.5 截取通讯协议
现假设某公司生产一智能设备,与该设备配套的测试软件运行于测试机上。现欲截取测试机与智能设备之间的通讯协议,作者的软件运行于侦听机上(如图9所示)。在这里,侦听机充当二传手的作用,首先通过COM1口截取测试机发来的协议,存入协议库,随后通过COM2口将原协议发往智能设备。侦听机通过COM2口收到智能设备的响应后,将协议存入协议库(与相应的测试机协议位于同一条记录),随后通过COM1口将原协议发往测试机。如此即可将测试机与智能设备之间的通讯协议全部截取并保存。

(图片)

图9 截取通信协议

4.6 通讯协议的破译与应用
通讯协议一般包括功能码、地址码、有效数据、校验码和结束标志(可选),常用的校验码有异或、累加和、CRC等。通讯协议截取后,依次分析校验码、功能码、地址码和数据。可以模拟主控机观察智能设备的动作响应和信号灯变化,也可以模拟智能设备观察主控机软件界面的变化。如果协议没有加密,则只要直接分析协议即可;如果协议已经加密,可以利用密码学中的方法去分析解密,然后再分析协议本身。有的通讯协议在数据加密的同时,还配合信号线的变化。由于软件主界面的多行文本框显示并记录着串口的收发数据及信号线变化的历史状态,包括发生时间,这给协议分析提供了重要的原始资料。
协议破译成功后,即可自行开发软件对智能设备进行监控。在文献1中,作者遇到从德国进口的大型柴油发电机组(以下简称油机),可利用提供的串口对其进行监控。但是,却没有该油机的合适版本的通讯协议,只有厂家配套免费提供的简单的油机测试软件(运行于主控机上)。一般情况下,都是通过人工对油机启动或停机。在项目改造中,需要对油机进行监控,如果编写项目任务书,请厂家设计监控软件,无疑周期较长,价格较贵。作者通过此协议截取和破译方法,成功地破译其通讯协议,并设计出监控软件。
5、 结论
该研究成果是作者多年从事计算机监控系统的经验总结和理论升华,解决了串行通讯中遇到的核心技术问题,对各种智能设备的工作方式和通讯协议作了深入的分析和研究,并在实际工作及工程中得到了应用和验证。实践表明,该研究成果可广泛应用于智能设备的测试及计算机监控系统(onspring@sina.com) 。
参考文献∶
[1] 马玉春,赵跃华·高山无人站监控系统设计与开发·电脑开发与应用[J],2000,13(9):35-36
[2] MSDN Library Archive·http://msdn.microsoft.com/archive/·2002
作者简介∶马玉春(1969~),男,计算机应用专业博士,主要研究方向为计算机监控和网络技术。 4/30/2005


电脑版 客户端 关于我们
佳工机电网 - 机电行业首选网站