應用領域 | 食品,化工,生物產(chǎn)業(yè),農(nóng)業(yè),綜合 |
---|
:1800弄(電子商務園)5005.
公司主營:西門子數(shù)控系統(tǒng),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瀏覽次數(shù):303
聯(lián)系我們時請說明是化工儀器網(wǎng)上看到的信息,謝謝!
西門子模塊6ES7677-2AA41-0FK0總代理Modbus從站協(xié)議執(zhí)行錯誤代碼
錯誤代碼 描述
0 無錯
存儲區(qū)范圍錯誤
2 波特率或校驗
3 從站地址
4 Modbus參數(shù)的值
5 保持寄存器與Modbus從站符號地址重疊
6 接收校驗錯誤
7 接收CRC錯誤
8 非能請求/不支持的功能
9 請求中有存儲區(qū)地址
10 從站功能未始能
354
使用Modbus協(xié)議庫
第12章
Modbus從站協(xié)議編程示例
Network 1
LD
CALL
//在循環(huán)掃描中初始化Modbus從站
//協(xié)議。設置從站地址為1,設置portO為
//9600,偶檢驗,可以訪問所有的I、Q和AI,
//允許訪問1000個保持寄存器(2000字節(jié)),
//起始地址為VB0。
SM0.1
MBUS_INIT,1,1,9600,2,0,128,32,1000,
&VB0,M0.1,MB1
Network 2
//每循環(huán)周期內(nèi)執(zhí)行Modbus從站協(xié)議
LD SM0.0
CALL MBUS_SLAVE,M0.2,MB2
355
S7-200可編程序控制器手冊
MBUS_CTRL指令(初始化主站)
使用S7-200端口 0的MBUS—CTRL指令(或端口 1的
MBUS_CTRL_P1指令)來初始化、監(jiān)控或禁用Modbus通訊。
MBUS_CTRL指令必須無錯誤地執(zhí)行,然后才能夠使用
MBUS_MSG指令。在繼續(xù)下一步指令之前,完成當前的指令
并立即設置Done位。在EN輸人接通時,每次掃描都將執(zhí)行此
指令。
每次掃描(包括次掃描)都必須調(diào)用MBUS_CTRL指令,以
便使它能夠監(jiān)控由MBUS_MSG指令啟動的所有待處理信息的
。除非每次掃描都調(diào)用MBUS_CTRL指令,否則Modbus
主站協(xié)議將不能正常工作。
Mode輸人值選擇通訊協(xié)議。輸人值1將CPU端口分配給
Modbus協(xié)議并啟用協(xié)議。輸人值0將CPU端口分配給PPI
協(xié)議并禁用Modbus協(xié)議。
將Parity參數(shù)的奇偶性設置為與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
參數(shù)Timeout可設置為毫秒級數(shù)字,以等待來自從站的響應。Timeout數(shù)值可設置為1毫秒至32767毫
秒之間的任意一個值。典型的數(shù)值為1000毫秒(1秒)。應該將參數(shù)Timeout設置成足夠大的值,這樣在
選定的波特率下,從站設備就有時間做出響應。
Timeout參數(shù)用于確定Modbus從站設備是否正在對請求作出響應。Timeout數(shù)值可確定在發(fā)出請求的
后一個字符后Modbus主站等待響應的個字符的時間。如果在Timeout時間內(nèi)至少接收到一個響
應字符,Modbus主站將接收Modbus從站設備的整個響應。
當MBUS_CTRL指令完成時,Done輸出接通。
Error輸出包含該指令的執(zhí)行結(jié)果。表12-8定義因執(zhí)行MBUS_CTRL指令而引起的錯誤狀態(tài)。
表12-7 MBUS_CTRL指令的參數(shù)
參數(shù) 數(shù)據(jù)類型 操作數(shù)
Mode BOOL I、Q、M、S、SM、T、C、V、L
Baud DWORD VD、ID、QD、MD、SD、SMD、LD、AC、常數(shù)、*VD、*AC、 *LD
Parity BYTE VB、IB、QB、MB、SB、SMB、LB、AC、常數(shù)、*VD、*AC、*LD
Timeout WORD VW、IW、QW、MW、SW、SMW、LW、AC、常數(shù)、*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協(xié)議庫
第12章
表12-8 Modbus從站協(xié)議執(zhí)行錯誤代碼
錯誤代碼 描述
0 無錯
奇偶校驗選擇無效
2 波特率選擇無效
3 超時選擇無效
4 選擇無效
MBUS_MSG 指令
MBUS_MSG指令(或?qū)Χ丝?1使用MBUS_MSG_P1)用于啟動
到Modbus從站的請求,并處理響應。
當EN輸人和個輸人均為接通時,MBUS_MSG指令啟動
到Modbus從站的請求。發(fā)送請求、等待響應和處理響應通常
要求多個掃描。EN輸人必須接通才能啟用發(fā)送請求,并應在
Done位置位之前保持接通。
注意:一次只能有一個MBUS_MSG指令處于活動狀態(tài)。如果
啟用了一個以上MBUS_MSG指令,則將處理個
MBUS_MSG指令,所有后續(xù)MBUS_MSG指令將被中止,并
輸出錯誤代碼6。
只有在發(fā)送一個新請求時,參數(shù)First才接通一個掃描周期。
First輸人應通過一個邊沿檢測元件接通(即,正邊沿),這將一
次發(fā)送請求。請參見實例程序。
參數(shù)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
參數(shù)RW是否讀或?qū)懺撓ⅰW允許使用下列兩個數(shù)值。
□ 0-讀
□ 1-寫
離散輸出(線圈)和保持寄存器支持讀寫請求。離散輸人(觸點)和輸人寄存器僅支持讀請求。參數(shù)Addr
是Modbus起始地址。允許使用下列數(shù)值范圍:
□ 00001到09999用于離散輸出(線圈)
□ 10001到19999用于離散輸人(觸點)
□ 30001到39999用于輸人寄存器
□ 40001 到49999用于保持寄存器
Addr的特定數(shù)值范圍基于Modbus從站設備支持的地址。
357
S7-200可編程序控制器手冊
參數(shù)Count要在該請求中讀或?qū)懙臄?shù)據(jù)元素數(shù)目。對位數(shù)據(jù)類型而言,Count是位數(shù),對字數(shù)據(jù)
類型而言,Count是字數(shù)。
□地址Oxxxx Count是要讀或?qū)懙奈粩?shù)
□地址Ixxxx Count是要讀的位數(shù)
□地址3xxxx Count是要讀的輸人寄存器字數(shù)
□地址4xxxx Count是要讀或?qū)懙谋3旨拇嫫髯謹?shù)
MBUS_MSG指令將讀或?qū)懚?20個字或1920位(240字節(jié)的數(shù)據(jù))。Coun啲實際將取決于
Modbus從站設備的。
參數(shù)DataPtr是一個間接地址指針,該指針指向S7-200 CPU中與讀或?qū)懻埱笙嚓P的數(shù)據(jù)的V存儲
器。對于讀請求,DataPtr應指向用于存儲從Modbus從站讀取的數(shù)據(jù)的個CPU存儲位置。對于寫
請求,DataPtr應指向要發(fā)送至Modbus從站的數(shù)據(jù)的個CPU存儲位置。
將DataPtr數(shù)值作為一個間接地址指針傳遞到MBUS_MSG。例如,如果要寫人Modbus從站設備的數(shù)
據(jù)從S7-200 CPU的地址VW200開始,則DataPt啲數(shù)值應為&VB200(VB200的地址)。即使指針指
向字數(shù)據(jù),指針也必須是VB類型。
表12-9 MBUS_MSG指令的參數(shù),
參數(shù) 數(shù)據(jù)類型 操作數(shù)
First BOOL I、Q、M、S、SM、T、C、V、L(能流,正邊沿檢測元件有效)
Sle BYTE VB、舊、QB、MB、SB、SMB、LB、AC、常數(shù)、*VD、*AC、*LD
RW BYTE VB、IB、QB、MB、SB、SMB、LB、AC、常數(shù)、*VD、*AC、*LD
ADDR DWORD VD、ID、QD、MD、SD、SMD、LD、AC、常數(shù)、*VD、*AC、 *LD
Count INT VW、IW、QW、MW、SW、SMW、LW、AC、常數(shù)、*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)是字數(shù)值(2個字節(jié)或16位)。S7-200 CPU字的格式
與Modbus寄存器相同。編號的V存儲地址是寄存器的有效字節(jié)。編號的V存儲地址是寄
存器的有效字節(jié)。下表顯示了 S7-200字節(jié)和字尋址如何與Modbus寄存器格式對應。
表12-10 Modbus保持寄存器
S7-200 CPU存儲器字節(jié)地址 S7-200 CPU存儲器字地址 Modbus 保持寄存器地址
V存儲器地址 +六進制數(shù)據(jù) V存儲器地址 +六進制數(shù)據(jù) V存儲器地址 +六進制數(shù)據(jù)
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
位數(shù)據(jù)(地址Oxxxx和1xxxx)區(qū)作為組合字節(jié)讀寫,即,每8位組合成一個數(shù)據(jù)字節(jié)。個數(shù)據(jù)字節(jié)
的有效位是所尋址的位號(參數(shù)Addr)。如果僅寫人一個位,則該位必須是DataPtr指向的字節(jié)的
低有效位。
358
使用Modbus協(xié)議庫
第12章
Vx.7 Vx.0
圖12-1 組合字節(jié)格式(離散輸人地址)
對于不在偶字節(jié)邊界啟動的位數(shù)據(jù)地址,與起始地址對應的位必須是字節(jié)的有效位。參見下面的
組合字節(jié)格式實例,在該實例中,從Modbus地址10004開始3個位。
Vx.7 Vx.0
圖12-2 組合字節(jié)格式(從地址10004開始的離散輸人)
當寫人離散輸出數(shù)據(jù)類型(線圈)時,用戶負責在通過DataPtr將數(shù)據(jù)傳遞到MBUS_MSG指令之前,將
位組合字節(jié)內(nèi)的正確位位置。
在發(fā)送請求和接收響應期間,Done輸出關閉。當響應完成,或MBUS_MSG指令因出錯而中止時,
Donw輸出接通。
只有在Done輸出接通時,Error輸出才有效。請參見由MBUS_MSG指令返回的Modbus主站
MBUS_MSG執(zhí)行錯誤。
低編號的錯誤代碼(1 -8)是由MBUS_MSG指令檢測的錯誤。這些錯誤代碼通常指示MBUS_MSG指令
的輸人參數(shù)錯誤,或從從站接收響應錯誤。奇偶校驗和CRC錯誤指示存在響應,但數(shù)據(jù)沒有正確接
收。這通常由電氣故障引起,例如連接不良或電氣噪聲。
高編號的錯誤代碼(從101開始)是由Modbus從站設備返回的錯誤。這些錯誤指示從站不支持所請求的
功能,或Modbus從站設備不支持所請求的地址(數(shù)據(jù)類型或地址范圍)。