一种微生物发酵在线浓度分析仪的上下位机通讯方法

文档序号:1683004 发布日期:2020-01-03 浏览:10次 >En<

阅读说明:本技术 一种微生物发酵在线浓度分析仪的上下位机通讯方法 (Upper and lower computer communication method of microbial fermentation online concentration analyzer ) 是由 李俊 伍倩倩 薄翠梅 于 2019-09-27 设计创作,主要内容包括:本发明公开了一种微生物发酵在线浓度分析仪的上下位机通讯方法。微生物发酵在线浓度分析仪包括:上位机MCGS、下位机STM32主控系统和检测系统。上、下位机之间进行指令传输和数据传输,采用了带有CRC校验的自定义通信协议。对上、下位机分别进行通讯设置和协议设计,上位机通过串口设置和调用库函数,下位机通过keil软件编写协议函数以实现通讯。根据整个检测流程,设计一种通讯协议格式,微生物发酵在线浓度分析仪的具体通信指令分为上位机、下位机主控系统和检测系统三部分,按照地址位判别接收指令的具体模块,按照功能码的不同执行不同的操作。通过上下位机的准确、稳定通讯,实现在线采样和在线检测组分浓度。(The invention discloses a communication method of an upper computer and a lower computer of a microbial fermentation online concentration analyzer. The online concentration analyzer of microbial fermentation includes: host computer MCGS, lower computer STM32 major control system and detecting system. The upper computer and the lower computer transmit instructions and data, and a user-defined communication protocol with CRC is adopted. The upper computer and the lower computer are respectively subjected to communication setting and protocol design, the upper computer sets and calls library functions through a serial port, and the lower computer compiles protocol functions through keil software to realize communication. According to the whole detection process, a communication protocol format is designed, a specific communication instruction of the microbial fermentation online concentration analyzer is divided into an upper computer, a lower computer main control system and a detection system, a specific module for receiving the instruction is distinguished according to address bits, and different operations are executed according to different function codes. The online sampling and the online detection of the component concentration are realized through the accurate and stable communication of the upper computer and the lower computer.)

一种微生物发酵在线浓度分析仪的上下位机通讯方法

技术领域

本发明涉及本发明属于通信及电气控制技术领域,具体涉及一种微生物发酵在线浓度分析仪的上下位机通讯的设计。

背景技术

在发酵过程中,微生物能有序地将原料(糖类)代谢合成或转化为目标产物。科学研究表明:底物、产物的种类与浓度以及相互作用,均会对微生物发酵过程中的反应速率、产品收率以及细胞对代谢途径的选择产生重大影响。关键组分浓度实时监测对提高发酵生产效率极为重要。通过在线监测关键组分(底物、中间代谢物、产物)浓度,实时识别细胞生理状态,揭示细胞生长代谢规律及阶段特性,指导微生物发酵过程的实时调控。

工业控制领域常用的通信方式有RS485和RS232,两种接口标准是对电气特性以及物理特性的不同规定,数据的传输方式不同。而RS485采用差分通信,能够最大程度的避免通信过程中的干扰。在线分析仪本身就是一个巨大的干扰源,具有大量的磁性元器件和高速变化的信号量,采用差分通信对通信的可靠性是重要保障。

本发明中使用的上位机是MCGS,MCGS是北京昆仑通态自动化软件科技有限公司的产品,包括MCGS组态软件和MCGS显示屏,用于快速构造和生成上位机监控系统,主要完成现场数据的采集、前端数据处理和设备的输出控制。MCGGS的通信接口是RS485,其组态软件具有灵活的脚本命令,可开发自定义通讯协议与下位机通讯。

随着发酵工程的发展,对信息的实时性、完整性、可靠性的要求也日益提升。当前市场上存在的组分浓度分析仪器,绝大多数采用离线采样、稀释需要人工取样,导致了检测周期大大延长,检测数据不能及时反映当前发酵体系中的组分浓度变化(如底物、关键中间代谢物、产物),极大地限制了基于浓度反馈的发酵过程控制技术的广泛应用。因此上下位机的准确通讯对实现在线采样和在线检测组分浓度具有重要意义。

发明内容

