SIEMENS西门子 数字量输出 6ES7 522-1BH10-0AA0
TIO_DI_ONCE:读入数字量输入中的沿和关联时间戳一次 (S7-1200, S7-1500) 说明 TIO_DI_ONCE 会检测一次 TIO 模块数字量输入中的边沿,并返回关联时间戳。或者,可以 使用此指令对组态为另一个通道的沿触发使能信号的定时器 DI 通道进行控制。 启动特性 CPU 启动期间,TIO_DI_ONCE 指令将应用一次输入参数并检查以下内容: • 检查 HWID • 检查数字量输入 (Channel) 的编号是否处于允许的范围(取决于已寻址模块和通道组态) • 检查 TIO_SYNC_Data.ERROR:TIO_SYNC 中是否存在错误? • 检查 TIO_SYNC_Data.TO_TIMES 的似然性(0 ms 至 4 ms) • 检查 OB 是否为等时 OB 如果启动时没有错误,该指令将切换为正常运行状态。出现错误时,指令不会切换到正常运 行状态,并且会生成错误消息。 功能说明:时间戳检测 正常运行期间,指令会检测数字量输入中的边沿和在启动读取作业后第一个有效的已定义边 沿对的关联时间戳。使用输入参数 EdgeSel 来确定要检测时间戳的沿。为了检测新沿对,需 要该指令 REQ 输入参数的一个新上升沿。 将输入 TIO_SYNC_Data 与 TIO_SYNC 指令中的同名输出相连。这样可确保共享时间基准。 下图显示了在读取作业开始时 (EdgeSel = 4),位 DONE 和 BUSY 响应的示例:参数 库版本中的 声明 数据类型 默认值 说明 < V2.0 ≥ V2.0 S7-1500 Error 输出 Bool False Error = True: 发生错误。有关详细信息,请参见 Status 参 数。 修正错误后,会立即复位 Error。 TIO_SYNC_D ata* 输入 InOu t "TIO_ SYNC_ Data" TIO_SYNC 指令为 TIO 模块 的 TIO 指令提供的系统时间。 请参见“UDT TIO_SYNC_Data (页 5474)”。 将此输入参数与 TIO_SYNC 指令的“TIO_SYNC_Data”输出 参数相连。错误代码表 错误代码 含义 解决方案 (DW#16#. ..) 00000000 无错误。 — 10010000 Channel 输入参数中分配的数字量输入的编号超出 允许的范围(取决于已寻址模块和通道组态)。 更正 Channel 输入参数中的值。 10020000 未在等时 OB 中调用 TIO_DI 指令。该指令只能在没 有错误时在等时 OB 中使用。 确保在 "Synchronous Cycle" 或“MCPostServo”OB 中调用 TIO_DI。 10030000 读取 HWID 输入参数时出错。 检查 HWID 输入参数中的值。在硬件配置中 通过 TIO 模块的属性指定 TIO 模块的硬件标 识符。数据类型 Hw_SubModule 的内部系 统常数可用于符号寻址。 x0040000 TIO_SYNC_Data 中的数据无效/不正确。 检查 TIO_SYNC 指令和其 TIO_SYNC_Data 输 出的互连。 1005xxxx 执行 RD_SINFO 系统函数期间出错。低位字 xxxx 显 示 RD_SINFO 中返回值 RET_VAL 的错误信息。 • 在 STEP 7 (TIA Portal) 信息系统中读取 RD_SINFO 的描述。 • 确保在 "Synchronous Cycle" 或“MCPostServo”OB 中调用 TIO_DI。 10060000 未找到 TIO 模块。 可能原因: 使用硬件标识符组态的模块不是 TIO 模块。 • 确保组态的模块是 TIO 模块。 • 检查 HWID 输入参数中的值。在硬件配置 中通过 TIO 模块的属性指定 TIO 模块的硬 件标识符。 10070000 地址计算期间发生内部错误。 检查 HWID 输入参数中的值。在硬件配置中 通过 TIO 模块的属性指定 TIO 模块的硬件标 识符。数据类型 Hw_SubModule 的内部系 统常数可用于符号寻址。 00080000 未使用 TIO_SYNC 指令同步 TIO 模块。 错误代码也可能指示: • 首次运行该指令前作业已经存在。 • Channel 输入参数中分配的编号不是数字量输入。 检查指令 TIO_SYNC。 10090000 等时 OB 的读取周期时间超出 0 < TAPP <= 16 ms 的 允许范围,因此无效。 该指令只能在没有错误时在等时 OB 中使用。 • 更正周期时间。 • 确保在 "Synchronous Cycle" 或“MCPostServo”OB 中调用 TIO_DI。 100A0000 存储在 TIO_SYNC_Data 中的 TIO 模块的时间 TO 超 出允许范围 (0 < To <= 4 ms)。 检查指令 TIO_SYNC。
错误代码 含义 解决方案 (DW#16#. ..) 100Bxxxx 执行 RD_ADDR 系统函数期间出错。低位字 xxxx 显 示 RD_ADDR 中返回值 RET_VAL 的错误信息。 在 STEP 7 (TIA Portal) 信息系统中读取 RD_ADDR 的描述。 000C0000 转换的时间戳无效。 错误原因: 通信错误 检查与 TIO 模块的通信。 000D0000 数字量输入的 Quality Information 指示数字量输入 中已发生错误。 检查电源电压 L+/1L+/2L+。 000E0000 Channel 输入参数中分配的编号不是组态为 Timer DI 数字量输入。 • 检查通道组态(jinxian TM Timer DIDQ 16x24V)。 • 检查数字量输入的工作模式。 000F0000 EdgeSel 输入参数中分配的值在有效范围 1 到 5 之 外。 更正 EdgeSel 输入参数中的值。 10100000 发送时钟超出 0 < SendClock <= 4 ms 的允许范围, 因此无效。 错误代码也可能指示: • TIO_SYNC_Data 中的数据无效或不存在。 • 未在等时 OB 中调用 TIO_DI 指令。 更正发送时钟。 x0130000 MC-Servo (OB91) 未与总线周期等时同步。 将 MC-Servo 的周期时间的值更正为总线周 期时间的值。 注意: 在类型为“MC-PostServo”的 OB(减速比为 "MC-Servo")中调用 TIO 指令会导致计算出 的时间戳不正确。 10140000 在 HWID 输入参数中组态的值不存在于 TIO_SYNC_Data 参数的结构中。HWID 和 TIO_SYNC_Data 参数不一致。 更正 HWID 输入参数中的值或 TIO_SYNC_Data 参数的结构。功能说明:沿触发使能 可以使用此指令对组态为另一个通道的沿触发使能信号的定时器 DI 通道进行控制。 示例: 对于 TIO 模块 TM Timer DIDQ 10x24V,在 DQ0/DI0 硬件配置中进行以下组态: • 组态 DQ/DI 组 = 使能定时器 DQ • 通过 DI0 使能硬件 = 沿触发 • DQ0 不反转 在该示例中,指令 TIO_DQ 用于 DQ0,指令 TIO_DI_ONCE 用于 DI0。可通过 TIO_DI_ONCE 的参数 REQ 和 EdgeSel 控制使能。TIO_DI_ONCE 根据 EdgeSel 值记录时间戳后,便会视为 使能有效。复位 REQ 可取消使能。 下图显示了 EdgeSel = 4n 时的示例(先是上升沿,然后是下降沿)。在这种情况下,DI0 的 第一个有效上升沿在读入作业开始后确认使能 DQ0。1 在使能输入的上升沿开始使能 2 REQ 出现下降沿时结束使能 必要时,可为应用使用指令检测到的时间戳。 对错误的响应 Error 输出指示指令处理是否正确。发生错误时,会在 Status 输出中显示错误原因。 参数 下表列出了 TIO_DI_ONCE 指令的参数。 参数 声明 数据类型 默认值 说明 S7-1500 REQ 输入 Bool False 在上升沿开始作业。 HWID* 输入 HW_IO 0 硬件配置中 TIO 模块的硬件标识符 Channel* 输入 UInt 0 已连接的 TIO 模块的数字量输入的编号参数 声明 数据类型 默认值 说明 S7-1500 EdgeSel 输入 UInt 3 指定要检测时间戳的沿: 0D:无效 1:两个上升沿 2:两个下降沿 3:上升沿和下降沿(顺序取决于发生时间) 4:先上升沿,后下降沿 5:先下降沿,后上升沿 6 到 255:无效 如果使用沿触发使能,则以下内容也适用: 1:在第一个 DI 上升沿使能 2:在第一个 DI 下降沿使能 3:在第一个 DI 沿使能 4:在第一个 DI 上升沿使能 5:在第一个 DI 下降沿使能 正常运行期间,可以更改 EdgeSel。 DONE 输出 Bool False DONE = True: 作业已完成且没有错误。 BUSY 输出 Bool False BUSY = True:作业尚未完成。 Error 输出 Bool False Error = True: 发生错误。有关详细信息,请参见 Status 参 数。 修正错误后,会立即复位 Error。 Status 输出 DWord 16#0 指令的状态:请参见 Status 参数的描述 DI 输出 Bool False 数字量输入的状态。 如果组态了数字量输入的反转,则此参数也会反转。 TimeStam pRE 输出 LTime LT#0ns 时间戳: EdgeSel = 1: 检测到上升沿的倒数第二个读入时间(如果 出现多个上升沿)。 EdgeSel = 2: 检测到下降沿的Zui后读入时间(如果出现多 个下降沿)。 EdgeSel = 3; 4; 5: 检测到下降沿的Zui后读入时间。