日本免费精品视频,男人的天堂在线免费视频,成人久久久精品乱码一区二区三区,高清成人爽a毛片免费网站

在線客服

modbus協(xié)議實(shí)用13篇

引論:我們?yōu)槟砹?3篇modbus協(xié)議范文,供您借鑒以豐富您的創(chuàng)作。它們是您寫作時(shí)的寶貴資源,期望它們能夠激發(fā)您的創(chuàng)作靈感,讓您的文章更具深度。

modbus協(xié)議

篇1

當(dāng)在一個(gè)modbus網(wǎng)絡(luò)上通信時(shí),此協(xié)議決定了每個(gè)控制器須要知道它們的設(shè)備地址,識(shí)別按地址發(fā)來的消息,決定要產(chǎn)生何種行動(dòng)。如果需要回應(yīng),控制器將生成反饋信息并用Modbus協(xié)議發(fā)出。在其它網(wǎng)絡(luò)上,包含了Modbus協(xié)議的消息轉(zhuǎn)換為在此網(wǎng)絡(luò)上使用的幀或包結(jié)構(gòu)。這種轉(zhuǎn)換也擴(kuò)展了根據(jù)具體的網(wǎng)絡(luò)解決節(jié)地址、路由路徑及錯(cuò)誤檢測的方法。

1.Modbus協(xié)議

1.1 Modbus協(xié)議族

Modbus協(xié)議中有ASCII、RTU、TCP等,其中前二者規(guī)定了消息、數(shù)據(jù)的結(jié)構(gòu)、命令和應(yīng)答的方式,數(shù)據(jù)通信采用Master/Slave(主從)方式,主端發(fā)出數(shù)據(jù)請求消息,從端接收到正確消息后就可以發(fā)送數(shù)據(jù)到主端以響應(yīng)請求;主端也可以直接發(fā)送消息修改從端的數(shù)據(jù),實(shí)現(xiàn)雙向讀寫。此外,在校驗(yàn)上,ASCII模式采用LRC校驗(yàn),RTU模式采用16位CRC校驗(yàn)。而TCP模式除了有奇偶校驗(yàn)外,沒有額外規(guī)定校驗(yàn),其原因就是TCP協(xié)議是一個(gè)面向連接的可靠協(xié)議。

1.2 Modbus網(wǎng)絡(luò)上的數(shù)據(jù)傳輸

Modicon控制器上的標(biāo)準(zhǔn)Modbus端口是使用一個(gè)RS232兼容的串行接口,定義了連接器,接線電纜,信號(hào)等級(jí),傳輸波特率,和奇偶校驗(yàn),控制器可直接或通過調(diào)制解調(diào)器接入總線(網(wǎng)絡(luò))。控制器通訊使用主從技術(shù)而其它設(shè)備(從機(jī))應(yīng)返回對查詢作出的響應(yīng),或處理查詢所要求的動(dòng)作。典型的主機(jī)設(shè)備應(yīng)包括主處理器和編程器,典型的從機(jī)包括可編程控制器。

主機(jī)可對各從機(jī)尋址,發(fā)出廣播信息,從機(jī)返回信息作為對查詢的響應(yīng)。從機(jī)對于主機(jī)的廣播查詢,無響應(yīng)返回Modbus協(xié)議報(bào)據(jù)設(shè)備地址,請求功能代碼,發(fā)送數(shù)據(jù),錯(cuò)誤校驗(yàn)碼,建立了主機(jī)查詢格式,從機(jī)的響應(yīng)信息也用Modbus協(xié)議組織,它包括確認(rèn)動(dòng)作的代碼,返回?cái)?shù)據(jù)和錯(cuò)誤校驗(yàn)碼。若在接收信息時(shí)出現(xiàn)一個(gè)錯(cuò)誤或從機(jī)不能執(zhí)行要求的動(dòng)作時(shí),從機(jī)會(huì)組織一個(gè)錯(cuò)誤信息。并向主機(jī)發(fā)送作為響應(yīng)。

1.3 在其它總線上傳輸數(shù)據(jù)

除標(biāo)準(zhǔn)的Modbus功能外,有些Modicon控制器內(nèi)置端口或總線適配器,在Modbus+總線上實(shí)現(xiàn)通訊或使用網(wǎng)絡(luò)適配器,在MAP網(wǎng)絡(luò)上通訊。

在這些總線上,控制器間采用對等的技術(shù)進(jìn)行通訊,即任意一個(gè)控制器可向其它控制器啟動(dòng)數(shù)據(jù)傳送。因此,一臺(tái)控制器既可作為從機(jī),也可作為主機(jī),常提供多重的內(nèi)部通道,允許并列處理主機(jī)和從機(jī)傳輸數(shù)據(jù) 在信息級(jí),盡管網(wǎng)絡(luò)通訊方法是對等的,但Modbus協(xié)議仍采用主從方式,若一臺(tái)控制器作為主機(jī)設(shè)備發(fā)送一個(gè)信息,則可從一臺(tái)從機(jī)設(shè)備返回一個(gè)響應(yīng),類似,當(dāng)一臺(tái)控制器接受信息時(shí),它就組織一個(gè)從機(jī)設(shè)備的響應(yīng)信息,并返回至原發(fā)送信息的控制器。

1.4 查詢響應(yīng)周期

查詢:查詢中的功能代碼為被尋址的從機(jī)設(shè)備應(yīng)執(zhí)行的動(dòng)作類型。數(shù)據(jù)字節(jié)中包含從機(jī)須執(zhí)行功能的各附加信息,如功能代碼03將查詢從機(jī),并讀保持寄存器。并用寄存器的內(nèi)容作響應(yīng)。該數(shù)據(jù)區(qū)必須含有告之從機(jī)讀取寄存器的起始地址及數(shù)量,錯(cuò)誤校驗(yàn)區(qū)的一些信息,為從機(jī)提供一種校驗(yàn)方法,以保證信息內(nèi)容的完整性。

響應(yīng):從機(jī)正常響應(yīng)時(shí),響應(yīng)功能碼是查詢功能碼的應(yīng)答,數(shù)據(jù)字節(jié)包含從機(jī)采集的數(shù)據(jù),如寄存器值或狀態(tài)。如出現(xiàn)錯(cuò)誤,則修改功能碼,指明為錯(cuò)誤響應(yīng)。并在數(shù)據(jù)字節(jié)中含有一個(gè)代碼,來說明錯(cuò)誤,錯(cuò)誤檢查區(qū)允許主機(jī)確認(rèn)有效的信息內(nèi)容。

1.5 Modbus協(xié)議幀結(jié)構(gòu)

Modbus協(xié)議幀通常也被稱作Modbus信息包裹,一個(gè)協(xié)議幀由從前到后有以下四個(gè)部分組成:地址域:發(fā)送信息的目的地址,即主站請求時(shí)的從站地址或從站響應(yīng)時(shí)的主站地址。從站地址域長度為一個(gè)字節(jié),其中包括信息包裹傳送的從站地址。從站地址范圍為“1”至“255”。 功能碼域:信息包裹中功能域長度為一個(gè)字節(jié),用以通知從站應(yīng)當(dāng)執(zhí)行何種操作。數(shù)據(jù)域:域長度不定,依據(jù)其具體動(dòng)能而定。校驗(yàn)域:兩種不同模式下,計(jì)算而得的校驗(yàn)碼。

2.通信接口模塊開發(fā)

Modbus通信接口位于上位機(jī)和下位機(jī)之間,若要完成Modbus通信,則上位機(jī)和下位機(jī)必須安裝有能夠?qū)崿F(xiàn)Modbus協(xié)議的硬件和軟件。在系統(tǒng)集成工程中,如果出現(xiàn)通信雙方任何一方不具備Modbus接口的情況,則必須進(jìn)行底層驅(qū)動(dòng)模塊的開發(fā)。

一般下位機(jī)一側(cè)會(huì)出現(xiàn)不匹配,因?yàn)橄挛粰C(jī)系統(tǒng)中包括數(shù)據(jù)的采集和模數(shù)轉(zhuǎn)換處理等等,那么下位機(jī)系統(tǒng)結(jié)構(gòu)包括:數(shù)據(jù)采集處理模塊、中央處理模塊、通信模塊。

3.Modbus集成工程應(yīng)用

在系統(tǒng)集成的工程中,Modbus設(shè)備與中央監(jiān)控軟件間的通信是其一部分,其系統(tǒng)結(jié)構(gòu)配置包括根據(jù)工程要求選擇系統(tǒng)結(jié)構(gòu)體系,然后選擇Modbus設(shè)備;對所有主站和從站進(jìn)行設(shè)置地址是至關(guān)重要的一點(diǎn),Modbus寄存器地址通過0、1、3、4四種類型的前導(dǎo)數(shù)字標(biāo)明四種類型的寄存組,它與數(shù)據(jù)庫定義軟件組件中數(shù)據(jù)表有著對應(yīng)關(guān)系,其對應(yīng)關(guān)系是:0xxxxDigital Output;1xxxxDigital Input;3xxxxInput Register;4xxxxHolding Register。

中央軟件平臺(tái)中工程的組態(tài)和人機(jī)界面的開發(fā)分為三個(gè)步驟:用組態(tài)軟件對硬件進(jìn)行組態(tài),并存入數(shù)據(jù)庫;在軟件中以圖形畫面的形式開發(fā)出友好的人機(jī)界面;在主站上執(zhí)行人機(jī)界面,實(shí)現(xiàn)對設(shè)備的監(jiān)控。

篇2

1.1本系統(tǒng)主控芯片采用宏晶科技STC89C52單片機(jī),與其它CPU芯片相比,具有顯著特點(diǎn),加密性強(qiáng),超低功耗,速度快,可靠性高,驅(qū)動(dòng)能力強(qiáng),抗靜電和抗干擾能力強(qiáng)。

1.2DS18B20傳感器

DS18B20是美國DALLAS公司生產(chǎn)的一線式數(shù)字式溫度計(jì)芯片,它具有結(jié)構(gòu)簡單,不需外接元件,測量溫度范圍在-55°C—+125°C之間。采用一根I/O數(shù)據(jù)線既可供電又可傳輸數(shù)據(jù)、并可由用戶設(shè)置溫度報(bào)警界限等特點(diǎn),可廣泛用于食品庫、冷庫、糧庫等需要控制溫度的地方。

1.3網(wǎng)絡(luò)節(jié)點(diǎn)設(shè)計(jì)

網(wǎng)絡(luò)節(jié)點(diǎn)結(jié)構(gòu)示意圖

1.4網(wǎng)絡(luò)組成

該控制網(wǎng)由PC機(jī)和若干分節(jié)點(diǎn)組成,PC機(jī)主要負(fù)責(zé)輪詢各分站點(diǎn)數(shù)據(jù),發(fā)送請求數(shù)據(jù)包和控制數(shù)據(jù)包,然后分節(jié)點(diǎn)判斷數(shù)據(jù)包,根據(jù)相應(yīng)的指令通過RS232接口把數(shù)據(jù)發(fā)送給PC機(jī),最大站點(diǎn)數(shù)可設(shè)50個(gè)節(jié)點(diǎn),PC機(jī)對采集的數(shù)據(jù)進(jìn)行分析處理。

2 控制網(wǎng)絡(luò)通訊協(xié)議

2.1簡單節(jié)點(diǎn)流程示意圖

本控制網(wǎng)采用同一程序,通過面板按鍵設(shè)置本機(jī)的分節(jié)點(diǎn)地址,節(jié)點(diǎn)開始上電,CPU開始初始化I/O、串口等模塊,接著根據(jù)設(shè)置的參數(shù)讀取操作站點(diǎn),從而執(zhí)行相應(yīng)的程序并分析數(shù)據(jù),數(shù)據(jù)正確,進(jìn)行正常顯示,否則PC機(jī)根據(jù)不同的報(bào)警信息發(fā)出聲光報(bào)警。

簡單節(jié)點(diǎn)流程示意圖如下

2.2數(shù)據(jù)包格式

通訊參數(shù):波特率:1200,數(shù)據(jù)位為1,數(shù)據(jù)位為8,停止位為1,校驗(yàn)位為1,方式采用主從式通訊,計(jì)算機(jī)為主機(jī),各下位分機(jī)為從機(jī)。主機(jī)先發(fā)數(shù)據(jù)請求命令,只有符合地址條件的從機(jī)才回傳或接收數(shù)據(jù),在數(shù)據(jù)傳輸中,為提高系統(tǒng)的可靠性和實(shí)用性,要求傳送的數(shù)據(jù)包盡可能短,并且傳送的信息量要大。

2.2.1請求數(shù)據(jù)包

本數(shù)據(jù)包用于PC機(jī)向分節(jié)點(diǎn)請求數(shù)據(jù)使用。請求數(shù)據(jù)包格式如下:長度為4個(gè)字節(jié)數(shù),首位碼、讀標(biāo)志、目的地址、數(shù)據(jù)量均為一個(gè)字節(jié)數(shù)。

2.2.2回送數(shù)據(jù)

本數(shù)據(jù)包用于分節(jié)點(diǎn)發(fā)送PC機(jī)所請求的數(shù)據(jù),回送的數(shù)據(jù)包長度可以根據(jù)發(fā)送的指令而變,根據(jù)PC機(jī)發(fā)送的請求,數(shù)據(jù)包回送PC機(jī)所請求的數(shù)據(jù)。

回送數(shù)據(jù)包格式如下:首位碼、地址均為1個(gè)字節(jié)數(shù),回送數(shù)據(jù)根據(jù)發(fā)送指令確定字節(jié)數(shù),備用字節(jié)、校驗(yàn)碼為兩個(gè)字節(jié)數(shù)。

2.2.3控制數(shù)據(jù)包

本數(shù)據(jù)包主要用于PC機(jī)向分節(jié)點(diǎn)發(fā)送數(shù)據(jù)使用。控制數(shù)據(jù)包格式如下:長度為5個(gè)字節(jié)數(shù),首位碼、寫標(biāo)志、目的地址均為1個(gè)字節(jié)數(shù),數(shù)據(jù)量為2個(gè)字節(jié)數(shù)。

2.2.4協(xié)議的實(shí)現(xiàn)及應(yīng)用

在設(shè)計(jì)基于RS-485的分布式測控系統(tǒng)時(shí),在上位機(jī)呼叫下位機(jī)地址之后就可以利用本協(xié)議的規(guī)范來設(shè)計(jì)具體的通信流程。 基于本協(xié)議的通信可以有兩種機(jī)制。一種是面向握手的,即每發(fā)出一幀,總是要等待確認(rèn)幀,否則將認(rèn)為是通信出錯(cuò)。這是一種可靠的通信方式,適合傳輸系統(tǒng)命令和一些非常重要的系統(tǒng)參數(shù)。另一種是無握手的,即發(fā)送方假設(shè)接收方總是接收正確,從而無須等待確認(rèn)幀就不停地發(fā)送,適合大量前端采集數(shù)據(jù)的發(fā)送。這種機(jī)制的優(yōu)點(diǎn)是發(fā)送過程簡 單、快速,缺點(diǎn)是不能保證傳輸過程的可靠性。

本協(xié)議利用握手通訊方式已經(jīng)成功地運(yùn)用到多個(gè)冷庫、糧庫監(jiān)測系統(tǒng)中,不僅簡化了通信程序的設(shè)計(jì),而且保證了通信的高效和可靠。下位機(jī)負(fù)責(zé)現(xiàn)場的溫度的采樣和存儲(chǔ),上位機(jī)負(fù)責(zé)循環(huán)呼叫下位機(jī),以了解現(xiàn)場情況是否正常,并且每隔一定時(shí)間收集下位機(jī)存儲(chǔ)的數(shù)據(jù)并對數(shù)據(jù)進(jìn)行分析管理。

2.3通訊的可靠性

本系統(tǒng)采用主從結(jié)構(gòu),利用PC機(jī)輪詢各節(jié)點(diǎn),能有效解決網(wǎng)絡(luò)沖突問題。傳輸數(shù)據(jù)增加了冗余,并且在所傳送的數(shù)據(jù)中進(jìn)行了硬件的循環(huán)冗余校驗(yàn)。

3 結(jié)束語

本系統(tǒng)上位機(jī)軟件采用Delphi開發(fā),數(shù)據(jù)庫采用Firbird,上位機(jī)設(shè)計(jì)分為組態(tài)部分和監(jiān)控運(yùn)行部分,可視化直觀的界面操作,組態(tài)方便,可根據(jù)分節(jié)點(diǎn)所接傳感器數(shù)量不同,自由分配通道,利用上位機(jī)強(qiáng)大的數(shù)據(jù)處理能力,進(jìn)行數(shù)據(jù)分析和處理,可對各節(jié)點(diǎn)進(jìn)行數(shù)據(jù)顯示、上下限報(bào)警、實(shí)時(shí)趨勢顯示,具有很大的實(shí)際應(yīng)用價(jià)值。

