说明
可使用指令“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 包括事件类别。可以是下面的值:
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”。互连“RD_SINFO”指令的参数,如下所示:
在本示例中,仅使用 CPU 的一个 OB。
输入参数 EN 返回信号状态“TRUE”时,启动指令“RD_SINFO”。“RD_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”)。
审核编辑:汤梓红
-
西门子
+关注
关注
93文章
3008浏览量
115625 -
存储
+关注
关注
13文章
4261浏览量
85669 -
指令
+关注
关注
1文章
606浏览量
35649
原文标题:西门子博图RD_SINFO:读取当前 OB 启动信息
文章出处:【微信号:gh_a8b121171b08,微信公众号:机器人及PLC自动化应用】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
相关推荐
评论