產品簡介
本公司*銷售西門子PLC ET-200,S7-200,S7-300,S7-400,1200,西門子PLC附件,西門子電機,西門子人機界面,西門子變頻器,西門子數控伺服,
詳細介紹
PLC模塊6ES72883AE040AA0
公司主營:數控,S7-200PLC S7-300PLC S7-400PLC S7-1200PLC 6ES5 ET200 西門子屏,變頻器,西門子DP電纜 變頻器 6SE70交流工程調速變頻器6RA70直流調速裝置 SITOP電源,電線電纜,數控備件,伺服電機等工控產品.及伺服電機,力矩電機,直線電機,伺服驅動備件等等。主營產品或服務:西門子PLC,西門子變頻器,西門子數控,西門子伺服電機,西門子人機界面,西門子軟啟動器,西門子屏,西門子工業以太網,西門子LOGO!
使用Modbus從站指令
在S7-200程序中使用Modbus從站指令請遵循以下步驟:
1. 在您的程序中MBUS_INIT指令并且只在一個循環周期中執行該指令,MBUS_INIT 指令可用于對Modbus通訊參數的初始化或修改。
當您MBUS_INIT指令時,幾個隱藏的子程序和中斷服務程序會自動地添加到您的程序中。
2. 使用庫存儲器命令為Modbus從站協議指令所要求的V存儲器分配一個起始地址。
3. 在您的程序中只使用一個MBUS_SLAVE指令。該指令在每個循環周期中執行,為接收到的所 有請求提供服務。
4. 使用通訊電纜將S7- 200的端口0和Modbus主站設備連接在一起。
當心 具有不同參考電位的互連設備將可能出現不必要的電流流過互連電纜。這些不必要的電流可能 通訊出錯,甚至可能損壞設備。 請確保用通訊電纜連接的所有設備具有公用電路參考電勢,或進行絕緣,以避免產生不必要的 電流。 |
累加器(AC0、AC1、AC2、AC3)由Modbus從站指令使用并顯示在交叉參考列表中。在執行前, Modbus從站指令在累加器中的數值被存儲并在Modbus從站指令完成前恢復到累加器中,確保在執行Modbus從站指令時,所有在累加器中的用戶數據都保護。
Modbus從站協議指令支持Modbus RTU協議。這些指令使用S7- 200的端口功能,支持大部分
常用Modbus功能。以下是所支持的Modbus功能:
表12- 3 支持的Modbus從站協議功能
功能 | 描述 |
1 | 讀單個/多個線圈(實際輸出)狀態,功能1返回任意數量輸出點的接通/斷開狀態(Q) |
2 | 讀單個/多個器(實際輸入)狀態。功能2返回任意數量的輸入點的接通/斷開狀態(I) |
3 | 讀單個/多個保持寄存器。功能3返回V存儲器的內容。保持寄存器在Modbus下是字類型,在一個請 求中多可讀120個字。 |
4 | 讀單個/多個輸入寄存器。功能4返回模擬輸入值。 |
5 | 寫單個線圈(實際輸出)。功能5將實際輸出點設置為值。該輸出點不是被強制,用戶程序可以 重寫由Modbus的請求而寫入的值。 |
6 | 寫單個保持寄存器。功能6寫一個單個保持寄存器的值到S7- 200的V存儲區。 |
15 | 寫多個線圈(實際輸出)。功能15寫多個實際輸出值到S7- 200的Q映像區。起始輸出點必須是一個字節的開始(如,Q0.0或Q2.0),并且要寫的輸出的數量是8的倍數。這是Modbus從站協議指令的限 定。這些點不是被強制,用戶程序可以重寫由Modbus的請求而寫入的值。 |
16 | 寫多個保持寄存器。功能16寫多個保持寄存器到S7- 200的V區。在一個請求中多可寫120字。 |
Modbus協議指令
MBUS_INIT 指令(初始化從站)
MBUS_INIT指令用于使能和初始化或禁止Modbus通訊。MBUS_INIT指令必須無錯誤的執行,然后才能夠使用MBUS_SLAVE指令。在繼續執行下一條指令前, MBUS_INIT指令必須執行完并且Done位被立即置位。
當EN輸入為接通時,指令在每次掃描時都執行。
MBUS_INIT指令應該在每次通訊狀態改變時只執行一次。因 此,EN輸入端應使用邊沿檢測元素以脈沖觸發,或者只在第 一個循環周期內執行一次。
輸入值選擇通訊協議:輸入值為1時,將端口0分配給Modbus協議,并啟用該協議,輸入值為0時,將端口0分配給PPI,并禁止Modbus協議。
參數Baud將波特率設為1200、2400、4800、9600、
19200、38400、57600或115200。S7- 200 CPU的V1.2或
更高版本支持波特率57600和115200。
參數Addr設置地址,其數值在1到247之間。
表12- 4 MBUS_INIT指令的參數。
輸入/輸出 | 數據類型 | 操作數 |
Mode、Addr、Parity | BYTE | VB、IB、QB、MB、SB、SMB、LB、AC、常數、*VD、 *AC、*LD |
Baud、HoldStart | DWORD | VD、ID、QD、MD、SD、SMD、LD、AC、常數、*VD、 *AC、*LD |
Delay、MaxIQ、MaxAI、MaxHold | 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 |
參數Parity用于設置校驗使之與Modbus主站相配匹。所有設置使用一個停止位。可接受值為:
q 0--無校驗q 1--奇校驗q 2--偶校驗
參數Delay通過為Modbus信息超時數量的毫秒,擴展Modbus信息結束超時條件。 當在一個連接的網絡上操作時,該參數的典型值為0。如果您使用具有糾錯功能的調制解調器時,將 時間設為50至100毫秒。如果您使用寬頻電臺,設置該值為10至100毫秒。Delay的數值可以 是0到32767毫秒。
參數MaxIQ將Modbus地址0xxxx和1xxxx可用的I和Q點數設為一個0--128之間的數值。數值為0時,禁 止輸入和輸出的所有讀和寫操作。建議MaxIQ的取值為128,即允許訪問S7- 200的所有I點和Q點。
參數MaxAI將Modbus地址3xxxx可用的字輸入(AI)數目設為一個0--32之間的數值。數值為0時,禁止 讀模擬量輸入。要允許訪問所有的S7- 200模擬輸入,MaxAI的建議值如下:
q CPU221 為 0
q CPU222 為 16
q CPU224、CPU224XP和CPU226為32。
參數MaxHold設置可以使用的V區字保持寄存器的個數,相應于Modbus地址4xxxx。例如,要允許主
站訪問2000字節的V存儲區,則設置MaxHold為1000字(保持寄存器)。
參數HoldStart是V存儲區的保持寄存器的起始地址。通常設為VB0,所以參數HoldStart設為&VB0(VB0的地址)。也可以將其它的V區地址為保持寄存器的起始地址,以便使VB0可以在項目 中用作其它目的。Modbus主站可以訪問起始地址為HoldStart,字數為MaxHold的V存儲區。
當MBUS_INIT指令完成時,Done輸出接通。Error輸出字節包含指令執行的結果。表12- 6定義了該指令執行可能引起的錯誤條件。
MBUS_SLAVE指令
MBUS_SLAVE指令用于服務來自Modbus主站的請求,必須 在每個循環周期都執行,以便檢查和響應Modbus請求。
當EN輸入為接通時,指令在每次掃描時都執行。
MBUS_SLAVE指令無輸入參數。
當MBUS_SLAVE指令響應Modbus請求時Done輸出接通。如果沒有服務的請求,Done輸出會斷開。
Error輸出包含該指令的執行結果。該輸出只有Done接通時才 有效。如果Done斷開,錯誤代碼不會改變。表12- 6定義了執行該指令可能引起的錯誤條件。
表12- 5 MBUS_SLAVE指令的參數。
參數 | 數據類型 | 操作數 |
Done | BOOL | I、Q、M、S、SM、T、C、V、L |
Error | BYTE | VB、IB、QB、MB、SB、SMB、LB、AC、*VD、*AC、*LD |
表12- 6 Modbus從站協議執行錯誤代碼
錯誤代碼 | 描述 |
0 | 無錯 |
1 | 存儲區范圍錯誤 |
2 | 非法波特率或校驗 |
3 | 非法從站地址 |
4 | Modbus參數的非法值 |
5 | 保持寄存器與Modbus從站符號地址重疊 |
6 | 接收校驗錯誤 |
7 | 接收CRC錯誤 |
8 | 非能請求/不支持的功能 |
9 | 請求中有非法存儲區地址 |
10 | 從站功能未始能 |
Modbus從站協議編程示例 | |
| Network 1 //在循環掃描中初始化Modbus從站 //協議。設置從站地址為1,設置port0為 //9600,偶檢驗,可以訪問所有的I、Q和AI, //允許訪問1000個保持寄存器(2000字節), //起始地址為VB0。 LD SM0.1 CALL 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 |
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從站設備的相匹配。所 有設置均使用一個起始位和一個停止位。允許的值為:
q 0--無校驗q 1--奇校驗q 2--偶校驗
參數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 |
下一篇:288系列6ES72883AE080AA0