您的位置:控制工程论坛网论坛 » 嵌入式系统 » 串行通讯协议的研究及应用

cxf

cxf   |   当前状态:离线

总积分:440  2024年可用积分:0

注册时间: 2007-03-23

最后登录时间: 2008-01-31

空间 发短消息加为好友

串行通讯协议的研究及应用

cxf  发表于 2008/9/24 17:26:50    精华  2951 查看 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 主程序流程图

1楼 0 0 回复
总共 , 当前 /