日韩偷拍一区二区,国产香蕉久久精品综合网,亚洲激情五月婷婷,欧美日韩国产不卡

在線客服

modbus協議實用13篇

引論:我們為您整理了13篇modbus協議范文,供您借鑒以豐富您的創作。它們是您寫作時的寶貴資源,期望它們能夠激發您的創作靈感,讓您的文章更具深度。

modbus協議

篇1

當在一個modbus網絡上通信時,此協議決定了每個控制器須要知道它們的設備地址,識別按地址發來的消息,決定要產生何種行動。如果需要回應,控制器將生成反饋信息并用Modbus協議發出。在其它網絡上,包含了Modbus協議的消息轉換為在此網絡上使用的幀或包結構。這種轉換也擴展了根據具體的網絡解決節地址、路由路徑及錯誤檢測的方法。

1.Modbus協議

1.1 Modbus協議族

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

1.2 Modbus網絡上的數據傳輸

Modicon控制器上的標準Modbus端口是使用一個RS232兼容的串行接口,定義了連接器,接線電纜,信號等級,傳輸波特率,和奇偶校驗,控制器可直接或通過調制解調器接入總線(網絡)。控制器通訊使用主從技術而其它設備(從機)應返回對查詢作出的響應,或處理查詢所要求的動作。典型的主機設備應包括主處理器和編程器,典型的從機包括可編程控制器。

主機可對各從機尋址,發出廣播信息,從機返回信息作為對查詢的響應。從機對于主機的廣播查詢,無響應返回Modbus協議報據設備地址,請求功能代碼,發送數據,錯誤校驗碼,建立了主機查詢格式,從機的響應信息也用Modbus協議組織,它包括確認動作的代碼,返回數據和錯誤校驗碼。若在接收信息時出現一個錯誤或從機不能執行要求的動作時,從機會組織一個錯誤信息。并向主機發送作為響應。

1.3 在其它總線上傳輸數據

除標準的Modbus功能外,有些Modicon控制器內置端口或總線適配器,在Modbus+總線上實現通訊或使用網絡適配器,在MAP網絡上通訊。

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

1.4 查詢響應周期

查詢:查詢中的功能代碼為被尋址的從機設備應執行的動作類型。數據字節中包含從機須執行功能的各附加信息,如功能代碼03將查詢從機,并讀保持寄存器。并用寄存器的內容作響應。該數據區必須含有告之從機讀取寄存器的起始地址及數量,錯誤校驗區的一些信息,為從機提供一種校驗方法,以保證信息內容的完整性。

響應:從機正常響應時,響應功能碼是查詢功能碼的應答,數據字節包含從機采集的數據,如寄存器值或狀態。如出現錯誤,則修改功能碼,指明為錯誤響應。并在數據字節中含有一個代碼,來說明錯誤,錯誤檢查區允許主機確認有效的信息內容。

1.5 Modbus協議幀結構

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

2.通信接口模塊開發

Modbus通信接口位于上位機和下位機之間,若要完成Modbus通信,則上位機和下位機必須安裝有能夠實現Modbus協議的硬件和軟件。在系統集成工程中,如果出現通信雙方任何一方不具備Modbus接口的情況,則必須進行底層驅動模塊的開發。

一般下位機一側會出現不匹配,因為下位機系統中包括數據的采集和模數轉換處理等等,那么下位機系統結構包括:數據采集處理模塊、中央處理模塊、通信模塊。

3.Modbus集成工程應用

在系統集成的工程中,Modbus設備與中央監控軟件間的通信是其一部分,其系統結構配置包括根據工程要求選擇系統結構體系,然后選擇Modbus設備;對所有主站和從站進行設置地址是至關重要的一點,Modbus寄存器地址通過0、1、3、4四種類型的前導數字標明四種類型的寄存組,它與數據庫定義軟件組件中數據表有著對應關系,其對應關系是:0xxxxDigital Output;1xxxxDigital Input;3xxxxInput Register;4xxxxHolding Register。

中央軟件平臺中工程的組態和人機界面的開發分為三個步驟:用組態軟件對硬件進行組態,并存入數據庫;在軟件中以圖形畫面的形式開發出友好的人機界面;在主站上執行人機界面,實現對設備的監控。

篇2

1.1本系統主控芯片采用宏晶科技STC89C52單片機,與其它CPU芯片相比,具有顯著特點,加密性強,超低功耗,速度快,可靠性高,驅動能力強,抗靜電和抗干擾能力強。

1.2DS18B20傳感器

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

1.3網絡節點設計

網絡節點結構示意圖

1.4網絡組成

該控制網由PC機和若干分節點組成,PC機主要負責輪詢各分站點數據,發送請求數據包和控制數據包,然后分節點判斷數據包,根據相應的指令通過RS232接口把數據發送給PC機,最大站點數可設50個節點,PC機對采集的數據進行分析處理。

2 控制網絡通訊協議

2.1簡單節點流程示意圖

本控制網采用同一程序,通過面板按鍵設置本機的分節點地址,節點開始上電,CPU開始初始化I/O、串口等模塊,接著根據設置的參數讀取操作站點,從而執行相應的程序并分析數據,數據正確,進行正常顯示,否則PC機根據不同的報警信息發出聲光報警。

簡單節點流程示意圖如下

2.2數據包格式

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

2.2.1請求數據包

