說明
可使用指令“RD_SINFO”讀取
上一次調(diào)用的但尚未執(zhí)行完成的 OB 和
上一次啟動的啟動 OB 中的啟動信息。
兩種情況下都沒有時間戳。如果在 OB 100、OB 101 或 OB 102 中進行調(diào)用,則將返回兩個相同的啟動信息。
參數(shù)
下表列出了“RD_SINFO”指令的參數(shù):
| 參數(shù) | 聲明 | 數(shù)據(jù)類型 | 存儲區(qū) | 說明 |
|---|---|---|---|---|
| RET_VAL | Return | INT | I、Q、M、D、L | 錯誤信息 |
| TOP_SI | Output | VARIANT | D、L | 當前 OB 的啟動信息 |
| START_UP_SI | Output | VARIANT | D、L | 上一次啟動時啟動 OB 的 ?啟動信息 |
參數(shù) TOP_SI 的 SDT
下表列出了參數(shù) TOP_SI 的 SDT:
| 組織塊 (OB) | 系統(tǒng)數(shù)據(jù)類型 (SDT) | 系統(tǒng)數(shù)據(jù)類型編號 |
|---|---|---|
| 任意 | SI_classic | 592 |
| SI_none | 593 | |
| ProgramCycleOB | SI_ProgramCycle | 594 |
| TimeOfDayOB | SI_TimeOfDay | 595 |
| TimeDelayOB | SI_Delay | 596 |
| CyclicOB | SI_Cyclic | 597 |
| ProcessEventOB | SI_HWInterrupt | 598 |
| SI_HWInterrupt_Extended | 616 | |
|
ProfileEventOB StatusEventOB UpdateEventOB |
SI_Submodule | 601 |
| SynchronousCycleOB | SI_SynchCycle | 602 |
| IOredundancyErrorOB | SI_IORedundancyError | 604 |
| CPUredundancyErrorOB | SI_CPURedundancyError | 605 |
| TimeErrorOB | SI_TimeError | 606 |
| DiagnosticErrorOB | SI_DiagnosticInterrupt | 607 |
| PullPlugEventOB | SI_PlugPullModule | 608 |
| PeripheralAccessErrorOB | SI_AccessError | 609 |
| RackStationFailureOB | SI_StationFailure | 610 |
| ServoOB | SI_Servo | 611 |
| IpoOB | SI_Ipo | 612 |
| StartupOB | SI_Startup | 613 |
|
ProgrammingErrorOB IOaccessErrorOB |
SI_ProgIOAccessError | 614 |
| CPURedundancyErrorOB | SI_CPURedundancyError_V2 | 617 |
參數(shù) START_UP_SI 的 SDT
下表列出了參數(shù) START_UP_SI 的 SDT:
| 系統(tǒng)數(shù)據(jù)類型 (SDT) | 系統(tǒng)數(shù)據(jù)類型編號 |
|---|---|
| SI_classic | 592 |
| SI_none | 593 |
| SI_Startup | 613 |
結構
下表列出了各結構中結構元素含義:
所有表格SI_classic 結構SI_none 結構SI_ProgramCycle 結構SI_TimeOfDay 結構SI_Delay 結構SI_Cyclic 結構SI_HWInterrupt 結構Structure SI_HWInterrupt_ExtendedSI_Submodule 結構SI_SynchCycle 結構SI_IORedundancyError 結構SI_CPURedundancyError 結構SI_TimeError 結構SI_DiagnosticInterrupt 結構SI_PlugPullModule 結構SI_AccessError 結構SI_StationFailure 結構SI_Servo 結構SI_Ipo 結構SI_Startup 結構
SI_classic 結構
| 結構元素 | 數(shù)據(jù)類型 | 說明 |
|---|---|---|
| EV_CLASS | BYTE |
位 0 至 3:事件 ID 位 4 至 7:事件類別 |
| EV_NUM | BYTE | 事件編號 |
| PRIORITY | BYTE |
優(yōu)先級編號 (B#16#FE 的含義:OB 不可用或已禁用,或無法在當前操作模式中啟動) |
| NUM | BYTE | OB 編號 |
| TYP2_3 | BYTE |
數(shù)據(jù) ID 2_3: 標識在 ZI2_3 中輸入的信息 |
| TYP1 | BYTE |
數(shù)據(jù) ID 1: 標識在 ZI1 中輸入的信息 |
| ZI1 | WORD | 附加信息 1 |
| ZI2_3 | DWORD | 附加信息 2_3 |
SI_none 結構
| 結構元素 | 數(shù)據(jù)類型 | 說明 |
|---|---|---|
| SI_Format | USINT |
16#FF = 無信息 16#FE = 優(yōu)化啟動信息 |
| OB_Class | USINT | “無信息”或“優(yōu)化啟動信息”的 OB 類別 |
| OB_Nr | UINT | OB 編號(1 到 32767) |
SI_ProgramCycle 結構
| 結構元素 | 數(shù)據(jù)類型 | 說明 |
|---|---|---|
| SI_Format | USINT |
16#FF = 無信息 16#FE = 優(yōu)化啟動信息 |
| OB_Class | USINT := 1 | “無信息”或“優(yōu)化啟動信息”的 OB 類別 |
| OB_Nr | UINT | OB 編號(1 到 32767) |
| Initial_Call | BOOL | OB_Class = 1、30、52、61、65 |
| Remanence | BOOL | OB_Class = 1 |
SI_TimeOfDay 結構
| 結構元素 | 數(shù)據(jù)類型 | 說明 |
|---|---|---|
| SI_Format | USINT |
16#FF = 無信息 16#FE = 優(yōu)化啟動信息 |
| OB_Class | USINT := 10 | “無信息”或“優(yōu)化啟動信息”的 OB 類別 |
| OB_Nr | UINT | OB 編號(1 到 32767) |
| CaughtUp | BOOL | OB_Class = 10 |
| SecondTime | BOOL | OB_Class = 10 |
SI_Delay 結構
| 結構元素 | 數(shù)據(jù)類型 | 說明 |
|---|---|---|
| SI_Format | USINT |
16#FF = 無信息 16#FE = 優(yōu)化啟動信息 |
| OB_Class | USINT := 20 | “無信息”或“優(yōu)化啟動信息”的 OB 類別 |
| OB_Nr | UINT | OB 編號(1 到 32767) |
| Sign | WORD | OB_Class = 20 |
SI_Cyclic 結構
| 結構元素 | 數(shù)據(jù)類型 | 說明 |
|---|---|---|
| SI_Format | USINT |
16#FF = 無信息 16#FE = 優(yōu)化啟動信息 |
| OB_Class | USINT := 30 | “無信息”或“優(yōu)化啟動信息”的 OB 類別 |
| OB_Nr | UINT | OB 編號(1 到 32767) |
| Initial_Call | BOOL | OB_Class = 1、30、52、61、65 |
| Event_Count | INT | OB_Class = 30、51、52、61、65、91、92 |
SI_HWInterrupt 結構
| 結構元素 | 數(shù)據(jù)類型 | 說明 |
|---|---|---|
| SI_Format | USINT |
16#FF = 無信息 16#FE = 優(yōu)化啟動信息 |
| OB_Class | USINT := 40 | “無信息”或“優(yōu)化啟動信息”的 OB 類別 |
| OB_Nr | UINT | OB 編號(1 到 32767) |
| LADDR | HW_IO | OB_Class = 40、51、55、56、57、70、82、83、85、86、91、92 |
| USI | WORD | OB_Class = 40 |
| IChannel | USINT | OB_Class = 40 |
| EventType | BYTE | OB_Class = 40 |
Structure SI_HWInterrupt_Extended
| 結構元素 | 數(shù)據(jù)類型 | 字節(jié) | 說明 |
|---|---|---|---|
| SI_Format | USINT | 0 |
16#FF = 無信息 16#FE = 優(yōu)化啟動信息 |
| OB_Class | USINT := 40 | 1 | “無信息”或“優(yōu)化啟動信息”的 OB 類別 |
| OB_Nr | UINT | 2 | OB 編號(1 到 32767) |
| LADDR | HW_IO | 4 | OB_Class = 40、51、55、56、57、70、82、83、85、86、91、92 |
| USI | WORD | 6 | OB_Class = 40 |
| IChannel | USINT | 8 | OB_Class = 40 |
| EventType | BYTE | 9 | OB_Class = 40 |
| PointAddr | DWORD | 12 | OB_Class = 40 |
SI_Submodule 結構
| 結構元素 | 數(shù)據(jù)類型 | 說明 |
|---|---|---|
| SI_Format | USINT |
16#FF = 無信息 16#FE = 優(yōu)化啟動信息 |
| OB_Class | USINT | “無信息”或“優(yōu)化啟動信息”的 OB 類別 |
| OB_Nr | UINT | OB 編號(1 到 32767) |
| LADDR | HW_IO | OB_Class = 40、51、55、56、57、70、82、83、85、86、91、92 |
| Slot | UINT | OB_Class = 55、56、57 |
| Specifier | WORD | OB_Class = 55、56、57 |
SI_SynchCycle 結構
| 結構元素 | 數(shù)據(jù)類型 | 說明 |
|---|---|---|
| SI_Format | USINT |
16#FF = 無信息 16#FE = 優(yōu)化啟動信息 |
| OB_Class | USINT := 61 | “無信息”或“優(yōu)化啟動信息”的 OB 類別 |
| OB_Nr | UINT | OB 編號(1 到 32767) |
| Initial_Call | BOOL | OB_Class = 1、30、52、61、65 |
| PIP_Input | BOOL | OB_Class = 61、91、92 |
| PIP_Output | BOOL | OB_Class = 61、91、92 |
| IO_System | USINT | OB_Class = 61、91、92 |
| Event_Count | INT | OB_Class = 30、51、52、61、65、91、92 |
| SyncCycleTime | LTIME | 計算得到的循環(huán)時間 |
SI_IORedundancyError 結構
| 結構元素 | 數(shù)據(jù)類型 | 說明 |
|---|---|---|
| SI_Format | USINT |
16#FF = 無信息 16#FE = 優(yōu)化啟動信息 |
| OB_Class | USINT := 70 | “無信息”或“優(yōu)化啟動信息”的 OB 類別 |
| OB_Nr | UINT | OB 編號(1 到 32767) |
| LADDR | HW_ANY | OB_Class = 40、51、55、56、57、70、82、83、85、86、91、92 |
| Event_Class | BYTE | OB_Class = 70、83、85、86 |
| Fault_ID | BYTE | OB_Class = 70、80、83、85、86 |
SI_CPURedundancyError 結構
| 結構元素 | 數(shù)據(jù)類型 | 說明 |
|---|---|---|
| SI_Format | USINT |
16#FF = 無信息 16#FE = 優(yōu)化啟動信息 |
| OB_Class | USINT := 72 | “無信息”或“優(yōu)化啟動信息”的 OB 類別 |
| OB_Nr | UINT | OB 編號(1 到 32767) |
| Switch_Over | BOOL | OB_Class = 72 |
SI_TimeError 結構
| 結構元素 | 數(shù)據(jù)類型 | 說明 |
|---|---|---|
| SI_Format | USINT |
16#FF = 無信息 16#FE = 優(yōu)化啟動信息 |
| OB_Class | USINT := 80 | “無信息”或“優(yōu)化啟動信息”的 OB 類別 |
| OB_Nr | UINT | OB 編號(1 到 32767) |
| Fault_ID | BYTE | OB_Class = 70、80、83、85、86 |
| Csg_OBnr | OB_ANY | OB_Class = 80 |
| Csg_Prio | UINT | OB_Class = 80 |
SI_DiagnosticInterrupt 結構
| 結構元素 | 數(shù)據(jù)類型 | 說明 |
|---|---|---|
| SI_Format | USINT |
16#FF = 無信息 16#FE = 優(yōu)化啟動信息 |
| OB_Class | USINT := 82 | “無信息”或“優(yōu)化啟動信息”的 OB 類別 |
| OB_Nr | UINT | OB 編號(1 到 32767) |
| IO_State | WORD | OB_Class = 82 |
| LADDR | HW_ANY | OB_Class = 40、51、55、56、57、70、82、83、85、86、91、92 |
| Channel | UINT | OB_Class = 82 |
| MultiError | BOOL | OB_Class = 82 |
SI_PlugPullModule 結構
| 結構元素 | 數(shù)據(jù)類型 | 說明 |
|---|---|---|
| SI_Format | USINT |
16#FF = 無信息 16#FE = 優(yōu)化啟動信息 |
| OB_Class | USINT := 83 | “無信息”或“優(yōu)化啟動信息”的 OB 類別 |
| OB_Nr | UINT | OB 編號(1 到 32767) |
| LADDR | HW_IO | OB_Class = 40、51、55、56、57、70、82、83、85、86、91、92 |
| Event_Class | BYTE | OB_Class = 70、83、85、86 |
| Fault_ID | BYTE | OB_Class = 70、80、83、85、86 |
SI_AccessError 結構
| 結構元素 | 數(shù)據(jù)類型 | 說明 |
|---|---|---|
| SI_Format | USINT |
16#FF = 無信息 16#FE = 優(yōu)化啟動信息 |
| OB_Class | USINT := 85 | “無信息”或“優(yōu)化啟動信息”的 OB 類別 |
| OB_Nr | UINT | OB 編號(1 到 32767) |
| LADDR | HW_IO | OB_Class = 40、51、55、56、57、70、82、83、85、86、91、92 |
| Event_Class | BYTE | OB_Class = 70、83、85、86 |
| Fault_ID | BYTE | OB_Class = 70、80、83、85、86 |
| IO_Addr | UINT | OB_Class = 85 |
| IO_LEN | UINT | OB_Class = 85 |
SI_StationFailure 結構
| 結構元素 | 數(shù)據(jù)類型 | 說明 |
|---|---|---|
| SI_Format | USINT |
16#FF = 無信息 16#FE = 優(yōu)化啟動信息 |
| OB_Class | USINT := 86 | “無信息”或“優(yōu)化啟動信息”的 OB 類別 |
| OB_Nr | UINT | OB 編號(1 到 32767) |
| LADDR | HW_IO | OB_Class = 40、51、55、56、57、70、82、83、85、86、91、92 |
| Event_Class | BYTE | OB_Class = 70、83、85、86 |
| Fault_ID | BYTE | OB_Class = 70、80、83、85、86 |
SI_Servo 結構
| 結構元素 | 數(shù)據(jù)類型 | 說明 |
|---|---|---|
| SI_Format | USINT |
16#FF = 無信息 16#FE = 優(yōu)化啟動信息 |
| OB_Class | USINT := 91 | “無信息”或“優(yōu)化啟動信息”的 OB 類別 |
| OB_Nr | UINT | OB 編號(1 到 32767) |
| Initial_Call | BOOL | OB_Class = 1、30、52、61、65 |
| PIP_Input | BOOL | OB_Class = 61、91、92 |
| PIP_Output | BOOL | OB_Class = 61、91、92 |
| IO_System | USINT | OB_Class = 61、91、92 |
| Event_Count | INT | OB_Class = 30、51、52、61、65、91、92 |
| Synchronous | BOOL |
SI_Ipo 結構
| 結構元素 | 數(shù)據(jù)類型 | 說明 |
|---|---|---|
| SI_Format | USINT |
16#FF = 無信息 16#FE = 優(yōu)化啟動信息 |
| OB_Class | USINT := 92 | “無信息”或“優(yōu)化啟動信息”的 OB 類別 |
| OB_Nr | UINT | OB 編號(1 到 32767) |
| Initial_Call | BOOL | OB_Class = 1、30、52、61、65 |
| PIP_Input | BOOL | OB_Class = 61、91、92 |
| PIP_Output | BOOL | OB_Class = 61、91、92 |
| IO_System | USINT | OB_Class = 61、91、92 |
| Event_Count | INT | OB_Class = 30、51、52、61、65、91、92 |
| Reduction | UINT | OB_Class = 92 |
SI_Startup 結構
| 結構元素 | 數(shù)據(jù)類型 | 說明 |
|---|---|---|
| SI_Format | USINT |
16#FF = 無信息 16#FE = 優(yōu)化啟動信息 |
| OB_Class | USINT := 100 | “無信息”或“優(yōu)化啟動信息”的 OB 類別 |
| OB_Nr | UINT | OB 編號(1 到 32767) |
| LostRetentive | BOOL | OB_Class = 100 |
| LostRTC | BOOL | OB_Class = 100 |
SI_ProgIOAcessError 結構
| 結構元素 | 數(shù)據(jù)類型 | 說明 |
|---|---|---|
| SI_Format | USINT |
16#FF = 無信息 16#FE = 優(yōu)化啟動信息 |
| OB_Class | USINT | “無信息”或“優(yōu)化啟動信息”的 OB 類別 |
| OB_Nr | UINT | OB 編號(1 到 32767) |
| BlockNr | UINT | OB_Class = 121、122 |
| Reaction | USINT | OB_Class = 121、122 |
| Fault_ID | BYTE | OB_Class = 121、122 |
| BlockType | USINT | OB_Class = 121、122 |
| Area | USINT | OB_Class = 121、122 |
| DBNr | DB_ANY | OB_Class = 121、122 |
| Csg_OBNr | OB_ANY | OB_Class = 121、122 |
| Csg_Prio | USINT | OB_Class = 121、122 |
| Width | USINT | OB_Class = 121、122 |
SI_CPURedundancyError_V2 的結構
| 結構元素 | 數(shù)據(jù)類型 | 說明 |
|---|---|---|
| SI_Format | USINT |
16#FF = 無信息 16#FE = 優(yōu)化啟動信息 |
| OB_Class | USINT := 72 | “無信息”或“優(yōu)化啟動信息”的 OB 類別 |
| OB_Nr | UINT | OB 編號(1 到 32767) |
| LADDR | HW_ANY | OB_Class = 40、51、55、56、57、70、82、83、85、86、91、92 |
| Event_Class | BYTE | OB_Class = 70、83、85、86 |
| Fault_ID | BYTE | OB_Class = 70、80、83、85、86 |
|
說明 如果創(chuàng)建的塊屬性為“Standard”,則 SI_classic 結構中指定的結構元素內(nèi)容將與 OB 臨時變量的內(nèi)容相同。 但請注意,各 OB 的臨時變量可具有不同名稱和數(shù)據(jù)類型。另請注意,每個 OB 的調(diào)用接口都包含有關 OB 請求的日期與時間的附加信息。 |
結構元素 EV_CLASS 的位 4 至 7 包括事件類別??梢允窍旅娴闹担?/p>
1:來自標準 OB 的啟動事件
2:來自同步錯誤 OB 的啟動事件
3:來自異步錯誤 OB 的啟動事件
結構元素 PRIORITY 提供屬于當前 OB 的優(yōu)先級。
除這兩個元素之外,NUM 也很重要。NUM 包含當前 OB 或最后啟動的啟動 OB 的編號。
參數(shù) RET_VAL
下表列出了 RET_VAL 參數(shù)值的含義:
| 錯誤代碼* (W#16#...) | 說明 |
|---|---|
| 8081 | 當前 OB 的啟動信息與指定的系統(tǒng)數(shù)據(jù)類型不匹配。 |
| 8083 | 上一次啟動中啟動 OB 的啟動信息與指定的系統(tǒng)數(shù)據(jù)類型不匹配。 |
示例
OB 80 是最后調(diào)用的 OB 且尚未處理完,而 OB 100 是最后啟動的啟動 OB。
下表列出了指令“RD_SINFO”的參數(shù) TOP_SI 的結構元素與 OB80 的相關本地變量之間的分配關系。
|
TOP_SI 結構元素 |
數(shù)據(jù)類型 | OB 80 - 相關本地變量 | 數(shù)據(jù)類型 |
|---|---|---|---|
| EV_CLASS | BYTE | OB80_EV_CLASS | BYTE |
| EV_NUM | BYTE | OB80_FLT_ID | BYTE |
| PRIORITY | BYTE | OB80_PRIORITY | BYTE |
| NUM | BYTE | OB80_OB_NUMBR | BYTE |
| TYP2_3 | BYTE | OB80_RESERVED_1 | BYTE |
| TYP1 | BYTE | OB80_RESERVED_2 | BYTE |
| ZI1 | WORD | OB80_ERROR_INFO | WORD |
| ZI2_3 | DWORD | OB80_ERR_EV_CLASS | BYTE |
| OB80_ERR_EV_NUM | BYTE | ||
| OB80_OB_PRIORITY | BYTE | ||
| OB80_OB_NUM | BYTE |
下表列出了指令“RD_SINFO”的參數(shù) START_UP_SI 的結構元素與 OB100 的相關本地變量之間的分配關系。
|
START_UP_SI 結構元素 |
數(shù)據(jù)類型 | OB 100 - 本地變量 | 數(shù)據(jù)類型 |
|---|---|---|---|
| EV_CLASS | BYTE | OB100_EV_CLASS | BYTE |
| EV_NUM | BYTE | OB100_STRTUP | BYTE |
| PRIORITY | BYTE | OB100_PRIORITY | BYTE |
| NUM | BYTE | OB100_OB_NUMBR | BYTE |
| TYP2_3 | BYTE | OB100_RESERVED_1 | BYTE |
| TYP1 | BYTE | OB100_RESERVED_2 | BYTE |
| ZI1 | WORD | OB100_STOP | WORD |
| ZI2_3 | DWORD | OB100_STRT_INFO | DWORD |
示例
在以下示例中,讀取上次調(diào)用的程序循環(huán) OB 的啟動信息,以及 CPU 中上次啟動的啟動 OB 的啟動信息。
在全局數(shù)據(jù)塊中,創(chuàng)建 3 個變量進行數(shù)據(jù)存儲。

在 OB1 中,調(diào)用指令“RD_SINFO”。互連“RD_SINFO”指令的參數(shù),如下所示:
在本示例中,僅使用 CPU 的一個 OB。

輸入?yún)?shù) EN 返回信號狀態(tài)“TRUE”時,啟動指令“RD_SINFO”?!癛D_SINFO”指令將讀取上次調(diào)用的程序循環(huán) OB (OB1) 中的啟動信息;并輸出到輸出參數(shù) TOP_SI(“SI_ProgrammCycle”)中。將在輸出參數(shù) ?START_UP_SI (“SI_Startup”) 處,中輸出上一次啟動時啟動 OB 的啟動信息。
根據(jù)參數(shù)“SI_Format”的值,OB1 可使用優(yōu)化啟動信息。此外,該指令還將讀取該 OB 的類別(“OB_Class”)以及指定的 OB 編號(“OB_Nr”)。由于 CPU 未使用任何啟動 OB,因此不會讀取啟動 OB(“SI_Startup”)的編號(“OB_Nr”的值為“0”)。并顯示該啟動 OB 的標準值(“SI_Format”,“OB_Class”)。
輸出參數(shù) RET_VAL(“returnValue”)可用于指示示例的執(zhí)行過程中無錯誤(值為“0”)。

審核編輯:湯梓紅
-
西門子
+關注
關注
98文章
3239瀏覽量
119504 -
存儲
+關注
關注
13文章
4638瀏覽量
89175 -
指令
+關注
關注
1文章
617瀏覽量
37221
原文標題:西門子博圖RD_SINFO:讀取當前 OB 啟動信息
文章出處:【微信號:gh_a8b121171b08,微信公眾號:機器人及PLC自動化應用】歡迎添加關注!文章轉載請注明出處。
發(fā)布評論請先 登錄
暢銷西門子助聽器價格表_西門子助聽器價格大全
西門子是哪個國家的品牌_西門子發(fā)明了什么
博世和西門子哪個好_博世和西門子的關系
博圖如何實現(xiàn)遠程調(diào)試西門子PLC
西門子PLC的暖啟動、冷啟動、熱啟動有何區(qū)別
西門子PLC編程軟件功能及安裝
西門子PLC中OB塊的功能詳解
S7協(xié)議讀取西門子S7-200 Smart PLC數(shù)據(jù)

西門子博圖RD_SINFO:讀取當前OB啟動信息
評論