本发明的目的是针对微生物发酵在线浓度分析仪检测过程中因通讯不及时导致的检测周期长、数据不可靠问题,采用了RS485通信方式和自定义的通信协议,提供了一种微生物发酵在线浓度分析仪的上下位机通讯设计。

本发明所采用的技术方案是:一种微生物发酵在线浓度分析仪的上下位机通讯设计包括上位机MCGS、下位机STM32主控系统和检测系统的通讯设置与协议设计,通讯的软件程序流程设计。

所述STM32主控系统主要负责控制整个仪器流路,被控对象包括机械臂、阀、泵、电机等实现采样操作的硬件设备。在keil软件中根据检测系统流程和协议编写函数,当接收上位机MCGS的指令时进行清洗、取样等操作。

所述检测系统主要通过普鲁士蓝生物传感电极,采集生物传感电极电流响应信号,完成样品的标定并返回浓度信息。在keil软件中根据检测系统流程和协议编写函数,当接收上位机MCGS的指令时进行检测和关闭搅拌电机等操作。

所述上位机MCGS用于控制微生物发酵在线浓度分析仪检测的整个流程,显示数据曲线、反馈信息并进行存储。其组态软件具有灵活的脚本命令,可开发自定义通讯协议与下位机通讯。

所述的MCGS上位机通过RS485与STM32主控系统和检测系统进行通信,为保证数据传输的准确性和保密性,本系统采用了带有CRC校验的自定义通信协议。CRC的全称是Cyclic Redundancy Check,意思是循环冗余校验,是常用的一种数据校验方法,用来剔除信号波动和干扰。

所述微生物发酵在线浓度分析仪系统中上下位机的通信协议格式是:地址位+功能码+数据长度+数据位+校验位。除CRC校验码、数据位占2字节,其他位都占1字节,以16进制表示。分析仪的具体通信指令分为上位机、主控系统和检测系统三部分,上位机的地址位表示为01,主控系统的地址位为02,检测系统的地址位为03,按照地址位判别指令接收具体模块,按照功能码的不同执行不同的操作。

所述上位机和下位机的通讯的软件程序流程包括以下步骤:

(1)从串口接收指令;

(2)判断地址码是否为本机地址,若是则进行下一步,若不是直接结束;

(3)判断CRC校验是否正确,若是则进行下一步,若不是直接结束;

(4)从接收到的指令中读取功能码;

(5)进行任务处理;

(6)发送对应的应答指令。一次指令的传输到此结束。

本发明的有益效果:微生物发酵在线浓度分析仪,通过上下位机的准确、稳定通讯,实现对STM32主控系统和检测系统的实时任务分配和协同控制,可解决发酵过程中底物及产物浓度在线检测的难题,很大提升发酵过程整体效率。

附图说明

图1是本发明的微生物发酵在线浓度分析仪系统总体功能框图

图2是本发明的软件程序流程图

图3是本发明的上位机通讯指令流程图

具体实施方式

下面分别对上、下位机的通讯设置和整个系统具体指令流程进行详细说明。

步骤1:上位机中通讯设置,包括数据发送和数据接收。

MCGS中数据发送是通过串口设置和调用库函数实现的:事先将需要的指令计算出CRC校验码的值,按照CRCLow在前CRCHigh在后的顺序,使用!WriteSerial()库函数向串口2(MCGS的485端口)缓冲器Serial2Buffer逐字节发送帧。具体协议为:!WriteSerial(2,2)′地址位!WriteSerial(2,1)′功能码!WriteSerial(2,0)′数据位!WriteSerial(2,0)′数据位!WriteSerial(2,CRCLow)′校验位高字节!WriteSerial(2,CRCHigh)′校验位低字节。

MCGS中数据接收是通过串口设置、策略和调用库函数实现的:CountInBuffer=!GetSerialReadBufferSize(2)TempStr=″ ″Str0=″ ″I=1 While I<=CountInBufferTempNumber=!ReadSerial(2)Str0=!I2Hex(TempNumber)IF(TempNumber<16)THENTempStr=TempStr+″0″+Str0+″ ″ELSE TempStr=TempStr+Str0+″ ″ENDIF I=I+1EndWhile当串口缓冲区数据长度不为零,即串口缓冲区收到数据时,进入中断,用字符串处理函数取出收到的每一位数据,拼接成帧。按照通讯协改从相应位置取出数据。

