阶梯渐近MCGS温控程序在显微熔点仪中的应用
2021-07-27何子逸颜海成
张 辉, 何子逸, 尹 钊, 颜海成
(北京科技大学能源与环境工程学院,北京100083)
0 引 言
显微熔点仪[1]是高温环境观察物质熔化过程的重要工具,在药物纯度分析[2]、物质熔点测定[3]等方面应用广泛。目前,熔点仪大多通过手动调节旋钮控制加热盘输出功率,受人为因素影响显著,测试结果重复性较差;温度控制仪表仅有简单的温控功能,比例、积分、微分(Proportional Integral Derivative,PID)参数[4]固定,加热温度、加热功率、散热条件[5]发生改变时,温控曲线振荡幅度难以控制,常常导致温度超过物质熔化区间段,观测时间周期短;操作者观察物质熔化过程、记录温度数据同时进行,操作繁杂,影响观测精度。利用嵌入式监控系统(Monitor and Control Generated System,MCGS)触摸终端可以将人工操作与仪表温度控制功能分离,两者独立进行模块化设计,通过串口Modbus-RTU通信[6]完成数据交换。操作者可以专注观察物质状态的改变和触发数据记录按钮,触摸终端实时记录并保存中间数据。
1 显微熔点仪控制系统
显微熔点仪控制系统如图1所示,包括MST103AS1-PWM-NNN温控仪表、S-250-36直流电源、SSR-10DD固态继电器、Pt100温度传感器和加热盘。
图1 显微熔点仪控制系统图
常规温控仪表仅具有温度控制功能,为实现键控特性,专门研发了该型仪表,对芯片的通用输入、输出(General Purpose Input/Output,GPIO)引脚重新进行了定义,如图1中5、6引脚,当按钮按下再弹起时,5、6之间产生脉冲信号,此时对应的时间与温度会记录在芯片输入寄存器(第3区寄存器)中,实验完毕后由程序读出。3、4引脚为RS-485串行通信接口[7],分别与触摸屏COM2串口的7、8引脚相连。数据通信采用半双工方式,即当触摸屏向仪表发送数据时,仪表只能等待接收;仪表向触摸屏发送数据时,触摸屏只能接收,两者不能同时进行发送与接收数据操作。
加热盘内部发热元件电阻为10Ω,最大电流为4 A,功率可达130 W。测温传感器精度可达0.1℃,Pt100为电阻式传感器,连接线的粗细与长短会影响测量值的准确度。仪表内部利用开尔文双臂电桥接法,减小接触电阻,连接方式为三线制,如图1所示,将11、12端子短接后连到Pt100的一端,端子10连接至另一端。内部0x00保持寄存器(第4区寄存器)的值选择Pt1b,与外部传感器类型相匹配。
仪表输出通过固态继电器控制加热盘电流的有无,当7、8引脚电压低于3 V时,固态继电器的1、2端子断开,切断电流,加热盘停止供电;反之,当两引脚电压介于3~32 V时,固态继电器的1、2端子闭合,导通电流,加热盘开始工作。由于固态继电器的开关时间很短,如同脉冲一样,可以将供电电流分为很小的份数,用于温度的精细调节。0x14保持寄存器对应的控制周期参数Ct选择1,表示最小开关周期为1 s。0x15输出类型OP参数选择SSr,对应固态继电器。为提高控温精度,可将0x12回差Hy参数设为0.2℃,温度达到设定值后,其波动范围不会超过设定值的±0.2℃。
2 莫迪康指令解析
MCGS采用Modicon串口驱动构件[8]与支持Modbus-RTU标准协议的各类PLC[9]、仪表[10]和控制器[11]进行通信,通过不同的功能码访问仪表内部不同区域的寄存器。MST103A-S1-PWM-NNN温控仪表主要包括输入、输出两种类型寄存器,如图2所示。仪表的功能参数全部存储在输出寄存器中,中间测试的数据结果存储在输入寄存器中。在Modicon驱动中,输出寄存器为第4区寄存器,输入寄存器为第3区寄存器。
以MCGS脚本命令为例说明访问输出寄存器0x13地址数据的指令编写过程,脚本语句为:
“设备0”对应触摸屏COM2串口下地址为XX的仪表,与仪表参数0x1D输出寄存器的内容保持一致,此处XX设定为01。同一个串口可以连接多台仪表,但每台仪表的地址不能相同,以免通信时发生数据碰撞。当地址不同时,在MCGS程序中命名为“设备1”“设备2”…“设备n”加以区分。
“6”表示执行后续在双引号中的read指令。
“Read(4,20,WUB=Ctrl_19)”指令中4表示访问第4区寄存器,即存储参数的寄存器;图2中“Ctrl”参数存储在输出寄存器的0x13(十进制为19)地址处,由于寄存器在仪表中以00为起始地址,所以该参数对应从1开始的序号为20;WUB表示寄存器数据的类型,即Word Unsigned Byte,占用2个字节,为无符号整形数据,对应MCGS中的开关型数据;Ctrl_19为MCGS环境定义的变量名称。整条指令表示将仪表第4区第20个寄存器的数据以无符号整形格式取出,然后放于开关型变量Ctrl_19中。
图2 莫迪康指令解析图
同理,输入寄存器为第3区寄存器,操作者通过按
钮记录的时间与温度值存储在输入寄存器中。
!SetDevice(设备0,6,"Read(3,1,WUB=Read_PV_00)")表示将第3区第1个寄存器的值以无符号整形格式取出,放于开关型变量Read_PV_00中。
3 MCGS程序
MCGS组态软件[12]是嵌入式触摸屏自身具有的一种组态操作系统[13],可以运行在PC机或笔记本电脑中。其优势在于能够快速与智能仪表建立通信,将仪表寄存器内容与组态软件定义的变量进行关联。温控仪表主要通过PID参数对加热盘温度进行调节,用户需要通过界面调整各个参数的值。
3.1 仪表参数设置人机交互程序
仪表参数很多,仅将必要参数列出,如图3所示,以控制方式CtrL为例,该参数的值存储在输出寄存器0x13地址处,可以取0、1、2或3,对应的显示值分别为onoF、Pid、tunE、MAnu,用户看到的是显示值,而在寄存器中存储的是数字值。为在数字值与显示值之间转换,设计了“20_仪表参数”用户窗口,作为人机交互界面。当前值下方的虚线框表示输入框,点击该输入框时,程序会执行Click事件连接脚本,将Input_Ctrl变量置1,Flag_19变量置1。“onoF”、“Pid”、“tunE”、“MAnu”、“确定”5个按钮的可见度属性为Input_Ctrl=1,说明当Input_Ctrl变量为1时这5个按钮就会显示出来。用户一旦点击了输入框,这5个按钮会显示在界面上,供用户选择,如果按下了“onoF”按钮,运行脚本:
图3 温控仪表参数设置人机交互程序框图
Flag_19是参数序号跟踪变量,用于识别不同的参数,当用户点击输入框时,此值赋1,用该变量记下用户选择的参数,此处定义的字符型变量Ctrl_Str_19被赋给“onoF”字符值,而输入框与字符型变量Ctrl_Str_19相关联,所以在输入框中会显示“onoF”。同理,点击其他3个参数值按钮时,输入框会显示对应的参数显示值。当点击“确定”按钮时,Input_Ctrl变量赋0,5个按钮隐藏,同时,Flag_19变量赋0,不再跟踪参数序号。
当用户点击“读仪表值”按钮时,发送如下通信指令:
将仪表的Ctrl参数读入开关型变量Ctrl_19中,根据该变量的数字值对字符型变量Ctrl_Str_19赋值,与参数显示值一一对应。输入框与字符型变量Ctrl_Str_19相关联,点击完“读仪表值”按钮后,输入框内显示的是仪表参数对应的显示值。这个过程实现了参数数字值向显示值的转换。
当点击“W_Ctrl”按钮时,将输入框中用户选择的字符转化为数字。例如:
首先判断与输入框关联的字符型变量Ctrl_Str_19的内容是不是“onoF”,如果是,则将对应的开关型变量Ctrl_19赋为数字值0;同理,如果用户选择了不同的字符型参数值,点击按钮后都要转化为相应的数字值。最后,通过!SetDevice(设备0,6,"Write(4,20,WUB=Ctrl_19)")通信脚本指令将开关型变量Ctrl_19存储的数字值写入仪表第4区地址为20的寄存器中,完成参数的修改过程。
3.2 实验参数设置
图4 为实验参数设置程序图。
图4 实验参数设置程序图
在主程序窗口中,通过“仪表参数”“实验参数”和“数据结果”3个按钮分别调用相应的子窗口,例如,点击“实验参数”按钮,执行脚本指令:
表示在主窗口的(20,20)位置显示宽为256,高为232像素的“21_实验参数”子窗口。子窗口形象地绘制了加热盘的升温过程,采用2个控温平台,第1个称为预热温度,其设定值低于物质熔点2~3℃;第2个称为目标温度,其设定值高于物质熔点3~5℃,保证物质熔化的过热度;中间过渡直线对应升温斜率,斜率越小,观测温度与实际温度越接近,滞后效应越小,得到的温度越准确。传统熔点仪[14]需要用户反复切换温控面板的控制键设定参数值,专业性强,操作时间长,不利于一般用户的使用。MCGS人机交互界面配有面板输入键盘[15],简单快捷,仅需触摸即可更改。例如,要更改预热温度参数,只需点击上方的输入框,会弹出面板键盘,输入要设定的数值,该数值保存在与输入框相关联的数值型变量Rdy_Value_37中,再点击“确定”按钮,Rdy_Value_37数值型变量乘以10转化为仪表参数存储的值,由于仪表参数对应开关型变量,再将Num_Temp进行类型转化,赋值给开关型变量Rdy_37,通过!SetDevice(设备0,6,"Write(4,38,WUB=Rdy_37)")将Rdy_37的内容写入第4区地址为38的输出寄存器中,完成预热温度参数的修改。同理,升温斜率、目标温度都可以通过这种方式来完成。
“21_实验参数”子窗口在显示时,会执行启动脚本,启动脚本的内容是分别读取预热温度、升温斜率和目标温度的值。例如,!SetDevice(设备0,6,"Read(4,32,
WUB=Set_31)")通信指令将第4区地址为32的输出寄存器的值读入开关型变量SET_31中,再除以10得到小数值,赋给数值型变量SET_Value_31,该变量与目标温度上方的输入框相关联,只要“21_实验参数”子窗口一启动,脚本即刻执行,完成仪表寄存器数据的读取操作。
3.3 数据结果读取
在主程序窗口点击“数据结果”按钮,执行脚本程序“!OpenSubWnd(22_数据结果,60,60,356,282,0)”,弹出“22_数据结果”子窗口,该窗口以表格形式显示用户观察物质熔化过程中通过按钮记录的中间时间及其对应温度,每个格子与相应的字符型变量关联。例如,第1行第2列与Read_Time_First_Str_02字符型变量关联,由于这些中间数据存储在输入寄存器,该类寄存器仅支持读取操作,不能进行写入,因此,在MCGS上层界面中可以直接定义字符型变量与之关联。子窗口显示时运行启动脚本,如图5所示。
图5 实验数据采集程序图
从第3区第3个寄存器开始,依次读取到第12个寄存器,并将读取到的值放入对应的开关型数据Read_Time_First_02、Read_Time_Secibd_03和Read_Time_Third_04等变量中。采用!StrFormat函数将开关型变量按指定格式格式化为字符串,再赋给相应字符型变量,完成通信后的数据格式转换功能。用户一旦完成实验测试,点击“数据结果”按钮便可查询实验测得的值。
4 实验测试
温度控制过程中,仪表的控温精度与加热电流、温度传感器和环境温度等因素有关,相同条件下,控温PID参数可以进行优化。例如,当目标温度为200℃时,通过自整定可以计算出此条件下对应的参数值,如果目标温度改变为400℃,需要重新自整定。显微熔点仪一般用于精准测定已知物质的熔点,其温度范围通常已知,此时可按熔点为基准进行自整定。MST103A-S1-PWM-NNN型仪表的控温精度由比例参数TP、积分时间TI和微分时间TD3个参数决定,如图6所示。
图6 自整定过程温度曲线图
该图是仪表目标温度为170℃时自整定过程温度变化曲线,点A前面的振荡区间为升温和降温试探过程,升温段用于计算加热功率对目标温度的贡献,降温段用于考察环境温度对目标温度的贡献。
曲线经过一个周期振荡后开始进行参数计算过程,到达A点后,记录峰值对应时间,当曲线降至C点时,记录谷值对应时间,峰值与谷值对应时间差为积分时间TI,相当于振荡周期的一半,此处为38 s;当曲线从A点下降经过设定温度时,记录温度值为设定值170℃对应的时间,即B点,曲线经过波谷C点后再次上升到设定值D点,2个时间差的1/8为微分时间TD,BD时间差为73 s,再除以8取整为9 s,即微分时间TD为8 s;从C点开始到达D点,其升温斜率[16]的倒数为比例带Pb,即每升高1℃所用的时间,此处计算为12.3 s/℃。这样,经过上述计算过程,获得完整的PID参数,将其写入输出寄存器对应的0x17(It)、0x18(Dt)和0x16(Pb)地址中,用于后续仪表对用户设定预热温度的控制。
图7 是测定熔点为164.5~166.5℃磺胺时的升温曲线图,预热温度为161℃,升温斜率为0.5℃/min,目标温度为167℃。
图7 熔点测试过程升温曲线图
由图7可见,当升温曲线到达预热温度161℃时,会上冲1.1℃,到达A点,但仍然低于磺胺的熔点范围,不影响操作者观察物质熔化过程。曲线下降至最低温度B点(160.8℃)后开始按0.5℃/min速率升温,在这个过程中,操作者可以专心关注物质的熔化过程,当认为物质熔化时,可以点按手中的按钮,此时对应的时间和温度会存入输入寄存器相应的地址,每点按一次,便有一组数据依次存入,直至磺胺完全熔化。当曲线升至167℃时,停在该温度不再继续升温,等待用户下一步指令,保证了测定过程的安全。可见,升温曲线保持了较好的线性关系,从161℃升至167℃时耗时693 s,计算得到平均升温速率为0.521℃/min,与设定值0.5℃/min非常接近。
5 结 语
利用具有可视化操作界面的MCGS组态软件与具有RS-485串口通信功能的温控仪表,开发了一套控温与观察相对独立的显微熔点仪控制系统。主要特点如下。
(1)建立与智能仪表通信的人机交互界面系统,操作者可以读取和修改仪表不同区域地址处的寄存器内容,对于不同参数通过识别序号甄别,通过按钮选择不同参数值,操作更加便捷;
(2)通过设置中间预热平台,将温度过冲限制在较小范围内,保证后续固定的升温速率,温度曲线以阶梯渐近式接近目标温度,为操作者准确观察物质熔化过程和测定熔化温度提供了稳定重复的升温曲线,省略了人工调整旋钮的步骤。
后续将结合适于不同目标温度的PID参数开发智能型高精度控制算法。