篇3

Modbus協(xié)議是由Modicon公司在1978年發(fā)明的一種工業(yè)通信協(xié)議,正式為工業(yè)網(wǎng)絡(luò)拉開了序幕。Modbus 標(biāo)準(zhǔn)定義了 OSI 模型第7層上的應(yīng)用層報(bào)文傳輸協(xié)議,它在連接至不同類型總線或網(wǎng)絡(luò)的設(shè)備之間提供客戶機(jī)/服務(wù)器通信。由于其開放性標(biāo)準(zhǔn)、支持多種電氣接口、幀格式通俗易懂的特點(diǎn),特別是工控領(lǐng)域上HMI、PLC、前端儀表等設(shè)備間通信得到了廣泛使用。通常Modbus協(xié)議由串行鏈路通過一個(gè)主/從總線模型實(shí)現(xiàn)。同一時(shí)刻,只有一個(gè)主站連接于總線,一個(gè)或多個(gè)從站連接在同一個(gè)串行總線上。

二、硬件結(jié)構(gòu)設(shè)計(jì)

在工業(yè)儀表內(nèi)除了實(shí)現(xiàn)主要的監(jiān)測物理量之外,儀表還需具備數(shù)據(jù)通信互連功能。本文所指的工業(yè)儀表是基于STM32L152RBT6為控制器的硬件環(huán)境實(shí)現(xiàn)的對外界環(huán)境溫度監(jiān)測的儀表,并通過在其內(nèi)部構(gòu)建Modbus協(xié)議實(shí)現(xiàn)數(shù)據(jù)通信。STM32L152RBT6是屬于由ST公司的STM32L152系列微控制器,該系列屬于是超低功耗,高數(shù)據(jù)安全性,高效能的ARM Cortex-M3微控制器芯片。其低功耗運(yùn)行模式電流為10.4μA,能夠滿足實(shí)際的工業(yè)應(yīng)用中低功耗穩(wěn)定的需求。同時(shí)利用STM32內(nèi)提供的串行口外設(shè)和485總線轉(zhuǎn)換模塊實(shí)現(xiàn)通信接口。轉(zhuǎn)換模塊采用的是SP3072EEN接口芯片,采用半雙工通訊方式,與單片機(jī)引腳連接簡單。硬件結(jié)構(gòu)框圖如圖1所示。

三、軟件功能設(shè)計(jì)

為了在基于嵌入式的工業(yè)儀表內(nèi)構(gòu)建一個(gè)實(shí)時(shí)性強(qiáng)、運(yùn)行穩(wěn)定的Modbus協(xié)議,使用了μC/OS-II作為整個(gè)儀表的軟件平臺(tái),其是由Jean J. Labrosse于1992年編寫的一個(gè)嵌入式多任務(wù)操作系統(tǒng),憑借其足夠的穩(wěn)定性和安全性在數(shù)十年之間得到了許多機(jī)構(gòu)的標(biāo)準(zhǔn)認(rèn)證。在μC/OS-II內(nèi)具體應(yīng)用的軟功能都是通過系統(tǒng)提供的多個(gè)用戶任務(wù)來實(shí)現(xiàn)。

3.1 Modbus主站設(shè)計(jì)

實(shí)際工業(yè)應(yīng)用中,工業(yè)儀表需要向前端傳感設(shè)備或其他儀表進(jìn)行數(shù)據(jù)交互,以便實(shí)時(shí)讀取到需要的數(shù)據(jù)值,儀表內(nèi)部需要構(gòu)建一個(gè)Modbus主站作為主動(dòng)發(fā)送數(shù)據(jù)請求命令的客戶端。Modbus主站工作原理如圖2所示。

本設(shè)計(jì)利用了μC/OS-Ⅱ所提供的系統(tǒng)服務(wù)將主站模塊分為三個(gè)部分:請求主站服務(wù)的用戶任務(wù)、主站服務(wù)管理任務(wù)、串口底層驅(qū)動(dòng)函數(shù)。

請求主站服務(wù)的用戶任務(wù)是指的是那些用戶任務(wù)中有調(diào)用Modbus主站服務(wù)的需求。各個(gè)用戶任務(wù)通過實(shí)際應(yīng)用發(fā)送特定的主站請求命令,并通過操作系統(tǒng)提供的消息隊(duì)列進(jìn)行命令緩沖。

主站系統(tǒng)中的主站管理任務(wù)是負(fù)責(zé)專門管理來自各個(gè)請求主站服務(wù)的任務(wù)的具體請求。該任務(wù)也屬于一個(gè)用戶任務(wù),只是對請求命令的緩沖隊(duì)列進(jìn)行集中處理。

串口底層的中斷處理實(shí)現(xiàn)了串行鏈路上具體的數(shù)據(jù)發(fā)送與接收。

主站服務(wù)由請求主站服務(wù)的任務(wù)發(fā)起,各個(gè)請求主站服務(wù)的任務(wù)按優(yōu)先級(jí)順序執(zhí)行并依次調(diào)用主站服務(wù)調(diào)用函數(shù),該函數(shù)完成數(shù)據(jù)幀的建立與命令的填充最后將緩沖區(qū)傳遞給主站管理任務(wù)。主站管理任務(wù)優(yōu)先級(jí)是低于所有請求主站服務(wù)的任務(wù),它將依次處理接收到得數(shù)據(jù)幀內(nèi)容,對數(shù)據(jù)幀進(jìn)行封裝并交給串口底層驅(qū)動(dòng)實(shí)現(xiàn)最終的發(fā)送和接收工作。當(dāng)接收到從站回復(fù)或者發(fā)生接收超時(shí),主站管理任務(wù)將在緩沖區(qū)中產(chǎn)生一個(gè)標(biāo)志符通知上層請求任務(wù)進(jìn)行處理。為了發(fā)送和接收的實(shí)時(shí)性考慮,這里將數(shù)據(jù)幀的校驗(yàn)和處理工作交給上層請求任務(wù)完成。

3.2 Modbus從站設(shè)計(jì)

為了實(shí)現(xiàn)數(shù)據(jù)互連,后臺(tái)上位機(jī)或者現(xiàn)場PLC需要實(shí)時(shí)獲取前端儀表的數(shù)據(jù)信息。前端儀表內(nèi)部需要構(gòu)建一個(gè)Modbus從站作為服務(wù)器提供前端數(shù)據(jù)。Modbus從站工作原理如圖3所示。

篇4

系統(tǒng)中有一個(gè)主機(jī)和三個(gè)從機(jī)。從機(jī)的地址已由其控制器的P1口分別設(shè)置為1、2、3。主機(jī)能控制從機(jī)1和從機(jī)2的繼電器,并且顯示其工作狀態(tài)。主機(jī)能讀入從機(jī)3采集的電壓數(shù)據(jù),并實(shí)時(shí)顯示。圖3中還設(shè)置用于顯示通信狀態(tài)的若干個(gè)LED。圖3中的液晶模塊上顯示從機(jī)1和從機(jī)2的繼電器開關(guān)被主機(jī)分別控制成閉合和斷開,從機(jī)3采集的兩個(gè)電壓數(shù)據(jù)分別為4.98V和0V。系統(tǒng)前端通信接口選用的芯片是MAX485。MAX485接口芯片是Maxim公司的一種RS-485芯片,采用單一電源+5V工作,額定電流為300μA,采用半雙工通訊方式。它完成將TTL電平轉(zhuǎn)換為RS-485電平的功能。MAX485的內(nèi)部含有一個(gè)驅(qū)動(dòng)器和接收器。它的RO和DI端分別為接收器的輸出和驅(qū)動(dòng)器的輸入端,與單片機(jī)連接時(shí)只需分別與單片機(jī)的RXD和TXD相連即可;/RE和DE端分別為接收和發(fā)送的使能端,當(dāng)/RE為邏輯0時(shí),器件處于接收狀態(tài);當(dāng)DE為邏輯1時(shí),器件處于發(fā)送狀態(tài),因?yàn)镸AX485工作在半雙工方式,所以只需用單片機(jī)的一個(gè)管腳控制這兩個(gè)引腳即可;A端和B端分別為接收和發(fā)送的差分信號(hào)端,當(dāng)A引腳的電平高于B時(shí),代表發(fā)送的數(shù)據(jù)為1;當(dāng)A的電平低于B端時(shí),代表發(fā)送的數(shù)據(jù)為0。由于RS-485芯片的特性,接收器的檢測靈敏度為±200mV,即差分輸入端VA-VB≥+200mV,輸出邏輯1,VA-VB≤-200mV,輸出邏輯0;而A、B端電位差的絕對值小于200mV時(shí),輸出為不確定。如果接收器輸入端(A、B)開路或總線浮空(總線上所有驅(qū)動(dòng)器輸出為高阻)時(shí),若接收器輸出低電平,則UART可能認(rèn)為是通信幀的“起始信息”而引起工作不正常,克服此問題的方法是在A端接上拉電阻,在B端接下拉電阻,從而保證A、B開路或浮空時(shí),輸出處于確定狀態(tài)(高電平)。本系統(tǒng)此處的上拉電阻和下拉電阻都為10KΩ。另外,在應(yīng)用系統(tǒng)工程的現(xiàn)場施工中,由于通信載體是雙絞線,它的特性阻抗為120Ω左右,所以線路設(shè)計(jì)時(shí),在RS-485網(wǎng)絡(luò)傳輸線的始端和末端各應(yīng)接1只120Ω的匹配電阻,以減少線路上傳輸信號(hào)的反射。

3.系統(tǒng)程序設(shè)計(jì)

本系統(tǒng)的軟件遵循模塊化設(shè)計(jì)思想,包括主程序、初始化程序、串行通信程序和液晶顯示程序等。系統(tǒng)的主機(jī)主程序流程圖如圖4所示。主機(jī)遵循Modbus協(xié)議,實(shí)現(xiàn)了發(fā)送串口命令和讀取響應(yīng)信息,以及數(shù)據(jù)處理和最終顯示輸出。Modbus協(xié)議是一個(gè)一主多從的通信協(xié)議,所以需要對每個(gè)從機(jī)分配不同的地址。從機(jī)主要實(shí)現(xiàn)數(shù)據(jù)幀的接收和存儲(chǔ),并且根據(jù)接收到的數(shù)據(jù)幀中的功能代碼給出一應(yīng)答消息作為對主機(jī)的回應(yīng)。從機(jī)的程序設(shè)計(jì)流程圖同圖4類似。首先也需要對系統(tǒng)初始化,包括定時(shí)器初始化、串口初始化等,然后調(diào)用串口接收命令讀取主機(jī)發(fā)送來的數(shù)據(jù)幀,并判斷接收到的數(shù)據(jù)幀中的地址與本機(jī)是否相符,如果不符,直接結(jié)束,否則對數(shù)據(jù)幀進(jìn)行CRC校驗(yàn)。當(dāng)校驗(yàn)正確的時(shí)候就可以根據(jù)相應(yīng)的功能代碼調(diào)用對應(yīng)的函數(shù)去執(zhí)行功能操作,否則向主機(jī)返回一個(gè)錯(cuò)誤信息的應(yīng)答幀。下面給出主機(jī)和從機(jī)程序中幾個(gè)重要的子程序設(shè)計(jì)的關(guān)鍵之處。

3.1定時(shí)器T0的初值

RTU模式中,信息開始時(shí)和結(jié)束時(shí)都至少應(yīng)有3.5個(gè)字符的靜止間隔時(shí)間,這個(gè)間隔時(shí)間可根據(jù)波特率用定時(shí)器T0中斷來實(shí)現(xiàn)。當(dāng)單片機(jī)每收到一個(gè)數(shù)據(jù)時(shí)立即檢測與上一數(shù)據(jù)間隔是否大于3.5個(gè)字符時(shí)間,如大于則說明該幀發(fā)送結(jié)束,單片機(jī)準(zhǔn)備接收下一幀。程序用定時(shí)器T0來控制和標(biāo)識(shí)圖1中1.5字符和3.5字符的時(shí)間時(shí)隔。對于系統(tǒng)所選擇的波特率9600bit/s,則每位傳輸時(shí)間為1/9600s,在程序配置的串口模式1下,發(fā)送每字符信息時(shí)輸出1個(gè)起始位、8個(gè)數(shù)據(jù)位及1個(gè)停止位,故每字符傳輸時(shí)間為1/9600*10s,又由于中斷程序是在接收1個(gè)字符后再判斷時(shí)間間隔,故主程序?qū)?.5字符的幀內(nèi)字節(jié)間隔時(shí)間定義為:1/9600*10*(1.5+1)≈2604.2us;3.5字符的幀間隔時(shí)間定義為:1/9600*10*(3.5+1)≈4687.5us。在11.0592MHz晶振的作用下,相應(yīng)的定時(shí)器初值分別為2604和4688。

3.2CRC校驗(yàn)

RTU模式中每一消息幀最后2字節(jié)是CRC循環(huán)冗余校驗(yàn)字節(jié)。CRC校驗(yàn)是將整個(gè)字符串(不包括最后兩個(gè)字節(jié))按規(guī)定的方式進(jìn)行位移并進(jìn)行異或運(yùn)算,計(jì)算結(jié)果存于字符串的最后兩個(gè)字節(jié)內(nèi)。當(dāng)一幀消息結(jié)束后,需要對收到的地址碼、功能碼、數(shù)據(jù)段進(jìn)行CRC校驗(yàn)。倘若校驗(yàn)結(jié)果與消息包含的CRC校驗(yàn)碼吻合,則表示通信正常,否則直接返回,表示此幀通信存在錯(cuò)誤,要求重發(fā)此幀。

篇5

在油庫和各種石化單位,定量裝車作業(yè)十分繁忙,裝車操作過程又要求相對精確。更加重要的是,涉及石化產(chǎn)品具有一定危險(xiǎn)性。為了提高了裝車精度和效率,降低損耗,減輕工人的勞動(dòng)強(qiáng)度,同時(shí)盡可能保證安全作業(yè),本文設(shè)計(jì)了基于Modbus協(xié)議的定量裝車自動(dòng)監(jiān)控系統(tǒng),并交付某公司使用。實(shí)際應(yīng)用表明系統(tǒng)監(jiān)控畫面直觀,人員操控方便,具備一定的主動(dòng)安全保障能力。

2 Modbus協(xié)議

Modbus通信協(xié)議是美國Modicon公司開發(fā)的一種通信協(xié)議,它采用Master/Slave方式工作,一個(gè)主站可以連接多個(gè)從站,從站只能根據(jù)主站的請求作出相應(yīng)的應(yīng)答。它是一種開放、標(biāo)準(zhǔn)、免收許可費(fèi)的通信協(xié)議。目前該協(xié)議已經(jīng)廣泛應(yīng)用于自動(dòng)化控制和測控儀表,并且已經(jīng)成為我國工業(yè)自動(dòng)化網(wǎng)絡(luò)協(xié)議規(guī)范的國家標(biāo)準(zhǔn)之一。

Modbus協(xié)議有2種傳輸模式,即RTU模式和ASCII模式,相對于ASCII模式,RTU模式表達(dá)相同的信息需要較少的位數(shù),且在相同通信速率下具有更大的數(shù)據(jù)流量,因此本系統(tǒng)選用該模式完成設(shè)計(jì)與實(shí)現(xiàn)。

Modbus協(xié)議的采用LRC和CRC兩種校驗(yàn)?zāi)J絹肀WC控制命令傳輸無誤。本文采用CRC-16校驗(yàn)方式,該方式會(huì)根據(jù)當(dāng)前發(fā)送或接收的命令字節(jié)碼,計(jì)算對應(yīng)的2個(gè)字節(jié)的CRC校驗(yàn)碼。并將其加到命令字節(jié)碼之后一并發(fā)送,組合之后的命令字節(jié)碼格式為:

系統(tǒng)在實(shí)現(xiàn)過程中,考慮到最終將會(huì)采用普通的X86系列PC機(jī)作為監(jiān)控終端,而該型機(jī)都是big-endian方式做多字節(jié)數(shù)據(jù)存儲(chǔ),與Modbus協(xié)議要求的little-endian剛好相反, CRC的計(jì)算結(jié)果必須滿足這一要求。本文稍微調(diào)整了CRC-16校驗(yàn)碼的產(chǎn)生方式如下:

Step1:將0xFFFF裝入CRC寄存器;

Step2:將命令字節(jié)碼的第一個(gè)字節(jié)與CRC寄存器異或,結(jié)果存放在CRC寄存器中;

Step3:CRC寄存器右移1位,高位填充0;

Step4:檢查CRC寄存器的最低有效位,如果該位為0,則重復(fù)Step3;如果該位為1,則將CRC寄存器的值與0xA001異或;

Step4:重復(fù)Step3和4,直到完成8次移位之后,完成命令字節(jié)碼中的對一個(gè)字節(jié)的處理;