本數據包用于PC機向分節點請求數據使用。請求數據包格式如下:長度為4個字節數,首位碼、讀標志、目的地址、數據量均為一個字節數。

2.2.2回送數據

本數據包用于分節點發送PC機所請求的數據,回送的數據包長度可以根據發送的指令而變,根據PC機發送的請求,數據包回送PC機所請求的數據。

回送數據包格式如下:首位碼、地址均為1個字節數,回送數據根據發送指令確定字節數,備用字節、校驗碼為兩個字節數。

2.2.3控制數據包

本數據包主要用于PC機向分節點發送數據使用。控制數據包格式如下:長度為5個字節數,首位碼、寫標志、目的地址均為1個字節數,數據量為2個字節數。

2.2.4協議的實現及應用

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

本協議利用握手通訊方式已經成功地運用到多個冷庫、糧庫監測系統中,不僅簡化了通信程序的設計,而且保證了通信的高效和可靠。下位機負責現場的溫度的采樣和存儲,上位機負責循環呼叫下位機,以了解現場情況是否正常,并且每隔一定時間收集下位機存儲的數據并對數據進行分析管理。

2.3通訊的可靠性

本系統采用主從結構,利用PC機輪詢各節點,能有效解決網絡沖突問題。傳輸數據增加了冗余,并且在所傳送的數據中進行了硬件的循環冗余校驗。

3 結束語

本系統上位機軟件采用Delphi開發,數據庫采用Firbird,上位機設計分為組態部分和監控運行部分,可視化直觀的界面操作,組態方便,可根據分節點所接傳感器數量不同,自由分配通道,利用上位機強大的數據處理能力,進行數據分析和處理,可對各節點進行數據顯示、上下限報警、實時趨勢顯示,具有很大的實際應用價值。

篇3

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

二、硬件結構設計

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

三、軟件功能設計

為了在基于嵌入式的工業儀表內構建一個實時性強、運行穩定的Modbus協議,使用了μC/OS-II作為整個儀表的軟件平臺,其是由Jean J. Labrosse于1992年編寫的一個嵌入式多任務操作系統,憑借其足夠的穩定性和安全性在數十年之間得到了許多機構的標準認證。在μC/OS-II內具體應用的軟功能都是通過系統提供的多個用戶任務來實現。

3.1 Modbus主站設計

實際工業應用中,工業儀表需要向前端傳感設備或其他儀表進行數據交互,以便實時讀取到需要的數據值,儀表內部需要構建一個Modbus主站作為主動發送數據請求命令的客戶端。Modbus主站工作原理如圖2所示。

本設計利用了μC/OS-Ⅱ所提供的系統服務將主站模塊分為三個部分:請求主站服務的用戶任務、主站服務管理任務、串口底層驅動函數。

請求主站服務的用戶任務是指的是那些用戶任務中有調用Modbus主站服務的需求。各個用戶任務通過實際應用發送特定的主站請求命令,并通過操作系統提供的消息隊列進行命令緩沖。

主站系統中的主站管理任務是負責專門管理來自各個請求主站服務的任務的具體請求。該任務也屬于一個用戶任務,只是對請求命令的緩沖隊列進行集中處理。

串口底層的中斷處理實現了串行鏈路上具體的數據發送與接收。

主站服務由請求主站服務的任務發起,各個請求主站服務的任務按優先級順序執行并依次調用主站服務調用函數,該函數完成數據幀的建立與命令的填充最后將緩沖區傳遞給主站管理任務。主站管理任務優先級是低于所有請求主站服務的任務,它將依次處理接收到得數據幀內容,對數據幀進行封裝并交給串口底層驅動實現最終的發送和接收工作。當接收到從站回復或者發生接收超時,主站管理任務將在緩沖區中產生一個標志符通知上層請求任務進行處理。為了發送和接收的實時性考慮,這里將數據幀的校驗和處理工作交給上層請求任務完成。

3.2 Modbus從站設計

為了實現數據互連,后臺上位機或者現場PLC需要實時獲取前端儀表的數據信息。前端儀表內部需要構建一個Modbus從站作為服務器提供前端數據。Modbus從站工作原理如圖3所示。

篇4

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

3.系統程序設計

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

3.1定時器T0的初值

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

3.2CRC校驗

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

篇5

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

2 Modbus協議

Modbus通信協議是美國Modicon公司開發的一種通信協議,它采用Master/Slave方式工作,一個主站可以連接多個從站,從站只能根據主站的請求作出相應的應答。它是一種開放、標準、免收許可費的通信協議。目前該協議已經廣泛應用于自動化控制和測控儀表,并且已經成為我國工業自動化網絡協議規范的國家標準之一。

Modbus協議有2種傳輸模式,即RTU模式和ASCII模式,相對于ASCII模式,RTU模式表達相同的信息需要較少的位數,且在相同通信速率下具有更大的數據流量,因此本系統選用該模式完成設計與實現。

Modbus協議的采用LRC和CRC兩種校驗模式來保證控制命令傳輸無誤。本文采用CRC-16校驗方式,該方式會根據當前發送或接收的命令字節碼,計算對應的2個字節的CRC校驗碼。并將其加到命令字節碼之后一并發送,組合之后的命令字節碼格式為:

系統在實現過程中,考慮到最終將會采用普通的X86系列PC機作為監控終端,而該型機都是big-endian方式做多字節數據存儲,與Modbus協議要求的little-endian剛好相反, CRC的計算結果必須滿足這一要求。本文稍微調整了CRC-16校驗碼的產生方式如下:

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

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

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

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

