說明
可使用指令“RD_SINFO”讀取
上一次調用的但尚未執行完成的 OB 和
上一次啟動的啟動 OB 中的啟動信息。
兩種情況下都沒有時間戳。如果在 OB 100、OB 101 或 OB 102 中進行調用,則將返回兩個相同的啟動信息。
下表列出了“RD_SINFO”指令的參數:
參數 | 聲明 | 數據類型 | 存儲區 | 說明 |
---|---|---|---|---|
RET_VAL | Return | INT | I、Q、M、D、L | 錯誤信息 |
TOP_SI | Output | VARIANT | D、L | 當前 OB 的啟動信息 |
START_UP_SI | Output | VARIANT | D、L | 上一次啟動時啟動 OB 的 ?啟動信息 |
參數 TOP_SI 的 SDT
下表列出了參數 TOP_SI 的 SDT:
組織塊 (OB) | 系統數據類型 (SDT) | 系統數據類型編號 |
---|---|---|
任意 | 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 |
參數 START_UP_SI 的 SDT
下表列出了參數 START_UP_SI 的 SDT:
系統數據類型 (SDT) | 系統數據類型編號 |
---|---|
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 結構
結構元素 | 數據類型 | 說明 |
---|---|---|
EV_CLASS | BYTE |
位 0 至 3:事件 ID 位 4 至 7:事件類別 |
EV_NUM | BYTE | 事件編號 |
PRIORITY | BYTE |
優先級編號 (B#16#FE 的含義:OB 不可用或已禁用,或無法在當前操作模式中啟動) |
NUM | BYTE | OB 編號 |
TYP2_3 | BYTE |
數據 ID 2_3: 標識在 ZI2_3 中輸入的信息 |
TYP1 | BYTE |
數據 ID 1: 標識在 ZI1 中輸入的信息 |
ZI1 | WORD | 附加信息 1 |
ZI2_3 | DWORD | 附加信息 2_3 |
SI_none 結構
結構元素 | 數據類型 | 說明 |
---|---|---|
SI_Format | USINT |
16#FF = 無信息 16#FE = 優化啟動信息 |
OB_Class | USINT | “無信息”或“優化啟動信息”的 OB 類別 |
OB_Nr | UINT | OB 編號(1 到 32767) |
SI_ProgramCycle 結構
結構元素 | 數據類型 | 說明 |
---|---|---|
SI_Format | USINT |
16#FF = 無信息 16#FE = 優化啟動信息 |
OB_Class | USINT := 1 | “無信息”或“優化啟動信息”的 OB 類別 |
OB_Nr | UINT | OB 編號(1 到 32767) |
Initial_Call | BOOL | OB_Class = 1、30、52、61、65 |
Remanence | BOOL | OB_Class = 1 |
SI_TimeOfDay 結構
結構元素 | 數據類型 | 說明 |
---|---|---|
SI_Format | USINT |
16#FF = 無信息 16#FE = 優化啟動信息 |
OB_Class | USINT := 10 | “無信息”或“優化啟動信息”的 OB 類別 |
OB_Nr | UINT | OB 編號(1 到 32767) |
CaughtUp | BOOL | OB_Class = 10 |
SecondTime | BOOL | OB_Class = 10 |
SI_Delay 結構
結構元素 | 數據類型 | 說明 |
---|---|---|
SI_Format | USINT |
16#FF = 無信息 16#FE = 優化啟動信息 |
OB_Class | USINT := 20 | “無信息”或“優化啟動信息”的 OB 類別 |
OB_Nr | UINT | OB 編號(1 到 32767) |
Sign | WORD | OB_Class = 20 |
SI_Cyclic 結構
結構元素 | 數據類型 | 說明 |
---|---|---|
SI_Format | USINT |
16#FF = 無信息 16#FE = 優化啟動信息 |
OB_Class | USINT := 30 | “無信息”或“優化啟動信息”的 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 結構
結構元素 | 數據類型 | 說明 |
---|---|---|
SI_Format | USINT |
16#FF = 無信息 16#FE = 優化啟動信息 |
OB_Class | USINT := 40 | “無信息”或“優化啟動信息”的 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
結構元素 | 數據類型 | 字節 | 說明 |
---|---|---|---|
SI_Format | USINT | 0 |
16#FF = 無信息 16#FE = 優化啟動信息 |
OB_Class | USINT := 40 | 1 | “無信息”或“優化啟動信息”的 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 結構
結構元素 | 數據類型 | 說明 |
---|---|---|
SI_Format | USINT |
16#FF = 無信息 16#FE = 優化啟動信息 |
OB_Class | USINT | “無信息”或“優化啟動信息”的 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 結構
結構元素 | 數據類型 | 說明 |
---|---|---|
SI_Format | USINT |
16#FF = 無信息 16#FE = 優化啟動信息 |
OB_Class | USINT := 61 | “無信息”或“優化啟動信息”的 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 | 計算得到的循環時間 |
SI_IORedundancyError 結構
結構元素 | 數據類型 | 說明 |
---|---|---|
SI_Format | USINT |
16#FF = 無信息 16#FE = 優化啟動信息 |
OB_Class | USINT := 70 | “無信息”或“優化啟動信息”的 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 結構
結構元素 | 數據類型 | 說明 |
---|---|---|
SI_Format | USINT |
16#FF = 無信息 16#FE = 優化啟動信息 |
OB_Class | USINT := 72 | “無信息”或“優化啟動信息”的 OB 類別 |
OB_Nr | UINT | OB 編號(1 到 32767) |
Switch_Over | BOOL | OB_Class = 72 |
SI_TimeError 結構
結構元素 | 數據類型 | 說明 |
---|---|---|
SI_Format | USINT |
16#FF = 無信息 16#FE = 優化啟動信息 |
OB_Class | USINT := 80 | “無信息”或“優化啟動信息”的 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 結構
結構元素 | 數據類型 | 說明 |
---|---|---|
SI_Format | USINT |
16#FF = 無信息 16#FE = 優化啟動信息 |
OB_Class | USINT := 82 | “無信息”或“優化啟動信息”的 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 結構
結構元素 | 數據類型 | 說明 |
---|---|---|
SI_Format | USINT |
16#FF = 無信息 16#FE = 優化啟動信息 |
OB_Class | USINT := 83 | “無信息”或“優化啟動信息”的 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 結構
結構元素 | 數據類型 | 說明 |
---|---|---|
SI_Format | USINT |
16#FF = 無信息 16#FE = 優化啟動信息 |
OB_Class | USINT := 85 | “無信息”或“優化啟動信息”的 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 結構
結構元素 | 數據類型 | 說明 |
---|---|---|
SI_Format | USINT |
16#FF = 無信息 16#FE = 優化啟動信息 |
OB_Class | USINT := 86 | “無信息”或“優化啟動信息”的 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 結構
結構元素 | 數據類型 | 說明 |
---|---|---|
SI_Format | USINT |
16#FF = 無信息 16#FE = 優化啟動信息 |
OB_Class | USINT := 91 | “無信息”或“優化啟動信息”的 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 結構
結構元素 | 數據類型 | 說明 |
---|---|---|
SI_Format | USINT |
16#FF = 無信息 16#FE = 優化啟動信息 |
OB_Class | USINT := 92 | “無信息”或“優化啟動信息”的 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 結構
結構元素 | 數據類型 | 說明 |
---|---|---|
SI_Format | USINT |
16#FF = 無信息 16#FE = 優化啟動信息 |
OB_Class | USINT := 100 | “無信息”或“優化啟動信息”的 OB 類別 |
OB_Nr | UINT | OB 編號(1 到 32767) |
LostRetentive | BOOL | OB_Class = 100 |
LostRTC | BOOL | OB_Class = 100 |
SI_ProgIOAcessError 結構
結構元素 | 數據類型 | 說明 |
---|---|---|
SI_Format | USINT |
16#FF = 無信息 16#FE = 優化啟動信息 |
OB_Class | USINT | “無信息”或“優化啟動信息”的 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 的結構
結構元素 | 數據類型 | 說明 |
---|---|---|
SI_Format | USINT |
16#FF = 無信息 16#FE = 優化啟動信息 |
OB_Class | USINT := 72 | “無信息”或“優化啟動信息”的 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 |
說明 如果創建的塊屬性為“Standard”,則 SI_classic 結構中指定的結構元素內容將與 OB 臨時變量的內容相同。 但請注意,各 OB 的臨時變量可具有不同名稱和數據類型。另請注意,每個 OB 的調用接口都包含有關 OB 請求的日期與時間的附加信息。 |
結構元素 EV_CLASS 的位 4 至 7 包括事件類別??梢允窍旅娴闹担?/p>
1:來自標準 OB 的啟動事件
2:來自同步錯誤 OB 的啟動事件
3:來自異步錯誤 OB 的啟動事件
結構元素 PRIORITY 提供屬于當前 OB 的優先級。
除這兩個元素之外,NUM 也很重要。NUM 包含當前 OB 或最后啟動的啟動 OB 的編號。
參數 RET_VAL
下表列出了 RET_VAL 參數值的含義:
錯誤代碼* (W#16#...) | 說明 |
---|---|
8081 | 當前 OB 的啟動信息與指定的系統數據類型不匹配。 |
8083 | 上一次啟動中啟動 OB 的啟動信息與指定的系統數據類型不匹配。 |
示例
OB 80 是最后調用的 OB 且尚未處理完,而 OB 100 是最后啟動的啟動 OB。
下表列出了指令“RD_SINFO”的參數 TOP_SI 的結構元素與 OB80 的相關本地變量之間的分配關系。
TOP_SI 結構元素 |
數據類型 | OB 80 - 相關本地變量 | 數據類型 |
---|---|---|---|
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”的參數 START_UP_SI 的結構元素與 OB100 的相關本地變量之間的分配關系。
START_UP_SI 結構元素 |
數據類型 | OB 100 - 本地變量 | 數據類型 |
---|---|---|---|
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 |
示例
在以下示例中,讀取上次調用的程序循環 OB 的啟動信息,以及 CPU 中上次啟動的啟動 OB 的啟動信息。
在全局數據塊中,創建 3 個變量進行數據存儲。
在 OB1 中,調用指令“RD_SINFO”?;ミB“RD_SINFO”指令的參數,如下所示:
在本示例中,僅使用 CPU 的一個 OB。
輸入參數 EN 返回信號狀態“TRUE”時,啟動指令“RD_SINFO”?!癛D_SINFO”指令將讀取上次調用的程序循環 OB (OB1) 中的啟動信息;并輸出到輸出參數 TOP_SI(“SI_ProgrammCycle”)中。將在輸出參數 ?START_UP_SI (“SI_Startup”) 處,中輸出上一次啟動時啟動 OB 的啟動信息。
根據參數“SI_Format”的值,OB1 可使用優化啟動信息。此外,該指令還將讀取該 OB 的類別(“OB_Class”)以及指定的 OB 編號(“OB_Nr”)。由于 CPU 未使用任何啟動 OB,因此不會讀取啟動 OB(“SI_Startup”)的編號(“OB_Nr”的值為“0”)。并顯示該啟動 OB 的標準值(“SI_Format”,“OB_Class”)。
輸出參數 RET_VAL(“returnValue”)可用于指示示例的執行過程中無錯誤(值為“0”)。
審核編輯:湯梓紅
-
西門子
+關注
關注
94文章
3039瀏覽量
115866 -
存儲
+關注
關注
13文章
4314瀏覽量
85842 -
指令
+關注
關注
1文章
607瀏覽量
35710
原文標題:西門子博圖RD_SINFO:讀取當前 OB 啟動信息
文章出處:【微信號:gh_a8b121171b08,微信公眾號:機器人及PLC自動化應用】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論