【正文】
7 software, using Modbus, slave station program do realize Modbus functions slave station accept inspection。傳統(tǒng)的工業(yè)控制軟件開發(fā)中出現(xiàn)的另一個主要問題是軟件的重復(fù)開打,軟件不能夠復(fù)用,資源不能共享,造成大量的人力和物理資源的浪費。然而,子站使采用不同開發(fā)平臺和不用通訊協(xié)議組成的異構(gòu)系統(tǒng),可能由于不同的廠家和個位開發(fā)。目前這方面的協(xié)議比較多,MODBUS就是其中一種。有用FPGA實現(xiàn)的,ModBus協(xié)議的FPGA功能設(shè)計采用自頂向下的設(shè)計方法,根據(jù)功能要求先設(shè)計出由若干個功能模塊組成的頂層原理框圖,再把各個功能模塊細化為子模塊,對較復(fù)雜的把子模塊繼續(xù)劃分成下級子模塊,但是FPGA是門級編程,編寫速度不快,它是基于SRAM編程的,其編程信息需要存放在外部存儲器盛,需外部存儲器芯片,使用方法復(fù)雜,保密性差。 本文的組織結(jié)構(gòu)本文介紹了Modbus協(xié)議原理,STEP7軟件如何實現(xiàn)CP430做Modbus從站,并得出仿真結(jié)果。介紹Modbus協(xié)議規(guī)范,協(xié)議報文結(jié)構(gòu)、兩種傳輸模式的消息幀結(jié)構(gòu),功能定義,糾錯方法。繪制出整個程序運行的流程圖。通過此協(xié)議,控制器相互之間、控制器經(jīng)由網(wǎng)絡(luò)(例如以太網(wǎng))和其它設(shè)備之間可以通信。它描述了一控制器請求訪問其它設(shè)備的過程,如果回應(yīng)來自其它設(shè)備的請求,以及怎樣偵測錯誤并記錄。在其它網(wǎng)絡(luò)上, 包含了Modbus 協(xié)議的消息轉(zhuǎn)換為在此網(wǎng)絡(luò)上使用的幀或包結(jié)構(gòu)。 控制器通信使用主—從技術(shù),即僅一設(shè)備(主設(shè)備)能初始化傳輸(查詢)。 主設(shè)備可單獨和從設(shè)備通信,也能以廣播方式和所有從設(shè)備通信。如果在消息接收過程中發(fā)生一錯誤,或從設(shè)備不能執(zhí)行其命令,從設(shè)備將建立一錯誤消息并把它作為回應(yīng)發(fā)送出去。 在消息位,Modbus 協(xié)議仍提供了主—從原則,盡管網(wǎng)絡(luò)通信方法是“對等”。例如功能代碼03是要求從設(shè)備讀保持寄存器并返回它們的內(nèi)容。數(shù)據(jù)段包括了從設(shè)備收集的數(shù)據(jù):象寄存器值或狀態(tài)。這是電源上電后的初始狀態(tài)。l 如果子節(jié)點在接收到的幀中檢測到錯誤, 則沒有響應(yīng)返回到主節(jié)點。特定總線或網(wǎng)絡(luò)上的MODBUS協(xié)議映射能夠在應(yīng)用數(shù)據(jù)單元(ADU)上引入一些附加域。用一個字節(jié)編碼MODBUS數(shù)據(jù)單元的功能碼域。從客戶機向服務(wù)器設(shè)備發(fā)送的報文數(shù)據(jù)域包括附加信息,服務(wù)器使用這個信息執(zhí)行功能碼定義的操作。如果在一個正確接收的MODBUS ADU中,不出現(xiàn)與請求MODBUS功能有關(guān)的差錯,那么服務(wù)器至客戶機的響應(yīng)數(shù)據(jù)域包括請求數(shù)據(jù)。對于一個正常響應(yīng)來說,服務(wù)器僅對原始功能碼響應(yīng)。這種方式的主要優(yōu)點是:在同樣的波特率下,可比ASCII方式傳送更多的數(shù)據(jù)。這使設(shè)備可以在報文的開始接收新幀,并且知道何時報文結(jié)束。一個報文必須以一個‘冒號’ ( : ) (ASCII 十六進制3A )起始,以‘回車換行’ (CR LF) 對(ASCII十六進制0D 和0A) 結(jié)束。報文中字符間的時間間隔可以達一秒。如果在一個報文的接收過程中收到該字符,則當前地報文被認為不完整并被丟棄。為了減少接收處理時間,地址域可以在一接到就分析,而不需要等到整個幀結(jié)束。LRC值由傳輸設(shè)備來計算并放到消息幀中,接收設(shè)備在接收消息的過程中計算LRC,并將它和接收到消息中LRC域中的值比較,如果兩值不等,說明有錯誤。 /* LRC 要處理的字節(jié)的數(shù)量*/ { unsigned char uchLRC = 0 。它們是: (1)公共功能碼 l l 是較好地被定義的功能碼, l l 保證是唯一的, l l MODBUS組織可改變的, l l 公開證明的, l l 具有可用的一致性測試, l l MB IETF RFC中證明的,l l 包含已被定義的公共指配功能碼和未來使用的未指配保留供功能碼。(3)保留功能碼 l 一些公司對傳統(tǒng)產(chǎn)品通常使用的功能碼,并且對公共使用是無效的功能 功能碼定義表ModBus網(wǎng)絡(luò)是一個工業(yè)通信系統(tǒng),由帶智能終端的可編程序控制器和計算機通過公用線路或局部專用線路連接而成。 表21 功能碼定義表功能碼名稱 作用01讀取線圈狀態(tài)取得一組邏輯線圈的當前狀態(tài)(ON/OFF)02讀取輸入狀態(tài)取得一組開關(guān)輸入的當前狀態(tài)(ON/OFF)03讀取保存寄存器在一個或多個保持寄存器中取得當前的二進制符04讀取輸入寄存器在一個或多個輸入寄存器中取得當前的二進制值05設(shè)置單線圈強制一個邏輯線圈的通斷狀態(tài)06預(yù)設(shè)單寄存器把具體二進制值裝入一個保持寄存器07讀取異常狀態(tài)取得8個內(nèi)部線圈的通斷狀態(tài),這8個線圈的地址由控制器決定,用戶邏輯可以將這些線圈定義,以說明從機狀態(tài),短報文適宜于迅速讀取狀態(tài)08回送診斷校驗把診斷校驗報文送從機,以對通信處理進行評鑒09編程(只用于484)使主機模擬編程器作用,修改PC從機邏輯10控詢(只用于484)可使主機與一臺正在執(zhí)行程序任務(wù)從機通信。采用這個系統(tǒng),各PC可以和中心主機交換信息而不影響各PC執(zhí)行本身的控制任務(wù)。l l 如果由于通信錯誤,服務(wù)器沒有接收到請求,那么不能返回響應(yīng)。l l 如果服務(wù)器接收到無通信錯誤的請求,但不能處理這個請求(例如,如果請求讀一個不存在的輸出或寄存器),服務(wù)器將返回一個異常響應(yīng),通知用戶錯誤的本質(zhì)特性。這使得異常響應(yīng)中的功能碼值比正常響應(yīng)中的功能碼值高十六進制80。這就定義了產(chǎn)生異常的服務(wù)器狀態(tài)。圖31 項目新建插入站點選中插入的站,SIMATIC管理器右側(cè)將出現(xiàn)“硬件”文件,雙擊或用鼠標右鍵選擇“打開對象”將打開“硬件組態(tài)編輯器”。硬件組態(tài)設(shè)置完成后,編譯并保存。在這里設(shè)置CP340通訊口波特率、數(shù)據(jù)格式、奇偶校驗方式。將接收緩沖區(qū)的有效字段進行LRC校驗,如果校驗無錯則將接收緩沖區(qū)中的數(shù)據(jù)進行分離,分離出地址碼、功能碼、數(shù)據(jù)段、數(shù)據(jù)字節(jié)長度信息,保存到固定的位置,以備分析和調(diào)用。否則出錯,置接收狀態(tài)為“空閑”,返回。本文在研究了Modbus協(xié)議的規(guī)則基礎(chǔ)上,運用西門子PLC軟件,通過CP340模塊實現(xiàn)Modbus通訊協(xié)議的從站功能。Modbus協(xié)議可采取RTU和ASCII兩種模 式,兩種模式各有其優(yōu)缺點。如何進行項目新建,站點的建立,硬件組態(tài)的設(shè)置以及CP340模塊參數(shù)的配置。 致 謝經(jīng)過半年的忙碌和工作,本次畢業(yè)設(shè)計已經(jīng)接近尾聲,作為一個本科生的畢業(yè)設(shè)計,由于經(jīng)驗的匱乏,難免有許多考慮不周全的地方,如果沒有導(dǎo)師的督促指導(dǎo),以及一起工作的同學(xué)們的支持,想要完成這個設(shè)計是難以想象的。您治學(xué)嚴謹,學(xué)識淵博,思想深邃,視野雄闊,為我營造了一種良好的精神氛圍。你們陪伴我一起走完這最后最重要的半年,這將是我們最美好的回憶。 參考文獻