Step4:重復Step3和4,直到完成8次移位之后,完成命令字節碼中的對一個字節的處理;

Step5:對命令字節碼的下一個字節重復Step2到Step5的處理,直到所有的字節都處理完成為止;

Step6:最終CRC寄存器中的內容就是該條命令字節碼對應的CRC校驗值;

例如,某命令字節數據[ 1 | 15 | 0 25 | 0 12 | 2 | 168 3 | 216 120 ]的含義為:給1號地址設備15號命令(寫多個線圈),從它的25號起始地址開始(0 25),連續寫12個線圈(0 12),寫入內容為命令數據區的1010 1000 0011(168 3),根據命令計算出CRC校驗碼為(216 120)。

3 系統工作原理

本系統采用典型的RS232/485總線將上位機服務器端、上位機客戶端以及各個下位機組成一個工業可控以太網,各下位機選取符合Modbus plus規范的相關設備,便于直接獲取的操作過程中的各種數據信息,并封裝成協議標準進行傳輸和通訊。主操作界面如圖1所示。

系統工作原理框架如下:

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

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

(3)上位機服務器端通過TCP/IP網絡與各個上位機客戶端相連,對多個上位機客戶端的狀態信息進行收集、分析和存檔,并通過主動發送命令的方式給上位機指令,進而通過上位機客戶端給下位機下達控制命令,達到“監視――控制”雙功能。

4 軟件系統設計

上位機服務器通過接收Modbus請求,與上位機客戶端進行交互,并對操作過程實時監控,利用成熟的數據庫管理系統,接收、存儲、處理和備份整個過程中產生的所有數據,為客戶提供服務,并為進一步的數據分析提供歷史依據。上位機服務器端主要功能包括:

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

(2)數據庫管理:該部分模塊選擇成熟的數據庫管理系統SQL Server2005對整個系統運行過程中所需要記錄的所有數據信息就行存儲和管理,為整個系統的運行和監控提供可靠的數據支持;

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

(4)Modbus協議命令:該模塊能夠按照標準的Modbus協議,接收來自上位機客戶端傳送來的Modbus請求,完成數據采集、數據分析和數據存儲工作,是系統工作狀態顯示實現的基礎;

(5)安全警報功能:授油工作本身是具備一定危險性的工作,安全責任事故問題必須引起足夠的重視。可以根據各種系統狀況進行報警處理,保證系統工作狀態安全可靠,避免業務事故的發生,并且具備自動報警信息記錄功能,收集歷史上曾經出現的安全事故信息,為安全人員分析發現安全事故規律,查找安全隱患提供數據支撐。

上位機客戶端能有效地按照預定訂單號自動完成裝車作業,或者在操作員的控制下,進行控制參數設置,定量控制、數據采集、業務受理和報表打印等具體業務。上位機客戶端主要功能包括:

(1)實時授油監視:該模塊負責實時動畫模擬顯示整個下位機控制分組內所有鶴管的出油狀況,及相關關鍵參數數值顯示。例如:發油訂單號、車號、油品類型、參數設定、誤差范圍等等;

(2)強制發油控制:該模塊在特殊情況下,可以人為指定操作指令,以取代自動發油過程,控制啟動發油、暫停發油、恢復發油、強制結束等方式來進行特殊操作,擴展控制功能,更加適應實際操作的變化;

(3)業務計劃管理:該模塊下,客戶可以根據預約過的訂單號,自動完成裝車過程。也可以在沒有訂單號的情況下,有操作人員生成新的裝車業務,并進行結算;

(4)業務查詢:該模塊按照操作員和客戶要求的方式(諸如進行訂單號、裝車時間、油品類型、裝車單位、操作員編號等等)進行多種關鍵字查詢和統計功能,并且自動生成相關聯報表。

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

5 結論

本設計采用OOAD思想,用UNL建模,并使用Borland C++作為開發工具,規范化的設計和編程過程,以及大量集成的成熟控件足以支撐本軟件系統的快速開發。結果表明,軟件系統既可以對標準Modbus功能碼進行調試,也可以對自定義功能碼進行設置,還可以實時監測和控制下位機狀態,并結合數據庫功能記錄所有關鍵操作和核心設備配置參數信息,保障差錯恢復。系統運行穩定可靠,使用簡明方便,很好地滿足項目要求。

[參考文獻]

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

[2] 張克涵,張呼和,顧李馮.VC環境下的電機狀態監測軟件設計[J].測控技術2012年第31卷第2期

[3] 呂國芳,唐海龍,李進.基于ModbusRTU的串口調試軟件的實現[J].計算機技術與發展 2009年第19卷第9期

[4] 袁輝,李延香.基于Modbus通訊協議數據采集系統的設計[J].科技咨詢導報 2007 No.19

[5] 陳柏金.通過串行口訪問modbus現場控制網絡[J].微計算機信息 2003.19(1)

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

[7] 徐濤,閆科.基于Modbus協議的串行接口實現與DCS通訊[J].工業控制計算機 2002年4月

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

[9] 房傳禮,李建華.基于Modbus協議的大屏幕在線監視系統設計[J].自動化與儀表 2010年7月

[10] 盧文俊,冷杉.基于Modbus協議的控制器遠程監控系統[J].電力自動化設備 2003年第23卷第6期

