APP下载

基于Modbus多道放射性活度采集模块设计

2018-07-31董湘龙童雪林严术骞

自动化与仪表 2018年7期
关键词:上位串口通讯

董湘龙,童雪林,严术骞

(1.核工业二三〇研究所,长沙 410007;2.长沙米德电子科技有限公司,长沙 410006;3.深圳库肯智能厨房设备有限公司,深圳 518109)

放射性衰变统计涨落误差及其他干扰因素,是放射性测量误差中主要的来源,在实际工作中减小统计涨落误差的一般方法有增加测量次数,合理延长测量时间;提高测量装置的灵敏度,减少本底等办法[1-2]。前者在样品多的情况下,降低了工作效率,工作量大且测量时间长。解决办法从仪器设计角度考虑,除了上述方法中后者的措施,还可以采用有多个测量通道、操作简便和自动化程度高的仪器方案,综合提高工作效率。Modbus协议是国际工业领域采用的主流通讯协议之一,由于具有开放性,易于集成不同的设备,开发成本低和有着广泛的知识资源支持等特点,也逐步成为国内智能仪器仪表受欢迎的通讯协议之一,结合此协议特征开发的多道测量模块,数据传输可靠性和效率高,通用性和灵活性强,并且方便维护[3]。

1 总体设计

为使模块精简且灵活,利用常规5 V电源供电,主芯片采用功耗小、资源丰富、执行速度快的32位ARM处理器,带有多种外扩接口,采集多通道数据的同时与多台上位机通信。外部增设硬件计数器和电气隔离电路。模块能接收、识别上位机发送的命令或查询等消息,并准确无误地返回数据[4]。

2 Modbus RTU通讯

在同一网络中,主机和从机都必须采用相同的通信模式和传输波特率,采集模块嵌入Modbus协议[5]。Modbus协议有RTU、ASCII和TCP传输模式,本设计采用RTU通讯模式,在同样的波特率下,其传输效率比较高[6]。RTU协议模式如表1所示。

表1 RTU协议数据格式Tab.1 RTU protocol data format

该协议所有数值都为十六进制数,CRC校验码是计算起始位到数据的CRC校验值。

当上位机把通信命令发送至仪器时,模块接收到指令和数据信息后,计算比较CRC码正确后,根据功能码执行相应的指令操作,把相应的数据返回给上位机。返回的信息中包括地址码、执行动作的功能码、执行动作后结果的数据以及错误校验码,如果CRC出错就不返回任何信息[7]。测量模块通讯时地址码需主机与从机对应起来,模块从机地址允许预先设定。Modbus RTU协议有24种总线功能码,采用了表2的几种。

表2 Modbus功能代码Tab.2 Modbus function codes

3 硬件电路设计

硬件电路如图1所示,主要由微处理电路、通道选择电路、计数电路、通讯电路、供电电路、数字隔离电路等组成。微处理器采用STM32F103RBT6,结合外围电路完成数据采集、通道控制、参数设置及与上位机通信等功能。模拟信号需经过信号调理电路转换为数字信号方能输入本模块。

图1 电路结构框图Fig.1 Circuit block diagram

3.1 计数与通道控制电路

多通道放射性活度实时测量,如果样品活度很大,则采集的数据也多,有些计数脉冲比较窄,有的脉冲宽度小于1 μs,直接用微处理器的计数器可能会丢失而漏采数据,故使用外部硬件计数器保证每一个输入脉冲都能有效计数,然后通过ARM读取计数数据。原理如图2所示:微处理器控制74HC00闸门电路EN1选择测量通道,被测信号通过闸门电路后,进入内含2个独立4位二进制异步计数器74HC393,每个计数器有输入CLK、清除控制(MR)和计数输出(Q0~Q3)。启动测量时,通过置位MR1清除计数值,当输入信号S1由低到高跳变时进行计数,微控制器根据Q3的变化进行中断累加计数,工作完成后,关闭使能信号EN1并采集Q0~Q3状态,由嵌入式程序计算累加,从而得出活度计量值。

图2 一个通道的计数电路Fig.2 A channel counting circuit

3.2 隔离电路

为提高数字电路可靠性,模块与前端模拟信号放大处理电路进行电气隔离,使用ADI公司的高速隔离芯片ADUM1100,并同时隔离各个输入通道信号,提高整个系统的稳定性和可靠性。该隔离器件采用iCoupler磁隔离技术,将高速CMOS工艺与单芯片空芯变压器技术融为一体,具有优于光耦合器等替代器件的出色性能特征。如图3的应用电路简单,采用与其他电路模块隔离的+5 V独立电源,除几个滤波电容外无其他分离元件的配合。

图3 隔离电路Fig.3 Isolated circuit

3.3 通信电路

