張 輝, 何子逸, 尹 釗, 顏海成
(北京科技大學能源與環(huán)境工程學院,北京100083)
顯微熔點儀[1]是高溫環(huán)境觀察物質(zhì)熔化過程的重要工具,在藥物純度分析[2]、物質(zhì)熔點測定[3]等方面應用廣泛。目前,熔點儀大多通過手動調(diào)節(jié)旋鈕控制加熱盤輸出功率,受人為因素影響顯著,測試結(jié)果重復性較差;溫度控制儀表僅有簡單的溫控功能,比例、積分、微分(Proportional Integral Derivative,PID)參數(shù)[4]固定,加熱溫度、加熱功率、散熱條件[5]發(fā)生改變時,溫控曲線振蕩幅度難以控制,常常導致溫度超過物質(zhì)熔化區(qū)間段,觀測時間周期短;操作者觀察物質(zhì)熔化過程、記錄溫度數(shù)據(jù)同時進行,操作繁雜,影響觀測精度。利用嵌入式監(jiān)控系統(tǒng)(Monitor and Control Generated System,MCGS)觸摸終端可以將人工操作與儀表溫度控制功能分離,兩者獨立進行模塊化設計,通過串口Modbus-RTU通信[6]完成數(shù)據(jù)交換。操作者可以專注觀察物質(zhì)狀態(tài)的改變和觸發(fā)數(shù)據(jù)記錄按鈕,觸摸終端實時記錄并保存中間數(shù)據(jù)。
顯微熔點儀控制系統(tǒng)如圖1所示,包括MST103AS1-PWM-NNN溫控儀表、S-250-36直流電源、SSR-10DD固態(tài)繼電器、Pt100溫度傳感器和加熱盤。

圖1 顯微熔點儀控制系統(tǒng)圖
常規(guī)溫控儀表僅具有溫度控制功能,為實現(xiàn)鍵控特性,專門研發(fā)了該型儀表,對芯片的通用輸入、輸出(General Purpose Input/Output,GPIO)引腳重新進行了定義,如圖1中5、6引腳,當按鈕按下再彈起時,5、6之間產(chǎn)生脈沖信號,此時對應的時間與溫度會記錄在芯片輸入寄存器(第3區(qū)寄存器)中,實驗完畢后由程序讀出。3、4引腳為RS-485串行通信接口[7],分別與觸摸屏COM2串口的7、8引腳相連。數(shù)據(jù)通信采用半雙工方式,即當觸摸屏向儀表發(fā)送數(shù)據(jù)時,儀表只能等待接收;儀表向觸摸屏發(fā)送數(shù)據(jù)時,觸摸屏只能接收,兩者不能同時進行發(fā)送與接收數(shù)據(jù)操作。
加熱盤內(nèi)部發(fā)熱元件電阻為10Ω,最大電流為4 A,功率可達130 W。測溫傳感器精度可達0.1℃,Pt100為電阻式傳感器,連接線的粗細與長短會影響測量值的準確度。儀表內(nèi)部利用開爾文雙臂電橋接法,減小接觸電阻,連接方式為三線制,如圖1所示,將11、12端子短接后連到Pt100的一端,端子10連接至另一端。內(nèi)部0x00保持寄存器(第4區(qū)寄存器)的值選擇Pt1b,與外部傳感器類型相匹配。
儀表輸出通過固態(tài)繼電器控制加熱盤電流的有無,當7、8引腳電壓低于3 V時,固態(tài)繼電器的1、2端子斷開,切斷電流,加熱盤停止供電;反之,當兩引腳電壓介于3~32 V時,固態(tài)繼電器的1、2端子閉合,導通電流,加熱盤開始工作。由于固態(tài)繼電器的開關(guān)時間很短,如同脈沖一樣,可以將供電電流分為很小的份數(shù),用于溫度的精細調(diào)節(jié)。0x14保持寄存器對應的控制周期參數(shù)Ct選擇1,表示最小開關(guān)周期為1 s。0x15輸出類型OP參數(shù)選擇SSr,對應固態(tài)繼電器。為提高控溫精度,可將0x12回差Hy參數(shù)設為0.2℃,溫度達到設定值后,其波動范圍不會超過設定值的±0.2℃。
MCGS采用Modicon串口驅(qū)動構(gòu)件[8]與支持Modbus-RTU標準協(xié)議的各類PLC[9]、儀表[10]和控制器[11]進行通信,通過不同的功能碼訪問儀表內(nèi)部不同區(qū)域的寄存器。MST103A-S1-PWM-NNN溫控儀表主要包括輸入、輸出兩種類型寄存器,如圖2所示。儀表的功能參數(shù)全部存儲在輸出寄存器中,中間測試的數(shù)據(jù)結(jié)果存儲在輸入寄存器中。在Modicon驅(qū)動中,輸出寄存器為第4區(qū)寄存器,輸入寄存器為第3區(qū)寄存器。
以MCGS腳本命令為例說明訪問輸出寄存器0x13地址數(shù)據(jù)的指令編寫過程,腳本語句為:

“設備0”對應觸摸屏COM2串口下地址為XX的儀表,與儀表參數(shù)0x1D輸出寄存器的內(nèi)容保持一致,此處XX設定為01。同一個串口可以連接多臺儀表,但每臺儀表的地址不能相同,以免通信時發(fā)生數(shù)據(jù)碰撞。當?shù)刂凡煌瑫r,在MCGS程序中命名為“設備1”“設備2”…“設備n”加以區(qū)分。
“6”表示執(zhí)行后續(xù)在雙引號中的read指令。
“Read(4,20,WUB=Ctrl_19)”指令中4表示訪問第4區(qū)寄存器,即存儲參數(shù)的寄存器;圖2中“Ctrl”參數(shù)存儲在輸出寄存器的0x13(十進制為19)地址處,由于寄存器在儀表中以00為起始地址,所以該參數(shù)對應從1開始的序號為20;WUB表示寄存器數(shù)據(jù)的類型,即Word Unsigned Byte,占用2個字節(jié),為無符號整形數(shù)據(jù),對應MCGS中的開關(guān)型數(shù)據(jù);Ctrl_19為MCGS環(huán)境定義的變量名稱。整條指令表示將儀表第4區(qū)第20個寄存器的數(shù)據(jù)以無符號整形格式取出,然后放于開關(guān)型變量Ctrl_19中。

圖2 莫迪康指令解析圖
同理,輸入寄存器為第3區(qū)寄存器,操作者通過按
鈕記錄的時間與溫度值存儲在輸入寄存器中。
!SetDevice(設備0,6,"Read(3,1,WUB=Read_PV_00)")表示將第3區(qū)第1個寄存器的值以無符號整形格式取出,放于開關(guān)型變量Read_PV_00中。
MCGS組態(tài)軟件[12]是嵌入式觸摸屏自身具有的一種組態(tài)操作系統(tǒng)[13],可以運行在PC機或筆記本電腦中。其優(yōu)勢在于能夠快速與智能儀表建立通信,將儀表寄存器內(nèi)容與組態(tài)軟件定義的變量進行關(guān)聯(lián)。溫控儀表主要通過PID參數(shù)對加熱盤溫度進行調(diào)節(jié),用戶需要通過界面調(diào)整各個參數(shù)的值。
儀表參數(shù)很多,僅將必要參數(shù)列出,如圖3所示,以控制方式CtrL為例,該參數(shù)的值存儲在輸出寄存器0x13地址處,可以取0、1、2或3,對應的顯示值分別為onoF、Pid、tunE、MAnu,用戶看到的是顯示值,而在寄存器中存儲的是數(shù)字值。為在數(shù)字值與顯示值之間轉(zhuǎn)換,設計了“20_儀表參數(shù)”用戶窗口,作為人機交互界面。當前值下方的虛線框表示輸入框,點擊該輸入框時,程序會執(zhí)行Click事件連接腳本,將Input_Ctrl變量置1,F(xiàn)lag_19變量置1。“onoF”、“Pid”、“tunE”、“MAnu”、“確定”5個按鈕的可見度屬性為Input_Ctrl=1,說明當Input_Ctrl變量為1時這5個按鈕就會顯示出來。用戶一旦點擊了輸入框,這5個按鈕會顯示在界面上,供用戶選擇,如果按下了“onoF”按鈕,運行腳本:

圖3 溫控儀表參數(shù)設置人機交互程序框圖

Flag_19是參數(shù)序號跟蹤變量,用于識別不同的參數(shù),當用戶點擊輸入框時,此值賦1,用該變量記下用戶選擇的參數(shù),此處定義的字符型變量Ctrl_Str_19被賦給“onoF”字符值,而輸入框與字符型變量Ctrl_Str_19相關(guān)聯(lián),所以在輸入框中會顯示“onoF”。同理,點擊其他3個參數(shù)值按鈕時,輸入框會顯示對應的參數(shù)顯示值。當點擊“確定”按鈕時,Input_Ctrl變量賦0,5個按鈕隱藏,同時,F(xiàn)lag_19變量賦0,不再跟蹤參數(shù)序號。
當用戶點擊“讀儀表值”按鈕時,發(fā)送如下通信指令:

將儀表的Ctrl參數(shù)讀入開關(guān)型變量Ctrl_19中,根據(jù)該變量的數(shù)字值對字符型變量Ctrl_Str_19賦值,與參數(shù)顯示值一一對應。輸入框與字符型變量Ctrl_Str_19相關(guān)聯(lián),點擊完“讀儀表值”按鈕后,輸入框內(nèi)顯示的是儀表參數(shù)對應的顯示值。這個過程實現(xiàn)了參數(shù)數(shù)字值向顯示值的轉(zhuǎn)換。
當點擊“W_Ctrl”按鈕時,將輸入框中用戶選擇的字符轉(zhuǎn)化為數(shù)字。例如:

首先判斷與輸入框關(guān)聯(lián)的字符型變量Ctrl_Str_19的內(nèi)容是不是“onoF”,如果是,則將對應的開關(guān)型變量Ctrl_19賦為數(shù)字值0;同理,如果用戶選擇了不同的字符型參數(shù)值,點擊按鈕后都要轉(zhuǎn)化為相應的數(shù)字值。最后,通過!SetDevice(設備0,6,"Write(4,20,WUB=Ctrl_19)")通信腳本指令將開關(guān)型變量Ctrl_19存儲的數(shù)字值寫入儀表第4區(qū)地址為20的寄存器中,完成參數(shù)的修改過程。
圖4 為實驗參數(shù)設置程序圖。

圖4 實驗參數(shù)設置程序圖
在主程序窗口中,通過“儀表參數(shù)”“實驗參數(shù)”和“數(shù)據(jù)結(jié)果”3個按鈕分別調(diào)用相應的子窗口,例如,點擊“實驗參數(shù)”按鈕,執(zhí)行腳本指令:

表示在主窗口的(20,20)位置顯示寬為256,高為232像素的“21_實驗參數(shù)”子窗口。子窗口形象地繪制了加熱盤的升溫過程,采用2個控溫平臺,第1個稱為預熱溫度,其設定值低于物質(zhì)熔點2~3℃;第2個稱為目標溫度,其設定值高于物質(zhì)熔點3~5℃,保證物質(zhì)熔化的過熱度;中間過渡直線對應升溫斜率,斜率越小,觀測溫度與實際溫度越接近,滯后效應越小,得到的溫度越準確。傳統(tǒng)熔點儀[14]需要用戶反復切換溫控面板的控制鍵設定參數(shù)值,專業(yè)性強,操作時間長,不利于一般用戶的使用。MCGS人機交互界面配有面板輸入鍵盤[15],簡單快捷,僅需觸摸即可更改。例如,要更改預熱溫度參數(shù),只需點擊上方的輸入框,會彈出面板鍵盤,輸入要設定的數(shù)值,該數(shù)值保存在與輸入框相關(guān)聯(lián)的數(shù)值型變量Rdy_Value_37中,再點擊“確定”按鈕,Rdy_Value_37數(shù)值型變量乘以10轉(zhuǎn)化為儀表參數(shù)存儲的值,由于儀表參數(shù)對應開關(guān)型變量,再將Num_Temp進行類型轉(zhuǎn)化,賦值給開關(guān)型變量Rdy_37,通過!SetDevice(設備0,6,"Write(4,38,WUB=Rdy_37)")將Rdy_37的內(nèi)容寫入第4區(qū)地址為38的輸出寄存器中,完成預熱溫度參數(shù)的修改。同理,升溫斜率、目標溫度都可以通過這種方式來完成。
“21_實驗參數(shù)”子窗口在顯示時,會執(zhí)行啟動腳本,啟動腳本的內(nèi)容是分別讀取預熱溫度、升溫斜率和目標溫度的值。例如,!SetDevice(設備0,6,"Read(4,32,
WUB=Set_31)")通信指令將第4區(qū)地址為32的輸出寄存器的值讀入開關(guān)型變量SET_31中,再除以10得到小數(shù)值,賦給數(shù)值型變量SET_Value_31,該變量與目標溫度上方的輸入框相關(guān)聯(lián),只要“21_實驗參數(shù)”子窗口一啟動,腳本即刻執(zhí)行,完成儀表寄存器數(shù)據(jù)的讀取操作。
在主程序窗口點擊“數(shù)據(jù)結(jié)果”按鈕,執(zhí)行腳本程序“!OpenSubWnd(22_數(shù)據(jù)結(jié)果,60,60,356,282,0)”,彈出“22_數(shù)據(jù)結(jié)果”子窗口,該窗口以表格形式顯示用戶觀察物質(zhì)熔化過程中通過按鈕記錄的中間時間及其對應溫度,每個格子與相應的字符型變量關(guān)聯(lián)。例如,第1行第2列與Read_Time_First_Str_02字符型變量關(guān)聯(lián),由于這些中間數(shù)據(jù)存儲在輸入寄存器,該類寄存器僅支持讀取操作,不能進行寫入,因此,在MCGS上層界面中可以直接定義字符型變量與之關(guān)聯(lián)。子窗口顯示時運行啟動腳本,如圖5所示。

