根据实际应用需要,以计算机为主机、精密数字压力表为从机,从通信原理、硬件实现、主/从机软件设计方面介绍了精密数字压力表多机通信的实现方案。实际应用表明,釆用该方案设计并实现的精密数字压力表及其与主机的RS232C通信系统能够实现在主机上实时显示各个精密数字压力表的测量值及查看或设置压力表测量参数的功能。
0.引言
近年来,随着工业自动化应用的需要,仪器仪表得到了蓬勃发展。精密数字压力表作为原来工业指针压力表的替代品,广泛应用于工业现场的压力测量。PIC单片机由于性价比高而大量应用于智能仪器仪表的开发中。笔者选用PIC18F252为主控芯片设计了一种精密数字压力表,并利用其自带的USART模块方便地实现了与监控主机的RS232C串行通信,使监控主机能够实时显示各个精密数字压力表的测量值,并随时对其中某一个压力表的测量参数进行查看或设置。
1.通信原理
RS232C是美国电子工业协会(ElectronicIndustryAssociation,EIA)制定的一*种串行物理接口标准。目前RS232C是PC机与通信工业中应用最广泛的一种串行接口,被定义为一种在低速率串行通信中增加通信距离的单端标准,釆取不平衡传输方式,最大传输距离约为20m,最大传输速率为20kbit/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为一款双向TTLRS232C标准电平转换芯片。当主机向从机发送数据时,从机1的RXD0在收到数据的同时,通过电平转换连接到从机2的RXD1端,MAX3223ECAP此时起增强信号的作用。从机1的TXD0端口向主机发送的数据通过MAX3223ECAP电平转换,再用二极管进行隔离,实现从机1TXD0端与从机2TXD1端口互不干扰。以上连接方式理论上可以实现1台主机对无限多台从机的多机通信。在本文涉及的精密数字压力表系统中,只要求完成1台主机对16台从机的通信,因此,该电路可满足通信要求。
3.软件实现
3.1从机软件
精密数字压力表釆用PIC18F252作为主控芯片,其软件编程语言釆用C语言,在MAPLABIDE平台上开发,利用PICC-18编译工具编译。从机软件功能为实现压力表地址分配(不允许2台不同的压力表具有相同的地址值)以及对主机查询信息命令的中断响应。压力表地址分配是由按键处理子文件实现的,通过进入压力表的菜单模式下地址处理子菜单St-AD进行相应按键操作,最终将设定好的地址值保存到PIC18F252自带的EEPROM中。设定压力表地址值后,主机对从机进行数据查询时,从机在USART接收中断服务程序中完成对数据的保存,并置位标志位,等待主程序循环对所接收数据进行处理。从机数据接收及处理程序流程如图3所示。
3.2主机软件
主机软件的设计是基于VC++平台的MFC编程实现。首先建立一个模态对话框,添加MSComm控件,对所用计算机串口进行参数设置及初始化。数据接收是通过对GetCommlvenl()事件的响应,然后将数据校验、保存并处理,在软件前台显示。主机数据接收程序流程如图4所示。
数据发送功能是通过按钮或者定时器控件调用数据发送函数实现的,在此不予详述。
4.结语
本文根据精密数字压力表的实际应用要求,详细描述了精密数字压力表多机通信的实现过程,提出的通信原理及软硬件实现方式合理、可靠。通信中使用和校验大大减低了通信的出错率,能够胜任工业现场恶劣的工作环境。依据本文所述方法开发的精密数字压力表已形成产品,并已得到实际应用。
实际应用过程中数据通信稳定可靠,尚未出现故障。但本文提出的RS232通信限制了从机和主机的通信距离,可根据实际需要以其它通信接口代替。 |