Step5:對命令字節(jié)碼的下一個(gè)字節(jié)重復(fù)Step2到Step5的處理,直到所有的字節(jié)都處理完成為止;

Step6:最終CRC寄存器中的內(nèi)容就是該條命令字節(jié)碼對應(yīng)的CRC校驗(yàn)值;

例如,某命令字節(jié)數(shù)據(jù)[ 1 | 15 | 0 25 | 0 12 | 2 | 168 3 | 216 120 ]的含義為:給1號(hào)地址設(shè)備15號(hào)命令(寫多個(gè)線圈),從它的25號(hào)起始地址開始(0 25),連續(xù)寫12個(gè)線圈(0 12),寫入內(nèi)容為命令數(shù)據(jù)區(qū)的1010 1000 0011(168 3),根據(jù)命令計(jì)算出CRC校驗(yàn)碼為(216 120)。

3 系統(tǒng)工作原理

本系統(tǒng)采用典型的RS232/485總線將上位機(jī)服務(wù)器端、上位機(jī)客戶端以及各個(gè)下位機(jī)組成一個(gè)工業(yè)可控以太網(wǎng),各下位機(jī)選取符合Modbus plus規(guī)范的相關(guān)設(shè)備,便于直接獲取的操作過程中的各種數(shù)據(jù)信息,并封裝成協(xié)議標(biāo)準(zhǔn)進(jìn)行傳輸和通訊。主操作界面如圖1所示。

系統(tǒng)工作原理框架如下:

(1)下位機(jī)通過傳感器采集溫度計(jì)、流量計(jì)、比重計(jì)等相關(guān)數(shù)據(jù),并封裝成Modbus協(xié)議格式數(shù)據(jù)供上位機(jī)客戶端查詢。

(2)上位機(jī)客戶端通過串口和橋接器連接各個(gè)下位機(jī),利用多線程串口讀取函數(shù)主動(dòng)進(jìn)行數(shù)據(jù)收集,下位機(jī)按照上位機(jī)客戶端的要求回傳相應(yīng)數(shù)據(jù)。然后,上位機(jī)客戶端將收到的數(shù)據(jù)按功能碼進(jìn)行解析,并以圖例、表格、文本等多種形式實(shí)時(shí)顯示和記錄。

(3)上位機(jī)服務(wù)器端通過TCP/IP網(wǎng)絡(luò)與各個(gè)上位機(jī)客戶端相連,對多個(gè)上位機(jī)客戶端的狀態(tài)信息進(jìn)行收集、分析和存檔,并通過主動(dòng)發(fā)送命令的方式給上位機(jī)指令,進(jìn)而通過上位機(jī)客戶端給下位機(jī)下達(dá)控制命令,達(dá)到“監(jiān)視――控制”雙功能。

4 軟件系統(tǒng)設(shè)計(jì)

上位機(jī)服務(wù)器通過接收Modbus請求,與上位機(jī)客戶端進(jìn)行交互,并對操作過程實(shí)時(shí)監(jiān)控,利用成熟的數(shù)據(jù)庫管理系統(tǒng),接收、存儲(chǔ)、處理和備份整個(gè)過程中產(chǎn)生的所有數(shù)據(jù),為客戶提供服務(wù),并為進(jìn)一步的數(shù)據(jù)分析提供歷史依據(jù)。上位機(jī)服務(wù)器端主要功能包括:

(1)系統(tǒng)管理:該模塊包括了各類管理員,操作人員的用戶注冊,授權(quán)和管理等等,防止非法操作人員惡意登錄造成操作失誤,也避免非授權(quán)操作員隨意更改系統(tǒng)工作參數(shù)可能造成系統(tǒng)運(yùn)行偏差。

(2)數(shù)據(jù)庫管理:該部分模塊選擇成熟的數(shù)據(jù)庫管理系統(tǒng)SQL Server2005對整個(gè)系統(tǒng)運(yùn)行過程中所需要記錄的所有數(shù)據(jù)信息就行存儲(chǔ)和管理,為整個(gè)系統(tǒng)的運(yùn)行和監(jiān)控提供可靠的數(shù)據(jù)支持;

(3)系統(tǒng)工作狀態(tài)顯示:該模塊負(fù)責(zé)以圖像模擬顯示多種數(shù)據(jù)狀態(tài),有利于管理人員實(shí)時(shí)監(jiān)控各下位機(jī)客戶端的操作情況。并且提供多種顯示圖像幫助管理人員分析各種操作情況,這是系統(tǒng)的核心功能之一, 在實(shí)現(xiàn)獲取個(gè)下位機(jī)狀態(tài)之后,對下位機(jī)進(jìn)行直接控制是系統(tǒng)必需的核心功能之一,雖然在實(shí)際裝車控制中主要使用的功能碼只有2、4、15、16號(hào)命令,但是本系統(tǒng)實(shí)現(xiàn)了全部Modbus功能碼,便于今后對新設(shè)備的擴(kuò)充。。

(4)Modbus協(xié)議命令:該模塊能夠按照標(biāo)準(zhǔn)的Modbus協(xié)議,接收來自上位機(jī)客戶端傳送來的Modbus請求,完成數(shù)據(jù)采集、數(shù)據(jù)分析和數(shù)據(jù)存儲(chǔ)工作,是系統(tǒng)工作狀態(tài)顯示實(shí)現(xiàn)的基礎(chǔ);

(5)安全警報(bào)功能:授油工作本身是具備一定危險(xiǎn)性的工作,安全責(zé)任事故問題必須引起足夠的重視。可以根據(jù)各種系統(tǒng)狀況進(jìn)行報(bào)警處理,保證系統(tǒng)工作狀態(tài)安全可靠,避免業(yè)務(wù)事故的發(fā)生,并且具備自動(dòng)報(bào)警信息記錄功能,收集歷史上曾經(jīng)出現(xiàn)的安全事故信息,為安全人員分析發(fā)現(xiàn)安全事故規(guī)律,查找安全隱患提供數(shù)據(jù)支撐。

上位機(jī)客戶端能有效地按照預(yù)定訂單號(hào)自動(dòng)完成裝車作業(yè),或者在操作員的控制下,進(jìn)行控制參數(shù)設(shè)置,定量控制、數(shù)據(jù)采集、業(yè)務(wù)受理和報(bào)表打印等具體業(yè)務(wù)。上位機(jī)客戶端主要功能包括:

(1)實(shí)時(shí)授油監(jiān)視:該模塊負(fù)責(zé)實(shí)時(shí)動(dòng)畫模擬顯示整個(gè)下位機(jī)控制分組內(nèi)所有鶴管的出油狀況,及相關(guān)關(guān)鍵參數(shù)數(shù)值顯示。例如:發(fā)油訂單號(hào)、車號(hào)、油品類型、參數(shù)設(shè)定、誤差范圍等等;

(2)強(qiáng)制發(fā)油控制:該模塊在特殊情況下,可以人為指定操作指令,以取代自動(dòng)發(fā)油過程,控制啟動(dòng)發(fā)油、暫停發(fā)油、恢復(fù)發(fā)油、強(qiáng)制結(jié)束等方式來進(jìn)行特殊操作,擴(kuò)展控制功能,更加適應(yīng)實(shí)際操作的變化;

(3)業(yè)務(wù)計(jì)劃管理:該模塊下,客戶可以根據(jù)預(yù)約過的訂單號(hào),自動(dòng)完成裝車過程。也可以在沒有訂單號(hào)的情況下,有操作人員生成新的裝車業(yè)務(wù),并進(jìn)行結(jié)算;

(4)業(yè)務(wù)查詢:該模塊按照操作員和客戶要求的方式(諸如進(jìn)行訂單號(hào)、裝車時(shí)間、油品類型、裝車單位、操作員編號(hào)等等)進(jìn)行多種關(guān)鍵字查詢和統(tǒng)計(jì)功能,并且自動(dòng)生成相關(guān)聯(lián)報(bào)表。

(5)打印功能:其自定義打印功能,更加貼近實(shí)用,可以由用戶自主選擇打印;

5 結(jié)論

本設(shè)計(jì)采用OOAD思想,用UNL建模,并使用Borland C++作為開發(fā)工具,規(guī)范化的設(shè)計(jì)和編程過程,以及大量集成的成熟控件足以支撐本軟件系統(tǒng)的快速開發(fā)。結(jié)果表明,軟件系統(tǒng)既可以對標(biāo)準(zhǔn)Modbus功能碼進(jìn)行調(diào)試,也可以對自定義功能碼進(jìn)行設(shè)置,還可以實(shí)時(shí)監(jiān)測和控制下位機(jī)狀態(tài),并結(jié)合數(shù)據(jù)庫功能記錄所有關(guān)鍵操作和核心設(shè)備配置參數(shù)信息,保障差錯(cuò)恢復(fù)。系統(tǒng)運(yùn)行穩(wěn)定可靠,使用簡明方便,很好地滿足項(xiàng)目要求。

[參考文獻(xiàn)]

[1] AEG Schneider Automatic Inc. Modicon IBM host based devices user’s guide Apr.1996

[2] 張克涵,張呼和,顧李馮.VC環(huán)境下的電機(jī)狀態(tài)監(jiān)測軟件設(shè)計(jì)[J].測控技術(shù)2012年第31卷第2期

[3] 呂國芳,唐海龍,李進(jìn).基于ModbusRTU的串口調(diào)試軟件的實(shí)現(xiàn)[J].計(jì)算機(jī)技術(shù)與發(fā)展 2009年第19卷第9期

[4] 袁輝,李延香.基于Modbus通訊協(xié)議數(shù)據(jù)采集系統(tǒng)的設(shè)計(jì)[J].科技咨詢導(dǎo)報(bào) 2007 No.19

[5] 陳柏金.通過串行口訪問modbus現(xiàn)場控制網(wǎng)絡(luò)[J].微計(jì)算機(jī)信息 2003.19(1)

[6] 王念春.基于Modbus的PC與下位機(jī)PLC間的通信程序[J].自動(dòng)化儀表 第22卷第8期 2001年8月

[7] 徐濤,閆科.基于Modbus協(xié)議的串行接口實(shí)現(xiàn)與DCS通訊[J].工業(yè)控制計(jì)算機(jī) 2002年4月

[8] 羅朝霞,張高記.基于TMS320F240TA DPS的Modbus通信協(xié)議的實(shí)現(xiàn)[J].微計(jì)算機(jī)信息2005.21(72)138-139

[9] 房傳禮,李建華.基于Modbus協(xié)議的大屏幕在線監(jiān)視系統(tǒng)設(shè)計(jì)[J].自動(dòng)化與儀表 2010年7月

[10] 盧文俊,冷杉.基于Modbus協(xié)議的控制器遠(yuǎn)程監(jiān)控系統(tǒng)[J].電力自動(dòng)化設(shè)備 2003年第23卷第6期

[11] 甑君,衛(wèi)強(qiáng),于耀.應(yīng)用多線程技術(shù)實(shí)現(xiàn)串行通信與信號(hào)采集識(shí)別的同步[J].計(jì)算機(jī)工程 2003(10)196-197

[12] 李俊,徐紅兵.基于Modbus協(xié)議的汽輪機(jī)保護(hù)系統(tǒng)通訊設(shè)計(jì)[J].自動(dòng)化與儀表 2006年7月

篇6

在生產(chǎn)和生活中監(jiān)控系統(tǒng)起到的作用越來重要,如在交通、銀行、電力等部門對監(jiān)控系統(tǒng)的要求越來越越高、需求也在不斷增大。在遠(yuǎn)程監(jiān)控系統(tǒng)中,作為一種種分布式控制系統(tǒng)和工業(yè)通信協(xié)議Modbus協(xié)議在工業(yè)領(lǐng)域得到很好的應(yīng)用,本文針對其含義、系統(tǒng)設(shè)計(jì)構(gòu)架和系統(tǒng)性能進(jìn)行詳細(xì)的闡述。

二、淺析Modbus協(xié)議

(1)Modbus協(xié)議開發(fā)的Modbus協(xié)議是一種分布式控制系統(tǒng)和工業(yè)通信協(xié)議,在分布式控制系統(tǒng)和工業(yè)設(shè)備通訊中得到很好的應(yīng)用,采用RS485方式作為物理接口。控制器經(jīng)由網(wǎng)絡(luò)、控制器相互之間、通訊協(xié)議等可以通訊,在工業(yè)生產(chǎn)中已經(jīng)成為通用標(biāo)準(zhǔn),可以連接不同的控制設(shè)備成為工業(yè)網(wǎng)絡(luò),實(shí)現(xiàn)集中控制和監(jiān)控。

(2)作為一種主從網(wǎng)絡(luò)Modbus網(wǎng)絡(luò)允許多個(gè)或一個(gè)從機(jī)和一個(gè)主機(jī)進(jìn)行通信,其中應(yīng)答報(bào)文和命令報(bào)文是相對應(yīng)的關(guān)系,也就是采用命令/應(yīng)答方式。主機(jī)發(fā)出命令報(bào)文,當(dāng)收到主機(jī)發(fā)來的報(bào)文的時(shí)候,相應(yīng)的應(yīng)答報(bào)文發(fā)出對命令報(bào)文進(jìn)行響應(yīng)。每個(gè)從機(jī)在網(wǎng)絡(luò)中都擁有一個(gè)唯一的地址,訪問的從機(jī)地址包含在主機(jī)發(fā)出的命令中,對相應(yīng)的命令做出應(yīng)答的是具有該地址的從機(jī)。

(3)傳輸模式ASCII和RTU被應(yīng)用在Modbus協(xié)議中。沒有奇偶校驗(yàn)位、2個(gè)停位、8個(gè)數(shù)據(jù)為是RTU的傳輸格式。依靠接收字符間應(yīng)用的時(shí)間RTU接收設(shè)備對一個(gè)幀的開始進(jìn)行判斷,在時(shí)間為3個(gè)半字符之后沒有完成幀或沒有新的字符,該幀會(huì)被接收設(shè)備放棄,新幀的開始以設(shè)下一個(gè)字符為標(biāo)準(zhǔn)。1字節(jié)的信息在RTU模式中被看作一個(gè)8為字符進(jìn)行發(fā)送,

而作為兩個(gè)ASCII字符在ASCII模式中被發(fā)送。

三、系統(tǒng)設(shè)計(jì)構(gòu)架

數(shù)據(jù)采集的RTU設(shè)備、數(shù)據(jù)交互的監(jiān)控設(shè)備、遠(yuǎn)程監(jiān)控的服務(wù)器是這個(gè)系統(tǒng)硬件的主要組成部分。應(yīng)用串口通信RTU設(shè)備與監(jiān)控設(shè)備之間通信并使Modbus TCP協(xié)議的轉(zhuǎn)換實(shí)現(xiàn),應(yīng)用TCP套接字技術(shù)服務(wù)器與監(jiān)控設(shè)備之間進(jìn)行通信并使Modbus TCP協(xié)議的轉(zhuǎn)換實(shí)現(xiàn)。

(1)設(shè)計(jì)協(xié)議轉(zhuǎn)換

在Modbus TCP協(xié)議中進(jìn)行通信時(shí)候,是經(jīng)過何種網(wǎng)絡(luò)不需要考慮,因?yàn)樗x了一個(gè)消息結(jié)構(gòu)體,并且對消息域內(nèi)容和格局的公共公式進(jìn)行了制定。在通信的時(shí)候這個(gè)協(xié)議對每個(gè)RTU設(shè)備的地址進(jìn)行定義,對按地址發(fā)來的信息進(jìn)行識(shí)別,并且對即將產(chǎn)生的行動(dòng)進(jìn)行決定。在需要回應(yīng)的情況下,反饋信息將在RTU設(shè)備中生成,采用Modbus TCP協(xié)議發(fā)出信息。相互轉(zhuǎn)換Modbus TCP協(xié)議與Modbus協(xié)議的時(shí)候,不需改變RTU,只需相應(yīng)的轉(zhuǎn)換MBAP報(bào)文頭。服務(wù)器的請求被接收到的時(shí)候,MBAP報(bào)文頭被Modbus TCP協(xié)議去掉并且被出送到RTU設(shè)備中。按照接收到的命令RTU設(shè)備進(jìn)行數(shù)據(jù)讀取,而且對CRC進(jìn)行差錯(cuò)校驗(yàn);RTU設(shè)備的相應(yīng)被接收到的時(shí)候,相應(yīng)的MBAP報(bào)文頭被加在Modbus TCP協(xié)議上,CRC差錯(cuò)校驗(yàn)被去除并且傳送回服務(wù)器。通過這樣的過程實(shí)現(xiàn)兩個(gè)協(xié)議的相互轉(zhuǎn)換。

(2)實(shí)現(xiàn)設(shè)備參數(shù)讀寫