仪器采集距离近且一般不需级联测量,故采用最常用的串行通讯接口RS232,Modbus协议也支持此接口。上位机设计为电脑和带Modbus协议的触摸屏,通过SP232EEN芯片可驱动两个串行通讯接口,实现2种上位机独立或同时与本模块通信,以便适用不同用户和不同使用场合。

3.4 电源电路

本模块需要多种电压,设置了2个5 V电压输入端,其中一个5 V通过AMS1117-3.3转换为3.3 V给微处理器及外围电路供电,另外一个5 V给隔离电路供电。

4 软件设计

如图4(a)所示,下位机嵌入式软件和上位机软件两者都采用相同的通信模式。图4(b)为Modbus协议处理流程。程序的主要部分介绍如下。

4.1 初始化程序

4.1.1 初始化串口通信

首先加载存在的串口,把串口的CommPor属性依次打开,如果PortOpen属性打开成功,说明该串口可用,就可加载。

图4 读取数据与 Modbus数据处理流程Fig.4 Read data and Modbus data processing flow chart

然后通过串口相关属性,设定串口、波特率、校验位、数据位、停止位、接收和发送缓冲区空间、每次从缓存区接收的字节数等。对于打开的串口,在程序退出时必须自动关掉所有串口。

Private Sub InitialPort(SerialPort As String)

MSComm.CommPort=Val(Mid(SerialPort,4,Len(SerialPort)-3))′设定端口

MSComm.Settings="57600,n,8,1" ′设置波特率,校验位,数据位,停止位

MSComm.InBufferSize=1024′接收缓冲区大小

MSComm.OutBufferSize=1024′发送缓冲区大小

MSComm.InBufferCount=0′清空输入缓冲区

MSComm.OutBufferCount=0′清空输出缓冲区

MSComm.SThreshold=0′一次发送所有数据,不产生OnComm事件

MSComm.RThreshold=0′关掉接收响应事件

MSComm.InputLen=0′每次从接收缓冲区输入所有的字节

End Sub

4.1.2 初始化测量界面

应用软件数据表格选用VSFlexGrid控件,主要按照控件格式要求设置显示的属性,如表格标题内容、行列宽度、字体大小等。另外要设置各通道测量间隔、次数、自动或手动编号模式等。

4.2 控制指令发送程序

测量界面设置了开始、暂停、停止等功能按键,按下功能键则执行表1中对应功能代码。按Modbus协议要求,参考如下代码依次从串口发送模块从机地址、功能代码、从机寄存器开始地址、命令长度、命令内容、CRC验证,接着判断是否收到下位机反馈数据,读取数据后清除接收缓冲区。

4.3 数据接收和处理程序

如图5(a)所示,上位机读取数据采用定时器自动读取,发送功能代码 5,利用二进制代码“1”“0”开启和关闭各通道,同样发送功能代码1则可判断各通道的状态;发送功能代码4读下位机多个寄存器数据,实现多道测量后同时快速上报结果。如接收到数据则要清除串口接收缓冲区,并做CRC检验校正,校准正常,则数据可用。下位机执行命令流程如图 5(b)所示。

4.4 CRC校验程序

CRC即循环冗余校验码,是数据通信领域中常用的一种差错校验码,其特征是信息字段和校验字段的长度可以任意选定。由传输设备计算后加入到消息中,接收设备重新计算收到消息的CRC,并与接收到的CRC域中的值比较,如果两值不同则有误。常用的CRC-16校验计算方法有查表法和计算法,查表法速度快,语句少,但表格占用一定的程序空间;计算法速度较慢,占用程序时间,但节省空间资源。

图5 上位机、下位机工作流程Fig.5 Upper computer and lower computer work flow chart

5 结语

该模块采用ARM微处理器和少量的外围电路,可使系统小型化,功耗较低;简单的外置计数电路,节省了处理器计数器资源,也能灵活采集各种频率信号,微秒级窄脉冲也不会漏采。处理器与多个上位机通过Modbus总线协议进行通讯,使得整套系统结构相对简单,软件容易实现,数据传输的可靠性强,传输速度快,软件调试维护也方便。该模块配合不同的探测器和模拟信号调理电路,就能方便地组成活度测量仪器。

猜你喜欢

上位串口通讯
《茶叶通讯》简介
《茶叶通讯》简介
通讯报道
基于NPORT的地面综合气象观测系统通信测试方法及故障处理
浅谈AB PLC串口跟RFID传感器的通讯应用
基于EM9000工控板高性能双串口通信模型设计与实现
要攻城略地关键要有好筹码,这匹水产动保“黑马”如何能迅速上位?
特斯拉 风云之老阿姨上位
船舶电子设备串口数据的软件共享方法
基于ZigBee和VC上位机的教室智能监测管理系统