基于ARM9的RTU設(shè)計
1.5 存儲器模塊和溫度測量模塊
存儲器包括SDRAM、Norflash和Nandflash。SDRAM用來臨時存放數(shù)據(jù),確保程序能正常運(yùn)行;Norflash用于存儲程序;Nandflash用于存儲數(shù)據(jù),在RTU突然掉電或通信網(wǎng)絡(luò)故障的情況下,Nandflash能把重要的數(shù)據(jù)信息保存起來,待到RTU再次上電并且網(wǎng)絡(luò)通暢時,再把數(shù)據(jù)提取出來發(fā)送出去。
E2PROM可以用來存儲RTU的初始配置信息,包括RTU設(shè)備基本屬性、IP地址信息、網(wǎng)絡(luò)參數(shù)、串口參數(shù)、主從模式選擇和AD采樣配置等信息。RTU上電運(yùn)行時,先從E2PROM中讀取配置信息,RTU初始化各個模塊之后才能正常工作。
測溫模塊可以用來測量RTU的工作溫度,并實時地或定時地向上傳輸其溫度值,實現(xiàn)溫度監(jiān)控。
2 RTU軟件設(shè)計
該新型RTU內(nèi)嵌μC/OS-II實時操作系統(tǒng),數(shù)據(jù)傳輸協(xié)議采用Modbus協(xié)議。μC/OS-II是一個完整的、可移植、可固化、可剪裁的占先式實時多任務(wù)內(nèi)核,適用于工業(yè)控制中的實時監(jiān)控。Modbus協(xié)議包括ASCII、RTU、TCP。Modbus的ASCII、RTU協(xié)議規(guī)定了消息、數(shù)據(jù)的結(jié)構(gòu)、命令和就答的方式,數(shù)據(jù)通信采用主-從方式。Modbus協(xié)議需要對數(shù)據(jù)進(jìn)行校驗,串行協(xié)議中除有奇偶校驗外,ASCII模式采用LRC校驗,RTU模式采用16位CRC校驗。 Modbus/TCP模式?jīng)]有額外規(guī)定校驗,因為TCP協(xié)議是一個面向連接的可靠協(xié)議。在本文中,作為主站的RTU,內(nèi)嵌的實時操作系統(tǒng)μC/OS-II實現(xiàn)上層Modbus/TCP協(xié)議與Modbus/RTU協(xié)議之間的通信(即上位機(jī)與計算機(jī)、上位機(jī)與下位機(jī)之間的通信)。而作為從站的RTU,內(nèi)嵌的實時操作系統(tǒng)μC/OS-II實現(xiàn)Modbus/RTU協(xié)議通信(即上位機(jī)與下位機(jī)之間的通信),對所連接的被測設(shè)備進(jìn)行控制信息的輸入輸出以及RTU采集和輸出模塊的控制。以下主要介紹作為從站的RTU軟件設(shè)計。
2.1 Modbus/RTU協(xié)議
Modbus串行鏈路協(xié)議是一個主-從協(xié)議。在同一時刻,只有一個主節(jié)點連接于總線,一個或多個子節(jié)點(最大編號為247)連接于同一個串行總線。Modbus通信總是由主節(jié)點發(fā)起。子節(jié)點在沒有收到來自主節(jié)點的請求時,從不會發(fā)送數(shù)據(jù)。子節(jié)點之間從不會互相通信。主節(jié)點在同一時刻只會發(fā)起一個Modbus事務(wù)處理。當(dāng)設(shè)備使用RTU模式在Modbus串行鏈路通信時,報文中每個8位字節(jié)含有兩個4位十六進(jìn)制字符。這種模式的主要優(yōu)點具有是較高的數(shù)據(jù)密度,而且在相同的波特率下比ASCII模式有更高的吞吐率。每個報文必須以連續(xù)的字符流傳送。在RTU模式,報文幀由時長至少為3.5個字符時間的空閑間隔區(qū)分。如果兩個字符之間的空閑間隔大于1.5個字符時間,則報文幀被認(rèn)為不完整應(yīng)該被接收節(jié)點丟棄。RTU接收驅(qū)動程序的實現(xiàn),由于1.5個字符時間(t1.5)和3.5個字符時間(t3.5)的定時,隱含著大量的對中斷的管理。在高通信速率下,這導(dǎo)致CPU負(fù)擔(dān)加重。因此,在通信速率等于或低于19 200 b/s時,這兩個定時必須嚴(yán)格遵守;對于波特率大于19 200 b/s的情形,應(yīng)該使用2個定時的固定值:建議的字符間超時時間(t1.5)為750μs,幀間的超時時間(t3.5)為1.750ms。
2.2 Modbus數(shù)據(jù)模型
在一系列不同平臺上,Modbus數(shù)據(jù)模式有不同的特性,基本平臺有離散輸入、線圈、輸入寄存器和保持寄存器。在該新型RTU系統(tǒng)中,事先要與主站RTU協(xié)商定義好一個離散輸入對應(yīng)表、線圈對應(yīng)表、輸入寄存器對應(yīng)表、保持寄存器對應(yīng)表。主站RTU和從站RTU根據(jù)對應(yīng)表中的數(shù)據(jù)位執(zhí)行相應(yīng)的操作。主站RTU讀離散輸入即讀取從站RTU數(shù)字量輸入狀態(tài);主站RTU寫線圈即控制從站RTU數(shù)字量輸出(繼電器輸出);從站RTU模擬量輸入(AD采集的數(shù)據(jù))存儲于輸入寄存器中,供主站RTU讀取:主站RTU通過寫保持寄存器可以給從站RTU發(fā)送配置信息,從站RTU讀保持寄存器執(zhí)行相應(yīng)操作。用來存儲從站RTU的初始配置信息的E2PROM,就是通過讀取相應(yīng)的保持寄存器中數(shù)據(jù),寫入到E2PROM中,再對RTU重新配置。
2.3 Modbus從站
Modbus主站和Modbus從站是兩個獨立的模塊,主站為上位機(jī)(客戶機(jī)),而從站為下位機(jī)(服務(wù)機(jī))。主站和從站都有相同的數(shù)據(jù)鏈路層,并且它們的幀報文數(shù)據(jù)結(jié)構(gòu)都是相同的。Modbus從站服務(wù)任務(wù)是從站協(xié)議的核心組成部分,它的主要工作是處理Modbus主站點功能請求,返回主站請求的保持寄存器、輸入寄存器、線圈和離散量輸入等值,或接收并保存主站寫入的保持寄存器和線圈等值;另外,Modbus從站的應(yīng)用程序也會讀取或?qū)懭胂嚓P(guān)的寄存器。從站RTU程序流程:首先,初始化目標(biāo)板、μC/OS-II、系統(tǒng)時基等等;接著,創(chuàng)建一個系統(tǒng)初始任務(wù)(優(yōu)先級最高)和Modbus從站服務(wù)程序;再接著開始運(yùn)行任務(wù)。基于μC/OS-II的從站RTU程序流程圖如圖6所示。本文引用地址:http://butianyuan.cn/article/155057.htm
評論