詳細介紹
西門子X310交換機
6GK5310-0FA10-2AA3 SCALANCE X310,managed plus IE 交換機,3x 10/100/1000 Mbit/ 和 7x 10/100 Mbit/s RJ45 端口 LED 診斷,錯誤信號 含選擇/設置按鈕的觸點, PROFINET 輸入輸出設備,網絡 管理,內置 冗余管理,辦公室 特性(RSTP,VLAN,IGMP,..) C-PLUG 含在供貨范圍內 |
問題:在S7-CPU中使用嵌套程序需要注意什么,如何使用?
回答:S7-CPU支持嵌套程序,但對于不同的CPU類型,在使用時需要注意一些問題。
1. 不同的CPU類型,支持的嵌套程序深度不同,用戶可在CPU的技術數據中查到此參數,以6ES7315-2AG10-0AB0為例。
圖1:CPU的嵌套深度參數
2. 用戶可以按照如下方式使用嵌套功能:
a) 在某個優(yōu)先級組織塊中調用多個嵌套FC/FB。例如,在OB1 (優(yōu)先級為1)調用FC1,FC1中調用FC2,FC2中調用FC3,等等,一直到FC7,與OB1共8層深度。如果在FC7 中又調用了FC8 ,此時會導致CPU 停機,在CPU在線信息界面中可查看到此情況,如圖2所示。用戶也可在OB35(優(yōu)先級為12)調用FC11,FC11中調用FC12,FC12中調用FC13,等等,一直到FC17。
圖2:嵌套調用
b) 在某個優(yōu)先級中調用某個FC,此FC多次調用自身。例如,在OB1 (優(yōu)先級為1)調用FC1,FC1中仍然調用FC1,用戶在FC1 的程序中必須編程累計FC1被調用的次數,如果達到了7次,則需要從FC1 中跳出調用(此方法即為軟件行業(yè)廣泛應用的遞歸編程方法)。如果在FC1 調用自身次數超出了CPU允許的嵌套深度,此時會導致CPU 停機。
3. 當用戶在使用嵌套功能時,可能出現幾種錯誤:
a) The nesting depth of block calls (U-Stack) is too high(嵌套深度太高)。例如:
? 用戶在某個優(yōu)先級(如OB1)中調用嵌套程序深度超出所使用CPU支持深度,如第2節(jié)(a) 部分所描述。
? 用戶在某個優(yōu)先級(如OB1)中調用嵌套程序深度超出所使用CPU支持深度,如第2節(jié)(b) 部分所描述。
此時CPU將報16#4575錯,如圖3所示:
圖3:同步錯誤嵌套1
b) The nesting depth of synchronous errors is too high(同步錯誤嵌套深度太高)。例如:
? 用戶在OB1中使用L DB1.DBB0 語句(CPU中并未下載DB1),
? 此時CPU出現編程錯誤,將調用OB121。
? 如果用戶在下載的OB121中又使用了L DB1.DBB0 指令,將導致CPU停機
此時CPU將報16#4573錯,如圖4所示:
圖4:同步錯誤嵌套2
c) Error during allocation of local data (分配本地數據錯誤) 。對于S7-CPU每個優(yōu)先級都有對本地數據大小的限制,如果用戶使用的范圍超出了此限制,CPU將出現錯誤。以6ES7315-2AG10-0AB0為例,其每個優(yōu)先級下的本地數據大小為512 BYTE。如下錯誤使用都可能導致此錯誤:
? OB1 調用FC1,FC1 中定義的local data(TEMP數據類型)與OB1中定義的local data(TEMP數據類型)總和超出了CPU 對此優(yōu)先級分配的local data 數量。
? OB1 中嵌套調用多個FC, 這些FC 使用的local data 與OB1中定義的local data(TEMP數據類型)總和超過了分配給此優(yōu)先級的local data 數量。
此時CPU將報16#3576錯,如圖5所示:
圖5:分配本地數據錯誤
? 對于S7-400CPU, 用戶可以在硬件配置中調節(jié)每個優(yōu)先級下的本地數據大小,以6ES7412-2XG04-0AB0為例,如圖6所示:
圖6:分配本地數據
4. 當用戶在使用嵌套功能出現錯誤時,對于支持OB88的CPU(例如S7-400CPU),可用通過下載OB88來防止CPU停機,此時CPU將處于SF狀態(tài),但OB88不可以再出現嵌套使用錯誤,否則CPU將進入停機狀態(tài)。對于不支持OB88的CPU(例如S7-300CPU),當出現嵌套調用錯誤時,無法避免CPU進入停機狀態(tài)。
描述
S7-PLCSIM 支持以下通訊塊來實現兩個S7-400 CPU模塊間的通信:
- SFB8 "USEND"
- SFB9 "URCV"
- SFB12 "BSEND"
- SFB13 "BRCV"
- SFB15 "PUT"
- SFB14 "GET"
- SFB19 "START"
- SFB 20 "STOP"西門子X310交換機
- SFB 22 "STATUS"
- SFB 23 "USTATUS"
要求
- 需要S7-PLCSIM V5.4 SP3(或更高版本)。
- 在STEP 7(TIA Portal)中建立一個項目,對兩個S7-400 CPU進行硬件組態(tài)和網絡組態(tài)。
- 在模塊之間已經組態(tài)了S7連接和通信連接。
- 在主動站S7-400 CPU的用戶程序中,調用“BSEND”指令來給被動站CPU發(fā)送數據。
- 在被動站S7-400CPU中調用“BRCV”指令來接收來自主動站S7-400 CPU的數據。
注意
本條目提供的項目包含兩個S7-400 CPU的組態(tài)和連接組態(tài)以及用戶程序。
以下步驟列出了如何使用PLCSIM仿真通訊。下載附件中的STEP 7(TIA Portal)項目包含了兩個S7-400站通過工業(yè)以太網通信 。
Station_1中的OB1包含計數器的程序,將其輸出值傳送到Station_2。
- 在項目導航中選中“Station_1”并打開S7-PLCSIM,可以通過菜單命令“Online > Simulation > Start”或者菜單欄的“Start simulation” 圖標打開。實例編號為“S7-PLCSIM1”的*個仿真CPU的對話框被打開。
- 如果是*仿真這個項目,就會打開“Extended download to device”對話框。在“PG/PC Interface”中選擇如圖1所示的設置,并單擊“Start search”。
圖. 1
- 當在線連接已經建立時,單擊“Load”按鈕。
- 然后,在打開的“Load preview”對話框中,繼續(xù)單擊“Load”按鈕。
- 在S7-PLCSIM 中使用“Add”菜單來加載子窗口“Input”和“Counter”,用來監(jiān)視和控制程序。對于“Station_1”需要“EB2”和“Z1”。
- 在S7-PLCSIM1的“CPU”子窗口中,將運行模式從“STOP”切換到“RUN-P”。
圖. 2
- 選中項目導航中的“Station_2”并重復步驟1來打開第二個“S7-PLCSIM2”實例。
- 在“Load preview”對話框中單擊“Load”按鈕。
- 與步驟5相同,給實例“S7-PLCSIM2”添加“Output”。對于“Station_2”需要“AW1”。
- 在S7-PLCSIM2中的“CPU”子窗口中,將運行模式從“STOP”切換到“RUN-P”。
圖. 3
- 在S7-PLCSIM1(仿真Station 1)中,EB2控制計數器Z1并將計數值傳送到S7-PLCSIM2 (仿真Station 2)中的AW1。
- E2.0: 自動向上計數的時鐘標記
- E2.1:向上計數
- E2.2: 向下計數
- E2.3: 計數器的預設值
- E2.4: 復位計數器