采用C/S模型實(shí)現(xiàn)設(shè)備參數(shù)讀寫模塊。建立Socket通信是第一步,遠(yuǎn)程監(jiān)控終端與數(shù)據(jù)服務(wù)器建立連接是通過發(fā)送注冊包實(shí)現(xiàn)的,TCP保活機(jī)制被啟動(dòng),等候服務(wù)器發(fā)出命令,寫入或讀取設(shè)備參數(shù)命令由數(shù)據(jù)服務(wù)器發(fā)送的時(shí)候,按照Modbus TCP協(xié)議遠(yuǎn)程監(jiān)控終端接收命令,在傳入設(shè)備之前把它轉(zhuǎn)化為Modbus協(xié)議,根據(jù)其命令RTU設(shè)備對相應(yīng)設(shè)備參數(shù)進(jìn)行寫入或讀取,并向遠(yuǎn)程監(jiān)控終端發(fā)送響應(yīng)。在寫入或讀取成功的條件下,按照Modbus TCP協(xié)議接收到的響應(yīng)被遠(yuǎn)程監(jiān)控終端被封裝,并且發(fā)送給數(shù)據(jù)服務(wù)器;如果是失敗的寫入或讀取,按照Modbus TCP協(xié)議異常響應(yīng)被遠(yuǎn)程監(jiān)控終端發(fā)送到數(shù)據(jù)服務(wù)器。

四、分析系統(tǒng)性能

(1)在監(jiān)控系統(tǒng)的作用和功能方面,在空壓機(jī)中對壓風(fēng)機(jī)房管理、操作效率低下以及人力物力浪費(fèi)等問題進(jìn)行解決,使處理、交換、傳遞信息的速度加快,使監(jiān)控系統(tǒng)的可靠性和安全性得到保證,使控制系統(tǒng)的人性化、智能化、自動(dòng)化水平提高。主要功能在遠(yuǎn)程監(jiān)控系統(tǒng)中得以實(shí)現(xiàn)的有:使工作報(bào)表正常運(yùn)行,各種故障中的報(bào)警得以實(shí)現(xiàn);供氣壓力參數(shù)可以遠(yuǎn)程設(shè)定,能夠在線修正參數(shù);實(shí)時(shí)監(jiān)測供氣壓力,供氣過壓和欠壓都會(huì)進(jìn)行報(bào)警;供電系統(tǒng)的可靠性得以提高;等等。

五、結(jié)束語

通過上述淺析Modbus協(xié)議、系統(tǒng)設(shè)計(jì)構(gòu)架、分析系統(tǒng)性能,可以得知,基于內(nèi)嵌Modbus協(xié)議的遠(yuǎn)程監(jiān)控系統(tǒng),可以實(shí)現(xiàn)設(shè)備參數(shù)讀寫和套接字通信,使處理、交換、傳遞信息的速度加快。總之,這一系統(tǒng)具有很多優(yōu)勢,需要我們加大這這方面的研究和應(yīng)用。

參考文獻(xiàn)

[1]蔡茂蓉,姜龍,丁光輝,等.哈夫曼樹的實(shí)現(xiàn)及其在文件壓縮中的應(yīng)用[J].現(xiàn)代計(jì)算機(jī),2008(11):99-102.

[2]任子暉,付華科,杜艷,等.基于GPS/GPRS的校園定位監(jiān)控系統(tǒng)設(shè)計(jì)[J].徐州工程學(xué)院學(xué)報(bào)(自然科學(xué)版),2011,26(3):7-10.

[3]王防修,周康.通過哈夫曼編碼實(shí)現(xiàn)文件的壓縮與解壓[J].武漢工業(yè)學(xué)院學(xué)報(bào),2008,27(4):46-49.

[4]盧智嘉,王俊社,李玉萍.基于Modbus遠(yuǎn)程監(jiān)控系統(tǒng)的通信研究[J].微計(jì)算機(jī)信息(測控自動(dòng)化),2008.24:157-158.

篇7

水位自動(dòng)監(jiān)控系統(tǒng)主要對轄區(qū)范圍內(nèi)各水閘監(jiān)控點(diǎn)的水位高度,水l開關(guān)狀況,實(shí)時(shí)圖像進(jìn)行遠(yuǎn)程的集中監(jiān)控,告警以及水文信息歷史記錄等功能。替代了原有的人員分點(diǎn)巡視的工作方式,實(shí)現(xiàn)無人守值的24小時(shí)不間斷監(jiān)控,有更高的安全性。

2 監(jiān)控中心傳輸網(wǎng)絡(luò)設(shè)計(jì)

水位自動(dòng)監(jiān)控系統(tǒng)以PLC與全天候高清數(shù)字圖像采集系統(tǒng)相集合,通過網(wǎng)絡(luò)化控制技術(shù),于集中監(jiān)控系統(tǒng)中實(shí)時(shí)收集所有水閘監(jiān)控點(diǎn)的實(shí)時(shí)信息,以及實(shí)現(xiàn)水閘的遠(yuǎn)程控制。系統(tǒng)分為兩大部分,第一部分為分布于每一個(gè)水閘監(jiān)控點(diǎn)內(nèi)的現(xiàn)場監(jiān)控模組;第二部分為位于中控室的集中控制系統(tǒng)。集中控制系統(tǒng)由水閘集中監(jiān)控軟件,歷史數(shù)據(jù)存儲(chǔ)系統(tǒng),實(shí)時(shí)多屏監(jiān)控系統(tǒng),聲光告警裝置,不間斷電源UPS供電系統(tǒng)等組成

3 平臺(tái)軟件設(shè)計(jì)

現(xiàn)場監(jiān)控模組由PLC控制系統(tǒng),全天候高清數(shù)字圖像采集系統(tǒng),水閘閥控裝置,水位檢測器,網(wǎng)絡(luò)模組,UPS供電系統(tǒng)等組成。建立自動(dòng)檢測水位項(xiàng)目工程,保證水位正常。水利自動(dòng)監(jiān)管系統(tǒng)實(shí)現(xiàn)24小時(shí)自動(dòng)監(jiān)控,是以減少人力投入為基礎(chǔ),促進(jìn)水位自動(dòng)化管理體系,使用PLC與C語言程序結(jié)合的控制系統(tǒng)。

考核指標(biāo):

(1)水位檢測:通過現(xiàn)場多個(gè)傳感器檢測現(xiàn)場水位波動(dòng)情況,獲取實(shí)時(shí)水位信息,反映至中控室的集中控制系統(tǒng)。

(2)信號(hào)傳輸:使用屏蔽線以及MODBUS通信協(xié)議進(jìn)行高效,準(zhǔn)確的信號(hào)傳輸,避免干擾以及錯(cuò)誤信息的傳輸。MODbuss是應(yīng)用協(xié)議,有兩種模式ASCII,RTU。傳輸介質(zhì)是網(wǎng)線、串口線。網(wǎng)線需要在TCP傳輸層上包一個(gè)頭,用特殊的502端口。MODBUS的三種方式:TCP、RTU、ASCLL,通訊方式是通過串口形式通訊,走232或485通訊方法,TCP的通訊方法是TCPIP是通過以太網(wǎng)形式通訊,MODBUS包含三種方式:TCP、RTU、ASCLL、ASCLL通訊方式是通過串口形式通訊。

modbus協(xié)議和modbus tcp/ip協(xié)議的區(qū)別,按應(yīng)用協(xié)議的物理方式,Modbus協(xié)議用于串行鏈接,是RS232/422/485的任何一種,有兩種類型:Modbus RTU和Modbus ASCII;Modbus TCP/IP協(xié)議通常用于以太網(wǎng)鏈接,RJ45接口。Modbus協(xié)議是應(yīng)用層協(xié)議,TCP/UDP協(xié)議是傳輸層協(xié)議,不是層級(jí)并列關(guān)系。Modbus協(xié)議像總經(jīng)理,TCP/UDP協(xié)議是公司里的商務(wù)車。若一端用的是Modbus TCP協(xié)議,另一端用TCP協(xié)議,僅是數(shù)據(jù)包到達(dá)另一端,數(shù)據(jù)包沒有得到處理,通信的目標(biāo)沒有完成。Modbus rtu和Modbus tcp兩個(gè)協(xié)議的都是MODBUS協(xié)議,都是靠MODBUS寄存器地址進(jìn)行數(shù)據(jù)交換;進(jìn)行IP環(huán)境下數(shù)據(jù)傳輸,即一臺(tái)計(jì)算機(jī)發(fā)出的字節(jié)流無差錯(cuò)的發(fā)到網(wǎng)絡(luò)上其他計(jì)算機(jī),計(jì)算機(jī)A接收數(shù)據(jù)包時(shí),向計(jì)算機(jī)B回發(fā)數(shù)據(jù)包,產(chǎn)生部分通信量,全雙工多路復(fù)用服務(wù),進(jìn)行端到端傳輸。UDP面向非連接、傳輸不可靠、傳輸少量數(shù)據(jù)。標(biāo)準(zhǔn)的Modicon控制器采用RS232C串行的Modbus。Modbus的ASCII、RTU協(xié)議約定好消息、數(shù)據(jù)的結(jié)構(gòu)、命令和應(yīng)答方式,通訊采用Maser/Slave方式。

Modbus協(xié)議要對數(shù)據(jù)進(jìn)行校驗(yàn),串行協(xié)議要進(jìn)行奇偶校驗(yàn),ASCII模式采用LRC校驗(yàn),RTU模式用16位CRC進(jìn)行校驗(yàn),Modbus TCP模式?jīng)]有規(guī)定校驗(yàn),可靠協(xié)議。Modbus協(xié)議包括ASCII、RTU、TCP,S7-200 CPU224 CN 和S7-200 CPU226 CN 進(jìn)行通訊。寫好通訊指令后下載到micro/win里面,S7-200有兩個(gè)通訊口Port0、Port1,兩個(gè)口可以做mobus主站,port0可以做modbus的從站,用PLC進(jìn)行連接時(shí),Port0連PPI線上,一臺(tái)做主站,一臺(tái)做從站,地址在程序庫中調(diào)用時(shí)在進(jìn)行設(shè)置,先不用接線圖,可以通訊就行,Port0都接在PPI電纜上,CPU224 只有一個(gè)port0口,先把主站程序通過PPI下載到PLC里面,然后把從站指令通過PPI下載到另外的PLC上。若CPU程序運(yùn)行走modbus,編程軟件失去通訊,modbus庫是單獨(dú)下載,要把兩個(gè)PLC的三個(gè)通訊口都接在PPI上,先把224的Port0系統(tǒng)塊地址設(shè)置為2,226的Port0系統(tǒng)塊地址設(shè)置為3,226的Port1地址設(shè)置為4,224的mobus從站地址設(shè)置為2,226的Port0的主站mobus地址為3,在224程序中把一個(gè)mobus訪問區(qū)W100復(fù)制到QW0上,在226程序內(nèi)設(shè)置VW100去和224的VW100同步,下載PLC后,226設(shè)置VW100,224QW0外部DO燈是否按照VW100的數(shù)據(jù)進(jìn)亮燈,即連通。協(xié)議的實(shí)現(xiàn)與編程環(huán)境無關(guān),用多種語言都可以,如果是嵌入式的用C語言。中控室的集中控制系統(tǒng)分為以下幾點(diǎn):

(1)信息收集。由現(xiàn)場檢測裝置通過信號(hào)的形式直接連接PLC裝置,以獲取最新的實(shí)時(shí)信息,控制系統(tǒng)以實(shí)時(shí)曲線形式在全天候高清數(shù)字圖像采集系統(tǒng)中反映出來,并且每個(gè)水位檢測裝置都有對應(yīng)的曲線,以便查看不同位置的水位變化情況。水位變化曲線時(shí)間軸可根據(jù)需要調(diào)整。

(2)信息處理與情況分析。系統(tǒng)自動(dòng)把收集到的數(shù)據(jù)進(jìn)行分析計(jì)算,當(dāng)檢測水位達(dá)到限定高水位百分之九十五時(shí),全天候高清數(shù)字圖像采集系統(tǒng)高水位指示燈閃爍預(yù)警,集中控制系統(tǒng)發(fā)出信號(hào)給PLC系統(tǒng),PLC系統(tǒng)控制動(dòng)作裝置進(jìn)入預(yù)備放水狀態(tài),一旦水位高于限定高水位,動(dòng)作裝置啟動(dòng)放水降低水位,直到水位到達(dá)正常范圍;當(dāng)檢測水位達(dá)到限定低水位時(shí),全天候高清數(shù)字圖像采集系統(tǒng)高水位指示燈閃爍報(bào)警,PLC系統(tǒng)控制動(dòng)作裝置立即補(bǔ)充水量,直到水位到達(dá)正常范圍;當(dāng)水位波動(dòng)范圍過大時(shí),異常報(bào)警器響起,并且在全天候高清數(shù)字圖像采集系統(tǒng)顯示異常原因、故障點(diǎn)、以及應(yīng)對方案。

(3)記錄入檔。可通過以太網(wǎng)把數(shù)據(jù)發(fā)送到計(jì)算機(jī)設(shè)備,以方便入檔。通過全天候高清數(shù)字圖像采集系統(tǒng)事件記錄功能隨時(shí)可翻看過去發(fā)生事件以及每個(gè)測試點(diǎn)水位的變化情況。

篇8

1、引言

MODBUS作為一種簡單易用的通訊協(xié)議已經(jīng)越來越多的應(yīng)用在各類儀器儀表中,下面筆者以西門子公司的S7200PLC通過自由口與ABB公司的ACS510變頻器使用MODBUS協(xié)議進(jìn)行通信為例,對MODBUS通訊的應(yīng)用進(jìn)行敘述,以期達(dá)到拋磚引玉的效果。

2、硬件配置

圖1給出了SIMATIC S7-200CPU與四臺(tái)ABB ACS510變頻器構(gòu)成的MODBUS網(wǎng)絡(luò)。S7-200CPU為主工作站。變頻器1、變頻器2,變頻器3和變頻器4為從工作站。設(shè)置變頻器的通訊協(xié)議參數(shù)9802均為1,即變頻器通過RS485串行通訊口和MODBUS總線相連。設(shè)置通訊速率參數(shù)5303為19.2kb/s。設(shè)置校驗(yàn)方式參數(shù)5304為偶校驗(yàn),1個(gè)停止位。設(shè)置控制類型參數(shù)5305為 ABB傳動(dòng)簡版。從左到右變頻器1、2、3和4的站地址參數(shù)5302分別設(shè)置為3、4,5和6,并將變頻器4的總線終端電阻DIP開關(guān)置ON。在對變頻器以上參數(shù)設(shè)置完成后應(yīng)對傳動(dòng)重新上電激活,使新地址及通訊協(xié)議生效。

變頻器控制要求:

變頻器分現(xiàn)場和遠(yuǎn)程兩種控制模式,現(xiàn)場控制柜設(shè)置三位置模式選擇開關(guān),分別為停止、本控和遠(yuǎn)程。在本控模式下啟動(dòng)/停止命令由現(xiàn)場開關(guān)觸發(fā)數(shù)字輸入DI1控制,頻率由現(xiàn)場的電位器改變模擬輸入AI1的輸入電壓進(jìn)行調(diào)節(jié)。當(dāng)選擇遠(yuǎn)程模式時(shí),數(shù)字輸入DI2接通,通知PLC現(xiàn)變頻器已經(jīng)處于遠(yuǎn)程控制模式。為能夠?qū)崿F(xiàn)以上功能并在人機(jī)界面能夠觀察到變頻器的運(yùn)行頻率和通過模擬輸入AI2輸入的實(shí)際流量,還需要對變頻器其他部分參數(shù)進(jìn)行設(shè)置,見表1。

3、程序設(shè)計(jì)

3.1 通訊內(nèi)容

主工作站輪流發(fā)送請求報(bào)文到每個(gè)變頻器從工作站,隨之每個(gè)從工作站產(chǎn)生響應(yīng)報(bào)文。PLC主工作站分別對每個(gè)變頻器從工作站進(jìn)行如下操作:

(1)對每個(gè)變頻器的輸出線圈1~3的狀態(tài)進(jìn)行查詢;

(2)查詢變頻器狀態(tài)寄存器40004狀態(tài)字、40005實(shí)際值、40006實(shí)際值和40007實(shí)際值。40005~40007數(shù)據(jù)值對應(yīng)于表1中變頻器參數(shù)5310、5311和5312中的實(shí)際值。

(3)寫變頻器控制字,對變頻器的遠(yuǎn)程啟停進(jìn)行控制。

(4)寫變頻器寄存器,對變頻器的外部2給定進(jìn)行控制。