[11] 甑君,衛強,于耀.應用多線程技術實現串行通信與信號采集識別的同步[J].計算機工程 2003(10)196-197

[12] 李俊,徐紅兵.基于Modbus協議的汽輪機保護系統通訊設計[J].自動化與儀表 2006年7月

篇6

在生產和生活中監控系統起到的作用越來重要,如在交通、銀行、電力等部門對監控系統的要求越來越越高、需求也在不斷增大。在遠程監控系統中,作為一種種分布式控制系統和工業通信協議Modbus協議在工業領域得到很好的應用,本文針對其含義、系統設計構架和系統性能進行詳細的闡述。

二、淺析Modbus協議

(1)Modbus協議開發的Modbus協議是一種分布式控制系統和工業通信協議,在分布式控制系統和工業設備通訊中得到很好的應用,采用RS485方式作為物理接口。控制器經由網絡、控制器相互之間、通訊協議等可以通訊,在工業生產中已經成為通用標準,可以連接不同的控制設備成為工業網絡,實現集中控制和監控。

(2)作為一種主從網絡Modbus網絡允許多個或一個從機和一個主機進行通信,其中應答報文和命令報文是相對應的關系,也就是采用命令/應答方式。主機發出命令報文,當收到主機發來的報文的時候,相應的應答報文發出對命令報文進行響應。每個從機在網絡中都擁有一個唯一的地址,訪問的從機地址包含在主機發出的命令中,對相應的命令做出應答的是具有該地址的從機。

(3)傳輸模式ASCII和RTU被應用在Modbus協議中。沒有奇偶校驗位、2個停位、8個數據為是RTU的傳輸格式。依靠接收字符間應用的時間RTU接收設備對一個幀的開始進行判斷,在時間為3個半字符之后沒有完成幀或沒有新的字符,該幀會被接收設備放棄,新幀的開始以設下一個字符為標準。1字節的信息在RTU模式中被看作一個8為字符進行發送,

而作為兩個ASCII字符在ASCII模式中被發送。

三、系統設計構架

數據采集的RTU設備、數據交互的監控設備、遠程監控的服務器是這個系統硬件的主要組成部分。應用串口通信RTU設備與監控設備之間通信并使Modbus TCP協議的轉換實現,應用TCP套接字技術服務器與監控設備之間進行通信并使Modbus TCP協議的轉換實現。

(1)設計協議轉換

在Modbus TCP協議中進行通信時候,是經過何種網絡不需要考慮,因為它定義了一個消息結構體,并且對消息域內容和格局的公共公式進行了制定。在通信的時候這個協議對每個RTU設備的地址進行定義,對按地址發來的信息進行識別,并且對即將產生的行動進行決定。在需要回應的情況下,反饋信息將在RTU設備中生成,采用Modbus TCP協議發出信息。相互轉換Modbus TCP協議與Modbus協議的時候,不需改變RTU,只需相應的轉換MBAP報文頭。服務器的請求被接收到的時候,MBAP報文頭被Modbus TCP協議去掉并且被出送到RTU設備中。按照接收到的命令RTU設備進行數據讀取,而且對CRC進行差錯校驗;RTU設備的相應被接收到的時候,相應的MBAP報文頭被加在Modbus TCP協議上,CRC差錯校驗被去除并且傳送回服務器。通過這樣的過程實現兩個協議的相互轉換。

(2)實現設備參數讀寫

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

四、分析系統性能

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

五、結束語

通過上述淺析Modbus協議、系統設計構架、分析系統性能,可以得知,基于內嵌Modbus協議的遠程監控系統,可以實現設備參數讀寫和套接字通信,使處理、交換、傳遞信息的速度加快。總之,這一系統具有很多優勢,需要我們加大這這方面的研究和應用。

參考文獻

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

[2]任子暉,付華科,杜艷,等.基于GPS/GPRS的校園定位監控系統設計[J].徐州工程學院學報(自然科學版),2011,26(3):7-10.

[3]王防修,周康.通過哈夫曼編碼實現文件的壓縮與解壓[J].武漢工業學院學報,2008,27(4):46-49.

[4]盧智嘉,王俊社,李玉萍.基于Modbus遠程監控系統的通信研究[J].微計算機信息(測控自動化),2008.24:157-158.

篇7

水位自動監控系統主要對轄區范圍內各水閘監控點的水位高度,水l開關狀況,實時圖像進行遠程的集中監控,告警以及水文信息歷史記錄等功能。替代了原有的人員分點巡視的工作方式,實現無人守值的24小時不間斷監控,有更高的安全性。

2 監控中心傳輸網絡設計

水位自動監控系統以PLC與全天候高清數字圖像采集系統相集合,通過網絡化控制技術,于集中監控系統中實時收集所有水閘監控點的實時信息,以及實現水閘的遠程控制。系統分為兩大部分,第一部分為分布于每一個水閘監控點內的現場監控模組;第二部分為位于中控室的集中控制系統。集中控制系統由水閘集中監控軟件,歷史數據存儲系統,實時多屏監控系統,聲光告警裝置,不間斷電源UPS供電系統等組成

3 平臺軟件設計

現場監控模組由PLC控制系統,全天候高清數字圖像采集系統,水閘閥控裝置,水位檢測器,網絡模組,UPS供電系統等組成。建立自動檢測水位項目工程,保證水位正常。水利自動監管系統實現24小時自動監控,是以減少人力投入為基礎,促進水位自動化管理體系,使用PLC與C語言程序結合的控制系統。

