西门子博图RD_SINFO:读取当前OB启动信息

描述

说明

可使用指令“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 的结构元素与 OB 80 的相关本地变量之间的分配关系。

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 的结构元素与 OB 100 的相关本地变量之间的分配关系。

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”)。

存储

  审核编辑:汤梓红

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分