作者:管理員 發(fā)布于:2021-08-06 13:59:00
寄存器PLC地址與寄存器modbus協議地址
原創(chuàng)大鞭炮好大 發(fā)布于2019-02-20 20:04:09 閱讀數 1303 收藏
展開
寄存器PLC地址指存放于控制器中的地址,這些控制器可以是PLC,也可以使觸摸屏,或是文本顯示器。PLC地址一般采用10進制描述,共有5位,其中第一位代碼寄存器類型。第一位數字和寄存器類型的對應關系如表1所示。PLC地址例如40001、30002等。
寄存器modbus協議地址指通信時使用的寄存器地址,在實際編程中,由于寄存器PLC地址前綴的區(qū)分作用,所以只需說明后4位數,而且需轉換為4位十六進制地址。例如PLC地址40001對應尋址地址0x0000,40002對應尋址地址0x0001,寄存器尋址地址一般使用16進制描述。再如,PLC寄存器地址40003對應協議地址0002,PLC寄存器地址30003對應協議地址0002。在實際編程中,由于前綴的區(qū)分作用,所以只需說明后4位數,而且需轉換為4位十六進制地址。
支持 Modbus 協議的設備或軟件,使用時用戶直接設置或看到的應 當是 Modbus 數據地址。Modbus 地址所訪問的數據,是通過各種 “功能”讀寫而來。 功能碼是 Modbus 地址的底層。 如果 Modbus 通 信的一方提供的所謂 Modbus 協議只有功能碼,則需要注意了解此 功能號與 Modbus 地址間的對應關系。
使用 modbus 地址時應注意下述問題:
1)40001~4xxxx 是美國 modicon 公司和 ge 公司 plc 使用的 modbus 地址,它是基于1的地址,即同類元件的首地址為1。西門子 plc 的 modbus 地址是基于0的地址。
2)美國的 modbus 地址左起第2位用來表示元件的類型,例如 i0.0的 modbus 地址為010001。 因為數據類型已經包含在功能碼中了, 西門子的 i0.0的 modbus 地址實際上為000000, i2.0的 modbus 地址為 000016(或十六進制數16#0010) ,而不是010017。
3)、無論V寄存器還是M寄存器,里面的不同數據類型(VB、VW、VD、MB、MW、MD)都是基于寄存器內存總字節(jié)地址為偏移地址。
4)、在數據報文中,所有的modbus地址都是從0開始的。也就是首次出現的數據項在報文中的地址為0。比如:(All data addresses in Modbus messages are referenced to zero. The first occurrence of a data item is addressed as item number zero.)
5)、Modbus地址實際上分為兩種情況。
第一種情況:PLC作Modbus主站,Modbus地址和PLC手冊里的地址一致,例如作主站的S7-200的MBUS_MSG指令用于向Modbus從站發(fā)送請求消息,和處理從站返回的響應消息。要讀取從站(另一臺S7-200)的I0.0開始的地址區(qū)時,它的輸入參數Addr(Modbus地址)為10001。S7-200從站保持寄存器的V區(qū)起始地址為VB200時,要讀取從站VW200開始的V存儲區(qū)時,保持寄存器的地址是40001。
第二種情況:PLC作從站,PLC不用管什么Modbus地址,等著主站來讀寫它的地址區(qū)就是了。
主站的計算機軟件(例如DCS或組態(tài)軟件)的編程人員需要編寫實現Modbus通信的程序,首先需要確定Modbus RTU的報文結構。他們一般不熟悉PLC,因此PLC的編程人員往往需要和上位機軟件的編程人員一起來討論Modbus的報文結構。
最容易出問題的就是報文里Modbus地址與PLC存儲區(qū)地址的對應關系。
S7 PLC手冊給出的Modbus地址與Modicon公司和GE公司PLC使用的地址相同,是基于1的地址,即同類元件的首地址為1。而西門子PLC采用的是基于0的地址,即同類元件的首地址為0。Modbus報文中西門子PLC的Modbus地址也采用基于0的地址。
PLC系統(tǒng)手冊中的Modbus地址的最高位用來表示地址區(qū)的類型,例如I0.0的Modbus地址為10001。因為地址區(qū)類型的信息已經包含在報文的功能碼中了,報文中S7-200的I0.0的Modbus地址不是10001,而是0。報文中其他地址區(qū)的Modbus地址也應按相同的原則處理。例如當S7-200從站保持寄存器的V區(qū)起始地址為VB200時,VW200對應的保持寄存器在報文中的Modbus地址為0,而不是40001。
施耐德plc modbus地址對照表
000001至000XXX是實際輸出,對應%QX0.0-%QXX.X
010001至010XXX是實際輸入,對應%IX0.0-%IXX.X
030001至030032是模擬量寄存器,對應%AIW0,16位一路依次類推
040001至040XXX是保持寄存器,對應%MX0.0-%MXX.X,1對1,要是%MW就對應16位,依次類推。施耐德PLC中 W表示字 16位,D表示雙字 32位。比如:%MW10和%MD10。B表示字節(jié) 8位,X表示位。比如:%MB0和%MX0.0~%MX0.7
%MW10.4
%MW10是指一個字,一個字分為2個字節(jié),一個字節(jié)8個位,也就是說%MW10中有16個位,從%MW10.0~%MW10.15。
%QW0.5.1.0.10
Q是輸出 ,0是機架,5是0號機架的第五個模塊,1是第五號模塊的第一個通道,0是第一個通道的第0個字,10是第0個字的第10個位。
無論MX、MB、MW、MD都是基于內存總字節(jié)地址為偏移地址,也就是以%MB之后的地址為偏移地址。
施耐德plc寄存器地址對應的modubs地址
寄存器地址 modubs 說明 公式
%QX1.0 000001.0 開關量輸出 %QXx.y=000001+x.y
%IX1.0 010001.0 開關量輸入 %IXx.y=010001+x.y
%AIW0 030001 模擬量輸入 %AIWx=030001+x
%MD40 0400801 保持寄存器 %MDx.y=040001+x*2.y
%MW50.0 040051.0 保持寄存器 %MWx.y=040001+x.y
%MX100.0 040051.0 保持寄存器 %MXx.y=040001+x/2.y
注意:
1、%MX100.0表示某個字節(jié)地址,因為%MW50這個地址中包含了%MB100、%MB101,%MX100.0其實是%MW50的第0位即40051.0
2、%MD40表示雙字,%MD40對應的首地址是%MW*2,也就是%MW80,%MD40對應的modbus地址為0400801
西門子s7系列plc modbus地址對照表
例如:地址:40040;對應S7200地址:VW78;對應S7300地址:DB1.DBW78;
三菱FX系列PLC modbus地址對照表
OMRON PLC地址轉MODBUS協議對照表
將OMRON PLC接入支持MODBUS協議的上位DCS系統(tǒng)中,通過ASC模塊可滿足用戶的這一需求。具體方法參考:
https://wenku.baidu.com/view/3ff1d16da5e9856a5712601d.html
臺達PLC寄存器地址與Modbus寄存器地址對照表
https://wenku.baidu.com/view/f884db6d102de2bd97058836.html
永宏PLC寄存器Modbus地址表
https://wenku.baidu.com/view/4843e77c30126edb6f1aff00bed5b9f3f90f72c8.html