考核指標:

(1)水位檢測:通過現場多個傳感器檢測現場水位波動情況,獲取實時水位信息,反映至中控室的集中控制系統。

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

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

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

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

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

(3)記錄入檔。可通過以太網把數據發送到計算機設備,以方便入檔。通過全天候高清數字圖像采集系統事件記錄功能隨時可翻看過去發生事件以及每個測試點水位的變化情況。

篇8

1、引言

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

2、硬件配置

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

變頻器控制要求:

變頻器分現場和遠程兩種控制模式,現場控制柜設置三位置模式選擇開關,分別為停止、本控和遠程。在本控模式下啟動/停止命令由現場開關觸發數字輸入DI1控制,頻率由現場的電位器改變模擬輸入AI1的輸入電壓進行調節。當選擇遠程模式時,數字輸入DI2接通,通知PLC現變頻器已經處于遠程控制模式。為能夠實現以上功能并在人機界面能夠觀察到變頻器的運行頻率和通過模擬輸入AI2輸入的實際流量,還需要對變頻器其他部分參數進行設置,見表1。

3、程序設計

3.1 通訊內容

主工作站輪流發送請求報文到每個變頻器從工作站,隨之每個從工作站產生響應報文。PLC主工作站分別對每個變頻器從工作站進行如下操作:

(1)對每個變頻器的輸出線圈1~3的狀態進行查詢;

(2)查詢變頻器狀態寄存器40004狀態字、40005實際值、40006實際值和40007實際值。40005~40007數據值對應于表1中變頻器參數5310、5311和5312中的實際值。

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

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

對一個變頻器的數據全部讀寫完成后,開始對下一站號變頻器的數據進行讀寫。當所有變頻器的數據讀寫完成后,主工作站重新開始對最小站號變頻器的數據進行讀寫。數據的傳輸及接受采用PLC自由通訊口模式進行,報文按照modbus的協議組織。

3.2 通訊格式

MODBUS請求報文格式如表2。

因在S7-200PLC發送指令XMT中,發送緩沖器的第一個字節指定的是數據傳輸的字節數,從第二個字節以后的數據為需要發送的數據。因此,結合MODBUS請求報文格式,PLC發送數據的格式如表3。

在整個網絡通信過程中,主工作站輪流發送請求報文到每個從工作站,隨之每個從工作站必須產生響應報文返回到主工作站。當主工作站向從工作站發送請求報文和接受從工作站返回的響應報文時,在主工作站儲存區開辟了發送緩沖區和接受緩沖區。主工作站向從工作站發送請求報文時,首先對相應從工作站輸出緩沖區的數據進行CRC運算生成校驗碼,并將校驗碼疊加在輸出緩沖區的數據之后再傳送到發送緩沖區,然后再由發送指令發出。建立一個遠程循環結束標志位,當響應報文全部接受完成,置該位為ON。主工作站在接受從工作站的響應報文時,先把響應報文輸入到接受緩沖區,再把接受緩沖區中的數據傳送到輸入緩沖區。為此,在主工作站中要留有兩個數據存儲區,一個作為報文請求(輸出緩沖區),另一個作為報文響應(輸入緩沖區)。

在MODBUS RTU通訊協議中都必須要求有CRC循環冗余校驗。CRC循環冗余校驗為兩個字節,附加在報文后面的CRC的值由發送設備計算,當放置CRC 值于報文時,高低字節必須交換。首先發送低位字節,然后再發送高位字節。故此在發送緩沖區中的數據要比輸出緩沖區的數據多兩個CRC循環冗余校驗字節。接收設備在接收報文時重新計算CRC的值,并將計算結果于實際接收到的CRC值相比較。如果兩個值不相等,則傳送的數據為錯誤。

3.3 程序描述

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

將輸出緩沖區指針中指出的地址為起始地址的12個字節通過塊傳送命令傳送到發送緩沖區單元中。并復位遠程循環結束標志位。

對發送緩沖區中的報文進行運算生成CRC,交換CRC 寄存器中的高低字節,并將交換完成的CRC 寄存器疊加到發送緩沖區中。

啟動定時中斷和發送中斷,并通過發送指令將發送緩沖區中的請求報文發送。

建立跳轉入口,標號1。

若循環未結束,跳轉到標號1。程序不向下執行,直至遠程循環結束,標志位為ON。

遠程I/O更新完成,將接受的報文通過塊傳送命令傳送到接受緩沖區指針指出的接受緩沖區中。

修改發送緩沖區和接受緩沖區指針值,指向下一個輸出和輸入緩沖區字節地址。將請求報文的剩余數目減1。

當請求報文的剩余數目為零時,重新設置請求報文的剩余數目為4,將從工作站的查詢剩余數目減1。

當工作站的查詢剩余數目為零時,重新設置從工作站的查詢剩余數目為4,為輸出和輸入緩沖區的數據地址重新建立間接尋址指針。

INT_0中斷程序:在接受報文超時情況下,禁止接受中斷和接受定時中斷,置遠程循環結束標志位為ON。

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

INT_10中斷程序:禁止發送完成中斷,啟動接受定時中斷INT_0和接受數據中斷程序INT_11。

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

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

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

