張 輝, 何子逸, 尹 釗, 顏海成
(北京科技大學(xué)能源與環(huán)境工程學(xué)院,北京100083)
顯微熔點(diǎn)儀[1]是高溫環(huán)境觀察物質(zhì)熔化過程的重要工具,在藥物純度分析[2]、物質(zhì)熔點(diǎn)測定[3]等方面應(yīng)用廣泛。目前,熔點(diǎn)儀大多通過手動調(diào)節(jié)旋鈕控制加熱盤輸出功率,受人為因素影響顯著,測試結(jié)果重復(fù)性較差;溫度控制儀表僅有簡單的溫控功能,比例、積分、微分(Proportional Integral Derivative,PID)參數(shù)[4]固定,加熱溫度、加熱功率、散熱條件[5]發(fā)生改變時(shí),溫控曲線振蕩幅度難以控制,常常導(dǎo)致溫度超過物質(zhì)熔化區(qū)間段,觀測時(shí)間周期短;操作者觀察物質(zhì)熔化過程、記錄溫度數(shù)據(jù)同時(shí)進(jìn)行,操作繁雜,影響觀測精度。利用嵌入式監(jiān)控系統(tǒng)(Monitor and Control Generated System,MCGS)觸摸終端可以將人工操作與儀表溫度控制功能分離,兩者獨(dú)立進(jìn)行模塊化設(shè)計(jì),通過串口Modbus-RTU通信[6]完成數(shù)據(jù)交換。操作者可以專注觀察物質(zhì)狀態(tài)的改變和觸發(fā)數(shù)據(jù)記錄按鈕,觸摸終端實(shí)時(shí)記錄并保存中間數(shù)據(jù)。
顯微熔點(diǎn)儀控制系統(tǒng)如圖1所示,包括MST103AS1-PWM-NNN溫控儀表、S-250-36直流電源、SSR-10DD固態(tài)繼電器、Pt100溫度傳感器和加熱盤。
圖1 顯微熔點(diǎn)儀控制系統(tǒng)圖
常規(guī)溫控儀表僅具有溫度控制功能,為實(shí)現(xiàn)鍵控特性,專門研發(fā)了該型儀表,對芯片的通用輸入、輸出(General Purpose Input/Output,GPIO)引腳重新進(jìn)行了定義,如圖1中5、6引腳,當(dāng)按鈕按下再彈起時(shí),5、6之間產(chǎn)生脈沖信號,此時(shí)對應(yīng)的時(shí)間與溫度會記錄在芯片輸入寄存器(第3區(qū)寄存器)中,實(shí)驗(yàn)完畢后由程序讀出。3、4引腳為RS-485串行通信接口[7],分別與觸摸屏COM2串口的7、8引腳相連。數(shù)據(jù)通信采用半雙工方式,即當(dāng)觸摸屏向儀表發(fā)送數(shù)據(jù)時(shí),儀表只能等待接收;儀表向觸摸屏發(fā)送數(shù)據(jù)時(shí),觸摸屏只能接收,兩者不能同時(shí)進(jìn)行發(fā)送與接收數(shù)據(jù)操作。
加熱盤內(nèi)部發(fā)熱元件電阻為10Ω,最大電流為4 A,功率可達(dá)130 W。測溫傳感器精度可達(dá)0.1℃,Pt100為電阻式傳感器,連接線的粗細(xì)與長短會影響測量值的準(zhǔn)確度。儀表內(nèi)部利用開爾文雙臂電橋接法,減小接觸電阻,連接方式為三線制,如圖1所示,將11、12端子短接后連到Pt100的一端,端子10連接至另一端。內(nèi)部0x00保持寄存器(第4區(qū)寄存器)的值選擇Pt1b,與外部傳感器類型相匹配。
儀表輸出通過固態(tài)繼電器控制加熱盤電流的有無,當(dāng)7、8引腳電壓低于3 V時(shí),固態(tài)繼電器的1、2端子斷開,切斷電流,加熱盤停止供電;反之,當(dāng)兩引腳電壓介于3~32 V時(shí),固態(tài)繼電器的1、2端子閉合,導(dǎo)通電流,加熱盤開始工作。由于固態(tài)繼電器的開關(guān)時(shí)間很短,如同脈沖一樣,可以將供電電流分為很小的份數(shù),用于溫度的精細(xì)調(diào)節(jié)。0x14保持寄存器對應(yīng)的控制周期參數(shù)Ct選擇1,表示最小開關(guān)周期為1 s。0x15輸出類型OP參數(shù)選擇SSr,對應(yīng)固態(tài)繼電器。為提高控溫精度,可將0x12回差Hy參數(shù)設(shè)為0.2℃,溫度達(dá)到設(shè)定值后,其波動范圍不會超過設(shè)定值的±0.2℃。
MCGS采用Modicon串口驅(qū)動構(gòu)件[8]與支持Modbus-RTU標(biāo)準(zhǔn)協(xié)議的各類PLC[9]、儀表[10]和控制器[11]進(jìn)行通信,通過不同的功能碼訪問儀表內(nèi)部不同區(qū)域的寄存器。MST103A-S1-PWM-NNN溫控儀表主要包括輸入、輸出兩種類型寄存器,如圖2所示。儀表的功能參數(shù)全部存儲在輸出寄存器中,中間測試的數(shù)據(jù)結(jié)果存儲在輸入寄存器中。在Modicon驅(qū)動中,輸出寄存器為第4區(qū)寄存器,輸入寄存器為第3區(qū)寄存器。
以MCGS腳本命令為例說明訪問輸出寄存器0x13地址數(shù)據(jù)的指令編寫過程,腳本語句為:
“設(shè)備0”對應(yīng)觸摸屏COM2串口下地址為XX的儀表,與儀表參數(shù)0x1D輸出寄存器的內(nèi)容保持一致,此處XX設(shè)定為01。同一個(gè)串口可以連接多臺儀表,但每臺儀表的地址不能相同,以免通信時(shí)發(fā)生數(shù)據(jù)碰撞。當(dāng)?shù)刂凡煌瑫r(shí),在MCGS程序中命名為“設(shè)備1”“設(shè)備2”…“設(shè)備n”加以區(qū)分。
“6”表示執(zhí)行后續(xù)在雙引號中的read指令。
“Read(4,20,WUB=Ctrl_19)”指令中4表示訪問第4區(qū)寄存器,即存儲參數(shù)的寄存器;圖2中“Ctrl”參數(shù)存儲在輸出寄存器的0x13(十進(jìn)制為19)地址處,由于寄存器在儀表中以00為起始地址,所以該參數(shù)對應(yīng)從1開始的序號為20;WUB表示寄存器數(shù)據(jù)的類型,即Word Unsigned Byte,占用2個(gè)字節(jié),為無符號整形數(shù)據(jù),對應(yīng)MCGS中的開關(guān)型數(shù)據(jù);Ctrl_19為MCGS環(huán)境定義的變量名稱。整條指令表示將儀表第4區(qū)第20個(gè)寄存器的數(shù)據(jù)以無符號整形格式取出,然后放于開關(guān)型變量Ctrl_19中。
圖2 莫迪康指令解析圖
同理,輸入寄存器為第3區(qū)寄存器,操作者通過按
鈕記錄的時(shí)間與溫度值存儲在輸入寄存器中。
!SetDevice(設(shè)備0,6,"Read(3,1,WUB=Read_PV_00)")表示將第3區(qū)第1個(gè)寄存器的值以無符號整形格式取出,放于開關(guān)型變量Read_PV_00中。
MCGS組態(tài)軟件[12]是嵌入式觸摸屏自身具有的一種組態(tài)操作系統(tǒng)[13],可以運(yùn)行在PC機(jī)或筆記本電腦中。其優(yōu)勢在于能夠快速與智能儀表建立通信,將儀表寄存器內(nèi)容與組態(tài)軟件定義的變量進(jìn)行關(guān)聯(lián)。溫控儀表主要通過PID參數(shù)對加熱盤溫度進(jìn)行調(diào)節(jié),用戶需要通過界面調(diào)整各個(gè)參數(shù)的值。
儀表參數(shù)很多,僅將必要參數(shù)列出,如圖3所示,以控制方式CtrL為例,該參數(shù)的值存儲在輸出寄存器0x13地址處,可以取0、1、2或3,對應(yīng)的顯示值分別為onoF、Pid、tunE、MAnu,用戶看到的是顯示值,而在寄存器中存儲的是數(shù)字值。為在數(shù)字值與顯示值之間轉(zhuǎn)換,設(shè)計(jì)了“20_儀表參數(shù)”用戶窗口,作為人機(jī)交互界面。當(dāng)前值下方的虛線框表示輸入框,點(diǎn)擊該輸入框時(shí),程序會執(zhí)行Click事件連接腳本,將Input_Ctrl變量置1,F(xiàn)lag_19變量置1。“onoF”、“Pid”、“tunE”、“MAnu”、“確定”5個(gè)按鈕的可見度屬性為Input_Ctrl=1,說明當(dāng)Input_Ctrl變量為1時(shí)這5個(gè)按鈕就會顯示出來。用戶一旦點(diǎn)擊了輸入框,這5個(gè)按鈕會顯示在界面上,供用戶選擇,如果按下了“onoF”按鈕,運(yùn)行腳本:
圖3 溫控儀表參數(shù)設(shè)置人機(jī)交互程序框圖
Flag_19是參數(shù)序號跟蹤變量,用于識別不同的參數(shù),當(dāng)用戶點(diǎn)擊輸入框時(shí),此值賦1,用該變量記下用戶選擇的參數(shù),此處定義的字符型變量Ctrl_Str_19被賦給“onoF”字符值,而輸入框與字符型變量Ctrl_Str_19相關(guān)聯(lián),所以在輸入框中會顯示“onoF”。同理,點(diǎn)擊其他3個(gè)參數(shù)值按鈕時(shí),輸入框會顯示對應(yīng)的參數(shù)顯示值。當(dāng)點(diǎn)擊“確定”按鈕時(shí),Input_Ctrl變量賦0,5個(gè)按鈕隱藏,同時(shí),F(xiàn)lag_19變量賦0,不再跟蹤參數(shù)序號。
當(dāng)用戶點(diǎn)擊“讀儀表值”按鈕時(shí),發(fā)送如下通信指令:
將儀表的Ctrl參數(shù)讀入開關(guān)型變量Ctrl_19中,根據(jù)該變量的數(shù)字值對字符型變量Ctrl_Str_19賦值,與參數(shù)顯示值一一對應(yīng)。輸入框與字符型變量Ctrl_Str_19相關(guān)聯(lián),點(diǎn)擊完“讀儀表值”按鈕后,輸入框內(nèi)顯示的是儀表參數(shù)對應(yīng)的顯示值。這個(gè)過程實(shí)現(xiàn)了參數(shù)數(shù)字值向顯示值的轉(zhuǎn)換。
當(dāng)點(diǎn)擊“W_Ctrl”按鈕時(shí),將輸入框中用戶選擇的字符轉(zhuǎn)化為數(shù)字。例如:
首先判斷與輸入框關(guān)聯(lián)的字符型變量Ctrl_Str_19的內(nèi)容是不是“onoF”,如果是,則將對應(yīng)的開關(guān)型變量Ctrl_19賦為數(shù)字值0;同理,如果用戶選擇了不同的字符型參數(shù)值,點(diǎn)擊按鈕后都要轉(zhuǎn)化為相應(yīng)的數(shù)字值。最后,通過!SetDevice(設(shè)備0,6,"Write(4,20,WUB=Ctrl_19)")通信腳本指令將開關(guān)型變量Ctrl_19存儲的數(shù)字值寫入儀表第4區(qū)地址為20的寄存器中,完成參數(shù)的修改過程。
圖4 為實(shí)驗(yàn)參數(shù)設(shè)置程序圖。
圖4 實(shí)驗(yàn)參數(shù)設(shè)置程序圖
在主程序窗口中,通過“儀表參數(shù)”“實(shí)驗(yàn)參數(shù)”和“數(shù)據(jù)結(jié)果”3個(gè)按鈕分別調(diào)用相應(yīng)的子窗口,例如,點(diǎn)擊“實(shí)驗(yàn)參數(shù)”按鈕,執(zhí)行腳本指令:
表示在主窗口的(20,20)位置顯示寬為256,高為232像素的“21_實(shí)驗(yàn)參數(shù)”子窗口。子窗口形象地繪制了加熱盤的升溫過程,采用2個(gè)控溫平臺,第1個(gè)稱為預(yù)熱溫度,其設(shè)定值低于物質(zhì)熔點(diǎn)2~3℃;第2個(gè)稱為目標(biāo)溫度,其設(shè)定值高于物質(zhì)熔點(diǎn)3~5℃,保證物質(zhì)熔化的過熱度;中間過渡直線對應(yīng)升溫斜率,斜率越小,觀測溫度與實(shí)際溫度越接近,滯后效應(yīng)越小,得到的溫度越準(zhǔn)確。傳統(tǒng)熔點(diǎn)儀[14]需要用戶反復(fù)切換溫控面板的控制鍵設(shè)定參數(shù)值,專業(yè)性強(qiáng),操作時(shí)間長,不利于一般用戶的使用。MCGS人機(jī)交互界面配有面板輸入鍵盤[15],簡單快捷,僅需觸摸即可更改。例如,要更改預(yù)熱溫度參數(shù),只需點(diǎn)擊上方的輸入框,會彈出面板鍵盤,輸入要設(shè)定的數(shù)值,該數(shù)值保存在與輸入框相關(guān)聯(lián)的數(shù)值型變量Rdy_Value_37中,再點(diǎn)擊“確定”按鈕,Rdy_Value_37數(shù)值型變量乘以10轉(zhuǎn)化為儀表參數(shù)存儲的值,由于儀表參數(shù)對應(yīng)開關(guān)型變量,再將Num_Temp進(jìn)行類型轉(zhuǎn)化,賦值給開關(guān)型變量Rdy_37,通過!SetDevice(設(shè)備0,6,"Write(4,38,WUB=Rdy_37)")將Rdy_37的內(nèi)容寫入第4區(qū)地址為38的輸出寄存器中,完成預(yù)熱溫度參數(shù)的修改。同理,升溫斜率、目標(biāo)溫度都可以通過這種方式來完成。
“21_實(shí)驗(yàn)參數(shù)”子窗口在顯示時(shí),會執(zhí)行啟動腳本,啟動腳本的內(nèi)容是分別讀取預(yù)熱溫度、升溫斜率和目標(biāo)溫度的值。例如,!SetDevice(設(shè)備0,6,"Read(4,32,
WUB=Set_31)")通信指令將第4區(qū)地址為32的輸出寄存器的值讀入開關(guān)型變量SET_31中,再除以10得到小數(shù)值,賦給數(shù)值型變量SET_Value_31,該變量與目標(biāo)溫度上方的輸入框相關(guān)聯(lián),只要“21_實(shí)驗(yàn)參數(shù)”子窗口一啟動,腳本即刻執(zhí)行,完成儀表寄存器數(shù)據(jù)的讀取操作。
在主程序窗口點(diǎn)擊“數(shù)據(jù)結(jié)果”按鈕,執(zhí)行腳本程序“!OpenSubWnd(22_數(shù)據(jù)結(jié)果,60,60,356,282,0)”,彈出“22_數(shù)據(jù)結(jié)果”子窗口,該窗口以表格形式顯示用戶觀察物質(zhì)熔化過程中通過按鈕記錄的中間時(shí)間及其對應(yīng)溫度,每個(gè)格子與相應(yīng)的字符型變量關(guān)聯(lián)。例如,第1行第2列與Read_Time_First_Str_02字符型變量關(guān)聯(lián),由于這些中間數(shù)據(jù)存儲在輸入寄存器,該類寄存器僅支持讀取操作,不能進(jìn)行寫入,因此,在MCGS上層界面中可以直接定義字符型變量與之關(guān)聯(lián)。子窗口顯示時(shí)運(yùn)行啟動腳本,如圖5所示。
圖5 實(shí)驗(yàn)數(shù)據(jù)采集程序圖
從第3區(qū)第3個(gè)寄存器開始,依次讀取到第12個(gè)寄存器,并將讀取到的值放入對應(yīng)的開關(guān)型數(shù)據(jù)Read_Time_First_02、Read_Time_Secibd_03和Read_Time_Third_04等變量中。采用!StrFormat函數(shù)將開關(guān)型變量按指定格式格式化為字符串,再賦給相應(yīng)字符型變量,完成通信后的數(shù)據(jù)格式轉(zhuǎn)換功能。用戶一旦完成實(shí)驗(yàn)測試,點(diǎn)擊“數(shù)據(jù)結(jié)果”按鈕便可查詢實(shí)驗(yàn)測得的值。
溫度控制過程中,儀表的控溫精度與加熱電流、溫度傳感器和環(huán)境溫度等因素有關(guān),相同條件下,控溫PID參數(shù)可以進(jìn)行優(yōu)化。例如,當(dāng)目標(biāo)溫度為200℃時(shí),通過自整定可以計(jì)算出此條件下對應(yīng)的參數(shù)值,如果目標(biāo)溫度改變?yōu)?00℃,需要重新自整定。顯微熔點(diǎn)儀一般用于精準(zhǔn)測定已知物質(zhì)的熔點(diǎn),其溫度范圍通常已知,此時(shí)可按熔點(diǎn)為基準(zhǔn)進(jìn)行自整定。MST103A-S1-PWM-NNN型儀表的控溫精度由比例參數(shù)TP、積分時(shí)間TI和微分時(shí)間TD3個(gè)參數(shù)決定,如圖6所示。
圖6 自整定過程溫度曲線圖
該圖是儀表目標(biāo)溫度為170℃時(shí)自整定過程溫度變化曲線,點(diǎn)A前面的振蕩區(qū)間為升溫和降溫試探過程,升溫段用于計(jì)算加熱功率對目標(biāo)溫度的貢獻(xiàn),降溫段用于考察環(huán)境溫度對目標(biāo)溫度的貢獻(xiàn)。
曲線經(jīng)過一個(gè)周期振蕩后開始進(jìn)行參數(shù)計(jì)算過程,到達(dá)A點(diǎn)后,記錄峰值對應(yīng)時(shí)間,當(dāng)曲線降至C點(diǎn)時(shí),記錄谷值對應(yīng)時(shí)間,峰值與谷值對應(yīng)時(shí)間差為積分時(shí)間TI,相當(dāng)于振蕩周期的一半,此處為38 s;當(dāng)曲線從A點(diǎn)下降經(jīng)過設(shè)定溫度時(shí),記錄溫度值為設(shè)定值170℃對應(yīng)的時(shí)間,即B點(diǎn),曲線經(jīng)過波谷C點(diǎn)后再次上升到設(shè)定值D點(diǎn),2個(gè)時(shí)間差的1/8為微分時(shí)間TD,BD時(shí)間差為73 s,再除以8取整為9 s,即微分時(shí)間TD為8 s;從C點(diǎn)開始到達(dá)D點(diǎn),其升溫斜率[16]的倒數(shù)為比例帶Pb,即每升高1℃所用的時(shí)間,此處計(jì)算為12.3 s/℃。這樣,經(jīng)過上述計(jì)算過程,獲得完整的PID參數(shù),將其寫入輸出寄存器對應(yīng)的0x17(It)、0x18(Dt)和0x16(Pb)地址中,用于后續(xù)儀表對用戶設(shè)定預(yù)熱溫度的控制。
圖7 是測定熔點(diǎn)為164.5~166.5℃磺胺時(shí)的升溫曲線圖,預(yù)熱溫度為161℃,升溫斜率為0.5℃/min,目標(biāo)溫度為167℃。
圖7 熔點(diǎn)測試過程升溫曲線圖
由圖7可見,當(dāng)升溫曲線到達(dá)預(yù)熱溫度161℃時(shí),會上沖1.1℃,到達(dá)A點(diǎn),但仍然低于磺胺的熔點(diǎn)范圍,不影響操作者觀察物質(zhì)熔化過程。曲線下降至最低溫度B點(diǎn)(160.8℃)后開始按0.5℃/min速率升溫,在這個(gè)過程中,操作者可以專心關(guān)注物質(zhì)的熔化過程,當(dāng)認(rèn)為物質(zhì)熔化時(shí),可以點(diǎn)按手中的按鈕,此時(shí)對應(yīng)的時(shí)間和溫度會存入輸入寄存器相應(yīng)的地址,每點(diǎn)按一次,便有一組數(shù)據(jù)依次存入,直至磺胺完全熔化。當(dāng)曲線升至167℃時(shí),停在該溫度不再繼續(xù)升溫,等待用戶下一步指令,保證了測定過程的安全??梢?,升溫曲線保持了較好的線性關(guān)系,從161℃升至167℃時(shí)耗時(shí)693 s,計(jì)算得到平均升溫速率為0.521℃/min,與設(shè)定值0.5℃/min非常接近。
利用具有可視化操作界面的MCGS組態(tài)軟件與具有RS-485串口通信功能的溫控儀表,開發(fā)了一套控溫與觀察相對獨(dú)立的顯微熔點(diǎn)儀控制系統(tǒng)。主要特點(diǎn)如下。
(1)建立與智能儀表通信的人機(jī)交互界面系統(tǒng),操作者可以讀取和修改儀表不同區(qū)域地址處的寄存器內(nèi)容,對于不同參數(shù)通過識別序號甄別,通過按鈕選擇不同參數(shù)值,操作更加便捷;
(2)通過設(shè)置中間預(yù)熱平臺,將溫度過沖限制在較小范圍內(nèi),保證后續(xù)固定的升溫速率,溫度曲線以階梯漸近式接近目標(biāo)溫度,為操作者準(zhǔn)確觀察物質(zhì)熔化過程和測定熔化溫度提供了穩(wěn)定重復(fù)的升溫曲線,省略了人工調(diào)整旋鈕的步驟。
后續(xù)將結(jié)合適于不同目標(biāo)溫度的PID參數(shù)開發(fā)智能型高精度控制算法。