步骤2:下位机中通讯设计和函数编写。主要设计mcheck.c、mport.c和protocol.c这三个子程序和相应.h头文件来自定义协议实现通讯。

mport文件中实现端口配置、底层收发;mport.h头文件中宏定义RS_TX_EN为PGout(8),配置IO口PG8为输出模式;定义EN_USART2_RX为1,使下位机默认处于接收状态。mport.c中实现串口2中断服务函数USART2_IRQHandler、接口初始化函数mp_init、串口数据发送函数mp_send_data。mport.c中的中断服务函数USART2_IRQHandler,使用USART_GetITStatus(USART2,USART_IT_RXNE)判断串口2接收是否非空;若非空使用USART_ReceiveData(USART2)读取串口数据,寄存器USART2->DR接收的数据;判断m_ctrl_dev.frameok是否等于0,若是则接收未完成,用数组m_ctrl_dev.rxbuf[m_ctrl_dev.rxlen]逐字节存储USART2->DR串口2数据寄存器中的数据;若接收帧长度m_ctrl_dev.rxlen大于最大帧长度M_MAX_FRAME_LENGTH-1,则接收数据错误,重新开始接收。

接口初始化函数mp_init中配置GPIO和时钟:使能GPIOA时钟、USART2时钟、GPIOA时钟;复用GPIOA2、GPIOA3作为USART2串口映射;配置GPIOA2、GPIOA3引脚,模式为复用功能,速度100MHz,输出类型为推挽复用输出,上拉,初始化;配置GPIOG8用于485模式控制,模式为输出功能,速度100MHz,输出类型为推挽复用输出,上拉,初始化;配置串口:初始化USART2,设置波特率为9600,8位字长,1位停止位,无奇偶校验位,无硬件数据流控制,串口模式为收发模式,初始化,使能串口2,清除串口2发送完成标志位,开启串口2接收中断和空闲中断;配置串口2中断请求抢占优先级3,子优先级3,使能中断请求,初始化NVIC(嵌入式向量中断寄存器);RS485_TX_EN=0,默认开始为接收模式。

串口数据发送函数mp_send_data中设置485端口为发送模式RS485_TX_EN=1,使用USART_SendData发送函数依次向串口数据寄存器中写值直到数据长度等于设定,发送过程中使用USART_GetFlagStatus判断发送完成标志位USART_FLAG_TC是否为1,一帧数据发送完毕后设置485端口为接受模式RS485_TX_EN=0。

(2)mcheck.c中实现CRC16校验算法。定义高位字节表CRC16HiTable和低位字节表CRC16LoTable。使用mc_check_crc16校验值计算函数,定义索引index、校验值计算结果check16、预置寄存器低八位crc_low、预置寄存器高八位crc_high。对于待校验帧中每一字节,用预置寄存器第八位和待机算字节异或,得到索引;用索引位置查找高位字节表中对应数据,与预置寄存器高八位异或,以此值更新预置寄存器低八位;用索引位置查找低位字节表中对应数据,更新预置寄存器高八位。所有字节处理完成后得到的预置寄存器即CRC16校验结果。

(3)protocol中实现本通讯协议的具体定义。protocol.h头文件中使用宏定义和结构体声明相关变量和函数。定义返回错误枚举类型m_result,MR_OK=0通讯正常,MR_FRAME_FORMAT_ERR=1帧格式错误,MR_FRAME_CHECK_ERR=2校验值错误,MR_MEMORY_ERR=3内存错误。

定义类ModBus帧格式结构体类型m_frame_typedef,address地址位,function功能码,datalength地址长度,data数据位,chkval校验值。定义类ModBus协议管理器结构体类型m_protocol_dev_typedef,*rxbuf接收缓存区,rxlen接收数据的长度,frameok一帧数据接收完成标记。定义ModBus控制器m_protocol_dev_typedef类型的m_ctrl_dev,解析一帧数据函数mb_unpack_frame(m_frame_typedef*fx),打包发送函数mb_packsend_frame(m_frame_typedef*fx),ModBus初始化函数mb_init(void),ModBus释放函数mb_destroy(void)。