對一個(gè)變頻器的數(shù)據(jù)全部讀寫完成后,開始對下一站號(hào)變頻器的數(shù)據(jù)進(jìn)行讀寫。當(dāng)所有變頻器的數(shù)據(jù)讀寫完成后,主工作站重新開始對最小站號(hào)變頻器的數(shù)據(jù)進(jìn)行讀寫。數(shù)據(jù)的傳輸及接受采用PLC自由通訊口模式進(jìn)行,報(bào)文按照modbus的協(xié)議組織。

3.2 通訊格式

MODBUS請求報(bào)文格式如表2。

因在S7-200PLC發(fā)送指令XMT中,發(fā)送緩沖器的第一個(gè)字節(jié)指定的是數(shù)據(jù)傳輸?shù)淖止?jié)數(shù),從第二個(gè)字節(jié)以后的數(shù)據(jù)為需要發(fā)送的數(shù)據(jù)。因此,結(jié)合MODBUS請求報(bào)文格式,PLC發(fā)送數(shù)據(jù)的格式如表3。

在整個(gè)網(wǎng)絡(luò)通信過程中,主工作站輪流發(fā)送請求報(bào)文到每個(gè)從工作站,隨之每個(gè)從工作站必須產(chǎn)生響應(yīng)報(bào)文返回到主工作站。當(dāng)主工作站向從工作站發(fā)送請求報(bào)文和接受從工作站返回的響應(yīng)報(bào)文時(shí),在主工作站儲(chǔ)存區(qū)開辟了發(fā)送緩沖區(qū)和接受緩沖區(qū)。主工作站向從工作站發(fā)送請求報(bào)文時(shí),首先對相應(yīng)從工作站輸出緩沖區(qū)的數(shù)據(jù)進(jìn)行CRC運(yùn)算生成校驗(yàn)碼,并將校驗(yàn)碼疊加在輸出緩沖區(qū)的數(shù)據(jù)之后再傳送到發(fā)送緩沖區(qū),然后再由發(fā)送指令發(fā)出。建立一個(gè)遠(yuǎn)程循環(huán)結(jié)束標(biāo)志位,當(dāng)響應(yīng)報(bào)文全部接受完成,置該位為ON。主工作站在接受從工作站的響應(yīng)報(bào)文時(shí),先把響應(yīng)報(bào)文輸入到接受緩沖區(qū),再把接受緩沖區(qū)中的數(shù)據(jù)傳送到輸入緩沖區(qū)。為此,在主工作站中要留有兩個(gè)數(shù)據(jù)存儲(chǔ)區(qū),一個(gè)作為報(bào)文請求(輸出緩沖區(qū)),另一個(gè)作為報(bào)文響應(yīng)(輸入緩沖區(qū))。

在MODBUS RTU通訊協(xié)議中都必須要求有CRC循環(huán)冗余校驗(yàn)。CRC循環(huán)冗余校驗(yàn)為兩個(gè)字節(jié),附加在報(bào)文后面的CRC的值由發(fā)送設(shè)備計(jì)算,當(dāng)放置CRC 值于報(bào)文時(shí),高低字節(jié)必須交換。首先發(fā)送低位字節(jié),然后再發(fā)送高位字節(jié)。故此在發(fā)送緩沖區(qū)中的數(shù)據(jù)要比輸出緩沖區(qū)的數(shù)據(jù)多兩個(gè)CRC循環(huán)冗余校驗(yàn)字節(jié)。接收設(shè)備在接收報(bào)文時(shí)重新計(jì)算CRC的值,并將計(jì)算結(jié)果于實(shí)際接收到的CRC值相比較。如果兩個(gè)值不相等,則傳送的數(shù)據(jù)為錯(cuò)誤。

3.3 程序描述

SBR0子程序:在PLC上電初始化階段,設(shè)置通訊口為自由口通信方式,并設(shè)置波特率及校驗(yàn)方式,允許全部中斷時(shí)件,并設(shè)置定時(shí)中斷的時(shí)基為20毫秒。在這里設(shè)置波特率為19.2KB/S,偶校驗(yàn),每字符8個(gè)數(shù)據(jù)。注意必須與從工作站的通訊參數(shù)相同。為輸出和輸入緩沖區(qū)的數(shù)據(jù)地址建立間接尋址指針。并設(shè)置請求報(bào)文的剩余數(shù)目為4,設(shè)置從工作站的查詢剩余數(shù)目為4。

將輸出緩沖區(qū)指針中指出的地址為起始地址的12個(gè)字節(jié)通過塊傳送命令傳送到發(fā)送緩沖區(qū)單元中。并復(fù)位遠(yuǎn)程循環(huán)結(jié)束標(biāo)志位。

對發(fā)送緩沖區(qū)中的報(bào)文進(jìn)行運(yùn)算生成CRC,交換CRC 寄存器中的高低字節(jié),并將交換完成的CRC 寄存器疊加到發(fā)送緩沖區(qū)中。

啟動(dòng)定時(shí)中斷和發(fā)送中斷,并通過發(fā)送指令將發(fā)送緩沖區(qū)中的請求報(bào)文發(fā)送。

建立跳轉(zhuǎn)入口,標(biāo)號(hào)1。

若循環(huán)未結(jié)束,跳轉(zhuǎn)到標(biāo)號(hào)1。程序不向下執(zhí)行,直至遠(yuǎn)程循環(huán)結(jié)束,標(biāo)志位為ON。

遠(yuǎn)程I/O更新完成,將接受的報(bào)文通過塊傳送命令傳送到接受緩沖區(qū)指針指出的接受緩沖區(qū)中。

修改發(fā)送緩沖區(qū)和接受緩沖區(qū)指針值,指向下一個(gè)輸出和輸入緩沖區(qū)字節(jié)地址。將請求報(bào)文的剩余數(shù)目減1。

當(dāng)請求報(bào)文的剩余數(shù)目為零時(shí),重新設(shè)置請求報(bào)文的剩余數(shù)目為4,將從工作站的查詢剩余數(shù)目減1。

當(dāng)工作站的查詢剩余數(shù)目為零時(shí),重新設(shè)置從工作站的查詢剩余數(shù)目為4,為輸出和輸入緩沖區(qū)的數(shù)據(jù)地址重新建立間接尋址指針。

INT_0中斷程序:在接受報(bào)文超時(shí)情況下,禁止接受中斷和接受定時(shí)中斷,置遠(yuǎn)程循環(huán)結(jié)束標(biāo)志位為ON。

INT_1中斷程序:在發(fā)送超時(shí)情況下禁止發(fā)送中斷和發(fā)送定時(shí)中斷,置PLC為STOP模式。

INT_10中斷程序:禁止發(fā)送完成中斷,啟動(dòng)接受定時(shí)中斷INT_0和接受數(shù)據(jù)中斷程序INT_11。

INT_11中斷程序:若接受的首字符(從工作站地址)為從工作站的正確地址,則建立一個(gè)接受字符的地址指針。并把接受到的字符裝入到接受字符指針指出地址中。增加指針的數(shù)值,指向下一個(gè)地址。并啟動(dòng)中斷程序INT_12。

INT_12中斷程序:把接受到的第二個(gè)字符(功能碼)裝入到接受字符指針指出地址中,增加指針的數(shù)值,指向下一個(gè)地址。啟動(dòng)中斷程序INT_13。

INT_13中斷程序:把收到的第三個(gè)字符(字節(jié)數(shù))裝入到接受字符指針指出地址中,并修改指針值。第三個(gè)字符為接受的不含CRC校驗(yàn)碼字符的總數(shù)目,剩余接受字符數(shù)目為將字節(jié)數(shù)加2,若反饋的功能碼為十六進(jìn)制數(shù)0F,全部剩余字符數(shù)目為5。將全部剩余字符數(shù)目置入到累加器AC1中,當(dāng)累加器AC1為零時(shí),接收字符也就完成。啟動(dòng)中斷程序INT_14。

INT_14中斷程序:將接受到的字符裝入接受字符指針指出地址中,并修改地址指針值和將將累加器AC1數(shù)值減一。若累加器AC1的數(shù)值為零。則關(guān)閉字符接受中斷和定時(shí)中斷,并將遠(yuǎn)程循環(huán)結(jié)束標(biāo)志位置ON。

4、結(jié)語

該系統(tǒng)自投入在線運(yùn)行以來,系統(tǒng)調(diào)節(jié)迅速且運(yùn)行穩(wěn)定,并取得了良好的經(jīng)濟(jì)效果,在助劑添加中具有較高的推廣價(jià)值。

參考文獻(xiàn)

[1]殷洪義.可編程序控制器選擇、設(shè)計(jì)與維護(hù).機(jī)械工業(yè)出版社,2002年.

篇9

在工業(yè)控制中經(jīng)常需要觀察系統(tǒng)的運(yùn)行狀態(tài)或者修改運(yùn)行參數(shù)。觸摸屏能夠直觀、生動(dòng)地顯示運(yùn)行參數(shù)和運(yùn)行狀態(tài),而且通過觸摸屏畫面可以直接修改系統(tǒng)運(yùn)行參數(shù),人機(jī)交互性好。單片機(jī)廣泛應(yīng)用于工控領(lǐng)域中,與觸摸屏配合,可組成良好的人機(jī)交互環(huán)境。觸摸屏和單片機(jī)通信,需要根據(jù)觸摸屏采用的通信協(xié)議為單片機(jī)編寫相應(yīng)的通信程序。Modbus協(xié)議是美國Modicon公司推出的一種有效支持控制器之間以及控制器經(jīng)由網(wǎng)絡(luò)(例如以太網(wǎng))和其它設(shè)備之間進(jìn)行通信的協(xié)議。本文以AT89S51單片機(jī)和威綸通科技有限公司的MT6070iH型觸摸屏為例,介紹其通信程序的開發(fā)過程。

一、系統(tǒng)結(jié)構(gòu)

實(shí)現(xiàn)觸摸屏與單片機(jī)的通訊,主要是解決通訊協(xié)議的問題。本文使用開放的Modbus通訊協(xié)議,以觸摸屏作主機(jī)(Master),單片機(jī)作從機(jī)(Slaver)。MT6070iH觸摸屏本身支持Modbus通訊協(xié)議,只要單片機(jī)按照Modbus協(xié)議進(jìn)行收發(fā)數(shù)據(jù),就可以進(jìn)行通信了。觸摸屏與單片機(jī)之間采用RS-485標(biāo)準(zhǔn)接口直接連接,傳輸速率設(shè)置為9600bps。圖1為該系統(tǒng)的電路圖。

圖1 系統(tǒng)電路圖

將AT89S51單片機(jī)的TXD、RXD口設(shè)置為異步串行通信模式,經(jīng)過MAX485芯片將TTL電平轉(zhuǎn)換為RS485電平,再與MT6070iH觸摸屏RS-485 2W接口相連,即完成了硬件連接,其中P3.2作為收發(fā)控制信號(hào)。論文大全。MT6070iH觸摸屏RS-485 2W接口的管腳2為485A,管腳1為485B,管腳5為公共地。

二、如何將MT6070iH設(shè)定成Modbus裝置

將MT6070iH觸摸屏設(shè)定成Modbus裝置(以稱為Modbus Server),單片機(jī)或其它裝置只需使用Modbus協(xié)議,透過RS232/485接口,即可讀寫MT6070iH上的數(shù)據(jù)。將MT6070iH設(shè)定成Modbus裝置的方法如下:

首先需在MT6070iH使用的MTP程序的設(shè)備清單(device table)中增加一個(gè)新的設(shè)備,此時(shí)PLC種類需選擇“MODBUS Server”,PLC接口可以選擇RS232、RS4852W、RS485 4W或Ethernet,這里選擇RS485 2W。如圖2所示。論文大全。

圖2 將MT6070iH設(shè)定成Modbus裝置

當(dāng)接口選擇使用RS485時(shí),需選擇使用的連接端口(COM1~COM3),并設(shè)定正確的通訊參數(shù)及站號(hào)。這里選擇COM1(9600,N,8,1),站號(hào)設(shè)定為1。

按下“確定”鍵后可以在設(shè)備清單中發(fā)現(xiàn)一個(gè)新的裝置:MODBUS Server,此時(shí)即完成了Modbus裝置的設(shè)定,在完成MTP檔案的編譯并將獲得的XOB檔案下載到觸摸屏后,即可透過Modbus協(xié)議讀寫MT6070iH上的數(shù)據(jù)。

三、Modbus通信協(xié)議介紹

Modbus通信協(xié)議是一種串行的主從通信協(xié)議,網(wǎng)絡(luò)里僅有一臺(tái)設(shè)置可作為主機(jī)(稱Master),其它設(shè)備作為從機(jī)(稱Slaver),主機(jī)不需編號(hào),從機(jī)必須編號(hào)。協(xié)議定義了主機(jī)查詢及從機(jī)應(yīng)答的信息幀格式。論文大全。通信時(shí),主機(jī)首先向從機(jī)發(fā)出請求信息,符合相應(yīng)地址碼的從機(jī)接收通訊命令,并除去地址碼,讀取信息,如果沒有出錯(cuò),則執(zhí)行相應(yīng)的任務(wù),然后把執(zhí)行結(jié)果返給主機(jī)。若從機(jī)接收到的校驗(yàn)碼與本機(jī)計(jì)算的不同,則說明數(shù)據(jù)在通信過程中出現(xiàn)錯(cuò)誤,從機(jī)把這次請求視為無效,功能代碼將被修改以用于指出回應(yīng)消息是錯(cuò)誤的,同時(shí)數(shù)據(jù)段包含了描述此錯(cuò)誤信息的代碼。當(dāng)主機(jī)收到這一信息時(shí),會(huì)重新發(fā)送請求信息。校驗(yàn)方式分為LCR(傳送數(shù)據(jù)為ACSII時(shí))校驗(yàn)或CRC(傳送數(shù)據(jù)為二進(jìn)制時(shí))校驗(yàn),這里采用CRC校驗(yàn)方式。信息傳輸為異步方式,并以字節(jié)為單位。主從站之間通訊的字格式如下:

字格式(串行數(shù)據(jù)) 10位二進(jìn)制

起始位 1位

數(shù)據(jù)位 8位

奇偶校驗(yàn)位 無

停止位 1位

Modbus協(xié)議可支持ASCII碼或二進(jìn)制格式的數(shù)據(jù)傳輸。ACSII碼方式下每一個(gè)字節(jié)數(shù)據(jù)分兩個(gè)字節(jié)傳送,二進(jìn)制方式下用一個(gè)字節(jié)傳送,為了減少數(shù)據(jù)傳輸量,一般選二進(jìn)制數(shù)據(jù)方式。各個(gè)區(qū)允許發(fā)送的字節(jié)均為16進(jìn)制的0~9,A~F。二進(jìn)制信息幀標(biāo)準(zhǔn)結(jié)構(gòu)為:

初始結(jié)構(gòu) ≥4字節(jié)的時(shí)間

地址碼 1字節(jié)

功能碼 1字節(jié)

數(shù)據(jù)區(qū) N字節(jié)

錯(cuò)誤校驗(yàn) 16位CRC碼

結(jié)束結(jié)構(gòu) ≥4字節(jié)的時(shí)間

二進(jìn)制模式中,信息開始至少需要3.5個(gè)字符的靜止時(shí)間,依據(jù)使用的波特率,很容易計(jì)算這個(gè)靜止時(shí)間。發(fā)送完最后一個(gè)字符后,也有一個(gè)至少3.5個(gè)字符的靜止時(shí)間,然后才能發(fā)送一個(gè)新的信息。網(wǎng)絡(luò)上的設(shè)備連續(xù)監(jiān)測網(wǎng)絡(luò)上的信息,包括靜止時(shí)間。

四、通信程序的開發(fā)

MT6070iH觸摸屏只支持Bit和Word地址類型,而實(shí)際的單片機(jī)或其它控制器還有Byte、Double Word等表示方法,因此在進(jìn)行通信時(shí),需要把單片機(jī)和觸摸屏的數(shù)據(jù)進(jìn)行變換。觸摸屏畫面元件讀取地址的設(shè)備類型有LW、0x、1x、3x、4x、RWI、RW等選項(xiàng)。其中,LW表示該元件讀取的是觸摸屏內(nèi)部的地址,如其它元件的地址;0x表示讀取的是控制器的輸出信號(hào);1x表示讀取的控制器的輸入信號(hào);3x和4x指控制器的寄存器地址類型,其中4x是可讀可寫的,3x是只讀的;RWI、RW都是觸摸屏的內(nèi)部地址,起輔助作用。這里僅以讀寫LW的0地址的數(shù)據(jù)為例說明讀寫過程。

MT6070iH觸摸屏與單片機(jī)以Modbus協(xié)議通信,用到的Modbus功能碼如下:

