MODBUS在過程控制系統(tǒng)中的應用
目前大家使用的三種最常見的MODBUS版本是:
■ MODBUS ASC II
■ MODBUS RTU
■ MODBUS/TCP
所有的MODBUS信息都以相同的格式進行傳送。在這三種不同類型的MODBUS版本之間的唯一差別就是:信息是怎樣進行編碼的。
在MODBUS RTU協(xié)議里面,數(shù)據(jù)以二進制進行編碼,而且每一個字節(jié)的數(shù)據(jù)只需要一個字節(jié)的通訊量。對于通訊速度在1200到115K波特率的RS232或者多分支網(wǎng)絡的RS485網(wǎng)絡來說,MODBUS RTU是一種理想的通訊協(xié)議。MODBUS RTU最為常見的通訊速率為9600和19200波特率。MODBUS RTU是得到最為廣泛應用的工業(yè)化協(xié)議,因此這份白皮書的主要部分將會集中討論MODBUS RTU的基本概念和應用。
MODBUS RTU基礎
為了與一臺從設備進行通訊,主設備將會發(fā)送一個包含如下內(nèi)容的訊息:
■ 設備地址
■ 功能代碼
■ 數(shù)據(jù)
■ 錯誤檢查
設備地址是一個從0到247的數(shù)字。發(fā)送給地址0(廣播訊息)的訊息可以被所有從設備接收到,但是數(shù)字1到247是特定設備的地址。在這個訊息廣播當中有一個例外,有一個從設備總是會對MODBUS訊息作出反應,這樣主設備就知道這條訊息已經(jīng)被從設備接收到了。
功能代碼定義了從設備應該執(zhí)行的命令,例如讀取數(shù)據(jù)、接受數(shù)據(jù)、報告狀態(tài)等等(參見表1)。功能代碼為從1到255的數(shù)字。有些功能代碼還擁有子功能代碼。
數(shù)據(jù)為讀取功能定義了在設備存儲器映射當中的地址,它包括被寫入設備存儲器的數(shù)據(jù)值,或是包括其它根據(jù)功能代碼的要求需要被執(zhí)行的信息。
錯誤檢查是一個描述循環(huán)冗余校驗(CRC)的16-bit數(shù)值。循環(huán)冗余校驗碼(CRC)由主設備產(chǎn)生(通過一個包括對數(shù)據(jù)進行“或”運算以及移位運算的復雜程序產(chǎn)生),并且由接收設備進行檢查。如果CRC值不符,這個設備就會要求重新傳送訊息。在有些系統(tǒng)里面,還要對數(shù)據(jù)進行奇偶校驗。
當從設備執(zhí)行了所要求的功能,它會返回一條訊息給主設備。這條返回的訊息包含了從設備的地址、所要求的功能代碼(這樣主設備就知道是誰在作出反應)、所要求的數(shù)據(jù)以及一個錯誤檢查值。
MODBUS存儲器映射
每一個MODBUS設備都有存儲器,在存儲器里面保存著過程變量數(shù)據(jù)。MODBUS的配置決定了數(shù)據(jù)怎樣被恢復以及什么類型的數(shù)據(jù)能夠被恢復。不過,MODBUS配置并沒有規(guī)定設備供應商必須怎樣映射這些數(shù)據(jù)以及必須把這些數(shù)據(jù)映射在存儲器的哪個部分。下面是一個比較常見的例子,用來說明理論上一個供應商可能怎樣映射不同類型的過程變量數(shù)據(jù)。
離散量輸入和輸出是1-bit數(shù)值,并且每一個這種變量都有一個明確的地址。模擬量輸入(也被稱為“輸入寄存器”)被存儲在16-bit寄存器里面。只需利用這些寄存器當中的兩個寄存器,MODBUS就可以支持IEEE 32-bit浮點格式。保持寄存器也是16-bit內(nèi)部寄存器,可以支持浮點格式。
MODBUS配置定義了在寄存器映射里面的數(shù)據(jù)。假定設備供應商遵從了MODBUS規(guī)格書的要求(并非所有設備供應商都如此),那么MODBUS主設備就可以很容易的獲取所有遵從規(guī)格書規(guī)定的數(shù)據(jù)。在很多案例當中,設備供應商公布了存儲器的映射位置(參見表2),這樣就使得編程人員可以很
容易的為主設備與從設備之間的通訊進行編程。
表2:大多數(shù)MODBUS兼容設備(例如來自于Moore Industries公司的TMZ溫度變送器)的說明書或者操作手冊都公布了關鍵變量在存儲器映射里面的地址。TMZ溫度變送器的地址遵守了MODBUS規(guī)格書的要求。
評論