徐道黎 耿子賀 矯越
(山東建筑大學(xué),山東濟(jì)南 250101)
溫度控制在生產(chǎn)和生活中廣泛應(yīng)用,溫度控制系統(tǒng)現(xiàn)在多采用PID 控制算法,輸出采用的是可控硅控制,這種控制系統(tǒng)控制精度高,成本較高,安裝調(diào)時(shí)需要專業(yè)人員,在使用過(guò)程中出現(xiàn)環(huán)境變化等,PID 的參數(shù)需要重新進(jìn)行調(diào)整,否則控制精度就會(huì)受到影響。溫度控制多采用獨(dú)立控制的單個(gè)溫度控制模塊,溫度的顯示和溫度控制的設(shè)定需要人工在現(xiàn)場(chǎng)進(jìn)行查看和操作,需要多溫度同時(shí)顯示和控制的場(chǎng)合使用時(shí),安裝和使用都很復(fù)雜。針對(duì)成本敏感和組網(wǎng)需求的應(yīng)用場(chǎng)景,提出并設(shè)計(jì)了一種多路溫度控制系統(tǒng)。
溫度控制系統(tǒng)中,通訊協(xié)議、通訊方式對(duì)系統(tǒng)設(shè)計(jì)有關(guān)鍵的影響,考慮到控制系統(tǒng)的可擴(kuò)展性和分散性特點(diǎn),從應(yīng)用角度出發(fā),在通信的物理層采用RS-485 總線連接,應(yīng)用層采用MODBUS 協(xié)議進(jìn)行通信??紤]成本和穩(wěn)定性的因素,輸出采用開(kāi)關(guān)控制。
溫控系統(tǒng)可以獨(dú)立運(yùn)行,也可以聯(lián)網(wǎng)運(yùn)行。通過(guò)溫度傳感器,檢測(cè)實(shí)時(shí)溫度,對(duì)檢測(cè)的現(xiàn)場(chǎng)溫度和設(shè)定溫度的比較,判斷輸出的狀態(tài),控制繼電器閉合或者斷開(kāi),使加熱或降溫設(shè)備間歇運(yùn)行或停止,來(lái)達(dá)到控制溫度的目的。同時(shí),傳感器檢測(cè)的溫度數(shù)據(jù)和設(shè)定的溫度存儲(chǔ)在寄存器中,可以通過(guò)MODBUS 通信協(xié)議對(duì)相應(yīng)的寄存器進(jìn)行讀取或者寫入。系統(tǒng)整體方案如圖1所示。

圖1 系統(tǒng)整體方案圖
MODBUS 通信協(xié)議中的總線上的設(shè)備分兩類,為主設(shè)備和從設(shè)備,在某一時(shí)間下,總線上只能其中一個(gè)設(shè)備發(fā)送數(shù)據(jù),如果多個(gè)設(shè)備同時(shí)在總線上發(fā)送數(shù)據(jù),總線就是出現(xiàn)數(shù)據(jù)混亂,任何設(shè)備都無(wú)法接受正常數(shù)據(jù)。MODBUS 協(xié)議中通常是由主設(shè)備發(fā)起數(shù)據(jù)發(fā)送,對(duì)總線上其中一個(gè)從設(shè)備進(jìn)行查詢,從設(shè)備根據(jù)接收到的主設(shè)備發(fā)送的查詢信息作出相應(yīng)的反應(yīng)進(jìn)行回應(yīng),發(fā)送回應(yīng)流程如圖2 所示。為了保證傳輸效率,該系統(tǒng)采用RTU傳輸模式。