功能碼 名稱 作用 01 讀取線圈狀態(tài) 取得一組邏輯線圈的當(dāng)前狀態(tài)(ON/OFF) 02 讀取輸入狀態(tài) 取得一組開關(guān)輸入的當(dāng)前狀態(tài)(ON/OFF) 03 讀取保持寄存器 在一個(gè)或多個(gè)保持寄存器中取得當(dāng)前的二進(jìn)制值 04 讀取輸入寄存器 在一個(gè)或多個(gè)輸入寄存器中取得當(dāng)前的二進(jìn)制值 05 強(qiáng)置單線圈 強(qiáng)置一個(gè)邏輯線圈的通斷狀態(tài) 06 預(yù)置單寄存器 把具體二進(jìn)值裝入一個(gè)保持寄存器 1. 串口程序的初始化

使用定時(shí)器1作為波特率發(fā)生器,對串口的初始化程序如下:

void Initial(void)

{

SCON=0x50; //串口方式1,允許接收

TMOD=0x20; //定時(shí)器1方式2

TL1=0xFd; //波特率設(shè)為9600

TH1=0xFd; //存儲(chǔ)定時(shí)器初始值

EA=1; //全局中斷允許

TR1=1; //啟動(dòng)定時(shí)器

}

2. 向MT6070iH觸摸屏LW的0地址寫入數(shù)據(jù)

向MT6070iH觸摸屏LW的0地址寫入數(shù)據(jù)0x3A4B,功能碼為6,程序如下:

void DateWrite(void)

{

ES=0; //關(guān)中斷

unsigned int a;

unsigned int crc;

inData[0]=1; //站號(hào)

inData[1]=6; //功能碼

inData[2]=0; //起始地址高位

inData[3]=0; //起始地址低位

inData[4]=0; //寄存器個(gè)數(shù)高位

inData[5]=1; //寄存器個(gè)數(shù)低位

inData[6]=2; //字節(jié)數(shù)

inData[7]=0x3A; //要寫入數(shù)據(jù)高位

inData[8]=0x4B; //要寫入數(shù)據(jù)低位

crc=0xffff;

crc=calccrc(9,&inData[0]); //根據(jù)前9個(gè)字節(jié)計(jì)算CRC值

inData[9]=crc&0xff; //CRC值低8位

inData[10]=crc>>8; //CRC值高8位

for(a=0;a<11;a++) //共發(fā)送11個(gè)字節(jié)

{

SBUF=inData[a]; //發(fā)送數(shù)據(jù)

while(!TI);

TI=0;

}

ES=1; //開串行口中斷

}

3. 從MT6070iH觸摸屏LW的0地址讀取數(shù)據(jù)

從MT6070iH觸摸屏LW的0地址讀取數(shù)據(jù),功能碼為3,程序如下:

void DateWrite(void)

{

ES=0; //關(guān)中斷

unsigned int a;

unsigned int crc;

inData[0]=1; //站號(hào)

inData[1]=3; //功能碼

inData[2]=0; //起始地址高位

inData[3]=0; //起始地址低位

inData[4]=0; //寄存器個(gè)數(shù)高位

inData[5]=1; //寄存器個(gè)數(shù)低位

crc=0xffff;

crc=calccrc(6,&inData[0]); //根據(jù)前6個(gè)字節(jié)計(jì)算CRC值

inData[6]=crc&0xff; //CRC值低8位

inData[7]=crc>>8; //CRC值高8位

for(a=0;a<8;a++) //共發(fā)送8個(gè)字節(jié)

{

SBUF=inData[a]; //發(fā)送數(shù)據(jù)

while(!TI);

TI=0;

}

ES=1; //開串行口中斷

}

發(fā)送完讀取數(shù)據(jù)的信息,一旦MT6070iH觸摸屏接收到該信息,經(jīng)過CRC校驗(yàn),如果沒有錯(cuò)誤,就會(huì)把LW的0地址數(shù)據(jù)發(fā)送給單片機(jī),共7個(gè)字節(jié),數(shù)據(jù)格式如下:

字節(jié) 數(shù)據(jù)段名稱

1 站號(hào)

2 功能碼

3 讀取字節(jié)數(shù)

4 寄存器數(shù)據(jù)高位

5 寄存器數(shù)據(jù)低位

6 CRC校驗(yàn)碼低位

7 CRC校驗(yàn)碼高位

單片機(jī)接收完這7個(gè)字節(jié),根據(jù)站號(hào)、功能碼及CRC校驗(yàn)判斷是否正確,如果接收正確,則第4個(gè)字節(jié)和第5個(gè)字節(jié)的值就是所需要的MT6070iH觸摸屏LW的0地址的數(shù)據(jù)。

篇10

在工業(yè)生產(chǎn)過程中,流量是需經(jīng)常測量和控制的參數(shù)之一,隨著流量計(jì)功能的擴(kuò)展,已經(jīng)把溫度、壓力等變量的采集與流量整合成一個(gè)儀表,完成了原先需要采用流量計(jì)、溫度計(jì)、壓力計(jì)和二次儀表才能完成的功能。現(xiàn)場總線在儀表中的使用日益廣泛起來。目前使用較多的現(xiàn)場總線有基金會(huì)現(xiàn)場總線(Foundation Fieldbus,簡稱FF),基于CAN通信的DeviceNet,以Siemens等為首的PROFIBUS,Rosemount的HART,三菱電機(jī)為主導(dǎo)推出的CC-Link等[1]。現(xiàn)需要在原有的流量儀表上加入Modbus現(xiàn)場總線通信的功能,搭建Modbus現(xiàn)場通信的平臺(tái),以及制作基于Modbus通信的樣機(jī)。

1 需求分析

需求分析是一個(gè)項(xiàng)目的開端,也是項(xiàng)目建設(shè)的基石。在以往建設(shè)失敗的項(xiàng)目中,80%是由于需求分析的不明確而造成的[2]。因此一個(gè)項(xiàng)目成功的關(guān)鍵因素之一,就是對需求分析的把握程度。渦輪流量計(jì)是運(yùn)用最為廣泛。目前正在進(jìn)行開發(fā)的是智能渦輪流量計(jì)轉(zhuǎn)換器,具備流量系數(shù)的分段修正、可選的溫度壓力補(bǔ)償?shù)裙δ埽枰O(shè)置的參數(shù)和需要讀取的過程變量比前幾代都有明顯的提高。因此亟需采用現(xiàn)場總線的方式對儀表進(jìn)行訪問。

根據(jù)之前的預(yù)研,確定采用RS-485總線加Modbus通信協(xié)議作為智能流量計(jì)轉(zhuǎn)換器的通信方式。使程序?qū)崿F(xiàn)最基本的Modbus通信功能:波特率固定為19200bps,校驗(yàn)為偶校驗(yàn),能實(shí)現(xiàn)最基本的寄存器讀寫訪問,如Modbus的03號(hào)功能Read Holding Register、04號(hào)功能Read Input Register和06號(hào)功能Write Single Register[3]。

2 概要設(shè)計(jì)

為了能與智能流量計(jì)轉(zhuǎn)換器程序上無縫接軌,在選擇單片機(jī)是使用了與轉(zhuǎn)換器一致的ATmega168芯片。但是為了原型板的搭建方便,盡管在轉(zhuǎn)換器設(shè)計(jì)中采用了貼片封裝的芯片,此處還是選擇了雙列直插芯片。兩者僅封裝不同,在功能上對于實(shí)現(xiàn)通信功能是完全一致的[4]。對于通信部分RS-485的物理層接口芯片選擇了目前廣泛使用的MAX485芯片。該芯片為MAXIM公司出品,供電電壓為5V[5]。為了配合5V芯片,采用78L05作為整機(jī)的供電。儀表輸入電壓為12V~24V通用。

在ISO/OSI網(wǎng)絡(luò)模型中,將網(wǎng)絡(luò)分為七層,從下至上依次是:物理層、數(shù)據(jù)鏈路層、網(wǎng)絡(luò)層、傳輸層、會(huì)話層、表示層、應(yīng)用層。Modbus在串行鏈路RS-485上的實(shí)現(xiàn)采用了其中的三層——物理層、數(shù)據(jù)鏈路層和應(yīng)用層[6]。本儀表采用C語言進(jìn)行開發(fā),支持AVR系列單片機(jī)的C編譯器主要有CodeVisionAVR、AVR-GCC、IAR、ICCAVR等。C語言編譯器由于它具有功能強(qiáng)大、 運(yùn)用靈活、代碼小、運(yùn)行速度快等先天性的優(yōu)點(diǎn),使得它在專業(yè)程序設(shè)計(jì)上具有不可代替的地位。

3 詳細(xì)設(shè)計(jì)

本儀表采用MAXIM公司的485接口芯片MAX485作為物理層芯片,并連接到ATmega168的通用串行口進(jìn)行數(shù)據(jù)收發(fā)。下圖為整個(gè)儀表原型機(jī)的電路圖:

電路中使用78L05作為穩(wěn)壓芯片,由于設(shè)計(jì)儀表輸入電壓為12V~24V±20%,使用78L05即可滿足需求。D1的作用是防止電源反接燒壞儀表。

物理層除了硬件部分,也包含部分的軟件。這些軟件的功能是將物理層接收到的數(shù)據(jù)發(fā)送給數(shù)據(jù)鏈路層,或是將數(shù)據(jù)鏈路層需要發(fā)送的數(shù)據(jù)寫入物理層硬件設(shè)備。這部分軟件的主要功能是操作ATmega168的特殊功能寄存器,將UART收到的數(shù)據(jù)存入特定的緩沖區(qū),或?qū)⒕彌_區(qū)的數(shù)據(jù)向UART寫入并通過ATmega168發(fā)送。在本次設(shè)計(jì)中,UART的波特率固定為19200bps;數(shù)據(jù)位由于使用Modbus RTU模式,固定為8位,停止位1位;奇偶校驗(yàn)采用偶校驗(yàn)。

3.1數(shù)據(jù)鏈路層軟件

根據(jù)MODBUS Application Protocol Specification V1.1b的描述,Modbus協(xié)議定義了一種簡單的協(xié)議數(shù)據(jù)單元(Protocol Data Unit,PDU),它是與下層通訊協(xié)議(如RS485、以太網(wǎng)等)無關(guān)的。而下層特定的數(shù)據(jù)單元將Modbus PDU進(jìn)行封裝,并被命名為應(yīng)用數(shù)據(jù)單元(Application Data Unit,ADU),如下圖所示:

數(shù)據(jù)鏈路層在一個(gè)Modbus設(shè)備中的功能是在物理層和應(yīng)用層間建立一個(gè)聯(lián)系,將物理層接收到的數(shù)據(jù)經(jīng)過地址域的比對和錯(cuò)誤校驗(yàn)(此處使用的是CRC校驗(yàn))后,去除地址域和錯(cuò)誤校驗(yàn)部分后,將其中的Modbus PDU部分提供給應(yīng)用層;或者將應(yīng)用層需要發(fā)送的Modbus PDU經(jīng)過打包,加入地址域和錯(cuò)誤校驗(yàn)后,生成Modbus Serial Line PDU后,由物理層進(jìn)行發(fā)送。由于Modbus是基于命令-響應(yīng)的主-從機(jī)制,因此在從機(jī)(Modbus設(shè)備)中,不需要實(shí)現(xiàn)重發(fā)機(jī)制。

在MODBUS over Serial Line Specification and Implementation Guide中規(guī)定了兩種傳輸模式——RTU模式和ASCII模式。本儀表采用了RTU模式。由于本儀表使用Modbus over RS-485的RTU模式,因此需要實(shí)現(xiàn)CRC校驗(yàn)。Modbus規(guī)定了CRC生成多項(xiàng)式為X16+X15+X2+1,CRC寄存器初始值為全1(0xFFFF)。

CRC校驗(yàn)的程序如圖4所示。

該段程序的作用是計(jì)算從buf開始,長度為len的數(shù)據(jù)緩沖區(qū)的CRC校驗(yàn)。其中,函數(shù) _crc16_update為AVRGCC的C語言運(yùn)行庫avr-libc自帶的高效CRC計(jì)算代碼,使用了內(nèi)嵌匯編實(shí)現(xiàn),具體代碼在頭文件util/crc16.h中。

4 調(diào)試與測試

在開發(fā)過程中,調(diào)試與測試是兩個(gè)既有區(qū)別又有聯(lián)系的概念。在一般的情況下,當(dāng)開發(fā)過程進(jìn)入編碼階段后,就需要不斷的進(jìn)行調(diào)試,來確保每個(gè)功能塊的錯(cuò)誤是最少的。而當(dāng)整個(gè)系統(tǒng)基本完成或可運(yùn)行后,就可以對系統(tǒng)進(jìn)行測試。可以說,測試是偏向于系統(tǒng)級(jí)的,而調(diào)試是基于模塊或更低的層次(從硬件上說是芯片或電路,從軟件上說是代碼)來說的。在測試中發(fā)現(xiàn)了問題,又需要采用調(diào)試來對錯(cuò)誤進(jìn)行定位和修正。

4.1 測試平臺(tái)簡介

本設(shè)計(jì)主要是基于單片機(jī)的,但是為了實(shí)現(xiàn)通訊功能,還需要與上位機(jī)進(jìn)行配合。上位機(jī)可以是個(gè)人電腦、工業(yè)控制計(jì)算機(jī)或PLC(Programmable Logic Controller,可編程控制器)等,通過RS-485總線與儀表進(jìn)行通信。

在物理連接上,通過PC機(jī)的串行口連接一個(gè)RS-232轉(zhuǎn)RS-485的無源轉(zhuǎn)換器,通過約2米的電纜連接兩臺(tái)儀表。為了模擬比較惡劣的環(huán)境,沒有使用雙絞線,而直接采用兩根電線進(jìn)行連接。并在導(dǎo)線兩頭分別接上120Ω的終端電阻。使用兩臺(tái)儀表的目的是試驗(yàn)Modbus下的多機(jī)通信。

4.2 硬件電路調(diào)試

本系統(tǒng)硬件結(jié)構(gòu)較為簡單,單純從硬件上來劃分,可以分為3塊:供電,控制和通信接口。首先不插入ATmega168和MAX485芯片,給表頭分別加12V和24V供電,測試供電電流和78L05的輸出電壓,確認(rèn)正常后,插入ATmega168和MAX485芯片再進(jìn)行供電電流和電壓的測量,結(jié)果如下:

4.3 系統(tǒng)測試

在Modbus應(yīng)用層協(xié)議處理的代碼編寫完成后,整個(gè)系統(tǒng)就初具雛形了,能進(jìn)入系統(tǒng)測試階段了。系統(tǒng)測試將從正常數(shù)據(jù)處理、異常數(shù)據(jù)處理和大數(shù)據(jù)量處理這三個(gè)方面來進(jìn)行。

本測試主要依靠Modbus Tester軟件,通過讀、寫不同的寄存器來實(shí)現(xiàn)驗(yàn)證。首先進(jìn)行Input Register的讀操作,對總線上的兩臺(tái)儀表分別進(jìn)行,查看讀取的數(shù)據(jù)是否正確。然后進(jìn)行Holding Register的讀操作,驗(yàn)證數(shù)據(jù)是否被正常讀取。最后進(jìn)行Holding Register的寫操作,驗(yàn)證數(shù)據(jù)寫入正確,再通過讀操作讀回寄存器的值,看是否與寫入的一致。

4.4 異常情況處理

作為一個(gè)健壯的系統(tǒng),除了需要對正確的請求作出響應(yīng),在各種異常情況下,也需要能夠有正確的反應(yīng),至少不能造成程序跑飛等不可逆轉(zhuǎn)的情況發(fā)生。對于工業(yè)控制領(lǐng)域來說,這是尤為重要的。

以本系統(tǒng)為例,可能出現(xiàn)的異常情況有:

1)Modbus發(fā)送了錯(cuò)誤的數(shù)據(jù)包,如錯(cuò)誤的功能碼或寄存器地址等;

2)數(shù)據(jù)包奇偶校驗(yàn)錯(cuò)或CRC出錯(cuò)。

第一項(xiàng)可以通過Modbus Tester軟件來完成,通過設(shè)置無效的功能碼(如讀線圈的功能本系統(tǒng)沒有實(shí)現(xiàn),可以作為無效的功能碼來進(jìn)行測試)和錯(cuò)誤的寄存器地址或長度,應(yīng)當(dāng)能看到儀表返回Modbus的異常響應(yīng)數(shù)據(jù)包。

第二項(xiàng)的奇偶校驗(yàn)部分,也是通過Modbus Tester來實(shí)現(xiàn)的。通過設(shè)置通信參數(shù),將校驗(yàn)位設(shè)為“奇校驗(yàn)”與“無校驗(yàn)”后,儀表不應(yīng)再有返回?cái)?shù)據(jù)包。CRC出錯(cuò)部分,通過串口調(diào)試軟件進(jìn)行。先通過串口調(diào)試軟件發(fā)送一個(gè)正常的數(shù)據(jù)包請求,此時(shí)儀表應(yīng)能有響應(yīng)。然后修改其中某一個(gè)數(shù)據(jù),使得CRC校驗(yàn)失效,此時(shí)再發(fā)送數(shù)據(jù)包,儀表應(yīng)不響應(yīng)。再將數(shù)據(jù)改回原值后,儀表應(yīng)能繼續(xù)正常響應(yīng)。

