應用領域 | 食品/農產品,化工,生物產業,農林牧漁,綜合 |
---|
:1800弄(電子商務園)5005.
公司主營:西門子數控系統,V20變頻器S7-200CN.S7-200smart.S7-300.S7-400.S7-1200.6ES5 ET200 人機界面,變頻器,DP總線,MM420 變頻器MM430 變頻器MM
![]() |
參考價 | ¥670 |
訂貨量 | 1件 |
更新時間:2023-11-08 16:25:42瀏覽次數:310
聯系我們時請說明是化工儀器網上看到的信息,謝謝!
西門子模塊6ES7677-2AA41-0FK0總代理Modbus從站協議執行錯誤代碼
錯誤代碼 描述
0 無錯
存儲區范圍錯誤
2 波特率或校驗
3 從站地址
4 Modbus參數的值
5 保持寄存器與Modbus從站符號地址重疊
6 接收校驗錯誤
7 接收CRC錯誤
8 非能請求/不支持的功能
9 請求中有存儲區地址
10 從站功能未始能
354
使用Modbus協議庫
第12章
Modbus從站協議編程示例
Network 1
LD
CALL
//在循環掃描中初始化Modbus從站
//協議。設置從站地址為1,設置portO為
//9600,偶檢驗,可以訪問所有的I、Q和AI,
//允許訪問1000個保持寄存器(2000字節),
//起始地址為VB0。
SM0.1
MBUS_INIT,1,1,9600,2,0,128,32,1000,
&VB0,M0.1,MB1
Network 2
//每循環周期內執行Modbus從站協議
LD SM0.0
CALL MBUS_SLAVE,M0.2,MB2
355
S7-200可編程序控制器手冊
MBUS_CTRL指令(初始化主站)
使用S7-200端口 0的MBUS—CTRL指令(或端口 1的
MBUS_CTRL_P1指令)來初始化、監控或禁用Modbus通訊。
MBUS_CTRL指令必須無錯誤地執行,然后才能夠使用
MBUS_MSG指令。在繼續下一步指令之前,完成當前的指令
并立即設置Done位。在EN輸人接通時,每次掃描都將執行此
指令。
每次掃描(包括次掃描)都必須調用MBUS_CTRL指令,以
便使它能夠監控由MBUS_MSG指令啟動的所有待處理信息的
。除非每次掃描都調用MBUS_CTRL指令,否則Modbus
主站協議將不能正常工作。
Mode輸人值選擇通訊協議。輸人值1將CPU端口分配給
Modbus協議并啟用協議。輸人值0將CPU端口分配給PPI
協議并禁用Modbus協議。
將Parity參數的奇偶性設置為與Modbus從站設備的相匹配。所
有設置均使用一個起始位和一個停止位。允許的值為:
□ 0-無校驗
□ 1 -奇校驗
□ 2-偶校驗
SIMHTIC / IEC1131 |
LflD FBD
MBUS.CTRL MBUS_CTRL
EM EN
Mode Mode
Baud Done Baud Done
Parity Error Parity Error
Timeout Timeout
SIMHTIC |
STL CALL MBUS.CTRL, Mode, Baud, Parity, Timeout, Done, Error
參數Timeout可設置為毫秒級數字,以等待來自從站的響應。Timeout數值可設置為1毫秒至32767毫
秒之間的任意一個值。典型的數值為1000毫秒(1秒)。應該將參數Timeout設置成足夠大的值,這樣在
選定的波特率下,從站設備就有時間做出響應。
Timeout參數用于確定Modbus從站設備是否正在對請求作出響應。Timeout數值可確定在發出請求的
后一個字符后Modbus主站等待響應的個字符的時間。如果在Timeout時間內至少接收到一個響
應字符,Modbus主站將接收Modbus從站設備的整個響應。
當MBUS_CTRL指令完成時,Done輸出接通。
Error輸出包含該指令的執行結果。表12-8定義因執行MBUS_CTRL指令而引起的錯誤狀態。
表12-7 MBUS_CTRL指令的參數
參數 數據類型 操作數
Mode BOOL I、Q、M、S、SM、T、C、V、L
Baud DWORD VD、ID、QD、MD、SD、SMD、LD、AC、常數、*VD、*AC、 *LD
Parity BYTE VB、IB、QB、MB、SB、SMB、LB、AC、常數、*VD、*AC、*LD
Timeout WORD VW、IW、QW、MW、SW、SMW、LW、AC、常數、*VD、*AC、 *LD
Done BOOL I、Q、M、S、SM、T、C、V、L
Error BYTE VB、IB、QB、MB、SB、SMB、LB、AC、*VD、*AC、*LD
356
使用Modbus協議庫
第12章
表12-8 Modbus從站協議執行錯誤代碼
錯誤代碼 描述
0 無錯
奇偶校驗選擇無效
2 波特率選擇無效
3 超時選擇無效
4 選擇無效
MBUS_MSG 指令
MBUS_MSG指令(或對端口 1使用MBUS_MSG_P1)用于啟動
到Modbus從站的請求,并處理響應。
當EN輸人和個輸人均為接通時,MBUS_MSG指令啟動
到Modbus從站的請求。發送請求、等待響應和處理響應通常
要求多個掃描。EN輸人必須接通才能啟用發送請求,并應在
Done位置位之前保持接通。
注意:一次只能有一個MBUS_MSG指令處于活動狀態。如果
啟用了一個以上MBUS_MSG指令,則將處理個
MBUS_MSG指令,所有后續MBUS_MSG指令將被中止,并
輸出錯誤代碼6。
只有在發送一個新請求時,參數First才接通一個掃描周期。
First輸人應通過一個邊沿檢測元件接通(即,正邊沿),這將一
次發送請求。請參見實例程序。
參數Sle是Modbus從站設備的地址。允許范圍是0-247。地
址0是廣播地址,只能用于寫請求。沒有對地址0廣播請求的響
應。不是所有的從站都支持廣播地址。S7-200 Modbus從站
庫不支持廣播地址。
SIMHTIC / IEC1131 |
LflD FBD
MBUSJV1SG MBUSJV1SG
EN EN
First First
Done Sl% Done
RW Error RW Error
Count Count
DataPtr DataPtr
SIMHTIC |
STL CALL MBUSJV1SG, Rrst,Sle,RW,Addr, Count, DataPtr, Done^ Error
參數RW是否讀或寫該消息。RW允許使用下列兩個數值。
□ 0-讀
□ 1-寫
離散輸出(線圈)和保持寄存器支持讀寫請求。離散輸人(觸點)和輸人寄存器僅支持讀請求。參數Addr
是Modbus起始地址。允許使用下列數值范圍:
□ 00001到09999用于離散輸出(線圈)
□ 10001到19999用于離散輸人(觸點)
□ 30001到39999用于輸人寄存器
□ 40001 到49999用于保持寄存器
Addr的特定數值范圍基于Modbus從站設備支持的地址。
357
S7-200可編程序控制器手冊
參數Count要在該請求中讀或寫的數據元素數目。對位數據類型而言,Count是位數,對字數據
類型而言,Count是字數。
□地址Oxxxx Count是要讀或寫的位數
□地址Ixxxx Count是要讀的位數
□地址3xxxx Count是要讀的輸人寄存器字數
□地址4xxxx Count是要讀或寫的保持寄存器字數
MBUS_MSG指令將讀或寫多120個字或1920位(240字節的數據)。Coun啲實際將取決于
Modbus從站設備的。
參數DataPtr是一個間接地址指針,該指針指向S7-200 CPU中與讀或寫請求相關的數據的V存儲
器。對于讀請求,DataPtr應指向用于存儲從Modbus從站讀取的數據的個CPU存儲位置。對于寫
請求,DataPtr應指向要發送至Modbus從站的數據的個CPU存儲位置。
將DataPtr數值作為一個間接地址指針傳遞到MBUS_MSG。例如,如果要寫人Modbus從站設備的數
據從S7-200 CPU的地址VW200開始,則DataPt啲數值應為&VB200(VB200的地址)。即使指針指
向字數據,指針也必須是VB類型。
表12-9 MBUS_MSG指令的參數,
參數 數據類型 操作數
First BOOL I、Q、M、S、SM、T、C、V、L(能流,正邊沿檢測元件有效)
Sle BYTE VB、舊、QB、MB、SB、SMB、LB、AC、常數、*VD、*AC、*LD
RW BYTE VB、IB、QB、MB、SB、SMB、LB、AC、常數、*VD、*AC、*LD
ADDR DWORD VD、ID、QD、MD、SD、SMD、LD、AC、常數、*VD、*AC、 *LD
Count INT VW、IW、QW、MW、SW、SMW、LW、AC、常數、*VD、*AC、 *LD
DataPtr DWORD &VB
Done BOOL I、Q、M、S、SM、T、C、V、L
Error BYTE VB、IB、QB、MB、SB、SMB、LB、AC、*VD、*AC、*LD
保持寄存器(地址4xxxx)和輸人寄存器(地址3xxxx)是字數值(2個字節或16位)。S7-200 CPU字的格式
與Modbus寄存器相同。編號的V存儲地址是寄存器的有效字節。編號的V存儲地址是寄
存器的有效字節。下表顯示了 S7-200字節和字尋址如何與Modbus寄存器格式對應。
表12-10 Modbus保持寄存器
S7-200 CPU存儲器字節地址 S7-200 CPU存儲器字地址 Modbus 保持寄存器地址
V存儲器地址 +六進制數據 V存儲器地址 +六進制數據 V存儲器地址 +六進制數據
VB200 12 VW200 12 34 4001 12 34
VB201 34
VB202 56 VW202 56 78 4002 56 78
VB203 78
VB204 9A VW204 9A BC 4003 9A BC
VB205 BC
位數據(地址Oxxxx和1xxxx)區作為組合字節讀寫,即,每8位組合成一個數據字節。個數據字節
的有效位是所尋址的位號(參數Addr)。如果僅寫人一個位,則該位必須是DataPtr指向的字節的
低有效位。
358
使用Modbus協議庫
第12章
Vx.7 Vx.0
圖12-1 組合字節格式(離散輸人地址)
對于不在偶字節邊界啟動的位數據地址,與起始地址對應的位必須是字節的有效位。參見下面的
組合字節格式實例,在該實例中,從Modbus地址10004開始3個位。
Vx.7 Vx.0
圖12-2 組合字節格式(從地址10004開始的離散輸人)
當寫人離散輸出數據類型(線圈)時,用戶負責在通過DataPtr將數據傳遞到MBUS_MSG指令之前,將
位組合字節內的正確位位置。
在發送請求和接收響應期間,Done輸出關閉。當響應完成,或MBUS_MSG指令因出錯而中止時,
Donw輸出接通。
只有在Done輸出接通時,Error輸出才有效。請參見由MBUS_MSG指令返回的Modbus主站
MBUS_MSG執行錯誤。
低編號的錯誤代碼(1 -8)是由MBUS_MSG指令檢測的錯誤。這些錯誤代碼通常指示MBUS_MSG指令
的輸人參數錯誤,或從從站接收響應錯誤。奇偶校驗和CRC錯誤指示存在響應,但數據沒有正確接
收。這通常由電氣故障引起,例如連接不良或電氣噪聲。
高編號的錯誤代碼(從101開始)是由Modbus從站設備返回的錯誤。這些錯誤指示從站不支持所請求的
功能,或Modbus從站設備不支持所請求的地址(數據類型或地址范圍)。