秦鵬珍
(山西機(jī)電職業(yè)技術(shù)學(xué)院,山西 長治 046011)
隨著物聯(lián)網(wǎng)技術(shù)的發(fā)展,物聯(lián)網(wǎng)技術(shù)在人們的日常生活中也得到了廣泛的應(yīng)用,如智能家居、智能醫(yī)療、智能生產(chǎn)、智能環(huán)境、智能教學(xué)等[1]。山西作為能源大省、重工業(yè)基地,工業(yè)物聯(lián)網(wǎng)的建設(shè)與完善尤顯重要,而這方面的專業(yè)人才需求也非常緊迫。因此,為了能夠有效適應(yīng)山西工業(yè)市場人才需求,提高工業(yè)物聯(lián)網(wǎng)建設(shè)專業(yè)技能人才的培養(yǎng)質(zhì)量,本研究嘗試設(shè)計(jì)與構(gòu)建了一個(gè)符合真實(shí)應(yīng)用場景的工業(yè)物聯(lián)網(wǎng)實(shí)訓(xùn)項(xiàng)目——室內(nèi)外溫濕度的顯示以及室內(nèi)溫濕度的自動(dòng)控制,并將其應(yīng)用到了實(shí)際的教學(xué)當(dāng)中,獲得了良好的教學(xué)效果。
在溫濕度自動(dòng)控制系統(tǒng)中需要準(zhǔn)備的硬件模塊如表1,主要包含溫濕度傳感器模塊及其數(shù)據(jù)獲取模塊ADAM4017,負(fù)載風(fēng)機(jī)、報(bào)警燈以及負(fù)載控制模塊ADAM4150和繼電器,此外還有電腦終端以及若干電線[2]。
本文采用的實(shí)驗(yàn)系統(tǒng)中溫濕度傳感器選擇:室內(nèi)采用新大陸型號為EL-FTW32的溫濕度傳感器,室外采用新大陸公司的RS-WS-DCB溫濕度傳感器。器件與器件之間的通信使用串口通信實(shí)現(xiàn)。
表1 模塊的選取與模塊的功能簡介
考慮到新大陸有物聯(lián)網(wǎng)仿真軟件,本文功能驗(yàn)證方式為: 首先在新大陸物聯(lián)網(wǎng)仿真軟件進(jìn)行虛擬仿真,驗(yàn)證通過之后再在硬件設(shè)備驗(yàn)證。硬件連線以及仿真電路圖如圖1所示。由于仿真元件沒有風(fēng)機(jī),用風(fēng)扇取代,補(bǔ)光燈用白熾燈取代。
圖1 仿真電路界面
傳感器型號不同,其傳輸波特率設(shè)置也各不相同[3],系統(tǒng)中采用ADAM4150控制執(zhí)行元件并通過ADAM4017讀取傳感器數(shù)據(jù),波特率選擇9600bps,如果要通過RS485總線讀取室外溫濕度傳感器數(shù)據(jù),則需要將波特率選擇為4800bps。
為了實(shí)現(xiàn)對溫濕度傳感器數(shù)據(jù)的讀取以及對各負(fù)載的開關(guān)控制,編寫代碼時(shí)需要用到ADAM4150采集器各個(gè)端口的控制指令,以及ADAM4017數(shù)據(jù)讀取指令,本采集系統(tǒng)中,ADAM4150 各通道開關(guān)命令如表2所示,ADAM4017讀取傳感器數(shù)據(jù)的命令為02 03 00 00 00 08 44 3F,通過對獲取到的命令進(jìn)行解析以及依據(jù)相關(guān)設(shè)備的量程等數(shù)據(jù)量計(jì)算得出溫濕度傳感器數(shù)值,若要實(shí)現(xiàn)對室外溫度傳感器的讀取,則讀取傳感器數(shù)據(jù)命令為01 03 00 00 00 02 C4 0B。
表2 ADAM4150 各通道開關(guān)命令
本系統(tǒng)中在獲取溫濕度數(shù)據(jù)的同時(shí)將獲取到的數(shù)據(jù)存儲(chǔ)到相關(guān)數(shù)據(jù)表中,便于后續(xù)數(shù)據(jù)分析時(shí)使用。為了能夠?qū)崿F(xiàn)循環(huán)讀取溫濕度傳感器數(shù)據(jù),在系統(tǒng)中首先要實(shí)現(xiàn)線程代碼的編寫。ADAM4017類代碼主要部分如下:
第一步:讀取傳感器數(shù)據(jù)
public void run(){
while (true){//因?yàn)閿?shù)據(jù)的讀取是永遠(yuǎn)進(jìn)行著,所以這里循環(huán)采用條件永遠(yuǎn)為真。
SerialPortManager.sendToPort(Data.OpenPort,Data.ADAM4017Command);
SerialPortManager.addListener(Data.OpenPort, new SerialPortEventListener() {
@Override
public void serialEvent(SerialPortEvent serialPortEvent) {
switch (serialPortEvent.getEventType()) {
case SerialPortEvent.DATA_AVAILABLE:
byte[] res = SerialPortManager.readFromPort(Data.OpenPort);
String tempStr = ByteUtils.byteToHex(res[3]) + ByteUtils.byteToHex(res[4]);
double tempValue = Integer.parseInt(tempStr, 16);
}}}
第二步:依據(jù)傳感器量程實(shí)現(xiàn)對讀取到數(shù)據(jù)的轉(zhuǎn)化
double temp =tempValue*70/65535-10;
String humiStr = ByteUtils.byteToHex(res[5]) + ByteUtils.byteToHex(res[6]);
double humiValue = Integer.parseInt(humiStr, 16);
double humi =humiValue*50/65535+50;
DecimalFormat df = new DecimalFormat("00.0");
第三步:將獲取到的數(shù)據(jù)存儲(chǔ)到數(shù)據(jù)表中
sql = "INSERT INTO S4017DATA (TEMP,HUMI) VALUES ("+temp+","+humi+")";
sqLiteJDBC.insert(sql);
第四步:依據(jù)獲取到的實(shí)際溫濕度值與臨界溫濕度值進(jìn)行比較實(shí)現(xiàn)對系統(tǒng)的智能控制
if(temp<15){
SerialPortManager.sendToPort(Data.OpenPort,Data.DO3Open);
SerialPortManager.sendToPort(Data.OpenPort,Data.DO0Close);
}else if(temp>30){
SerialPortManager.sendToPort(Data.OpenPort,Data.DO0Open);
SerialPortManager.sendToPort(Data.OpenPort,Data.DO3Close);}
if(humi<30){
SerialPortManager.sendToPort(Data.OpenPort,Data.DO2Open);
SerialPortManager.sendToPort(Data.OpenPort,Data.DO1Close);
}else if(humi>60){
SerialPortManager.sendToPort(Data.OpenPort,Data.DO1Open);
SerialPortManager.sendToPort(Data.OpenPort,Data.DO2Close);}
室外溫度傳感器數(shù)據(jù)的讀取和此類相近。
程序最終的執(zhí)行結(jié)果如圖2所示。為了便于學(xué)生理解,采用Java窗口展示為溫濕度自動(dòng)控制的數(shù)據(jù)。圖3為本系統(tǒng)功能實(shí)現(xiàn)代碼編寫的總流程圖。值得說明的是由于代碼編寫以及數(shù)據(jù)獲取都采用的是新大陸仿真平臺,傳感器溫濕度采用隨機(jī)數(shù)據(jù),仿真環(huán)境中的燈泡并不能真正實(shí)現(xiàn)加溫的效果,風(fēng)扇仿真中也得不到降溫或除濕的效果。但是此虛擬仿真和真實(shí)的自動(dòng)溫濕度控制原理以及實(shí)現(xiàn)步驟是一樣的,使用該代碼在真實(shí)實(shí)訓(xùn)平臺也一樣能夠?qū)崿F(xiàn)對系統(tǒng)的智能控制,在真實(shí)的自動(dòng)溫濕度控制時(shí)是可以實(shí)現(xiàn)這個(gè)效果的。依據(jù)我們獲取以及存儲(chǔ)的溫濕度數(shù)據(jù),后期可以使用獲取到的數(shù)據(jù)圖、室內(nèi)或者室外溫濕度傳感器歷史變化曲線,依據(jù)此數(shù)據(jù)以及圖形,相關(guān)人員就可時(shí)進(jìn)行一定的數(shù)據(jù)分析,從而實(shí)現(xiàn)系統(tǒng)價(jià)值。
圖2 溫濕度自動(dòng)控制的窗口數(shù)據(jù)
圖3 代碼的總流程圖
基于Java的智能溫濕度控制仿真實(shí)訓(xùn)項(xiàng)目作為工業(yè)物聯(lián)網(wǎng)實(shí)訓(xùn)技能培訓(xùn)的典型案例之一,一方面可以強(qiáng)化學(xué)生的專業(yè)學(xué)習(xí)技能,提高專業(yè)人才培養(yǎng)質(zhì)量;另一方面,還能為教師提供一定的科研資源,并以此為平臺提高教師團(tuán)隊(duì)整體的科研水平和教學(xué)水平,為校企合作、產(chǎn)教融合的專業(yè)教學(xué)發(fā)展提供有力的保障。