前言:想要寫出一篇令人眼前一亮的文章嗎?我們特意為您整理了5篇modbus協(xié)議范文,相信會為您的寫作帶來幫助,發(fā)現(xiàn)更多的寫作思路和靈感。
關(guān)鍵詞:STC89C52 通訊協(xié)議 Delphi Firbird
1節(jié)點設(shè)計以及網(wǎng)絡(luò)組成
1.1本系統(tǒng)主控芯片采用宏晶科技STC89C52單片機(jī),與其它CPU芯片相比,具有顯著特點,加密性強(qiáng),超低功耗,速度快,可靠性高,驅(qū)動能力強(qiáng),抗靜電和抗干擾能力強(qiáng)。
1.2DS18B20傳感器
DS18B20是美國DALLAS公司生產(chǎn)的一線式數(shù)字式溫度計芯片,它具有結(jié)構(gòu)簡單,不需外接元件,測量溫度范圍在-55°C—+125°C之間。采用一根I/O數(shù)據(jù)線既可供電又可傳輸數(shù)據(jù)、并可由用戶設(shè)置溫度報警界限等特點,可廣泛用于食品庫、冷庫、糧庫等需要控制溫度的地方。
1.3網(wǎng)絡(luò)節(jié)點設(shè)計
網(wǎng)絡(luò)節(jié)點結(jié)構(gòu)示意圖
1.4網(wǎng)絡(luò)組成
該控制網(wǎng)由PC機(jī)和若干分節(jié)點組成,PC機(jī)主要負(fù)責(zé)輪詢各分站點數(shù)據(jù),發(fā)送請求數(shù)據(jù)包和控制數(shù)據(jù)包,然后分節(jié)點判斷數(shù)據(jù)包,根據(jù)相應(yīng)的指令通過RS232接口把數(shù)據(jù)發(fā)送給PC機(jī),最大站點數(shù)可設(shè)50個節(jié)點,PC機(jī)對采集的數(shù)據(jù)進(jìn)行分析處理。
2 控制網(wǎng)絡(luò)通訊協(xié)議
2.1簡單節(jié)點流程示意圖
本控制網(wǎng)采用同一程序,通過面板按鍵設(shè)置本機(jī)的分節(jié)點地址,節(jié)點開始上電,CPU開始初始化I/O、串口等模塊,接著根據(jù)設(shè)置的參數(shù)讀取操作站點,從而執(zhí)行相應(yīng)的程序并分析數(shù)據(jù),數(shù)據(jù)正確,進(jìn)行正常顯示,否則PC機(jī)根據(jù)不同的報警信息發(fā)出聲光報警。
簡單節(jié)點流程示意圖如下
2.2數(shù)據(jù)包格式
通訊參數(shù):波特率:1200,數(shù)據(jù)位為1,數(shù)據(jù)位為8,停止位為1,校驗位為1,方式采用主從式通訊,計算機(jī)為主機(jī),各下位分機(jī)為從機(jī)。主機(jī)先發(fā)數(shù)據(jù)請求命令,只有符合地址條件的從機(jī)才回傳或接收數(shù)據(jù),在數(shù)據(jù)傳輸中,為提高系統(tǒng)的可靠性和實用性,要求傳送的數(shù)據(jù)包盡可能短,并且傳送的信息量要大。
2.2.1請求數(shù)據(jù)包
本數(shù)據(jù)包用于PC機(jī)向分節(jié)點請求數(shù)據(jù)使用。請求數(shù)據(jù)包格式如下:長度為4個字節(jié)數(shù),首位碼、讀標(biāo)志、目的地址、數(shù)據(jù)量均為一個字節(jié)數(shù)。
2.2.2回送數(shù)據(jù)
本數(shù)據(jù)包用于分節(jié)點發(fā)送PC機(jī)所請求的數(shù)據(jù),回送的數(shù)據(jù)包長度可以根據(jù)發(fā)送的指令而變,根據(jù)PC機(jī)發(fā)送的請求,數(shù)據(jù)包回送PC機(jī)所請求的數(shù)據(jù)。
回送數(shù)據(jù)包格式如下:首位碼、地址均為1個字節(jié)數(shù),回送數(shù)據(jù)根據(jù)發(fā)送指令確定字節(jié)數(shù),備用字節(jié)、校驗碼為兩個字節(jié)數(shù)。
2.2.3控制數(shù)據(jù)包
本數(shù)據(jù)包主要用于PC機(jī)向分節(jié)點發(fā)送數(shù)據(jù)使用。控制數(shù)據(jù)包格式如下:長度為5個字節(jié)數(shù),首位碼、寫標(biāo)志、目的地址均為1個字節(jié)數(shù),數(shù)據(jù)量為2個字節(jié)數(shù)。
2.2.4協(xié)議的實現(xiàn)及應(yīng)用
在設(shè)計基于RS-485的分布式測控系統(tǒng)時,在上位機(jī)呼叫下位機(jī)地址之后就可以利用本協(xié)議的規(guī)范來設(shè)計具體的通信流程。 基于本協(xié)議的通信可以有兩種機(jī)制。一種是面向握手的,即每發(fā)出一幀,總是要等待確認(rèn)幀,否則將認(rèn)為是通信出錯。這是一種可靠的通信方式,適合傳輸系統(tǒng)命令和一些非常重要的系統(tǒng)參數(shù)。另一種是無握手的,即發(fā)送方假設(shè)接收方總是接收正確,從而無須等待確認(rèn)幀就不停地發(fā)送,適合大量前端采集數(shù)據(jù)的發(fā)送。這種機(jī)制的優(yōu)點是發(fā)送過程簡 單、快速,缺點是不能保證傳輸過程的可靠性。
本協(xié)議利用握手通訊方式已經(jīng)成功地運用到多個冷庫、糧庫監(jiān)測系統(tǒng)中,不僅簡化了通信程序的設(shè)計,而且保證了通信的高效和可靠。下位機(jī)負(fù)責(zé)現(xiàn)場的溫度的采樣和存儲,上位機(jī)負(fù)責(zé)循環(huán)呼叫下位機(jī),以了解現(xiàn)場情況是否正常,并且每隔一定時間收集下位機(jī)存儲的數(shù)據(jù)并對數(shù)據(jù)進(jìn)行分析管理。
2.3通訊的可靠性
本系統(tǒng)采用主從結(jié)構(gòu),利用PC機(jī)輪詢各節(jié)點,能有效解決網(wǎng)絡(luò)沖突問題。傳輸數(shù)據(jù)增加了冗余,并且在所傳送的數(shù)據(jù)中進(jìn)行了硬件的循環(huán)冗余校驗。
3 結(jié)束語
本系統(tǒng)上位機(jī)軟件采用Delphi開發(fā),數(shù)據(jù)庫采用Firbird,上位機(jī)設(shè)計分為組態(tài)部分和監(jiān)控運行部分,可視化直觀的界面操作,組態(tài)方便,可根據(jù)分節(jié)點所接傳感器數(shù)量不同,自由分配通道,利用上位機(jī)強(qiáng)大的數(shù)據(jù)處理能力,進(jìn)行數(shù)據(jù)分析和處理,可對各節(jié)點進(jìn)行數(shù)據(jù)顯示、上下限報警、實時趨勢顯示,具有很大的實際應(yīng)用價值。
參考文獻(xiàn):
[關(guān)鍵詞] Modbus; 監(jiān)控; 功能碼
1 引言
在油庫和各種石化單位,定量裝車作業(yè)十分繁忙,裝車操作過程又要求相對精確。更加重要的是,涉及石化產(chǎn)品具有一定危險性。為了提高了裝車精度和效率,降低損耗,減輕工人的勞動強(qiáng)度,同時盡可能保證安全作業(yè),本文設(shè)計了基于Modbus協(xié)議的定量裝車自動監(jiān)控系統(tǒng),并交付某公司使用。實際應(yīng)用表明系統(tǒng)監(jiān)控畫面直觀,人員操控方便,具備一定的主動安全保障能力。
2 Modbus協(xié)議
Modbus通信協(xié)議是美國Modicon公司開發(fā)的一種通信協(xié)議,它采用Master/Slave方式工作,一個主站可以連接多個從站,從站只能根據(jù)主站的請求作出相應(yīng)的應(yīng)答。它是一種開放、標(biāo)準(zhǔn)、免收許可費的通信協(xié)議。目前該協(xié)議已經(jīng)廣泛應(yīng)用于自動化控制和測控儀表,并且已經(jīng)成為我國工業(yè)自動化網(wǎng)絡(luò)協(xié)議規(guī)范的國家標(biāo)準(zhǔn)之一。
Modbus協(xié)議有2種傳輸模式,即RTU模式和ASCII模式,相對于ASCII模式,RTU模式表達(dá)相同的信息需要較少的位數(shù),且在相同通信速率下具有更大的數(shù)據(jù)流量,因此本系統(tǒng)選用該模式完成設(shè)計與實現(xiàn)。
Modbus協(xié)議的采用LRC和CRC兩種校驗?zāi)J絹肀WC控制命令傳輸無誤。本文采用CRC-16校驗方式,該方式會根據(jù)當(dāng)前發(fā)送或接收的命令字節(jié)碼,計算對應(yīng)的2個字節(jié)的CRC校驗碼。并將其加到命令字節(jié)碼之后一并發(fā)送,組合之后的命令字節(jié)碼格式為:
系統(tǒng)在實現(xiàn)過程中,考慮到最終將會采用普通的X86系列PC機(jī)作為監(jiān)控終端,而該型機(jī)都是big-endian方式做多字節(jié)數(shù)據(jù)存儲,與Modbus協(xié)議要求的little-endian剛好相反, CRC的計算結(jié)果必須滿足這一要求。本文稍微調(diào)整了CRC-16校驗碼的產(chǎn)生方式如下:
Step1:將0xFFFF裝入CRC寄存器;
Step2:將命令字節(jié)碼的第一個字節(jié)與CRC寄存器異或,結(jié)果存放在CRC寄存器中;
Step3:CRC寄存器右移1位,高位填充0;
Step4:檢查CRC寄存器的最低有效位,如果該位為0,則重復(fù)Step3;如果該位為1,則將CRC寄存器的值與0xA001異或;
Step4:重復(fù)Step3和4,直到完成8次移位之后,完成命令字節(jié)碼中的對一個字節(jié)的處理;
Step5:對命令字節(jié)碼的下一個字節(jié)重復(fù)Step2到Step5的處理,直到所有的字節(jié)都處理完成為止;
Step6:最終CRC寄存器中的內(nèi)容就是該條命令字節(jié)碼對應(yīng)的CRC校驗值;
例如,某命令字節(jié)數(shù)據(jù)[ 1 | 15 | 0 25 | 0 12 | 2 | 168 3 | 216 120 ]的含義為:給1號地址設(shè)備15號命令(寫多個線圈),從它的25號起始地址開始(0 25),連續(xù)寫12個線圈(0 12),寫入內(nèi)容為命令數(shù)據(jù)區(qū)的1010 1000 0011(168 3),根據(jù)命令計算出CRC校驗碼為(216 120)。
3 系統(tǒng)工作原理
本系統(tǒng)采用典型的RS232/485總線將上位機(jī)服務(wù)器端、上位機(jī)客戶端以及各個下位機(jī)組成一個工業(yè)可控以太網(wǎng),各下位機(jī)選取符合Modbus plus規(guī)范的相關(guān)設(shè)備,便于直接獲取的操作過程中的各種數(shù)據(jù)信息,并封裝成協(xié)議標(biāo)準(zhǔn)進(jìn)行傳輸和通訊。主操作界面如圖1所示。
系統(tǒng)工作原理框架如下:
(1)下位機(jī)通過傳感器采集溫度計、流量計、比重計等相關(guān)數(shù)據(jù),并封裝成Modbus協(xié)議格式數(shù)據(jù)供上位機(jī)客戶端查詢。
(2)上位機(jī)客戶端通過串口和橋接器連接各個下位機(jī),利用多線程串口讀取函數(shù)主動進(jìn)行數(shù)據(jù)收集,下位機(jī)按照上位機(jī)客戶端的要求回傳相應(yīng)數(shù)據(jù)。然后,上位機(jī)客戶端將收到的數(shù)據(jù)按功能碼進(jìn)行解析,并以圖例、表格、文本等多種形式實時顯示和記錄。
(3)上位機(jī)服務(wù)器端通過TCP/IP網(wǎng)絡(luò)與各個上位機(jī)客戶端相連,對多個上位機(jī)客戶端的狀態(tài)信息進(jìn)行收集、分析和存檔,并通過主動發(fā)送命令的方式給上位機(jī)指令,進(jìn)而通過上位機(jī)客戶端給下位機(jī)下達(dá)控制命令,達(dá)到“監(jiān)視――控制”雙功能。
4 軟件系統(tǒng)設(shè)計
上位機(jī)服務(wù)器通過接收Modbus請求,與上位機(jī)客戶端進(jìn)行交互,并對操作過程實時監(jiān)控,利用成熟的數(shù)據(jù)庫管理系統(tǒng),接收、存儲、處理和備份整個過程中產(chǎn)生的所有數(shù)據(jù),為客戶提供服務(wù),并為進(jìn)一步的數(shù)據(jù)分析提供歷史依據(jù)。上位機(jī)服務(wù)器端主要功能包括:
(1)系統(tǒng)管理:該模塊包括了各類管理員,操作人員的用戶注冊,授權(quán)和管理等等,防止非法操作人員惡意登錄造成操作失誤,也避免非授權(quán)操作員隨意更改系統(tǒng)工作參數(shù)可能造成系統(tǒng)運行偏差。
(2)數(shù)據(jù)庫管理:該部分模塊選擇成熟的數(shù)據(jù)庫管理系統(tǒng)SQL Server2005對整個系統(tǒng)運行過程中所需要記錄的所有數(shù)據(jù)信息就行存儲和管理,為整個系統(tǒng)的運行和監(jiān)控提供可靠的數(shù)據(jù)支持;
(3)系統(tǒng)工作狀態(tài)顯示:該模塊負(fù)責(zé)以圖像模擬顯示多種數(shù)據(jù)狀態(tài),有利于管理人員實時監(jiān)控各下位機(jī)客戶端的操作情況。并且提供多種顯示圖像幫助管理人員分析各種操作情況,這是系統(tǒng)的核心功能之一, 在實現(xiàn)獲取個下位機(jī)狀態(tài)之后,對下位機(jī)進(jìn)行直接控制是系統(tǒng)必需的核心功能之一,雖然在實際裝車控制中主要使用的功能碼只有2、4、15、16號命令,但是本系統(tǒng)實現(xiàn)了全部Modbus功能碼,便于今后對新設(shè)備的擴(kuò)充。。
(4)Modbus協(xié)議命令:該模塊能夠按照標(biāo)準(zhǔn)的Modbus協(xié)議,接收來自上位機(jī)客戶端傳送來的Modbus請求,完成數(shù)據(jù)采集、數(shù)據(jù)分析和數(shù)據(jù)存儲工作,是系統(tǒng)工作狀態(tài)顯示實現(xiàn)的基礎(chǔ);
(5)安全警報功能:授油工作本身是具備一定危險性的工作,安全責(zé)任事故問題必須引起足夠的重視。可以根據(jù)各種系統(tǒng)狀況進(jìn)行報警處理,保證系統(tǒng)工作狀態(tài)安全可靠,避免業(yè)務(wù)事故的發(fā)生,并且具備自動報警信息記錄功能,收集歷史上曾經(jīng)出現(xiàn)的安全事故信息,為安全人員分析發(fā)現(xiàn)安全事故規(guī)律,查找安全隱患提供數(shù)據(jù)支撐。
上位機(jī)客戶端能有效地按照預(yù)定訂單號自動完成裝車作業(yè),或者在操作員的控制下,進(jìn)行控制參數(shù)設(shè)置,定量控制、數(shù)據(jù)采集、業(yè)務(wù)受理和報表打印等具體業(yè)務(wù)。上位機(jī)客戶端主要功能包括:
(1)實時授油監(jiān)視:該模塊負(fù)責(zé)實時動畫模擬顯示整個下位機(jī)控制分組內(nèi)所有鶴管的出油狀況,及相關(guān)關(guān)鍵參數(shù)數(shù)值顯示。例如:發(fā)油訂單號、車號、油品類型、參數(shù)設(shè)定、誤差范圍等等;
(2)強(qiáng)制發(fā)油控制:該模塊在特殊情況下,可以人為指定操作指令,以取代自動發(fā)油過程,控制啟動發(fā)油、暫停發(fā)油、恢復(fù)發(fā)油、強(qiáng)制結(jié)束等方式來進(jìn)行特殊操作,擴(kuò)展控制功能,更加適應(yīng)實際操作的變化;
(3)業(yè)務(wù)計劃管理:該模塊下,客戶可以根據(jù)預(yù)約過的訂單號,自動完成裝車過程。也可以在沒有訂單號的情況下,有操作人員生成新的裝車業(yè)務(wù),并進(jìn)行結(jié)算;
(4)業(yè)務(wù)查詢:該模塊按照操作員和客戶要求的方式(諸如進(jìn)行訂單號、裝車時間、油品類型、裝車單位、操作員編號等等)進(jìn)行多種關(guān)鍵字查詢和統(tǒng)計功能,并且自動生成相關(guān)聯(lián)報表。
(5)打印功能:其自定義打印功能,更加貼近實用,可以由用戶自主選擇打印;
5 結(jié)論
本設(shè)計采用OOAD思想,用UNL建模,并使用Borland C++作為開發(fā)工具,規(guī)范化的設(shè)計和編程過程,以及大量集成的成熟控件足以支撐本軟件系統(tǒng)的快速開發(fā)。結(jié)果表明,軟件系統(tǒng)既可以對標(biāo)準(zhǔn)Modbus功能碼進(jìn)行調(diào)試,也可以對自定義功能碼進(jìn)行設(shè)置,還可以實時監(jiān)測和控制下位機(jī)狀態(tài),并結(jié)合數(shù)據(jù)庫功能記錄所有關(guān)鍵操作和核心設(shè)備配置參數(shù)信息,保障差錯恢復(fù)。系統(tǒng)運行穩(wěn)定可靠,使用簡明方便,很好地滿足項目要求。
[參考文獻(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].測控技術(shù)2012年第31卷第2期
[3] 呂國芳,唐海龍,李進(jìn).基于ModbusRTU的串口調(diào)試軟件的實現(xiàn)[J].計算機(jī)技術(shù)與發(fā)展 2009年第19卷第9期
[4] 袁輝,李延香.基于Modbus通訊協(xié)議數(shù)據(jù)采集系統(tǒng)的設(shè)計[J].科技咨詢導(dǎo)報 2007 No.19
[5] 陳柏金.通過串行口訪問modbus現(xiàn)場控制網(wǎng)絡(luò)[J].微計算機(jī)信息 2003.19(1)
[6] 王念春.基于Modbus的PC與下位機(jī)PLC間的通信程序[J].自動化儀表 第22卷第8期 2001年8月
[7] 徐濤,閆科.基于Modbus協(xié)議的串行接口實現(xiàn)與DCS通訊[J].工業(yè)控制計算機(jī) 2002年4月
[8] 羅朝霞,張高記.基于TMS320F240TA DPS的Modbus通信協(xié)議的實現(xiàn)[J].微計算機(jī)信息2005.21(72)138-139
[9] 房傳禮,李建華.基于Modbus協(xié)議的大屏幕在線監(jiān)視系統(tǒng)設(shè)計[J].自動化與儀表 2010年7月
[10] 盧文俊,冷杉.基于Modbus協(xié)議的控制器遠(yuǎn)程監(jiān)控系統(tǒng)[J].電力自動化設(shè)備 2003年第23卷第6期
[11] 甑君,衛(wèi)強(qiáng),于耀.應(yīng)用多線程技術(shù)實現(xiàn)串行通信與信號采集識別的同步[J].計算機(jī)工程 2003(10)196-197
[12] 李俊,徐紅兵.基于Modbus協(xié)議的汽輪機(jī)保護(hù)系統(tǒng)通訊設(shè)計[J].自動化與儀表 2006年7月
[13] 方羽,梁廣瑞.基于uCOS的Modbus協(xié)議的實現(xiàn).裝備制造技術(shù)[J] 2009年第1期
關(guān)鍵詞:MODBUS PLC 變頻器
中圖分類號:TP273 文獻(xiàn)標(biāo)識碼:A 文章編號:1007-9416(2012)02-0072-02
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與四臺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è)置校驗方式參數(shù)5304為偶校驗,1個停止位。設(shè)置控制類型參數(shù)5305為 ABB傳動簡版。從左到右變頻器1、2、3和4的站地址參數(shù)5302分別設(shè)置為3、4,5和6,并將變頻器4的總線終端電阻DIP開關(guān)置ON。在對變頻器以上參數(shù)設(shè)置完成后應(yīng)對傳動重新上電激活,使新地址及通訊協(xié)議生效。
變頻器控制要求:
變頻器分現(xiàn)場和遠(yuǎn)程兩種控制模式,現(xiàn)場控制柜設(shè)置三位置模式選擇開關(guān),分別為停止、本控和遠(yuǎn)程。在本控模式下啟動/停止命令由現(xiàn)場開關(guān)觸發(fā)數(shù)字輸入DI1控制,頻率由現(xiàn)場的電位器改變模擬輸入AI1的輸入電壓進(jìn)行調(diào)節(jié)。當(dāng)選擇遠(yuǎn)程模式時,數(shù)字輸入DI2接通,通知PLC現(xiàn)變頻器已經(jīng)處于遠(yuǎn)程控制模式。為能夠?qū)崿F(xiàn)以上功能并在人機(jī)界面能夠觀察到變頻器的運行頻率和通過模擬輸入AI2輸入的實際流量,還需要對變頻器其他部分參數(shù)進(jìn)行設(shè)置,見表1。
3、程序設(shè)計
3.1 通訊內(nèi)容
主工作站輪流發(fā)送請求報文到每個變頻器從工作站,隨之每個從工作站產(chǎn)生響應(yīng)報文。PLC主工作站分別對每個變頻器從工作站進(jìn)行如下操作:
(1)對每個變頻器的輸出線圈1~3的狀態(tài)進(jìn)行查詢;
(2)查詢變頻器狀態(tài)寄存器40004狀態(tài)字、40005實際值、40006實際值和40007實際值。40005~40007數(shù)據(jù)值對應(yīng)于表1中變頻器參數(shù)5310、5311和5312中的實際值。
(3)寫變頻器控制字,對變頻器的遠(yuǎn)程啟停進(jìn)行控制。
(4)寫變頻器寄存器,對變頻器的外部2給定進(jìn)行控制。
對一個變頻器的數(shù)據(jù)全部讀寫完成后,開始對下一站號變頻器的數(shù)據(jù)進(jìn)行讀寫。當(dāng)所有變頻器的數(shù)據(jù)讀寫完成后,主工作站重新開始對最小站號變頻器的數(shù)據(jù)進(jìn)行讀寫。數(shù)據(jù)的傳輸及接受采用PLC自由通訊口模式進(jìn)行,報文按照modbus的協(xié)議組織。
3.2 通訊格式
MODBUS請求報文格式如表2。
因在S7-200PLC發(fā)送指令XMT中,發(fā)送緩沖器的第一個字節(jié)指定的是數(shù)據(jù)傳輸?shù)淖止?jié)數(shù),從第二個字節(jié)以后的數(shù)據(jù)為需要發(fā)送的數(shù)據(jù)。因此,結(jié)合MODBUS請求報文格式,PLC發(fā)送數(shù)據(jù)的格式如表3。
在整個網(wǎng)絡(luò)通信過程中,主工作站輪流發(fā)送請求報文到每個從工作站,隨之每個從工作站必須產(chǎn)生響應(yīng)報文返回到主工作站。當(dāng)主工作站向從工作站發(fā)送請求報文和接受從工作站返回的響應(yīng)報文時,在主工作站儲存區(qū)開辟了發(fā)送緩沖區(qū)和接受緩沖區(qū)。主工作站向從工作站發(fā)送請求報文時,首先對相應(yīng)從工作站輸出緩沖區(qū)的數(shù)據(jù)進(jìn)行CRC運算生成校驗碼,并將校驗碼疊加在輸出緩沖區(qū)的數(shù)據(jù)之后再傳送到發(fā)送緩沖區(qū),然后再由發(fā)送指令發(fā)出。建立一個遠(yuǎn)程循環(huán)結(jié)束標(biāo)志位,當(dāng)響應(yīng)報文全部接受完成,置該位為ON。主工作站在接受從工作站的響應(yīng)報文時,先把響應(yīng)報文輸入到接受緩沖區(qū),再把接受緩沖區(qū)中的數(shù)據(jù)傳送到輸入緩沖區(qū)。為此,在主工作站中要留有兩個數(shù)據(jù)存儲區(qū),一個作為報文請求(輸出緩沖區(qū)),另一個作為報文響應(yīng)(輸入緩沖區(qū))。
在MODBUS RTU通訊協(xié)議中都必須要求有CRC循環(huán)冗余校驗。CRC循環(huán)冗余校驗為兩個字節(jié),附加在報文后面的CRC的值由發(fā)送設(shè)備計算,當(dāng)放置CRC 值于報文時,高低字節(jié)必須交換。首先發(fā)送低位字節(jié),然后再發(fā)送高位字節(jié)。故此在發(fā)送緩沖區(qū)中的數(shù)據(jù)要比輸出緩沖區(qū)的數(shù)據(jù)多兩個CRC循環(huán)冗余校驗字節(jié)。接收設(shè)備在接收報文時重新計算CRC的值,并將計算結(jié)果于實際接收到的CRC值相比較。如果兩個值不相等,則傳送的數(shù)據(jù)為錯誤。
3.3 程序描述
SBR0子程序:在PLC上電初始化階段,設(shè)置通訊口為自由口通信方式,并設(shè)置波特率及校驗方式,允許全部中斷時件,并設(shè)置定時中斷的時基為20毫秒。在這里設(shè)置波特率為19.2KB/S,偶校驗,每字符8個數(shù)據(jù)。注意必須與從工作站的通訊參數(shù)相同。為輸出和輸入緩沖區(qū)的數(shù)據(jù)地址建立間接尋址指針。并設(shè)置請求報文的剩余數(shù)目為4,設(shè)置從工作站的查詢剩余數(shù)目為4。
將輸出緩沖區(qū)指針中指出的地址為起始地址的12個字節(jié)通過塊傳送命令傳送到發(fā)送緩沖區(qū)單元中。并復(fù)位遠(yuǎn)程循環(huán)結(jié)束標(biāo)志位。
對發(fā)送緩沖區(qū)中的報文進(jìn)行運算生成CRC,交換CRC 寄存器中的高低字節(jié),并將交換完成的CRC 寄存器疊加到發(fā)送緩沖區(qū)中。
啟動定時中斷和發(fā)送中斷,并通過發(fā)送指令將發(fā)送緩沖區(qū)中的請求報文發(fā)送。
建立跳轉(zhuǎn)入口,標(biāo)號1。
若循環(huán)未結(jié)束,跳轉(zhuǎn)到標(biāo)號1。程序不向下執(zhí)行,直至遠(yuǎn)程循環(huán)結(jié)束,標(biāo)志位為ON。
遠(yuǎn)程I/O更新完成,將接受的報文通過塊傳送命令傳送到接受緩沖區(qū)指針指出的接受緩沖區(qū)中。
修改發(fā)送緩沖區(qū)和接受緩沖區(qū)指針值,指向下一個輸出和輸入緩沖區(qū)字節(jié)地址。將請求報文的剩余數(shù)目減1。
當(dāng)請求報文的剩余數(shù)目為零時,重新設(shè)置請求報文的剩余數(shù)目為4,將從工作站的查詢剩余數(shù)目減1。
當(dāng)工作站的查詢剩余數(shù)目為零時,重新設(shè)置從工作站的查詢剩余數(shù)目為4,為輸出和輸入緩沖區(qū)的數(shù)據(jù)地址重新建立間接尋址指針。
INT_0中斷程序:在接受報文超時情況下,禁止接受中斷和接受定時中斷,置遠(yuǎn)程循環(huán)結(jié)束標(biāo)志位為ON。
INT_1中斷程序:在發(fā)送超時情況下禁止發(fā)送中斷和發(fā)送定時中斷,置PLC為STOP模式。
INT_10中斷程序:禁止發(fā)送完成中斷,啟動接受定時中斷INT_0和接受數(shù)據(jù)中斷程序INT_11。
INT_11中斷程序:若接受的首字符(從工作站地址)為從工作站的正確地址,則建立一個接受字符的地址指針。并把接受到的字符裝入到接受字符指針指出地址中。增加指針的數(shù)值,指向下一個地址。并啟動中斷程序INT_12。
INT_12中斷程序:把接受到的第二個字符(功能碼)裝入到接受字符指針指出地址中,增加指針的數(shù)值,指向下一個地址。啟動中斷程序INT_13。
INT_13中斷程序:把收到的第三個字符(字節(jié)數(shù))裝入到接受字符指針指出地址中,并修改指針值。第三個字符為接受的不含CRC校驗碼字符的總數(shù)目,剩余接受字符數(shù)目為將字節(jié)數(shù)加2,若反饋的功能碼為十六進(jìn)制數(shù)0F,全部剩余字符數(shù)目為5。將全部剩余字符數(shù)目置入到累加器AC1中,當(dāng)累加器AC1為零時,接收字符也就完成。啟動中斷程序INT_14。
INT_14中斷程序:將接受到的字符裝入接受字符指針指出地址中,并修改地址指針值和將將累加器AC1數(shù)值減一。若累加器AC1的數(shù)值為零。則關(guān)閉字符接受中斷和定時中斷,并將遠(yuǎn)程循環(huán)結(jié)束標(biāo)志位置ON。
4、結(jié)語
該系統(tǒng)自投入在線運行以來,系統(tǒng)調(diào)節(jié)迅速且運行穩(wěn)定,并取得了良好的經(jīng)濟(jì)效果,在助劑添加中具有較高的推廣價值。
參考文獻(xiàn)
[1]殷洪義.可編程序控制器選擇、設(shè)計與維護(hù).機(jī)械工業(yè)出版社,2002年.
[2]S7-200可編程控制器系統(tǒng)手冊.2004年.
關(guān)鍵詞:modbus協(xié)議;溫度采集;水泵房;S7-300PLC
中圖分類號:TN915 文獻(xiàn)標(biāo)識碼:A
0.前言
錢家營礦的涌水量比較大,共設(shè)置了3個水平的泵房,伴隨著全自動化礦井的建設(shè),需要對-600水泵房和-850水泵房進(jìn)行升級改造,水泵和電機(jī)的溫度參數(shù)保證著水泵的安全運行,每個水泵房共設(shè)置10臺排水泵,每臺水泵通過YBD-200溫度巡檢儀進(jìn)行溫度采集,該儀表采用的是modbus協(xié)議通過RS485總線接口傳輸?shù)絇LC,經(jīng)過PLC處理,傳輸?shù)降孛嫔衔粰C(jī)實時顯示。
1.溫度巡檢儀通信協(xié)議
YBD200型儀表采用的是標(biāo)準(zhǔn)modbus協(xié)議,RTU傳輸模式。Modbus協(xié)議是一種主-從通信協(xié)議。任何時刻只有一個設(shè)備能夠在線路上進(jìn)行發(fā)送。由主站點管理信息交換,且只有它能發(fā)起。它會相繼對從站進(jìn)行輪詢。除非被主站批準(zhǔn),否則任何從站都不能發(fā)送消息。從站之間不能進(jìn)行直接通信。協(xié)議幀中不包含任何消息報頭字節(jié)或消息字節(jié)結(jié)束符。
1.它的定義如下(見表1):
從站地址:消息中的地址包含一個字節(jié),從站地址范圍是1…255。主設(shè)備通過將要聯(lián)絡(luò)的從設(shè)備的地址放入消息中的地址域來選通從設(shè)備。當(dāng)從設(shè)備發(fā)送回應(yīng)消息時,它把自己的地址放入回應(yīng)的地址域中,以便主設(shè)備知道是哪一個設(shè)備做出回應(yīng)。數(shù)據(jù):以二進(jìn)制代碼傳輸。CRC16:循環(huán)冗余錯誤校驗。采用的是9600bps的波特率。字節(jié)數(shù)據(jù)格式:一位起始位,八位數(shù)據(jù)位,一位偶校驗位,一位停止位。從站地址編號:儀表地址必須在1~255之間,且同一總線上,每個儀表的地址不可重復(fù)。當(dāng)字符間隔時間長于或等于3.5個字符時,即作為檢測到幀的結(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)主要由一臺集控柜和10臺就地柜等組成,集控柜安裝有315-2DP的CPU模塊和CP343-1的以太網(wǎng)模塊、CP340-RS422/RS485通信模塊以及數(shù)字量、模擬量輸入輸出模塊等,溫度探頭選用的是Pt100鉑電阻類型的,把7點的溫度數(shù)據(jù)接到Y(jié)BD-200型溫度巡檢儀對應(yīng)的端子上,一共采集10臺水泵的溫度數(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型溫度巡檢儀的地址編號為4-13,為了防止數(shù)據(jù)的讀取錯誤,編寫主站PLC程序時,可通過增計數(shù)器進(jìn)行從站地址4-13的輪詢,并設(shè)置0.5s時鐘寄存器進(jìn)行控制。為了保證發(fā)送報文的準(zhǔn)確性,發(fā)送報文之前先利用事先編好CRC校驗子程序檢驗一下,CRC校驗子程序采用的是CRC16算法。
PLC與溫度巡檢儀主要通過調(diào)用FB2、FB3系統(tǒng)塊實現(xiàn)主從站的請求和讀取功能。需要注意的是,調(diào)用FB2、FB3時,地址為CP340-RS422/RS485硬件組態(tài)時的地址352;主站請求時從DB3數(shù)據(jù)塊中的DBB0字節(jié)開始調(diào)用,字長為8。主站讀取從站數(shù)據(jù)時,從DB8數(shù)據(jù)塊中的DBB0字節(jié)開始寫入,DB8塊數(shù)據(jù)先進(jìn)行CRC子程序檢驗其正確性,然后再編程實現(xiàn)分組對應(yīng)到DB7數(shù)據(jù)塊中,從DB7.DBD0字節(jié)定義存儲溫度巡檢儀4#地址數(shù)據(jù),依次是電機(jī)前軸、電機(jī)后軸、泵前軸、泵后軸、定子A相、定子B相、定子C相。依次類推,從DB7.DBD28開始存儲5#地址的7點溫度數(shù)據(jù),一共存儲10臺水泵的溫度參數(shù)。
通過CP343-1以太網(wǎng)模塊將PLC中的數(shù)據(jù)可以全部接入全礦自動化平臺進(jìn)行數(shù)據(jù)共享,上位機(jī)利用西門子公司的wincc6.2進(jìn)行編寫繪制,通過編程實現(xiàn)將DB7中的溫度數(shù)據(jù)全部讀取到wincc中,同時也可以增加其他的故障信息。
結(jié)語
本文通過modbus協(xié)議RS485總線技術(shù)實現(xiàn)了現(xiàn)場溫度的采集,但在現(xiàn)場使用中發(fā)現(xiàn),溫度巡檢儀的地址是固化的,如若巡檢儀損壞后,互換性較差,先已進(jìn)行溫度巡檢儀的升級,使每臺溫度巡檢儀的地址可在0~255之間任意調(diào)整,并將溫度巡檢儀使用的RS485總線模塊更換為MAX485具有光電隔離功能,大大增加了設(shè)備的安全性和穩(wěn)定性。
參考文獻(xiàn)
[1]史運濤,孫德輝,李志軍,等.基于Modbus協(xié)議的通信集成技術(shù)研究[J].化工自動化及儀表,2010,37(4):67-72.
關(guān)鍵詞:PLC,modbus,自動化
1、引言
Modbus 協(xié)議是應(yīng)用于電子控制器上的一種通用語言。通過此協(xié)議,控制器相互之間、控制器經(jīng)由網(wǎng)絡(luò)(例如以太網(wǎng))和其它設(shè)備之間可以通信。它已經(jīng)成為一通用工業(yè)標(biāo)準(zhǔn)。論文參考,modbus。
此協(xié)議定義了一個控制器能認(rèn)識使用的消息結(jié)構(gòu),而不管它們是經(jīng)過何種網(wǎng)絡(luò)進(jìn)行通信的。它描述了一控制器請求訪問其它設(shè)備的過程,如果回應(yīng)來自其它設(shè)備的請求,以及怎樣偵測錯誤并記錄。它制定了消息域格局和內(nèi)容的公共格式。
因此,Modbus協(xié)議具有適用性廣泛,使用靈活,同時還具備實時糾錯等多種優(yōu)點,應(yīng)用在打印適配板與PLC通訊中可以自如的設(shè)定其數(shù)據(jù)格式,并有效防止打印亂碼等打印故障的產(chǎn)生。
2、設(shè)計方法
本設(shè)計采用打印適配板作為主站,S7-200 PLC做從站的方式,由打印適配板主動讀取PLC中的數(shù)據(jù),并根據(jù)數(shù)據(jù)內(nèi)容來決定打印的格式、時間、打印字符內(nèi)容。
2.1 modbus通訊幀的結(jié)構(gòu)
本設(shè)計采用消息幀采用RTU模式,其結(jié)構(gòu)如下:
① 因其消息發(fā)送至少要以3.5個字符時間的停頓間隔開始,所以其起始位為T1-T2-T3-T4。
② 設(shè)備地址標(biāo)示主機(jī)下從站的地址,如可以將從站S7-200地址 設(shè)為16(如右圖)。
③ 功能代碼為該消息所要實現(xiàn)的功能
例如:一從主設(shè)備發(fā)往從設(shè)備的消息要求讀一組保持寄存 器,將產(chǎn)生如下功能代碼:
0 0 0 0 0 0 11 (十六進(jìn)制03H)
對正常回應(yīng),從設(shè)備僅回應(yīng)同樣的功能代碼。對異議回應(yīng),它返回:
1 0 0 0 0 0 11 (十六進(jìn)制83H)
除功能代碼因異議錯誤作了修改外,從設(shè)備將一獨特的代碼放到回應(yīng)消息的數(shù)據(jù)域中,這能告訴主設(shè)備發(fā)生了什么錯誤。
④從主設(shè)備發(fā)給從設(shè)備消息的數(shù)據(jù)域包含附加的信息:從設(shè)備必須用于進(jìn)行執(zhí)行由功能代碼所定義的所為。這包括了象不連續(xù)的寄存器地址,要處理項的數(shù)目,域中實際數(shù)據(jù)字節(jié)數(shù)。
⑤當(dāng)選用RTU模式作字符幀,錯誤檢測域包含一16Bits值(用兩個8位的字符來實現(xiàn))。錯誤檢測域的內(nèi)容是通過對消息內(nèi)容進(jìn)行循環(huán)冗長檢測方法得出的。CRC域附加在消息的最后,添加時先是低字節(jié)然后是高字節(jié)。故CRC的高位字節(jié)是發(fā)送消息的最后一個字節(jié)。
2.2 modbus協(xié)議的通訊周期
查詢消息中的功能代碼告之被選中的從設(shè)備要執(zhí)行何種功能。數(shù)據(jù)段包含了從設(shè)備要執(zhí)行功能的任何附加信息。論文參考,modbus。論文參考,modbus。
如果從設(shè)備產(chǎn)生一正常的回應(yīng),在回應(yīng)消息中的功能代碼是在查詢消息中的功能代碼的回應(yīng)。
2.3 PLC modbus庫初始化的設(shè)置
其中:
Mode: 輸入數(shù)值1將端口0指定給Modbus協(xié)議并啟用協(xié)議;將輸入數(shù)值0指定給PPI,并禁用Modbus協(xié)議。
Addr:S7-200作為從站的地址。論文參考,modbus。
Baud:通訊的波特率。
Parity: 0-無奇偶校驗,1-奇數(shù)奇偶校驗,2-偶數(shù)奇偶校驗。
Delay: 數(shù)通過將指定的毫秒數(shù)增加至標(biāo)準(zhǔn)Modbus訊息超時的方法延長標(biāo)準(zhǔn)Modbus訊息結(jié)束超時條件。
MaxIQ: 參數(shù)將供Modbus地址00xxxx和01xxxx使用的I和Q點數(shù)設(shè)為0至128之間的數(shù)值。數(shù)值0禁用所有向輸入和輸出的讀取。
MaxAI: 參數(shù)將供Modbus地址03xxx使用的字輸入(AI)寄存器數(shù)目設(shè)為0至32之間的數(shù)值。數(shù)值0禁用模擬輸入的讀數(shù)。
MaxHold: 參數(shù)設(shè)定供Modbus地址04xxx使用的V內(nèi)存中的字保持寄存器數(shù)目。
HoldStart:即打印適配板存取V內(nèi)存中保持寄存器的起始地址。設(shè)置為&VB100,而MaxHold為25,所以VB100-VB200將被打印適配板所使用,編程時需避免與其沖突。
2.4 打印適配板的控制
打印適配板會持續(xù)讀取VB100-200中所儲存的信息,以做出其動作判斷。因此,向規(guī)定地址中寫入數(shù)據(jù),就可以控制打印系統(tǒng)的運行。
如將”20”送入VB125,即可啟動打印板的數(shù)據(jù)記錄
VD136,VD140,VD144即為數(shù)據(jù)被打印適配板所讀取的地址。
打印適配板將打印報表的格式固化在打印板中,接受到數(shù)據(jù)采集結(jié)束信號以后,會將本次數(shù)據(jù)儲存,并在接到打印信號以后將其打印在報表的固定位置。論文參考,modbus。
3、結(jié)束語
Modbus工業(yè)協(xié)議因其適用性廣泛、簡單易用,通訊較為可靠等優(yōu)點,在現(xiàn)代自動化設(shè)備與工業(yè)控制領(lǐng)域得到了廣泛的應(yīng)用。而在傳統(tǒng)的PLC數(shù)據(jù)打印方式中,數(shù)據(jù)受到干擾時微打無法判斷接收的是否正確,經(jīng)常造成打印異常,表現(xiàn)為亂碼、微打不打印等故障。論文參考,modbus。采用Modbus協(xié)議以后,就可以有效的避免這些問題的產(chǎn)生,使得需嚴(yán)格數(shù)據(jù)保存的自動化設(shè)備的可靠性得以保證。
參考文獻(xiàn)
[1]SIEMENSSIMATICS7-200可編程序控制器
[2]MODBUSoverseriallinespecificationandimplementationguideV1.0modbus.org
[3]華镕編著從Modbus到透明就緒—施耐德電氣工業(yè)網(wǎng)絡(luò)的協(xié)議、設(shè)計、安裝和應(yīng)用機(jī)械工業(yè)出版社2009
[4]中國國家標(biāo)準(zhǔn)化管理委員會基于Modbus協(xié)議的工業(yè)自動化網(wǎng)絡(luò)規(guī)范中國標(biāo)準(zhǔn)出版社2004