protocol.c具体实现头文件中定义的函数功能。mb_unpack_frame解包函数:判断接收帧长度,超出范围则清除本次接收数据长度rxlen和frameok标记以便下一次正常接收,返回帧格式错误;对于正确长度的帧,使用mc_check_crc16校验值计算函数计算校验值calchkval,取出接收帧中附带校验值rxchkval,清除本次接收数据长度rxlen和frameok标记以便下一次接收,判断calchkval和rxchkval是否相同,校验正常将m_ctrl_dev.rxbuf[]数组中数据存至m_frame_typedef类型的结构体fx内存空间,依序将起始位、地址位、功能码等不同意义的字节存放于结构体中的不同变量。

mb_packsend_frame打包发送函数:初始化*sendbuf发送缓冲区和打包后的帧长度,将m_frame_typedef类型的结构体fx内存空间内的不同变量赋予发送缓冲数组sendbuf[],使用mc_check_crc16()计算对应校验值calchkval,将calchkval转换成16进制形式,高字节在前低字节在后赋予sendbuf[]中对应位置。使用mp_send_data帧发送函数发送sendbuf[]中填充好的一帧数据。

mb_init()初始化ModBus协议管理器函数,初始化m_ctrl_dev结构体中成员,包括m_ctrl_dev.rxbuf、m_ctrl_dev.rxlen、m_ctrl_dev.frameok等。mb_destroy函数清零m_ctrl_dev结构体,释放内存。

步骤3:分析仪的具体通信指令分为上位机、主控系统和检测系统三部分,上位机的地址位表示为01,主控系统的地址位为02,检测系统的地址位为03。整个系统的通讯控制流程如下所示。

(1)首先上位机给STM32主控系统发送复位加清洗指令02 01 02 00 00 FD FC,清洗结束后返回结束指令01 01 02 00 00 B9 FC给上位机,以进行下一步指示。

(2)上位机接收指令后给检测系统发送检测零点AD的指令03 01 02 00 00 C0 3C,采集浓度为零的缓冲液的AD值,定义为ADV0。

(3)检测系统返回给上位机带有ADV0值的指令01 07 02 xx xx+CRC,由上位机解析数据并保存,然后上位机给主控系统发送定标指令02 03 02 00 00 FC 44,将标准液打入检测池中,第一次定标结束后,上位机给检测系统发送采集AD指令03 02 02 00 00 C0 78。

(4)检测系统返回第一次定标值01 08 02 xx xx+CRC,我们定义为ADV1,上位机解析数据并保存,而后上位机请求关闭搅拌电机03 03 02 00 00 C1 84。

(5)搅拌电机关闭成功后,上位机向主控系统发送清洗加定标的指令02 04 02 00 00FD 30,再次注射入标准液进行校准,上位机接收第二次定标结束指令并发送采集AD指令0302 02 00 00 C0 78。

(6)检测系统返回第二次定标值01 08 02 xx xx+CRC,我们定义为ADV2,而后上位机请求关闭搅拌电机03 03 02 00 00 C1 84。

(7)上位机解析:在一定范围内,浓度值和AD响应值成线性关系,所以通过零浓度对应的AD值ADV0和标准液浓度ADV1可以得到浓度值和AD响应值的对应函数关系式。第二次采集AD值是重复上一次的操作,对标准液进行第二次测试,得到AD值ADV2,然后由第二次采集到的AD值通过函数关系式算得第二次浓度值,两次浓度值偏差小于2%则表示定标通过。

(8)如果定标成功后,则可以进行对样品的浓度检测工作,上位机给主控系统发送0206 02 00 00 FC 88进行清洗加取样操作,取样结束后发送03 02 02 00 00 C0 78采集待测液的AD值。通过标定得到的函数关系式,再加上待测液AD便可以由关系式得到待测液的浓度。最后检测通过由上位机发送清洗加结束指令02 05 02 00 00 FC CC,至此一次检测流程结束。

(9)如果第二次定标不通过即两次浓度差大于2%,则重新采集数据进行定标,返回步骤(1)上位机发送复位指令02 01 02 00 00 FD FC。

9页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:一种大肠杆菌快速测试盒

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!