摘要:本文基于某監(jiān)控系統(tǒng)的設(shè)計,實現(xiàn)了三菱FX2N系列PLC在無協(xié)議通信方式下與DS18b20型數(shù)字
溫度傳感器的采集模塊以Modbus協(xié)議通信,在電爐熔化工作過程中,對電爐、電容、冷卻水等100多點的溫度實現(xiàn)巡檢。
隨著3C技術(shù)迅速發(fā)展,網(wǎng)絡(luò)集成信息自動化正迅速應(yīng)用到現(xiàn)場設(shè)備、控制中,現(xiàn)場總線控制系統(tǒng)正逐步取代傳統(tǒng)的集散控制系統(tǒng),其中Modbus現(xiàn)場總線協(xié)議在基于PLC的控制系統(tǒng)中得到了越來越廣泛的應(yīng)用.在本系統(tǒng)中,以PLC為主機(jī)、溫度采集模塊為從機(jī),完成對生產(chǎn)過程的自動控制、工業(yè)流程及工藝參數(shù)的顯示、修改,根據(jù)PLC的無協(xié)議通信功能,用Modbus現(xiàn)場總線協(xié)議實現(xiàn)主機(jī)與從機(jī)的通訊。
1、系統(tǒng)硬件組成
溫度監(jiān)控部分系統(tǒng)的硬件由DS18b20型數(shù)字溫度傳感器、采集模塊、FX2N系列PLC、FX2N-485-BD、HITECH觸摸屏組成,其結(jié)構(gòu)如圖1所示。
圖1系統(tǒng)硬件組成
DS18b20是世界上*支持單線總線接口(1wirebusinterface)的數(shù)字化溫度傳感器,單總線接口便于構(gòu)建分布式的溫度測控網(wǎng)絡(luò),數(shù)字化的輸出提高了信號傳輸?shù)目煽啃?而且使外圍電路大為簡化。DS18b20具有很高的適應(yīng)性和性價比,其測溫范圍為-55~125℃,測溫精度為±0.5℃,測溫距離zui大為200m,測溫方式使用3線制,本系統(tǒng)使用的傳感器排序方式為排序。
DS18b20內(nèi)部主要有3個數(shù)字部件:1個溫度傳感器、1個64位的激光刻蝕ROM、9字節(jié)高速暫存器ScratchpadRAM和3字節(jié)EERAM.ROM上64位數(shù)據(jù)是傳感器的序列號。暫存器確保數(shù)據(jù)的完整性,數(shù)據(jù)先被寫入暫存器,并可以被讀回.數(shù)據(jù)經(jīng)校驗后,可以由拷貝暫存器命令傳輸?shù)紼ERAM,以確保更改存儲器時數(shù)據(jù)的完整性。暫存器為9個字節(jié),第0和第1字節(jié)是溫度編碼的低字節(jié)和高字節(jié).
第2和第3字節(jié)是溫度編碼的低字節(jié)和高字節(jié)的拷貝,第4字節(jié)是配置寄存器,其值決定溫度轉(zhuǎn)換的分辨率。
本系統(tǒng)采用的STA-D溫度采集模塊,是一種遠(yuǎn)程數(shù)字化溫度采集系統(tǒng),有10個通道,每個通道zui多可以掛接16個DS18b20型數(shù)字溫度傳感器,總共可以監(jiān)控160個點的溫度,以RS485方式同上位機(jī)通訊,通信協(xié)議為標(biāo)準(zhǔn)Modbus協(xié)議,波特率為9600bps,與上位機(jī)通信距離zui大為1200m,工作電源為12~24V,工作溫度為-20~75℃。與FX2N??485??BD采用兩線制的485連線方式(圖2),接線要使用規(guī)范的屏蔽線。
圖2485連接圖
中國臺灣HITECH公司觸摸屏PWS系列是專為PLC設(shè)計的互動式工作站,用232直接與PLC連接,可以直接讀取PLC的數(shù)據(jù)寄存器,具有良好的人機(jī)界面,操作人員通過它可設(shè)置所有參數(shù),控制系統(tǒng)自動運行。并且編程簡便,運行穩(wěn)定,可設(shè)置不同的管理權(quán)限,適合于本系統(tǒng)使用。
2、Modbus協(xié)議
標(biāo)準(zhǔn)的Modbus口是使用RS??232C兼容串行接口,它定義了連接口的針腳、電纜、信號位、傳輸波特率、奇偶校驗,控制器能直接或經(jīng)由Modem組網(wǎng).控制器通信使用主!從技術(shù),即僅一設(shè)備(主設(shè)備)能初始化傳輸(查詢),其它設(shè)備(從設(shè)備)根據(jù)主設(shè)備查詢提供的數(shù)據(jù)作出相應(yīng)反應(yīng)。
表1Modbus部分功能碼定義
Modbus通訊協(xié)議有兩種傳送方式?RTU方式和ASCII方式。本系統(tǒng)使用RTU模式,這種方式的主要優(yōu)點是:在同樣的波特率下,可比ASCII方式傳送更多的數(shù)據(jù)。
使用RTU模式時,消息發(fā)送至少要以3.5個字符時間的停頓間隔開始,如圖3的T1-T2-T3-T4所示。傳輸?shù)?個域是設(shè)備地址,可以使用的傳輸字符是十六進(jìn)制數(shù)值。通信期間,網(wǎng)絡(luò)設(shè)備不斷偵測網(wǎng)絡(luò)總線,包括停頓間隔時間內(nèi),當(dāng)*個域(地址域)接收到,每個設(shè)備都進(jìn)行解碼以判斷是否發(fā)往自己的。在zui后一個傳輸字符之后,至少要有3.5個字符時間的停頓以標(biāo)定消息的結(jié)束,之后可開始新的消息傳輸。典型的消息幀如圖3所示。使用RTU模式,消息包括了一個基于CRC方法的錯誤檢測域.CRC域檢測了整個消息的內(nèi)容。
圖3Modbus消息幀結(jié)構(gòu)
CRC域是兩個字節(jié),包含一個16位的二進(jìn)制值。它由傳輸設(shè)備計算后加入到消息中。接收設(shè)備重新計算收到消息的CRC,并與接收到的CRC域中的值比較,如果兩值不同,則有誤,后面將具體講述CRC算法的實現(xiàn)。
3、系統(tǒng)軟件構(gòu)成
考慮到操作的方便性,在系統(tǒng)初次安裝時,先在PC機(jī)上用上位機(jī)軟件將所有傳感器的ID搜索出來,然后按實際安裝位置給每個傳感器編號,讀溫度測試傳感器是否工作正常。在PLC上使用Modbus協(xié)議通信時首先要對通信格式進(jìn)行設(shè)定,即對D8120寄存器進(jìn)行寫操作,在本系統(tǒng)條件下設(shè)置為0C87,即數(shù)據(jù)長度為8位,無校驗,無起始位與停止位,波特率9600bps。修改D8120設(shè)置后,確保通斷PLC電源一次。再用RS指令進(jìn)行數(shù)據(jù)的傳輸,相關(guān)程序格式如圖4所示。
圖4RS指令程序格式
按照上述程序格式,即可在數(shù)據(jù)發(fā)送區(qū)寫入指令進(jìn)行相應(yīng)的操作。
1)讀取溫度,其指令格式:[設(shè)備地址][命令號][通道號][傳感器編號][讀取個數(shù)高8位][低8位][CRC低8位][CRC高8位],其中CRC校驗字節(jié)以子程序形式調(diào)用.設(shè)備響應(yīng):[設(shè)備地址][命令號][返回的字節(jié)個數(shù)][數(shù)據(jù)1][數(shù)據(jù)2]...[數(shù)據(jù)n][CRC低8位][CRC高8位]。
每個18b20讀取溫度的返回值占用兩個字節(jié).
轉(zhuǎn)換方法:將實際溫度擴(kuò)大100倍,再將此數(shù)值分為兩個字節(jié)傳送出來即可.例如,實測出來溫度是28.65℃,擴(kuò)大100倍即2865,則發(fā)送的*個字節(jié)是2865/256即是11,第二個字節(jié)是2865%256即49,那么傳送的兩個字節(jié)為0×0B和0×31。
需要注意的是,由于采用兩線制的485連線方式,會產(chǎn)生回波通信,即接收端會先接收到自己發(fā)送出去的數(shù)據(jù),但數(shù)據(jù)還是會正常發(fā)送給采集模塊,此時接收端則應(yīng)該避開前面的無用數(shù)據(jù),接收后面模塊響應(yīng)的有效數(shù)據(jù)。
2)在系統(tǒng)運行后,若需更換傳感器,則需執(zhí)行以下兩條指令,首先,搜索ID,[01][06][0c][00][00][00][CRC低][CRC高],此指令為搜索模塊1上各個通道的所有傳感器。然后寫編號,例如:[01][06][09][05][00][05][CRC低][CRC高],表示將第9通道的原來編號為05的傳感器更換后重新設(shè)定為05,執(zhí)行此兩條指令后,方可重新讀取溫度。
3)CRC校驗字節(jié)的生成是比較關(guān)鍵的一步,其過程比較復(fù)雜,步驟如下:
?、兕A(yù)置一個16位CRC寄存器為十六進(jìn)制FFFF,即所有數(shù)位均為1。
?、谠?6位寄存器的低8位字節(jié)與信息幀的*個字節(jié)的低8位進(jìn)行&異或?運算.運算結(jié)果放入這個16位寄存器。
?、郯堰@個16寄存器向右移一位,用0*高位。
?、苋粝蛴遥?biāo)記位)移出的數(shù)位是1,則生成多項式A001(1010000000000001)和這個寄存器進(jìn)行“異或”運算;若向右移出的數(shù)位是0,則返回③。
?、葜貜?fù)③和④,直至移出8位。
⑥重復(fù)③~⑤,直至該報文所有字節(jié)均與16位寄存器進(jìn)行&異或?運算,并移位8次。
?、邔⒌玫降膌6位CRC寄存器的高、低位字節(jié)進(jìn)行,即2字節(jié)CRC,加到報文。
其程序流程如圖5,以上面的溫度讀取指令為例,其CRC校驗梯形圖如圖6。
圖5CRC校驗流程
圖6CRC校驗程序
在讀取溫度時,應(yīng)嚴(yán)格遵守DS18b20的讀寫時序,否則就會出現(xiàn)錯誤,丟幀等,若用脈沖信號定時讀取,則間隔應(yīng)不小于100ms.一般出現(xiàn)錯誤幀時數(shù)據(jù)顯示為0℃,此時可以進(jìn)行簡單的濾波,例如傳回值為0時不顯示數(shù)據(jù),或者多組數(shù)據(jù)取平均值后再顯示,以避免溫度顯示的大幅度跳動。DS18b20的初始化溫度顯示為85℃,若一直不變,則此傳感器可能已經(jīng)損壞或是接線不良,應(yīng)進(jìn)行相應(yīng)的檢查。
4、結(jié)束語
該系統(tǒng)應(yīng)用于生產(chǎn)過程實時監(jiān)控中,PLC既作為現(xiàn)場控制機(jī)完成對生產(chǎn)過程的自動控制,又作為主從通信的主機(jī),與相關(guān)儀表連接,實現(xiàn)與基于Modbus現(xiàn)場總線協(xié)議的DS18b20型數(shù)字溫度傳感器的采集模塊的主從通信,并通過PLC高速實時網(wǎng)絡(luò)實現(xiàn)對其的遠(yuǎn)程監(jiān)控。該系統(tǒng)目前處于試運行階段,表現(xiàn)較為穩(wěn)定,通信可靠,效果良好。