5 結(jié)束語

經(jīng)過幾個(gè)月的開發(fā),從測試結(jié)果來看,目前基本達(dá)到了設(shè)計(jì)要求,實(shí)現(xiàn)了儀表以Modbus通信協(xié)議進(jìn)行數(shù)據(jù)的傳輸,而不足之處在于目前僅實(shí)現(xiàn)了固定的波特率和校驗(yàn)位,而以后應(yīng)該改成可設(shè)置;目前也沒有考慮程序占用CPU時(shí)間,而最終的流量計(jì)轉(zhuǎn)換器實(shí)現(xiàn)中,需要考慮整個(gè)系統(tǒng)的中斷響應(yīng)時(shí)間和執(zhí)行效率等,從而真正實(shí)現(xiàn)智能流量計(jì)在工業(yè)生產(chǎn)過程中的通信應(yīng)用。

參考文獻(xiàn):

[1] 陽憲惠.現(xiàn)場總線技術(shù)及其應(yīng)用[M].北京:清華大學(xué)出版社,1999.

[2] 張海藩.軟件工程導(dǎo)論[M]. 4版.北京:清華大學(xué)出版社,2003.

[3] Modbus-IDA.MODBUS Application Protocol Specification V1.1b.Dec 28, 2006.http:///docs/Modbus_Application_Protocol_V1_1b.pdf.

[4] ATMEL Corporation.ATmega48/88/168 Datasheet (revision M).09/2007.http:///dyn/resources/prod_documents/doc2545.pdf.

篇11

0.前言

錢家營礦的涌水量比較大,共設(shè)置了3個(gè)水平的泵房,伴隨著全自動(dòng)化礦井的建設(shè),需要對-600水泵房和-850水泵房進(jìn)行升級(jí)改造,水泵和電機(jī)的溫度參數(shù)保證著水泵的安全運(yùn)行,每個(gè)水泵房共設(shè)置10臺(tái)排水泵,每臺(tái)水泵通過YBD-200溫度巡檢儀進(jìn)行溫度采集,該儀表采用的是modbus協(xié)議通過RS485總線接口傳輸?shù)絇LC,經(jīng)過PLC處理,傳輸?shù)降孛嫔衔粰C(jī)實(shí)時(shí)顯示。

1.溫度巡檢儀通信協(xié)議

YBD200型儀表采用的是標(biāo)準(zhǔn)modbus協(xié)議,RTU傳輸模式。Modbus協(xié)議是一種主-從通信協(xié)議。任何時(shí)刻只有一個(gè)設(shè)備能夠在線路上進(jìn)行發(fā)送。由主站點(diǎn)管理信息交換,且只有它能發(fā)起。它會(huì)相繼對從站進(jìn)行輪詢。除非被主站批準(zhǔn),否則任何從站都不能發(fā)送消息。從站之間不能進(jìn)行直接通信。協(xié)議幀中不包含任何消息報(bào)頭字節(jié)或消息字節(jié)結(jié)束符。

1.它的定義如下(見表1):

從站地址:消息中的地址包含一個(gè)字節(jié),從站地址范圍是1…255。主設(shè)備通過將要聯(lián)絡(luò)的從設(shè)備的地址放入消息中的地址域來選通從設(shè)備。當(dāng)從設(shè)備發(fā)送回應(yīng)消息時(shí),它把自己的地址放入回應(yīng)的地址域中,以便主設(shè)備知道是哪一個(gè)設(shè)備做出回應(yīng)。數(shù)據(jù):以二進(jìn)制代碼傳輸。CRC16:循環(huán)冗余錯(cuò)誤校驗(yàn)。采用的是9600bps的波特率。字節(jié)數(shù)據(jù)格式:一位起始位,八位數(shù)據(jù)位,一位偶校驗(yàn)位,一位停止位。從站地址編號(hào):儀表地址必須在1~255之間,且同一總線上,每個(gè)儀表的地址不可重復(fù)。當(dāng)字符間隔時(shí)間長于或等于3.5個(gè)字符時(shí),即作為檢測到幀的結(jié)束。

2.讀取寄存器

主站請求(表2):

從站響應(yīng)(表3):

例如溫度巡檢儀的地址為10,利用串口調(diào)試軟件Com Monitor,進(jìn)行發(fā)送數(shù)據(jù):0A 03 00 00 00 07 05 73得到的數(shù)據(jù)為:0A 03 0E 00 C6 00 BA 01 0B 01 3C 01 8F 01 8F 01 8F DC ED,表示該儀表通信正常。

3.硬件組成和接線

水泵的電控系統(tǒng)主要由一臺(tái)集控柜和10臺(tái)就地柜等組成,集控柜安裝有315-2DP的CPU模塊和CP343-1的以太網(wǎng)模塊、CP340-RS422/RS485通信模塊以及數(shù)字量、模擬量輸入輸出模塊等,溫度探頭選用的是Pt100鉑電阻類型的,把7點(diǎn)的溫度數(shù)據(jù)接到Y(jié)BD-200型溫度巡檢儀對應(yīng)的端子上,一共采集10臺(tái)水泵的溫度數(shù)據(jù),每塊溫度巡檢儀均通過RS485總線接至集控柜中CP340-RS422/RS485的接口上,把10塊溫度巡檢儀的A端并聯(lián)的一起接到CP340-RS422/RS485的1#端子,B端并聯(lián)的一起接到CP340-RS422/RS485的2#端子即可,并且需要把CP340-RS422/RS485的5#端子進(jìn)行接地處理,抗干擾能力強(qiáng)。

4. PLC程序的編寫

現(xiàn)場使用YBD-200型溫度巡檢儀的地址編號(hào)為4-13,為了防止數(shù)據(jù)的讀取錯(cuò)誤,編寫主站PLC程序時(shí),可通過增計(jì)數(shù)器進(jìn)行從站地址4-13的輪詢,并設(shè)置0.5s時(shí)鐘寄存器進(jìn)行控制。為了保證發(fā)送報(bào)文的準(zhǔn)確性,發(fā)送報(bào)文之前先利用事先編好CRC校驗(yàn)子程序檢驗(yàn)一下,CRC校驗(yàn)子程序采用的是CRC16算法。

PLC與溫度巡檢儀主要通過調(diào)用FB2、FB3系統(tǒng)塊實(shí)現(xiàn)主從站的請求和讀取功能。需要注意的是,調(diào)用FB2、FB3時(shí),地址為CP340-RS422/RS485硬件組態(tài)時(shí)的地址352;主站請求時(shí)從DB3數(shù)據(jù)塊中的DBB0字節(jié)開始調(diào)用,字長為8。主站讀取從站數(shù)據(jù)時(shí),從DB8數(shù)據(jù)塊中的DBB0字節(jié)開始寫入,DB8塊數(shù)據(jù)先進(jìn)行CRC子程序檢驗(yàn)其正確性,然后再編程實(shí)現(xiàn)分組對應(yīng)到DB7數(shù)據(jù)塊中,從DB7.DBD0字節(jié)定義存儲(chǔ)溫度巡檢儀4#地址數(shù)據(jù),依次是電機(jī)前軸、電機(jī)后軸、泵前軸、泵后軸、定子A相、定子B相、定子C相。依次類推,從DB7.DBD28開始存儲(chǔ)5#地址的7點(diǎn)溫度數(shù)據(jù),一共存儲(chǔ)10臺(tái)水泵的溫度參數(shù)。

通過CP343-1以太網(wǎng)模塊將PLC中的數(shù)據(jù)可以全部接入全礦自動(dòng)化平臺(tái)進(jìn)行數(shù)據(jù)共享,上位機(jī)利用西門子公司的wincc6.2進(jìn)行編寫繪制,通過編程實(shí)現(xiàn)將DB7中的溫度數(shù)據(jù)全部讀取到wincc中,同時(shí)也可以增加其他的故障信息。

結(jié)語

本文通過modbus協(xié)議RS485總線技術(shù)實(shí)現(xiàn)了現(xiàn)場溫度的采集,但在現(xiàn)場使用中發(fā)現(xiàn),溫度巡檢儀的地址是固化的,如若巡檢儀損壞后,互換性較差,先已進(jìn)行溫度巡檢儀的升級(jí),使每臺(tái)溫度巡檢儀的地址可在0~255之間任意調(diào)整,并將溫度巡檢儀使用的RS485總線模塊更換為MAX485具有光電隔離功能,大大增加了設(shè)備的安全性和穩(wěn)定性。

參考文獻(xiàn)

篇12

1概述

Modbus協(xié)議最初由Modicon公司開發(fā)出來,在1979年末該公司成為施耐德自動(dòng)化部門的一部分,現(xiàn)在Modbus已經(jīng)是工業(yè)領(lǐng)域全球最流行的協(xié)議。此協(xié)議支持傳統(tǒng)的RS-232、RS-422、RS-485和以太網(wǎng)設(shè)備。在我國,Modbus已經(jīng)成為國家標(biāo)準(zhǔn)GB/T19582-2008。據(jù)不完全統(tǒng)計(jì):截止到2007年,Modbus的節(jié)點(diǎn)安裝數(shù)量已經(jīng)超過了1000萬個(gè)。

Intouch軟件是由美國wonderware公司開發(fā)的過程可視化組態(tài)軟件,其功能強(qiáng)大、易用性好,市場占有率高,結(jié)合其他的軟件,如IO Server和D/A Server,可以完成許多工業(yè)項(xiàng)目。

通過水廠泵站案例:一種基于Intouch和Modbus協(xié)議的監(jiān)控系統(tǒng),上位機(jī)采用安裝有Intouch軟件的工控機(jī),下位機(jī)采用AB系列LOGIX5000的PLC系統(tǒng),并通過MVI56-MCM通訊模塊,和現(xiàn)場儀表構(gòu)架了完整的通訊鏈路,系統(tǒng)開發(fā)方便,擴(kuò)展性和穩(wěn)定性好。

2 Modbus協(xié)議概述

當(dāng)在網(wǎng)絡(luò)上通信時(shí),Modbus協(xié)議決定了每個(gè)控制器須要知道它們的設(shè)備地址,識(shí)別按地址發(fā)來的消息,決定要產(chǎn)生何種行動(dòng)。如果需要回應(yīng),控制器將生成應(yīng)答并使用Modbus協(xié)議發(fā)送給詢問方。標(biāo)準(zhǔn)的Modbus口是使用一RS-232C兼容串行接口,它定義了連接口的針腳、電纜、信號(hào)位、傳輸波特率、奇偶校驗(yàn)。控制器能直接或經(jīng)由Modem組網(wǎng)。

Modbus協(xié)議測試軟件:

Modbus協(xié)議測試軟件有很多,比較典型的有Modscan和Modsim,這兩款軟件聯(lián)合使用,可以使獲得完整的儀表通訊連接情況。其中Modscan軟件用于電腦模仿上位機(jī)環(huán)境和儀表進(jìn)行連接,Modsim軟件用于電腦模擬儀表環(huán)境和PLC系統(tǒng)進(jìn)行連接。

2.1 Modscan軟件及設(shè)置

Device Id為儀表設(shè)定的通訊地址,一條線路中,每個(gè)儀表地址必須指定(1-256之間)并且唯一;Address為讀取儀表的首地址,一般儀表讀取地址為40001開始,而軟件設(shè)置中,定義為00001開始;Length為連續(xù)讀取的位數(shù);MODBUS Point Type選擇03 HOLDING REGISTER鎖定寄存器地址,接下來設(shè)置如下圖:

點(diǎn)擊Connection,下拉菜單,選擇Connect,出現(xiàn)如圖對話框。其中Connect Using下拉菜單,選擇電腦用哪個(gè)COM口和現(xiàn)場儀表通訊;Baud Rate選擇儀表波特率,通常有2400,4800,9600,19200這幾個(gè)選項(xiàng);Word Length默認(rèn)8位;Parity奇偶校驗(yàn),根據(jù)儀表,通常為NONE;Stop Bits停止位,通常為 1;RTS Control為請求允許發(fā)送,相當(dāng)于一種握手協(xié)議,通過COM口測試時(shí)通常為ENABLE,高電平觸發(fā),在和PLC直連中,默認(rèn)DISABLE也可通訊。然后點(diǎn)擊OK按鈕,一切正常情況下,即可實(shí)現(xiàn)通訊,會(huì)有回碼顯示從00001開始,到指定Length長度下,讀取出儀表地址讀數(shù)。

2.2 Modsim軟件及設(shè)置

Modsim的界面和設(shè)置基本上和Modscan相同,所不同的是Modscan軟件用于電腦模仿上位機(jī)環(huán)境和儀表進(jìn)行連接,Modsim軟件用于電腦模擬儀表環(huán)境和PLC系統(tǒng)進(jìn)行連接,具體的設(shè)置就不再一一敘說了。

3 MVI56-MCM模塊的配置

3.1 硬件配置

MVI56-MCM模塊屬于基于AB公司LOGIX5000系列PLC的第三方通訊模塊,主要功能是可以支持LOGIX5000系列PLC讀寫基于標(biāo)準(zhǔn)MODBUS協(xié)議下的儀表通訊。通訊模塊MVI56-MCM是Modbus網(wǎng)絡(luò)和AB PLC之間的一個(gè)網(wǎng)關(guān)。處理器的數(shù)據(jù)傳送異步于Modbus網(wǎng)絡(luò)上的數(shù)據(jù)活動(dòng)。模塊內(nèi)部具有5000個(gè)字的寄存器,用于處理器和Modbus網(wǎng)絡(luò)之間的數(shù)據(jù)交換,MVI56-MCM模塊共有3個(gè)端口P1、P2、P3:

其中SETUP區(qū)域插口默認(rèn)不用改,PRT2和PRT3分別對應(yīng)P2端口和P3端口,該端口設(shè)置MVI56-MCM模塊以何種端口讀取現(xiàn)場儀表的MODBUS協(xié)議,第一排表示以RS-232端口讀取,第二排表示以RS-422端口讀取,第三排表示以RS485端口讀取,現(xiàn)在通常以RS232端口讀取。

前端P2,P3端口由該模塊專用轉(zhuǎn)接頭,接出一個(gè)9針接口的端口,該端口可以配置成232,422,485接口的任意一個(gè)。注意這三種接口的接線方式不一樣。

3.2 MCM模塊工作方式

MODBUS從站端口驅(qū)動(dòng),從ControlLogix處理器接收設(shè)置信息,用這些信息設(shè)置串口,并且定義從站節(jié)點(diǎn)特征。然后主站設(shè)備向模塊節(jié)點(diǎn)地址發(fā)送讀或?qū)懙拿睿丝隍?qū)動(dòng)在接收前進(jìn)行驗(yàn)證。一旦命令被接收,數(shù)據(jù)立即傳輸?shù)綇哪K的內(nèi)部數(shù)據(jù)庫;如果是讀命令,數(shù)據(jù)從數(shù)據(jù)庫中讀出并創(chuàng)建相應(yīng)信息;如果是寫命令,數(shù)據(jù)直接寫入到數(shù)據(jù)庫中并創(chuàng)建相應(yīng)信息。當(dāng)處理過程結(jié)束后,模塊相應(yīng)信息到主站。在狀態(tài)數(shù)據(jù)庫中計(jì)數(shù)器使梯形邏輯圖對從站的狀態(tài)進(jìn)行判斷。

3.3軟件配置

MVI56-MCM模塊隨機(jī)附帶了一張光盤,上面會(huì)有樣例程序,分別對應(yīng)LOGIX5000軟件不同版本,目前從13.0-21.0都有,以樣例程序?yàn)樗{(lán)本編程將較為簡易,內(nèi)部通訊均有程序,只需在Controller Tags里定義相應(yīng)的參數(shù),即可在LOGIX5000的PLC中讀寫儀表地址,不同版本的樣例程序,在Controller Tags的定義以及內(nèi)部通訊程序上均有不同,因此樣例程序版本和PLC版本必須嚴(yán)格一致,以確保可以正常通訊。目前泵站管理所對儀表為只讀不寫。

1)以17.0版本樣例程序?yàn)槔贛onitor Tags模式下,點(diǎn)擊MCM,MCM.CONFIG.ModDef中,分別設(shè)置MCM.CONFIG.ModDef.WriteStartReg(寫儀表的首地址),MCM.CONFIG.ModDef.WriteRegCnt(寫儀表的連續(xù)位數(shù)),MCM.CONFIG.ModDef.ReadStartReg(讀儀表的首地址),MCM.CONFIG.ModDef.ReadRegCnt(讀儀表的連續(xù)位數(shù)),注意地址不能重復(fù)。