INT_14中斷程序:將接受到的字符裝入接受字符指針指出地址中,并修改地址指針值和將將累加器AC1數值減一。若累加器AC1的數值為零。則關閉字符接受中斷和定時中斷,并將遠程循環結束標志位置ON。

4、結語

該系統自投入在線運行以來,系統調節迅速且運行穩定,并取得了良好的經濟效果,在助劑添加中具有較高的推廣價值。

參考文獻

[1]殷洪義.可編程序控制器選擇、設計與維護.機械工業出版社,2002年.

篇9

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

一、系統結構

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

圖1 系統電路圖

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

二、如何將MT6070iH設定成Modbus裝置

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

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

圖2 將MT6070iH設定成Modbus裝置

當接口選擇使用RS485時,需選擇使用的連接端口(COM1~COM3),并設定正確的通訊參數及站號。這里選擇COM1(9600,N,8,1),站號設定為1。

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

三、Modbus通信協議介紹

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

字格式(串行數據) 10位二進制

起始位 1位

數據位 8位

奇偶校驗位 無

停止位 1位

Modbus協議可支持ASCII碼或二進制格式的數據傳輸。ACSII碼方式下每一個字節數據分兩個字節傳送,二進制方式下用一個字節傳送,為了減少數據傳輸量,一般選二進制數據方式。各個區允許發送的字節均為16進制的0~9,A~F。二進制信息幀標準結構為:

初始結構 ≥4字節的時間

地址碼 1字節

功能碼 1字節

數據區 N字節

錯誤校驗 16位CRC碼

結束結構 ≥4字節的時間

二進制模式中,信息開始至少需要3.5個字符的靜止時間,依據使用的波特率,很容易計算這個靜止時間。發送完最后一個字符后,也有一個至少3.5個字符的靜止時間,然后才能發送一個新的信息。網絡上的設備連續監測網絡上的信息,包括靜止時間。

四、通信程序的開發

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

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

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

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

void Initial(void)

{

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

TMOD=0x20; //定時器1方式2

TL1=0xFd; //波特率設為9600

TH1=0xFd; //存儲定時器初始值

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

TR1=1; //啟動定時器

}

2. 向MT6070iH觸摸屏LW的0地址寫入數據

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

void DateWrite(void)

{

ES=0; //關中斷

unsigned int a;

unsigned int crc;

inData[0]=1; //站號

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

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

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

inData[4]=0; //寄存器個數高位

inData[5]=1; //寄存器個數低位

inData[6]=2; //字節數

inData[7]=0x3A; //要寫入數據高位

inData[8]=0x4B; //要寫入數據低位

crc=0xffff;

crc=calccrc(9,&inData[0]); //根據前9個字節計算CRC值

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

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

for(a=0;a<11;a++) //共發送11個字節

{

SBUF=inData[a]; //發送數據

while(!TI);

TI=0;

}

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

}

3. 從MT6070iH觸摸屏LW的0地址讀取數據

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

void DateWrite(void)

{

ES=0; //關中斷

unsigned int a;

unsigned int crc;

inData[0]=1; //站號

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

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

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

inData[4]=0; //寄存器個數高位

inData[5]=1; //寄存器個數低位

crc=0xffff;

crc=calccrc(6,&inData[0]); //根據前6個字節計算CRC值

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

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

for(a=0;a<8;a++) //共發送8個字節

{

SBUF=inData[a]; //發送數據

while(!TI);

TI=0;

}

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

}

發送完讀取數據的信息,一旦MT6070iH觸摸屏接收到該信息,經過CRC校驗,如果沒有錯誤,就會把LW的0地址數據發送給單片機,共7個字節,數據格式如下:

字節 數據段名稱

1 站號

2 功能碼

3 讀取字節數

4 寄存器數據高位

5 寄存器數據低位

6 CRC校驗碼低位

7 CRC校驗碼高位

單片機接收完這7個字節,根據站號、功能碼及CRC校驗判斷是否正確,如果接收正確,則第4個字節和第5個字節的值就是所需要的MT6070iH觸摸屏LW的0地址的數據。

篇10

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

1 需求分析

需求分析是一個項目的開端,也是項目建設的基石。在以往建設失敗的項目中,80%是由于需求分析的不明確而造成的[2]。因此一個項目成功的關鍵因素之一,就是對需求分析的把握程度。渦輪流量計是運用最為廣泛。目前正在進行開發的是智能渦輪流量計轉換器,具備流量系數的分段修正、可選的溫度壓力補償等功能,需要設置的參數和需要讀取的過程變量比前幾代都有明顯的提高。因此亟需采用現場總線的方式對儀表進行訪問。

根據之前的預研,確定采用RS-485總線加Modbus通信協議作為智能流量計轉換器的通信方式。使程序實現最基本的Modbus通信功能:波特率固定為19200bps,校驗為偶校驗,能實現最基本的寄存器讀寫訪問,如Modbus的03號功能Read Holding Register、04號功能Read Input Register和06號功能Write Single Register[3]。

2 概要設計

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

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

3 詳細設計

本儀表采用MAXIM公司的485接口芯片MAX485作為物理層芯片,并連接到ATmega168的通用串行口進行數據收發。下圖為整個儀表原型機的電路圖:

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

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

3.1數據鏈路層軟件

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

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

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

CRC校驗的程序如圖4所示。

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

4 調試與測試

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

4.1 測試平臺簡介

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

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

