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