说明
可使用指令“RD_SINFO”读取
上一次调用的但尚未执行完成的 OB 和
上一次启动的启动 OB 中的启动信息。
两种情况下都没有时间戳。如果在 OB 100、OB 101 或 OB 102 中进行调用,则将返回两个相同的启动信息。
参数
下表列出了“RD_SINFO”指令的参数:
参数声明数据类型存储区说明RET_VALReturnINTI、Q、M、D、L错误信息TOP_SIOutputVARIANTD、L当前 OB 的启动信息START_UP_SIOutputVARIANTD、L上一次启动时启动 OB 的 启动信息参数 TOP_SI 的 SDT
下表列出了参数 TOP_SI 的 SDT:
组织块 (OB)系统数据类型 (SDT)系统数据类型编号任意SI_classic592SI_none593ProgramCycleOBSI_ProgramCycle594TimeOfDayOBSI_TimeOfDay595TimeDelayOBSI_Delay596CyclicOBSI_Cyclic597ProcessEventOBSI_HWInterrupt598
SI_HWInterrupt_Extended616ProfileEventOB
StatusEventOB
UpdateEventOBSI_Submodule601SynchronousCycleOBSI_SynchCycle602IOredundancyErrorOBSI_IORedundancyError604CPUredundancyErrorOBSI_CPURedundancyError605TimeErrorOBSI_TimeError606DiagnosticErrorOBSI_DiagnosticInterrupt607PullPlugEventOBSI_PlugPullModule608PeripheralAccessErrorOBSI_AccessError609RackStationFailureOBSI_StationFailure610ServoOBSI_Servo611IpoOBSI_Ipo612StartupOBSI_Startup613ProgrammingErrorOB
IOaccessErrorOBSI_ProgIOAccessError614CPURedundancyErrorOBSI_CPURedundancyError_V2617
参数 START_UP_SI 的 SDT
下表列出了参数 START_UP_SI 的 SDT:
系统数据类型 (SDT)系统数据类型编号SI_classic592SI_none593SI_Startup613结构
下表列出了各结构中结构元素含义:
所有表格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_CLASSBYTE位 0 至 3:事件 ID位 4 至 7:事件类别EV_NUMBYTE事件编号PRIORITYBYTE优先级编号
(B#16#FE 的含义:OB 不可用或已禁用,或无法在当前操作模式中启动)NUMBYTEOB 编号TYP2_3BYTE数据 ID 2_3:
标识在 ZI2_3 中输入的信息TYP1BYTE数据 ID 1:
标识在 ZI1 中输入的信息ZI1WORD附加信息 1ZI2_3DWORD附加信息 2_3
SI_none 结构
结构元素数据类型说明SI_FormatUSINT16#FF = 无信息16#FE = 优化启动信息OB_ClassUSINT“无信息”或“优化启动信息”的 OB 类别OB_NrUINTOB 编号(1 到 32767)
SI_ProgramCycle 结构
结构元素数据类型说明SI_FormatUSINT16#FF = 无信息16#FE = 优化启动信息OB_ClassUSINT := 1“无信息”或“优化启动信息”的 OB 类别OB_NrUINTOB 编号(1 到 32767)Initial_CallBOOLOB_Class = 1、30、52、61、65RemanenceBOOLOB_Class = 1
SI_TimeOfDay 结构
结构元素数据类型说明SI_FormatUSINT16#FF = 无信息16#FE = 优化启动信息OB_ClassUSINT := 10“无信息”或“优化启动信息”的 OB 类别OB_NrUINTOB 编号(1 到 32767)CaughtUpBOOLOB_Class = 10SecondTimeBOOLOB_Class = 10
SI_Delay 结构
结构元素数据类型说明SI_FormatUSINT16#FF = 无信息16#FE = 优化启动信息OB_ClassUSINT := 20“无信息”或“优化启动信息”的 OB 类别OB_NrUINTOB 编号(1 到 32767)SignWORDOB_Class = 20
SI_Cyclic 结构
结构元素数据类型说明SI_FormatUSINT16#FF = 无信息16#FE = 优化启动信息OB_ClassUSINT := 30“无信息”或“优化启动信息”的 OB 类别OB_NrUINTOB 编号(1 到 32767)Initial_CallBOOLOB_Class = 1、30、52、61、65Event_CountINTOB_Class = 30、51、52、61、65、91、92
SI_HWInterrupt 结构
结构元素数据类型说明SI_FormatUSINT16#FF = 无信息16#FE = 优化启动信息OB_ClassUSINT := 40“无信息”或“优化启动信息”的 OB 类别OB_NrUINTOB 编号(1 到 32767)LADDRHW_IOOB_Class = 40、51、55、56、57、70、82、83、85、86、91、92USIWORDOB_Class = 40IChannelUSINTOB_Class = 40EventTypeBYTEOB_Class = 40
Structure SI_HWInterrupt_Extended
结构元素数据类型字节说明SI_FormatUSINT016#FF = 无信息16#FE = 优化启动信息OB_ClassUSINT := 401“无信息”或“优化启动信息”的 OB 类别OB_NrUINT2OB 编号(1 到 32767)LADDRHW_IO4OB_Class = 40、51、55、56、57、70、82、83、85、86、91、92USIWORD6OB_Class = 40IChannelUSINT8OB_Class = 40EventTypeBYTE9OB_Class = 40PointAddrDWORD12OB_Class = 40
SI_Submodule 结构
结构元素数据类型说明SI_FormatUSINT16#FF = 无信息16#FE = 优化启动信息OB_ClassUSINT“无信息”或“优化启动信息”的 OB 类别OB_NrUINTOB 编号(1 到 32767)LADDRHW_IOOB_Class = 40、51、55、56、57、70、82、83、85、86、91、92SlotUINTOB_Class = 55、56、57SpecifierWORDOB_Class = 55、56、57
SI_SynchCycle 结构
结构元素数据类型说明SI_FormatUSINT16#FF = 无信息16#FE = 优化启动信息OB_ClassUSINT := 61“无信息”或“优化启动信息”的 OB 类别OB_NrUINTOB 编号(1 到 32767)Initial_CallBOOLOB_Class = 1、30、52、61、65PIP_InputBOOLOB_Class = 61、91、92PIP_OutputBOOLOB_Class = 61、91、92IO_SystemUSINTOB_Class = 61、91、92Event_CountINTOB_Class = 30、51、52、61、65、91、92SyncCycleTimeLTIME计算得到的循环时间
SI_IORedundancyError 结构
结构元素数据类型说明SI_FormatUSINT16#FF = 无信息16#FE = 优化启动信息OB_ClassUSINT := 70“无信息”或“优化启动信息”的 OB 类别OB_NrUINTOB 编号(1 到 32767)LADDRHW_ANYOB_Class = 40、51、55、56、57、70、82、83、85、86、91、92Event_ClassBYTEOB_Class = 70、83、85、86Fault_IDBYTEOB_Class = 70、80、83、85、86
SI_CPURedundancyError 结构
结构元素数据类型说明SI_FormatUSINT16#FF = 无信息16#FE = 优化启动信息OB_ClassUSINT := 72“无信息”或“优化启动信息”的 OB 类别OB_NrUINTOB 编号(1 到 32767)Switch_OverBOOLOB_Class = 72
SI_TimeError 结构
结构元素数据类型说明SI_FormatUSINT16#FF = 无信息16#FE = 优化启动信息OB_ClassUSINT := 80“无信息”或“优化启动信息”的 OB 类别OB_NrUINTOB 编号(1 到 32767)Fault_IDBYTEOB_Class = 70、80、83、85、86Csg_OBnrOB_ANYOB_Class = 80Csg_PrioUINTOB_Class = 80
SI_DiagnosticInterrupt 结构
结构元素数据类型说明SI_FormatUSINT16#FF = 无信息16#FE = 优化启动信息OB_ClassUSINT := 82“无信息”或“优化启动信息”的 OB 类别OB_NrUINTOB 编号(1 到 32767)IO_StateWORDOB_Class = 82LADDRHW_ANYOB_Class = 40、51、55、56、57、70、82、83、85、86、91、92ChannelUINTOB_Class = 82MultiErrorBOOLOB_Class = 82
SI_PlugPullModule 结构
结构元素数据类型说明SI_FormatUSINT16#FF = 无信息16#FE = 优化启动信息OB_ClassUSINT := 83“无信息”或“优化启动信息”的 OB 类别OB_NrUINTOB 编号(1 到 32767)LADDRHW_IOOB_Class = 40、51、55、56、57、70、82、83、85、86、91、92Event_ClassBYTEOB_Class = 70、83、85、86Fault_IDBYTEOB_Class = 70、80、83、85、86
SI_AccessError 结构
结构元素数据类型说明SI_FormatUSINT16#FF = 无信息16#FE = 优化启动信息OB_ClassUSINT := 85“无信息”或“优化启动信息”的 OB 类别OB_NrUINTOB 编号(1 到 32767)LADDRHW_IOOB_Class = 40、51、55、56、57、70、82、83、85、86、91、92Event_ClassBYTEOB_Class = 70、83、85、86Fault_IDBYTEOB_Class = 70、80、83、85、86IO_AddrUINTOB_Class = 85IO_LENUINTOB_Class = 85
SI_StationFailure 结构
结构元素数据类型说明SI_FormatUSINT16#FF = 无信息16#FE = 优化启动信息OB_ClassUSINT := 86“无信息”或“优化启动信息”的 OB 类别OB_NrUINTOB 编号(1 到 32767)LADDRHW_IOOB_Class = 40、51、55、56、57、70、82、83、85、86、91、92Event_ClassBYTEOB_Class = 70、83、85、86Fault_IDBYTEOB_Class = 70、80、83、85、86
SI_Servo 结构
结构元素数据类型说明SI_FormatUSINT16#FF = 无信息16#FE = 优化启动信息OB_ClassUSINT := 91“无信息”或“优化启动信息”的 OB 类别OB_NrUINTOB 编号(1 到 32767)Initial_CallBOOLOB_Class = 1、30、52、61、65PIP_InputBOOLOB_Class = 61、91、92PIP_OutputBOOLOB_Class = 61、91、92IO_SystemUSINTOB_Class = 61、91、92Event_CountINTOB_Class = 30、51、52、61、65、91、92SynchronousBOOL
SI_Ipo 结构
结构元素数据类型说明SI_FormatUSINT16#FF = 无信息16#FE = 优化启动信息OB_ClassUSINT := 92“无信息”或“优化启动信息”的 OB 类别OB_NrUINTOB 编号(1 到 32767)Initial_CallBOOLOB_Class = 1、30、52、61、65PIP_InputBOOLOB_Class = 61、91、92PIP_OutputBOOLOB_Class = 61、91、92IO_SystemUSINTOB_Class = 61、91、92Event_CountINTOB_Class = 30、51、52、61、65、91、92ReductionUINTOB_Class = 92
SI_Startup 结构
结构元素数据类型说明SI_FormatUSINT16#FF = 无信息16#FE = 优化启动信息OB_ClassUSINT := 100“无信息”或“优化启动信息”的 OB 类别OB_NrUINTOB 编号(1 到 32767)LostRetentiveBOOLOB_Class = 100LostRTCBOOLOB_Class = 100
SI_ProgIOAcessError 结构
结构元素数据类型说明SI_FormatUSINT16#FF = 无信息16#FE = 优化启动信息OB_ClassUSINT“无信息”或“优化启动信息”的 OB 类别OB_NrUINTOB 编号(1 到 32767)BlockNrUINTOB_Class = 121、122ReactionUSINTOB_Class = 121、122Fault_IDBYTEOB_Class = 121、122BlockTypeUSINTOB_Class = 121、122AreaUSINTOB_Class = 121、122DBNrDB_ANYOB_Class = 121、122Csg_OBNrOB_ANYOB_Class = 121、122Csg_PrioUSINTOB_Class = 121、122WidthUSINTOB_Class = 121、122
SI_CPURedundancyError_V2 的结构
结构元素数据类型说明SI_FormatUSINT16#FF = 无信息16#FE = 优化启动信息OB_ClassUSINT := 72“无信息”或“优化启动信息”的 OB 类别OB_NrUINTOB 编号(1 到 32767)LADDRHW_ANYOB_Class = 40、51、55、56、57、70、82、83、85、86、91、92Event_ClassBYTEOB_Class = 70、83、85、86Fault_IDBYTEOB_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_CLASSBYTEOB80_EV_CLASSBYTEEV_NUMBYTEOB80_FLT_IDBYTEPRIORITYBYTEOB80_PRIORITYBYTENUMBYTEOB80_OB_NUMBRBYTETYP2_3BYTEOB80_RESERVED_1BYTETYP1BYTEOB80_RESERVED_2BYTEZI1WORDOB80_ERROR_INFOWORDZI2_3DWORDOB80_ERR_EV_CLASSBYTEOB80_ERR_EV_NUMBYTEOB80_OB_PRIORITYBYTEOB80_OB_NUMBYTE
下表列出了指令“RD_SINFO”的参数 START_UP_SI 的结构元素与 OB100 的相关本地变量之间的分配关系。
START_UP_SI结构元素数据类型OB 100 - 本地变量数据类型EV_CLASSBYTEOB100_EV_CLASSBYTEEV_NUMBYTEOB100_STRTUPBYTEPRIORITYBYTEOB100_PRIORITYBYTENUMBYTEOB100_OB_NUMBRBYTETYP2_3BYTEOB100_RESERVED_1BYTETYP1BYTEOB100_RESERVED_2BYTEZI1WORDOB100_STOPWORDZI2_3DWORDOB100_STRT_INFODWORD
示例
在以下示例中,读取上次调用的程序循环 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”)。