2)然后在MCM.CONFIG.Port1和MCM.CONFIG.Port2中分別設(shè)置兩個(gè)端口的參數(shù),PORT1和PORT2分別對應(yīng)于硬件的P2和P3端口。以下為需要設(shè)置的一些參數(shù):

1)然后是MCM.CONFIG.Port1MasterCmd參數(shù)的設(shè)置,該參數(shù)下有100個(gè)數(shù)組,每個(gè)數(shù)組可以讀寫一次儀表數(shù)據(jù)段;

2)如果儀表設(shè)置和MCM設(shè)置均正確,且硬件連接均正常,通過MCM.DATA目錄下,相應(yīng)的MCM.DATA.ReadData[X]就會(huì)有相應(yīng)的儀表地址的讀取顯示,表明數(shù)據(jù)連接正常。然后數(shù)據(jù)就可以正常在LOGIX5000里編程,并通過INTOUCH對應(yīng)相應(yīng)的OPC SERVER讀取數(shù)據(jù)了。

4 應(yīng)用實(shí)例

上海市自來水市南泵站管理所從2000年開始采用PLC系統(tǒng),PLC系統(tǒng)采用AB公司的LOGIX5000系列,CPU采用L61系列,工控機(jī)的通訊采用ENBT以太網(wǎng)通信模塊,涉及到和現(xiàn)場的儀表通訊,大多數(shù)采用了MODBUS通訊,用了MVI56-MCM通訊模塊,該模塊的優(yōu)點(diǎn)如前文所述有集成化的軟件,只要軟件參數(shù)做修改調(diào)整即可對現(xiàn)場儀表進(jìn)行讀寫,操作很方便,涉及到的儀表通訊,包括變壓器溫度控制儀、高壓系統(tǒng)綜合保護(hù)器和LOGIX5000的PLC通訊,均通過這些方法得到了實(shí)現(xiàn)。其中綜合保護(hù)器讀取了電機(jī)繞組及軸承7個(gè)溫度、電壓、電流、功率、電量參數(shù)、電機(jī)電能參數(shù)等多個(gè)信號(hào),通訊規(guī)約為 MODBUS協(xié)議下RTU半雙工方式,RS-485通訊接口頻率采用9.6kbps。

要注意的是,MVI56-MCM光盤自帶軟件,要結(jié)合LOGIX5000版本的不同,采用相應(yīng)版本的樣本程序,這樣能保證和PLC的通訊正常。另外MVI56-MCM模塊的接口為232接口或485接口,如果通訊電纜有室外,最好室外部分通過光纖連接,室內(nèi)通過光模轉(zhuǎn)換成為相應(yīng)的232或485信號(hào),這樣可以去除雷擊對信號(hào)線路的影響,甚至?xí)?dǎo)致MVI56-MCM模塊故障。

由于PLC系統(tǒng)的成功引入,基于MODBUS協(xié)議下儀表通訊連接的成熟穩(wěn)定,水廠泵站的控制由離散的人工操作方式,逐步轉(zhuǎn)型為遠(yuǎn)程集約化操作的模式,上海市自來水市南有限公司泵站管理所下屬十幾個(gè)泵站目前均實(shí)現(xiàn)了遠(yuǎn)程集約化監(jiān)控,絕大多數(shù)泵站實(shí)現(xiàn)了無人值守模式的運(yùn)行,在極大程度提高了設(shè)備監(jiān)控水平的同時(shí),節(jié)約了可觀的人力成本,為企業(yè)的可持續(xù)發(fā)展打下良好基礎(chǔ)。

參考文獻(xiàn)

[1]任勝杰.電氣控制與PLC系統(tǒng). 機(jī)械工業(yè)出版社, 2013.

篇13

1引言目前,鐵路罐車主要通過機(jī)械式碰撞的方式來實(shí)現(xiàn)自動(dòng)裝卸,具有噪聲大、易磨損、維護(hù)工作量大等缺點(diǎn)。文獻(xiàn)[1]提出了一種通過跟蹤RFID接收最大場強(qiáng)值進(jìn)行定位的方式,其定位精度可滿足罐車自動(dòng)裝卸的需要,從而開拓了RFID的應(yīng)用方式,即將RFID用作位置傳感器。該方式將無線通信、有線通信、位置識(shí)別于一體,極大地簡化了列車自動(dòng)裝卸系統(tǒng)的結(jié)構(gòu)。該方法由地面閱讀器作位置信標(biāo),當(dāng)移動(dòng)的標(biāo)簽最接近閱讀器時(shí),標(biāo)簽接收場強(qiáng)最大,通過跟蹤此最大場強(qiáng),可知標(biāo)簽當(dāng)前的位置。由于每個(gè)地面定點(diǎn)閱讀器的信標(biāo)信息不一樣,因此,標(biāo)簽可隨時(shí)獲取到達(dá)位置的信息,并將此信息通過RS485發(fā)送給PLC控制器,完成指定的裝卸動(dòng)作。該控制方式提高了灌裝流動(dòng)貨物裝卸的自動(dòng)化程度,使鐵路貨場裝卸技術(shù)裝備水平得到提高。在文獻(xiàn)中[1]]中,PLC與RFID電子標(biāo)簽通信采用基于RS485接口的自定義通信協(xié)議,該協(xié)議采用多對一的方式,雖然通過合理安排,完成該系統(tǒng)的通信任務(wù)沒有問題,但理論上存在數(shù)據(jù)傳輸不可靠的缺點(diǎn),尤其是在將來進(jìn)行應(yīng)用拓展,定點(diǎn)位置比較密集,定位點(diǎn)比較多的情況下,其隱患會(huì)更加突出。

基于此控制系統(tǒng)中的不足,本文對基于MODBUS協(xié)議的PLC與RFID電子標(biāo)簽通信方式進(jìn)行了研究。MODBUS協(xié)議是目前工業(yè)中普遍使用的通信標(biāo)準(zhǔn),該協(xié)議的可靠性進(jìn)過了實(shí)踐驗(yàn)證,其輪詢工作方式不僅可以避免通信過程中數(shù)據(jù)丟失情況的發(fā)生,同時(shí)也便于該技術(shù)在定位點(diǎn)距離更密集,定位點(diǎn)更多情況下的應(yīng)用,使該系統(tǒng)的控制更可靠,通用性更強(qiáng)。

計(jì)算技術(shù)與自動(dòng)化2013年6月

第32卷第2期嚴(yán)政新等:基于MODBUS協(xié)議的PLC與RFID電子標(biāo)簽通信方式的研究

2通信方式總體方案設(shè)計(jì)

PLC與RFID電子標(biāo)簽通信方式原理:在RFID電子標(biāo)簽中移植MODBUS協(xié)議,PLC通過MODBUS協(xié)議讀取RFID電子標(biāo)簽的狀態(tài),并通過RS485接口與PLC進(jìn)行數(shù)據(jù)傳輸。

3.1MODBUS總線協(xié)議

MODBUS總線協(xié)議是應(yīng)用于電子控制器上的一種通用語言。MODBUS協(xié)議[9]完全公開、實(shí)現(xiàn)簡單、硬件要求低、可靠性好等特點(diǎn),可使不同廠商生產(chǎn)的控制設(shè)備連成工業(yè)網(wǎng)絡(luò),進(jìn)行集中監(jiān)控,所以在工業(yè)控制領(lǐng)域中得到了廣泛應(yīng)用[2]。

MODBUS協(xié)議通信使用主從技術(shù),即僅一設(shè)備(主設(shè)備)能初始化,查詢其它設(shè)備(從設(shè)備),從設(shè)備根據(jù)主設(shè)備發(fā)送的數(shù)據(jù)請求作出相應(yīng)應(yīng)答。MODBUS協(xié)議建立了主設(shè)備查詢的格式:設(shè)備地址、功能代碼、所有要發(fā)送的數(shù)據(jù)、錯(cuò)誤檢測域。從設(shè)備的回應(yīng)消息也由MODBUS協(xié)議數(shù)據(jù)包構(gòu)成,包括確認(rèn)要行動(dòng)的域、任何要返回的數(shù)據(jù)、和一個(gè)錯(cuò)誤檢測域。如果在消息接收過程中發(fā)生錯(cuò)誤,或從設(shè)備不能執(zhí)行其命令,從設(shè)備將建立一個(gè)錯(cuò)誤消息并把它作為回應(yīng)發(fā)送出去[3]。

3.2MODBUS協(xié)議在MSP430單片機(jī)中的移植

MSP430系列單片機(jī)是一種超低功耗的混合信號(hào)控制器。具有16位RISC結(jié)構(gòu),有著豐富的片內(nèi)資源[4][5]。符合MODBUS協(xié)議移植要求。所謂移植就是根據(jù)MODBUS協(xié)議標(biāo)準(zhǔn)在MSP430上編程實(shí)現(xiàn)。圖2為MODBUS協(xié)議移植程序流程圖。MSP430單片機(jī)上電,完成時(shí)鐘、串口、定時(shí)器、I/O口初始化,開串口中斷,然后等待接收MODBUS協(xié)議信息幀,接收完并作CRC校驗(yàn)碼匹配,CRC校驗(yàn)匹配正確則解析該數(shù)據(jù)包,提取相應(yīng)的數(shù)據(jù),否則返回一帶異常碼的數(shù)據(jù),對這些響應(yīng)的數(shù)據(jù)做CRC計(jì)算,合成為響應(yīng)的MODBUS協(xié)議信息幀,然后發(fā)送給主機(jī),進(jìn)入下一個(gè)MODBUS協(xié)議信息幀的等待接收狀態(tài)。

4PLC與RFID電子標(biāo)簽通信機(jī)制

MODBUS協(xié)議采用輪詢工作機(jī)制[10],在MSP430單片機(jī)上移植了MODBUS協(xié)議后,主站PLC對RFID電子標(biāo)簽進(jìn)行狀態(tài)查詢,完成兩者基于MODBUS協(xié)議的輪詢工作。圖3為具體的工作機(jī)制原理圖,該輪詢機(jī)制可詳述為:將3個(gè)RFID電子標(biāo)簽分別設(shè)置為電子標(biāo)簽1,電子標(biāo)簽2,電子標(biāo)簽3。輪詢工作開始后,PLC發(fā)送MODBUS協(xié)議信息幀到電子標(biāo)簽1,電子標(biāo)簽1根據(jù)接收到的數(shù)據(jù)請求,提取數(shù)據(jù)之后,組成一帶校驗(yàn)碼的MODBUS協(xié)議信息幀返回給PLC;PLC收到信息幀后,接著發(fā)送下一MODBUS協(xié)議信息幀到電子標(biāo)簽2,電子標(biāo)簽2也根據(jù)接收到的數(shù)據(jù)請求,提取數(shù)據(jù)之后,打包成一帶校驗(yàn)碼的MODBUS協(xié)議信息幀返回給PLC;PLC收到信息幀后,同樣發(fā)送一MODBUS協(xié)議信息幀到電子標(biāo)簽3,電子標(biāo)簽3也根據(jù)接收到的數(shù)據(jù)請求,提取數(shù)據(jù)之后,也組成一帶校驗(yàn)碼的MODBUS協(xié)議信息幀返回給PLC,就此就完成了一次輪詢。一次輪詢完成后,然后開始下一次輪詢[6]。PLC依據(jù)多次輪詢的結(jié)果進(jìn)行數(shù)據(jù)分析,并作出相應(yīng)的動(dòng)作控制。該輪詢機(jī)制極大的改善了數(shù)據(jù)丟失的情況,多次輪詢使得整個(gè)控制系統(tǒng)的準(zhǔn)確度也有了極大的提高。

5實(shí)驗(yàn)結(jié)果

實(shí)驗(yàn)中,將三個(gè)RFID電子標(biāo)簽的ID號(hào)分別定義為01,02,03。3個(gè)閱讀器的編號(hào)定義為1,2,3,當(dāng)各RFID電子標(biāo)簽與各閱讀器之間的位置發(fā)生改變時(shí),3個(gè)RFID電子標(biāo)簽通過接收主站的信息,將感應(yīng)到場強(qiáng)值(RSSI值)的變化和定點(diǎn)位置的變化;RFID電子標(biāo)簽相應(yīng)RSSI值寄存器會(huì)隨之發(fā)生改變,從接收到的信息可知是哪個(gè)定點(diǎn)位置。PLC通過MODBUS協(xié)議去輪詢RFID電子標(biāo)簽的RSSI值寄存器和閱讀器編號(hào),并進(jìn)行數(shù)據(jù)分析,然后作出相應(yīng)的的動(dòng)作控制[1]。圖4是使用串口調(diào)試助手采集到的數(shù)據(jù)。采集的數(shù)據(jù)為完整的MODBUS協(xié)議信息幀,其中“01”為RFID電子標(biāo)簽1的ID號(hào),“03”為MODBUS協(xié)議讀寄存器功能碼,“02”為返回?cái)?shù)據(jù)的長度,“FF 94”為RSSI值的十六進(jìn)制,“FB 1B”為CRC校驗(yàn)碼[8]。相應(yīng)的“02 03 02 FF 8F FC 10”為RFID電子標(biāo)簽2返回的MODBUS協(xié)議信息幀,“03 03 02 FF 92 01 D9”為RFID電子標(biāo)簽3返回的MODBUS協(xié)議信息幀。通過采集到的數(shù)據(jù)可以看出,PLC和RFID電子標(biāo)簽之間完成了輪詢的工作機(jī)制,其中第一排數(shù)據(jù)為第一次輪詢,第二排數(shù)據(jù)為第二次輪詢。為簡化實(shí)驗(yàn),定義:當(dāng)RFID電子標(biāo)簽與閱讀器處在同一垂直位置時(shí),兩者之間的距離為0(即到達(dá)指定位置);當(dāng)RFID電子標(biāo)簽在閱讀器左邊位置時(shí),兩者之間的距離為負(fù);當(dāng)RFID電子標(biāo)簽在閱讀器的右邊位置時(shí),兩者之間的距離為正。表1是PLC對RFID電子標(biāo)簽多次輪詢得到的數(shù)據(jù),根據(jù)數(shù)據(jù)可以看出,當(dāng)3個(gè)RFID電子標(biāo)簽和3個(gè)相應(yīng)的閱讀器都處于同一垂直位置時(shí),即兩者之間距離為0,此時(shí)RSSI值最強(qiáng)。通過輪詢?nèi)齻€(gè)場強(qiáng)值,就可以準(zhǔn)確定位出兩者之間相應(yīng)的位置,然后依據(jù)相應(yīng)的位置就可以進(jìn)行準(zhǔn)確的PLC I/O控制,從而實(shí)現(xiàn)各種所需動(dòng)作的控制。

6結(jié)束語

本文研究的基于MODBUS協(xié)議的PLC與RFID電子標(biāo)簽的通信方式,運(yùn)用到列車自動(dòng)裝卸系統(tǒng)中,不僅規(guī)范了系統(tǒng)的通信協(xié)議,而且解決了通信過程中數(shù)據(jù)丟失和系統(tǒng)通用性等問題。輪詢機(jī)制可以實(shí)現(xiàn)數(shù)據(jù)后臺(tái)處理,通過修改相關(guān)參數(shù)來完成系統(tǒng)的修正工作,相當(dāng)大的提高了系統(tǒng)調(diào)試的方便性,是系統(tǒng)能更有效地實(shí)現(xiàn)罐車的準(zhǔn)確定位和自動(dòng)裝卸。

參考文獻(xiàn)

[1]吳利清,王英健.基于RFID技術(shù)的車輛行程定位系統(tǒng)[J].計(jì)算機(jī)技術(shù)與自動(dòng)化,2011,30(1):39-44.

[2]張錚,劉曉偉.基于PLC的MODBUS通信協(xié)議的實(shí)現(xiàn)[J].湖北工業(yè)大學(xué)學(xué)報(bào),2010,25(4):20-22.

[3]孟華,王鵬達(dá).基于MODBUS協(xié)議的觸摸屏與PIC單片機(jī)的通信實(shí)現(xiàn)[J].儀表技術(shù)與傳感器,2009,10:58-61.

[4]謝楷,趙建.MSP430系列單片機(jī)系統(tǒng)工程設(shè)計(jì)與實(shí)踐[M].北京:機(jī)械工業(yè)出版社,2009.

[5]胡大可.MSP430系列單片機(jī)C語言程序設(shè)計(jì)與開發(fā)[M].北京:北京航空航天大學(xué)出版社,2001.

[6]舒凱.基于MODBUS-RTU協(xié)議的PLC多路數(shù)據(jù)采集系統(tǒng)[J].水電自動(dòng)化與大壩監(jiān)測,2008,32(2):66-69.

[7]張琦,張英.PC機(jī)與MSP430單片機(jī)串行通信的實(shí)現(xiàn)方法[J].中國工程機(jī)械學(xué)報(bào),2007,5(1):22-25.