精密数字压力表多机通信的实现
根据实际应用需要,以计算机为主机、精密数字压力表为从机,从通信原理、硬件实现、主/从机软 件设计方面介绍了精密数字压力表多机通信的实现方案。实际应用表明,釆用该方案设计并实现的精密数 字压力表及其与主机的RS232C通信系统能够实现在主机上实时显示各个精密数字压力表的测量值及查看 或设置压力表测量参数的功能。
0.引言
近年来,随着工业自动化应用的需要,仪器仪表 得到了蓬勃发展。精密数字压力表作为原来工业指 针压力表的替代品,广泛应用于工业现场的压力测 量。PIC单片机由于性价比高而大量应用于智能仪 器仪表的开发中。笔者选用PIC18F252为主控芯 片设计了一种精密数字压力表,并利用其自带的 USART模块方便地实现了与监控主机的RS232C 串行通信,使监控主机能够实时显示各个精密数 字压力表的测量值,并随时对其中某一个压力表的 测量参数进行查看或设置。
1.通信原理
RS232C是美国电子工业协会(Electronic Industry Association ,EIA)制定的一*种串行物理接 口标准。目前RS232C是PC机与通信工业中应用 最广泛的一种串行接口,被定义为一种在低速率串 行通信中增加通信距离的单端标准,釆取不平衡传 输方式,最大传输距离约为20 m ,最大传输速率为 20 kbit/ s。PIC18F252 拥有 USART 资源,釆用 三线连接方式,通过电平转换芯片将信号转换成 RS232C标准电平,完成与主机上RS232C串口的 连接。然后在主机的VC++平台下调用MSComm 控件,并设置PIC18F252的USART各相关寄存器参数,实现主机与PIC18F252的点对点通信。
图1为主机和多台精密数字压力表的连接方 式。其中计算机作为主机,釆用查询方式接收从机 发来的数据;各压力表作为从机,釆用中断方式接收 从主机发来的数据。
为了实现多机无冲突可靠通信,通信协议的设 计格外重要。首先每台从机必须有唯一的地址,通 过压力表的菜单模式下压力表地址设置选项进行地 址设置。根据应用需要,每台从机有16个地址值可 供选择,分别为1〜16。其次是通信数据格式的定 义,为了使数据处理简单化,以1个字节作为最小通 信单位。数据分为地址帧和数据帧。数据长度不定 长,对数据进行和校验,保证收到的数据准确可靠; 地址帧主要用于主机对从机进行数据查询和设置时 的从机识别。
数据帧用于压力值、报警值等数据的传送,其格 式如下:
数据帧的起始符和结束符分别为0x5B、x5D ; 不同参数数据用3个字节标识符进行区分,以字符 的ASCII码作为标识符;由于传输数据大小、类型 不一致,釆用不定长数据长度;从机地址标识符和校 验码与地址帧的原理相同。如向主机传输压力值、上下限压力值报警、低电压报警时,其传输数据帧为 “0x5B(起始符)、0x43(C)、0x44(D)、0x3D( =)、N1 (液晶屏第一位数据)、N2(液晶屏第二位数据)、N3 (液晶屏第三位数据)、N4(液晶屏第四位数据)、N5 (液晶屏第五位数据)、POINT_flag (小数点位置标 识)、ALARM_flag(上下限压力值报警标识)、LVD_ flag(低电压报警标识)、AD(压力表地址标识)、 0x5D(结束符)、UM(和校验码)”。主机接收到数 据流之后进行和校验,如果传输错误,发错误数据帧 给从机,从机再次发送数据。如校验正确,按照协议 进行解码,并送对话框相应控件显示。当然,从主机 传输到从机的数据也经过和校验验证。多机通信必 须保证每时每刻只有1台从机与主机通信,所以 每次通信的建立首先必须是主机对从机的查询。
0x5A和0x5C作为地址帧的起始符和结束符, 各占用1个字节;由于主机软件存在多个子页面,分 别用于各种压力表数据的显示和设置,所以需要 1个字节的页面标识符;从机的地址识别占用1个字 节;校验码是起始符和结束符之间数据的和(不包括 起始符和结束符),占用1个字节,超过1个字节则 自动丢失高位数据。
2.硬件实现
该多机通信系统除了单片机RS232C通信的硬 件要求外,还釆用了一块MAX3223ECAP芯片和 一个IN4148 二极管实现多机通信的硬件电路,如 图2所示。
MAX3223ECAP 为一款双向 TTL RS232C 标准电平转换芯片。当主机向从机发送数据时,从机 1的RXD0在收到数据的同时,通过电平转换连接 到从机2的RXD1端,MAX3223ECAP此时起增强信号的作用。从机1的TXD0端口向主机发送的 数据通过MAX3223ECAP电平转换,再用二极管 进行隔离,实现从机1 TXD0端与从机2 TXD1端 口互不干扰。以上连接方式理论上可以实现1台主 机对无限多台从机的多机通信。在本文涉及的精密 数字压力表系统中,只要求完成1台主机对16台从 机的通信,因此,该电路可满足通信要求。
3.软件实现
3. 1从机软件
精密数字压力表釆用PIC18F252作为主控芯 片,其软件编程语言釆用C语言,在MAPLAB IDE 平台上开发,利用PICC- 18编译工具编译。从机 软件功能为实现压力表地址分配(不允许2台不同 的压力表具有相同的地址值)以及对主机查询信息 命令的中断响应。压力表地址分配是由按键处理子 文件实现的,通过进入压力表的菜单模式下地址处 理子菜单St - AD进行相应按键操作,最终将设定 好的地址值保存到PIC18F252自带的EEPROM 中。设定压力表地址值后,主机对从机进行数据查 询时,从机在USART接收中断服务程序中完成对 数据的保存,并置位标志位,等待主程序循环对所接 收数据进行处理。从机数据接收及处理程序流程如 图 3 所示 。
3.2主机软件
主机软件的设计是基于VC + +平台的MFC 编程实现。首先建立一个模态对话框,添加 MSComm控件,对所用计算机串口进行参数设置 及初始化。数据接收是通过对GetCommlvenl()事 件的响应,然后将数据校验、保存并处理,在软件前台显示。主机数据接收程序流程如图4所示。
数据发送功能是通过按钮或者定时器控件调用 数据发送函数实现的,在此不予详述。
4.结语
本文根据精密数字压力表的实际应用要求,详 细描述了精密数字压力表多机通信的实现过程,提出的通信原理及软硬件实现方式合理、可靠。通信 中使用和校验大大减低了通信的出错率,能够胜任 工业现场恶劣的工作环境。依据本文所述方法开发 的精密数字压力表已形成产品,并已得到实际应用。
实际应用过程中数据通信稳定可靠,尚未出现 故障。但本文提出的RS232通信限制了从机和主 机的通信距离,可根据实际需要以其它通信接口 代替。