圖2 查詢- 回應(yīng)指示圖
MODBUS-RTU 模式要求任何設(shè)備要開(kāi)始發(fā)送或者結(jié)束發(fā)送時(shí),都要在總線上等待一個(gè)3.5 個(gè)字符以上的時(shí)間間隔。RTU模式中在起始的時(shí)間間隔后,先傳輸?shù)氖? 位的設(shè)備地址。接收設(shè)備處于空閑狀態(tài)時(shí),要不停的判斷總線上是不是有數(shù)據(jù)傳輸,這個(gè)過(guò)程是通過(guò)監(jiān)聽(tīng)總線上是不是有起始的時(shí)間間隔。如果接收到起始的時(shí)間間隔后,所有的總線上的接收設(shè)備都會(huì)接收后來(lái)發(fā)送的數(shù)據(jù),當(dāng)設(shè)備接收到第一個(gè)部分,也就是設(shè)備地址,所有的接收設(shè)備都會(huì)進(jìn)行將收到的設(shè)備地址和自己的地址進(jìn)行比較判斷,收的設(shè)備地址是不是與自己的地址匹配。最后一個(gè)部分傳輸完后,發(fā)送設(shè)備需要發(fā)送一個(gè)大于3.5 個(gè)字符的時(shí)間間隔表示該條消息發(fā)送結(jié)束,之后如果再發(fā)送消息重新按照上規(guī)則發(fā)送。
校驗(yàn)部分是采用的循環(huán)冗余校驗(yàn)(CRC),應(yīng)用的CRC 校驗(yàn)是CRC-16 版本,該版本的校驗(yàn)結(jié)果為16 位,兩個(gè)字節(jié)組成。這一個(gè)部分是發(fā)送設(shè)備通過(guò)計(jì)算后放在消息幀中的。接收設(shè)備接收到消息后,需要根據(jù)除了校驗(yàn)部分以外的部分計(jì)算收到消息的CRC 校驗(yàn)值,與消息中包含的CRC 校驗(yàn)部分的數(shù)值比較,如果收到的校驗(yàn)碼和計(jì)算的校驗(yàn)碼不同,就判斷該數(shù)據(jù)幀存在錯(cuò)誤,接收設(shè)備回復(fù)相應(yīng)的錯(cuò)誤提示數(shù)據(jù)幀。
消息的發(fā)送是要保證是連續(xù)發(fā)送的,如果傳輸數(shù)據(jù)的過(guò)程中出現(xiàn)大于1.5 個(gè)字符的時(shí)間間隔,接收數(shù)據(jù)的設(shè)備會(huì)確定為發(fā)送設(shè)備發(fā)送的消息發(fā)送已經(jīng)傳輸完畢,接收設(shè)備停止接收,處理當(dāng)前接收完畢的不完整的消息,并認(rèn)定接下來(lái)發(fā)送的下一字節(jié)的消息是一個(gè)全新的消息。這樣接收到的消息CRC 校驗(yàn)部分的數(shù)值錯(cuò)誤,這樣接收設(shè)備將其確定為錯(cuò)誤數(shù)據(jù)。MODBUS-RTU 的消息幀如下所示:

?
電源部分采用LM2596S-5V 電源芯片進(jìn)行第一級(jí)降壓,主要作用是驅(qū)動(dòng)繼電器和單片機(jī)供電;第二級(jí)降壓采用AMS1117-3.3 電壓芯片,輸出的3.3V 電壓是提供溫度采集的基準(zhǔn)電壓;電源輸入部分支持12-24V 輸入,采用電感進(jìn)行濾波,壓敏電阻、自恢復(fù)保險(xiǎn)絲和瞬態(tài)二極管(TVS)組成保護(hù)電路進(jìn)行保護(hù)。通信部分采用MAX485 芯片,同時(shí)增加由瞬態(tài)二極管(TVS)和自恢復(fù)保險(xiǎn)管組成的通信保護(hù)電路,由限流電阻和LED 指示燈組成的通信收發(fā)指示燈。繼電器驅(qū)動(dòng)采用ULN2003達(dá)林頓驅(qū)動(dòng)芯片,溫度采集的部分采用電阻進(jìn)行分壓。硬件系統(tǒng)結(jié)構(gòu)如圖3 所示。

圖3 硬件系統(tǒng)結(jié)構(gòu)圖
溫度采集電路采用分壓電路進(jìn)行實(shí)現(xiàn),采用的基準(zhǔn)電壓為3.3V,增加電容去除干擾,溫度傳感器采用外接方式,采用2.54mm 間距的接口與NTC 溫度傳感器進(jìn)行連接。因?yàn)閭鞲衅鞑捎猛饨臃绞?,為了方便安裝時(shí)確定傳感器是否正常,在設(shè)計(jì)中,每一路溫度傳感器都增加了指示燈,通過(guò)指示燈可以直觀顯示傳感器狀態(tài)。溫度采集電路設(shè)計(jì)如圖4 所示。

圖4 溫度采集電路
根據(jù)溫度采集電路的設(shè)計(jì),ADC 采集的電壓值和熱敏電阻阻值的關(guān)系:

轉(zhuǎn)換得到熱敏電阻的阻值:

電源輸入保護(hù)主要包括防止電源反接保護(hù),系統(tǒng)內(nèi)部短路保護(hù),過(guò)電壓保護(hù)。電路部分采用自恢復(fù)保險(xiǎn)和二極管組成反接保護(hù)和短路保護(hù)電路,壓敏電阻進(jìn)行過(guò)電壓保護(hù),增加電感對(duì)輸入的電源進(jìn)行濾波,保證系統(tǒng)運(yùn)行穩(wěn)定,如圖5 所示。

圖5 輸入保護(hù)電路
通信保護(hù)電路主要保證通信的穩(wěn)定,防止通信線路的故障對(duì)系統(tǒng)造成損壞。主要保護(hù)策略包括總線短路和過(guò)流的保護(hù),總線間過(guò)電壓保護(hù),單總線過(guò)電壓保護(hù)。電路設(shè)計(jì)上,采用自恢復(fù)保險(xiǎn)絲對(duì)短路和過(guò)流保護(hù),采用雙向瞬態(tài)二極管和單向瞬態(tài)二極管對(duì)總線間過(guò)電壓和單線過(guò)電壓保護(hù),通信保護(hù)電路如圖6。