4.2 硬件電路調試

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

4.3 系統測試

在Modbus應用層協議處理的代碼編寫完成后,整個系統就初具雛形了,能進入系統測試階段了。系統測試將從正常數據處理、異常數據處理和大數據量處理這三個方面來進行。

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

4.4 異常情況處理

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

以本系統為例,可能出現的異常情況有:

1)Modbus發送了錯誤的數據包,如錯誤的功能碼或寄存器地址等;

2)數據包奇偶校驗錯或CRC出錯。

第一項可以通過Modbus Tester軟件來完成,通過設置無效的功能碼(如讀線圈的功能本系統沒有實現,可以作為無效的功能碼來進行測試)和錯誤的寄存器地址或長度,應當能看到儀表返回Modbus的異常響應數據包。

第二項的奇偶校驗部分,也是通過Modbus Tester來實現的。通過設置通信參數,將校驗位設為“奇校驗”與“無校驗”后,儀表不應再有返回數據包。CRC出錯部分,通過串口調試軟件進行。先通過串口調試軟件發送一個正常的數據包請求,此時儀表應能有響應。然后修改其中某一個數據,使得CRC校驗失效,此時再發送數據包,儀表應不響應。再將數據改回原值后,儀表應能繼續正常響應。

5 結束語

經過幾個月的開發,從測試結果來看,目前基本達到了設計要求,實現了儀表以Modbus通信協議進行數據的傳輸,而不足之處在于目前僅實現了固定的波特率和校驗位,而以后應該改成可設置;目前也沒有考慮程序占用CPU時間,而最終的流量計轉換器實現中,需要考慮整個系統的中斷響應時間和執行效率等,從而真正實現智能流量計在工業生產過程中的通信應用。

參考文獻:

[1] 陽憲惠.現場總線技術及其應用[M].北京:清華大學出版社,1999.

[2] 張海藩.軟件工程導論[M]. 4版.北京:清華大學出版社,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.前言

錢家營礦的涌水量比較大,共設置了3個水平的泵房,伴隨著全自動化礦井的建設,需要對-600水泵房和-850水泵房進行升級改造,水泵和電機的溫度參數保證著水泵的安全運行,每個水泵房共設置10臺排水泵,每臺水泵通過YBD-200溫度巡檢儀進行溫度采集,該儀表采用的是modbus協議通過RS485總線接口傳輸到PLC,經過PLC處理,傳輸到地面上位機實時顯示。

1.溫度巡檢儀通信協議

YBD200型儀表采用的是標準modbus協議,RTU傳輸模式。Modbus協議是一種主-從通信協議。任何時刻只有一個設備能夠在線路上進行發送。由主站點管理信息交換,且只有它能發起。它會相繼對從站進行輪詢。除非被主站批準,否則任何從站都不能發送消息。從站之間不能進行直接通信。協議幀中不包含任何消息報頭字節或消息字節結束符。

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

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

2.讀取寄存器

主站請求(表2):

從站響應(表3):

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

3.硬件組成和接線

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

4. PLC程序的編寫

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

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

通過CP343-1以太網模塊將PLC中的數據可以全部接入全礦自動化平臺進行數據共享,上位機利用西門子公司的wincc6.2進行編寫繪制,通過編程實現將DB7中的溫度數據全部讀取到wincc中,同時也可以增加其他的故障信息。

結語

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

參考文獻

篇12

1概述

Modbus協議最初由Modicon公司開發出來,在1979年末該公司成為施耐德自動化部門的一部分,現在Modbus已經是工業領域全球最流行的協議。此協議支持傳統的RS-232、RS-422、RS-485和以太網設備。在我國,Modbus已經成為國家標準GB/T19582-2008。據不完全統計:截止到2007年,Modbus的節點安裝數量已經超過了1000萬個。

Intouch軟件是由美國wonderware公司開發的過程可視化組態軟件,其功能強大、易用性好,市場占有率高,結合其他的軟件,如IO Server和D/A Server,可以完成許多工業項目。

通過水廠泵站案例:一種基于Intouch和Modbus協議的監控系統,上位機采用安裝有Intouch軟件的工控機,下位機采用AB系列LOGIX5000的PLC系統,并通過MVI56-MCM通訊模塊,和現場儀表構架了完整的通訊鏈路,系統開發方便,擴展性和穩定性好。

2 Modbus協議概述

當在網絡上通信時,Modbus協議決定了每個控制器須要知道它們的設備地址,識別按地址發來的消息,決定要產生何種行動。如果需要回應,控制器將生成應答并使用Modbus協議發送給詢問方。標準的Modbus口是使用一RS-232C兼容串行接口,它定義了連接口的針腳、電纜、信號位、傳輸波特率、奇偶校驗。控制器能直接或經由Modem組網。

Modbus協議測試軟件:

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

2.1 Modscan軟件及設置

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

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

2.2 Modsim軟件及設置

Modsim的界面和設置基本上和Modscan相同,所不同的是Modscan軟件用于電腦模仿上位機環境和儀表進行連接,Modsim軟件用于電腦模擬儀表環境和PLC系統進行連接,具體的設置就不再一一敘說了。

3 MVI56-MCM模塊的配置

3.1 硬件配置