圖5 實驗數(shù)據(jù)采集程序圖
從第3區(qū)第3個寄存器開始,依次讀取到第12個寄存器,并將讀取到的值放入對應的開關(guān)型數(shù)據(jù)Read_Time_First_02、Read_Time_Secibd_03和Read_Time_Third_04等變量中。采用!StrFormat函數(shù)將開關(guān)型變量按指定格式格式化為字符串,再賦給相應字符型變量,完成通信后的數(shù)據(jù)格式轉(zhuǎn)換功能。用戶一旦完成實驗測試,點擊“數(shù)據(jù)結(jié)果”按鈕便可查詢實驗測得的值。
溫度控制過程中,儀表的控溫精度與加熱電流、溫度傳感器和環(huán)境溫度等因素有關(guān),相同條件下,控溫PID參數(shù)可以進行優(yōu)化。例如,當目標溫度為200℃時,通過自整定可以計算出此條件下對應的參數(shù)值,如果目標溫度改變?yōu)?00℃,需要重新自整定。顯微熔點儀一般用于精準測定已知物質(zhì)的熔點,其溫度范圍通常已知,此時可按熔點為基準進行自整定。MST103A-S1-PWM-NNN型儀表的控溫精度由比例參數(shù)TP、積分時間TI和微分時間TD3個參數(shù)決定,如圖6所示。

圖6 自整定過程溫度曲線圖
該圖是儀表目標溫度為170℃時自整定過程溫度變化曲線,點A前面的振蕩區(qū)間為升溫和降溫試探過程,升溫段用于計算加熱功率對目標溫度的貢獻,降溫段用于考察環(huán)境溫度對目標溫度的貢獻。
曲線經(jīng)過一個周期振蕩后開始進行參數(shù)計算過程,到達A點后,記錄峰值對應時間,當曲線降至C點時,記錄谷值對應時間,峰值與谷值對應時間差為積分時間TI,相當于振蕩周期的一半,此處為38 s;當曲線從A點下降經(jīng)過設定溫度時,記錄溫度值為設定值170℃對應的時間,即B點,曲線經(jīng)過波谷C點后再次上升到設定值D點,2個時間差的1/8為微分時間TD,BD時間差為73 s,再除以8取整為9 s,即微分時間TD為8 s;從C點開始到達D點,其升溫斜率[16]的倒數(shù)為比例帶Pb,即每升高1℃所用的時間,此處計算為12.3 s/℃。這樣,經(jīng)過上述計算過程,獲得完整的PID參數(shù),將其寫入輸出寄存器對應的0x17(It)、0x18(Dt)和0x16(Pb)地址中,用于后續(xù)儀表對用戶設定預熱溫度的控制。
圖7 是測定熔點為164.5~166.5℃磺胺時的升溫曲線圖,預熱溫度為161℃,升溫斜率為0.5℃/min,目標溫度為167℃。

圖7 熔點測試過程升溫曲線圖
由圖7可見,當升溫曲線到達預熱溫度161℃時,會上沖1.1℃,到達A點,但仍然低于磺胺的熔點范圍,不影響操作者觀察物質(zhì)熔化過程。曲線下降至最低溫度B點(160.8℃)后開始按0.5℃/min速率升溫,在這個過程中,操作者可以專心關(guān)注物質(zhì)的熔化過程,當認為物質(zhì)熔化時,可以點按手中的按鈕,此時對應的時間和溫度會存入輸入寄存器相應的地址,每點按一次,便有一組數(shù)據(jù)依次存入,直至磺胺完全熔化。當曲線升至167℃時,停在該溫度不再繼續(xù)升溫,等待用戶下一步指令,保證了測定過程的安全。可見,升溫曲線保持了較好的線性關(guān)系,從161℃升至167℃時耗時693 s,計算得到平均升溫速率為0.521℃/min,與設定值0.5℃/min非常接近。
利用具有可視化操作界面的MCGS組態(tài)軟件與具有RS-485串口通信功能的溫控儀表,開發(fā)了一套控溫與觀察相對獨立的顯微熔點儀控制系統(tǒng)。主要特點如下。
(1)建立與智能儀表通信的人機交互界面系統(tǒng),操作者可以讀取和修改儀表不同區(qū)域地址處的寄存器內(nèi)容,對于不同參數(shù)通過識別序號甄別,通過按鈕選擇不同參數(shù)值,操作更加便捷;
(2)通過設置中間預熱平臺,將溫度過沖限制在較小范圍內(nèi),保證后續(xù)固定的升溫速率,溫度曲線以階梯漸近式接近目標溫度,為操作者準確觀察物質(zhì)熔化過程和測定熔化溫度提供了穩(wěn)定重復的升溫曲線,省略了人工調(diào)整旋鈕的步驟。
后續(xù)將結(jié)合適于不同目標溫度的PID參數(shù)開發(fā)智能型高精度控制算法。