圖6 通信保護(hù)電路
主程序首先完成對(duì)相關(guān)外設(shè)的初始化設(shè)置,并啟動(dòng)相應(yīng)的單片機(jī)外設(shè),之后完成對(duì)其他子程序的調(diào)用;通信子程序?qū)崿F(xiàn)通信協(xié)議的解析和收發(fā),完成對(duì)寄存器數(shù)據(jù)的讀取和寫入;看門狗子程序通過(guò)異常狀態(tài)復(fù)位保證模塊穩(wěn)定性,斷電記憶子程序?qū)⒃O(shè)定溫度進(jìn)行寫進(jìn)EEPROM保存,啟動(dòng)時(shí)讀取。溫度采集處理、溫度比較和輸出控制實(shí)現(xiàn)控制邏輯。
對(duì)于溫度檢測(cè)采用的是NTC 熱敏電阻溫度傳感器,采用單片機(jī)內(nèi)置10 位ADC 對(duì)電壓值進(jìn)行采集,根據(jù)熱敏電阻的溫度- 電阻特性曲線計(jì)算得到熱敏電阻的溫度值。
根據(jù)負(fù)溫度系數(shù)電阻與溫度關(guān)系得:

其中RNTC為熱敏電阻的當(dāng)前阻值,R1為分壓電阻阻值,UVCC為基準(zhǔn)電壓,UADC為ADC 采集的輸入的電壓值,B 為材料常數(shù),由NTC 熱敏電阻特性決定,R0為熱敏電阻常溫(25℃)的標(biāo)稱阻值,T0為常溫時(shí)的溫度,TNTC為熱敏電阻當(dāng)前阻值對(duì)應(yīng)的溫度,其中T0、TNTC采用開(kāi)氏溫度計(jì)算。
R1分壓電阻為39K,UVCC基準(zhǔn)電壓為3.3V,UADC為采集的實(shí)時(shí)電壓值,B 值為3950,R0的阻值為10K,T0為常溫25℃。將已知數(shù)據(jù)帶入公式(5)計(jì)算可以得到實(shí)時(shí)的溫度。
Modbus 通信接收起始和停止標(biāo)志判斷程序是通過(guò)串口中斷配合定時(shí)器和定時(shí)器中斷實(shí)現(xiàn)的,初始狀態(tài)時(shí),設(shè)備處于接收狀態(tài),總線空閑時(shí),串口沒(méi)有數(shù)據(jù)接收,不會(huì)產(chǎn)生中斷;當(dāng)有數(shù)據(jù)傳輸時(shí),串口接收數(shù)據(jù)并在每一個(gè)字節(jié)(8 位)接收完畢后都會(huì)產(chǎn)生一個(gè)中斷。在數(shù)據(jù)傳輸過(guò)程中,串口中斷會(huì)不斷清零定時(shí)器的初值,定時(shí)器不會(huì)達(dá)到計(jì)數(shù)上限。當(dāng)數(shù)據(jù)傳輸完畢后,串口接收不會(huì)再產(chǎn)生中斷,此時(shí)定時(shí)器初值不會(huì)被清零,定時(shí)器會(huì)計(jì)數(shù)達(dá)到計(jì)數(shù)上限,然后產(chǎn)生定時(shí)器中斷,這樣就表明這一個(gè)消息幀接收完畢。定時(shí)器產(chǎn)生的中斷可以啟動(dòng)后續(xù)的數(shù)據(jù)處理程序。
定時(shí)器計(jì)數(shù)上限的確定,計(jì)數(shù)器采用16 位制動(dòng)重裝載模式,時(shí)鐘設(shè)置為CPU 時(shí)鐘12 分頻,計(jì)數(shù)上限設(shè)置根據(jù)波特率、系統(tǒng)頻率和分頻系數(shù)設(shè)置,計(jì)算公式如下:

其中,Ttim為定時(shí)器的定時(shí)周期,SYSclk 為系統(tǒng)時(shí)鐘,Nmax為定時(shí)器的計(jì)數(shù)上限值。
波特率與接收或發(fā)送時(shí)間的關(guān)系:

其中T 為發(fā)送一位所需要的時(shí)間,baudRate 為通信的波特率。
SYSclk 系統(tǒng)時(shí)鐘為11059200Hz,通信波特率為9600,需要的時(shí)間間隔為3.5 字符。一個(gè)字節(jié)加上停止位和起始位需要11位。計(jì)算得到所需要的定時(shí)器計(jì)數(shù)上限。
考慮了成本和穩(wěn)定性等因素,設(shè)計(jì)了一種多路溫控系統(tǒng),支持四路獨(dú)立溫度測(cè)量和四路獨(dú)立繼電器輸出控制。設(shè)計(jì)中,增加了多重保護(hù)電路,實(shí)現(xiàn)穩(wěn)定運(yùn)行;增加了記憶存儲(chǔ)功能,模塊斷電恢復(fù)時(shí)免去重復(fù)設(shè)置;采用MODBUS 協(xié)議,組網(wǎng)使用方便?;谝陨咸攸c(diǎn),該多路溫控系統(tǒng)可以應(yīng)用在多種需要溫度控制的現(xiàn)場(chǎng),提高效率和質(zhì)量,降低成本。