MVI56-MCM模塊屬于基于AB公司LOGIX5000系列PLC的第三方通訊模塊,主要功能是可以支持LOGIX5000系列PLC讀寫基于標準MODBUS協議下的儀表通訊。通訊模塊MVI56-MCM是Modbus網絡和AB PLC之間的一個網關。處理器的數據傳送異步于Modbus網絡上的數據活動。模塊內部具有5000個字的寄存器,用于處理器和Modbus網絡之間的數據交換,MVI56-MCM模塊共有3個端口P1、P2、P3:

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

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

3.2 MCM模塊工作方式

MODBUS從站端口驅動,從ControlLogix處理器接收設置信息,用這些信息設置串口,并且定義從站節點特征。然后主站設備向模塊節點地址發送讀或寫的命令,端口驅動在接收前進行驗證。一旦命令被接收,數據立即傳輸到從模塊的內部數據庫;如果是讀命令,數據從數據庫中讀出并創建相應信息;如果是寫命令,數據直接寫入到數據庫中并創建相應信息。當處理過程結束后,模塊相應信息到主站。在狀態數據庫中計數器使梯形邏輯圖對從站的狀態進行判斷。

3.3軟件配置

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

1)以17.0版本樣例程序為例,在Monitor Tags模式下,點擊MCM,MCM.CONFIG.ModDef中,分別設置MCM.CONFIG.ModDef.WriteStartReg(寫儀表的首地址),MCM.CONFIG.ModDef.WriteRegCnt(寫儀表的連續位數),MCM.CONFIG.ModDef.ReadStartReg(讀儀表的首地址),MCM.CONFIG.ModDef.ReadRegCnt(讀儀表的連續位數),注意地址不能重復。

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

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

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

4 應用實例

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

要注意的是,MVI56-MCM光盤自帶軟件,要結合LOGIX5000版本的不同,采用相應版本的樣本程序,這樣能保證和PLC的通訊正常。另外MVI56-MCM模塊的接口為232接口或485接口,如果通訊電纜有室外,最好室外部分通過光纖連接,室內通過光模轉換成為相應的232或485信號,這樣可以去除雷擊對信號線路的影響,甚至會導致MVI56-MCM模塊故障。

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

參考文獻

[1]任勝杰.電氣控制與PLC系統. 機械工業出版社, 2013.

篇13

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

基于此控制系統中的不足,本文對基于MODBUS協議的PLC與RFID電子標簽通信方式進行了研究。MODBUS協議是目前工業中普遍使用的通信標準,該協議的可靠性進過了實踐驗證,其輪詢工作方式不僅可以避免通信過程中數據丟失情況的發生,同時也便于該技術在定位點距離更密集,定位點更多情況下的應用,使該系統的控制更可靠,通用性更強。

計算技術與自動化2013年6月

第32卷第2期嚴政新等:基于MODBUS協議的PLC與RFID電子標簽通信方式的研究

2通信方式總體方案設計

PLC與RFID電子標簽通信方式原理:在RFID電子標簽中移植MODBUS協議,PLC通過MODBUS協議讀取RFID電子標簽的狀態,并通過RS485接口與PLC進行數據傳輸。

3.1MODBUS總線協議

MODBUS總線協議是應用于電子控制器上的一種通用語言。MODBUS協議[9]完全公開、實現簡單、硬件要求低、可靠性好等特點,可使不同廠商生產的控制設備連成工業網絡,進行集中監控,所以在工業控制領域中得到了廣泛應用[2]。

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

3.2MODBUS協議在MSP430單片機中的移植

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

4PLC與RFID電子標簽通信機制

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

5實驗結果

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

6結束語

本文研究的基于MODBUS協議的PLC與RFID電子標簽的通信方式,運用到列車自動裝卸系統中,不僅規范了系統的通信協議,而且解決了通信過程中數據丟失和系統通用性等問題。輪詢機制可以實現數據后臺處理,通過修改相關參數來完成系統的修正工作,相當大的提高了系統調試的方便性,是系統能更有效地實現罐車的準確定位和自動裝卸。

參考文獻

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

[2]張錚,劉曉偉.基于PLC的MODBUS通信協議的實現[J].湖北工業大學學報,2010,25(4):20-22.

[3]孟華,王鵬達.基于MODBUS協議的觸摸屏與PIC單片機的通信實現[J].儀表技術與傳感器,2009,10:58-61.

[4]謝楷,趙建.MSP430系列單片機系統工程設計與實踐[M].北京:機械工業出版社,2009.

[5]胡大可.MSP430系列單片機C語言程序設計與開發[M].北京:北京航空航天大學出版社,2001.

[6]舒凱.基于MODBUS-RTU協議的PLC多路數據采集系統[J].水電自動化與大壩監測,2008,32(2):66-69.

[7]張琦,張英.PC機與MSP430單片機串行通信的實現方法[J].中國工程機械學報,2007,5(1):22-25.

主站蜘蛛池模板: 临武县| 老河口市| 宜黄县| 龙川县| 无棣县| 通州区| 大余县| 开远市| 昭苏县| 万州区| 绍兴市| 资中县| 孟津县| 陵川县| 枣阳市| 徐水县| 敦化市| 开化县| 临夏县| 北川| 西乌珠穆沁旗| 赤水市| 密云县| 冕宁县| 天气| 岐山县| 东平县| 青州市| 安龙县| 龙江县| 牟定县| 会同县| 涞源县| 岳西县| 叶城县| 本溪| 曲阳县| 长岭县| 江津市| 义马市| 余江县|