ASI_CTRL:控制 AS-i主站行为 (S7-300, S7-400) ASI_CTRL 说明 (S7-300, S7-400) 说明使用指令“ASI_CTRL”,可控制 PLC 用户程序中 AS-i 主站的行为。该指令可自动处理命令协议。 该指令还可启用SIMATIC AS-i 主站上的参数分配并读出信息数据。有关命令接口的功能和操 作详细信息,请参见 AS-i 主站手册。 支持通过PROFIBUS DP 的集中式插入的 AS-i 主站和分布式 AS-i 主站。也可以组合使用 PROFINET IO(例如IE/PB Link PN IO)。 以下示意图介绍了指令“ASI_CTRL”的功能:① 开始处理 REQ 参数。 ②该程序通过指令“RDREC”向 AS-i 主站发送所需的命令。 ③ AS-i 主站将处理该命令。 ④ AS-i主站的当前状态存储在二进制数据的输入区(逻辑起始地址)。 ⑤ 指令“ASI_CTRL”将循环查询并评估 4 个状态位。 ⑥命令处理完成之后,将立用“RDREC”完成命令作业。根据命令的不同,数据字段“RDREC”中可能包含命令的响应数据或其它状态信息。
DONE ERROR STATUS 含义 01 8383 AS-i 接口有错误 0 1 8384 命令(通信处理器的状态中)非法。 0 1 8385 从站 0 存在。 0 183A1 在 AS-i 接口上未发现需要更改地址的从站。 0 1 83A2 从站 0 存在。 0 1 83A3 AS-i接口上已存在具有新地址的从站。 0 1 83A4 不能删除从站地址。 0 1 83A5 不能设置从站地址。 0 1 83A6不能yongjiu性设置从站地址。 0 1 83F8 作业号未知。 0 1 83F9 EEPROM 错误 0 1 8F22读取一个参数时发生超出范围错误。 8F23 写入参数时发生超出范围错误。 此错误代码指示某个参数全部或部分位于地址范围之外,或参数ANY 的位范 围的长度不是 8 的倍数。 0 1 8F24 读取参数时发生超出范围错误。 8F25 写入参数时发生超出范围错误。此错误代码指示某个参数位于对于某一系统 函数来说非法的范围内。 0 1 8F28 读取参数时发生对齐错误。 8F29写入参数时发生对齐错误。此错误代码指示参数引用是一个带有不等于“0”的 位地址的操作数。 0 1 8F30 参数位于只读全局 DB中。 8F31 参数位于只读实例 DB 中。 此错误代码指示某个参数位于只读数据块中。 0 1 8F32 参数包含过大的 DB 编号0 1 8F3A 此参数包含尚未加载的 DB 编号。 0 1 8F42 系统尝试从外设输入区读取一个参数时,发生访问错误。 8F43系统尝试向外设输出区写入一个参数时,发生访问错误。 0 1 8F44 此错误代码指示已拒juedui参数的读访问8F45此错误代码指示已拒juedui参数的写访问0 1 8F7F 内部错误。指令版本之间的相互关系 版本为 V1.3的指令“ASI_CTRL”要求“WRREC”指令的版本为 V1.1。 版本为 V1.2的指令“ASI_CTRL”要求“WRREC”指令的版本为 V1.1。 IE/AS-i LINK 和 CP/DP/AS-i LINK之间命令调用的区别 控制器与 AS-i 主站交换命令的方式有很大的区别。 • IE/AS-i Link (PROFINET)使用数据记录接口。可使用“写入数据记录”(“WRREC”指令)或“读取数据记录”(“RDREC”指令)通过各种数据记录编号调用不同的命令。 • S7-300 CP 和 DP/AS-i Link(PROFIBUS) 使用命令接口。可使用“写入数据记录”(“WRREC”指令)和“读取数据记录”(“RDREC”指令)通过数据记录编号 2 调用所有命令。命令类型由写入作业中的数据内容定义。 与指令“ASi_3422”的不同之处。 指令“ASI_CTRL”是指令“ASi_3422(页 7733)”的修订版,可提供增强的功能和兼容性。这些 特定更改如下所示: •对于写入和读取诊断数据记录,指令“WR_REC (页 7697)”和“RD_REC (页 7692)”已被指 令“RDREC(页 7657)”和“WRREC (页 7660)”替换。它们的功能相同;但它们支持通过 PROFINET IO的数据传输。 • 该指令的块类型已从函数 (FC) 更改为函数块 (FB)。“ASI_CTRL”包含一个实例块并支持多 重实例。 •“ASI_CTRL”的形式参数名称符合 SIMATIC 系统块要求。没有任何 STARTUP 输入错误。 STATUS参数的定义以指令“RDREC (页7657)”和“WRREC (页7660)”为基础。参数 DONE 和新参数 BUSY的状态标识符已调整。“ASI_CTRL”指令的操作 指令“ASI_CTRL”为异步函数块,也就是说,它的执行可以延长并跨越多个调用。• REQ = TRUE 时,启动作业。 • 通过 BUSY 输出参数以及输出参数 STATUS 的两个中间字节显示作业状态。 •BUSY 参数在作业处理期间设置。根据首次调用,为 STATUS 分配值 00700100H。根据该 作业的所有后续调用,为其分配值00700200H。作业完成时,将在参数 DONE 或 ERROR 处输出结果。 – 如果无错误出现,则置位 DONE。对于带有AS-i 主站中响应数据的作业,该数据在特 定的接收存储区中提供。此时,STATUS 参数仍将以字节为单位显示所提供的数据量。对于不含响应数据的作业,将在 STATUS 中输入值 00000000H。 – 如果作业处理期间出错,则置位ERROR。在这种情况下,接收缓冲区的内容无效。将 所发生错误的更多详细说明的错误代码输入 STATUS 参数中。 命令调用次数如果使用指令“ASI_CTRL”发送命令,可能不会使用“RDREC (页7657)”或“WRREC (页7660)” 向相同的AS-i 主站发送其它命令。这也适用于相同 AS-i 主站指令的多个调用。指令“ASI_CTRL”不能与中断一同运行。不能在可相互中断的程序优先级中对调用进行 编程(例如,OB 1 和 OB 35中的调用)。 参数 下表列出了“ASI_CTRL”指令的参数: 参数 声明 数据类型 存储区 说明 REQ Input BOOLI、Q、M、D、L REQ = TRUE 时会启动一个新作业(除非有 作业正在处理中)。不进行边沿检测。 LADDR InputWORD I、Q、M、D、L 或 常量 S7 地址空间中 AS-i 主站的起始地址(逻 辑基本地址)。主站组态时,起始地址在硬件组态中定义。 SD Input ANY I、Q、M、D、L 发送缓冲区 该参数引用了一个需指定该命令的存储区 域(参见“ASi命令 (页 7742)”)。 示例:P#DB101.DBX 0.0 BYTE 223参数 声明 数据类型 存储区 说明 RDInput ANY I、Q、M、D、L 接收缓冲区 此缓冲区仅与传送响应数据的命令有关。 该参数引用了一个存储命令响应的存储区域(参见“ASi 命令 (页 7742)”)。 示例:P#DB102.DBX 224.0 BYTE 221 DONEOutput BOOL Q、M、D、L DONE = TRUE:作业已成功完成。 BUSY Output BOOL Q、M、D、LBUSY = TRUE:作业正在运行中。 ERROR Output BOOL Q、M、D、L ERROR =TRUE:作业因错误而中止。 STATUS Output DWORD M、D 作业状态/错误代码 请参见“STATUS”参数说明。有关有效数据类型的更多信息,请参见“有效数据类型概述”。 说明 LADDR、SD 和 RD 参数 作业在运行过程中,任何块循环中的参数LADDR、SD 和 RD 不得更改:它们必须保持不变。ASi 命令 (S7-300, S7-400) 说明 该指令接口允许控制器和AS-i 主站交换参数分配和信息数据。 这些命令 • 提供 AS-i 主站规格的 M4 主站配置文件的所有功能。 •启用将由控制器进行完整组态的 AS-i 主站。 说明 支持的 AS-i 命令 有关支持的 AS-i 命令和详细说明,请参见相关AS-i 主站的手册。 发送缓冲区的一般结构 命令和作业数据的发送缓冲区一般结构在下表中列出。必须填充命令编号区域。作业数据的字节数可在命令说明中找到(请参见 AS-i 主站文档)。此时,“q”为发送缓冲区的起始地址。接收缓冲区的一般结构命令响应数据的接收缓冲区一般结构在下表中列出。响应数据的字节数目取决于命令。有些命令不会返回响应数据,仅需要其中未填充数据的虚拟接收缓冲区定义。此时,“n”为 接收缓冲区的起始地址。可覆盖存储区如果“ASI_CTRL”指令的接收缓冲区过短,则可能覆盖相邻的存储区。与调用“ASI_CTRL”指令 时 RD 参数的 ANY指针中指定的长度不相关。接收缓冲区所需的长度可在命令说明中找到。 以下内容适用于命令编号 39H、41H、42H、43H 和 44H:接收缓冲区长度必须为 221 字节(字节 0 到 220),命令会返回较少的数据。根据命 令,AS-i主站可用零值覆盖接收缓冲区的Zui高位字节。重新初始化 AS-i 主站命令接口 该表格中未包含的另一条命令为命令 77H。该指令用于重新初始化 AS-i 主站的命令接口。由 AS-i 主站指定且当前正在执行的所有命令都将终止。 DP/AS-i LINKAdvanced 的版本 V2.1.20 及其以上版本都提供命令 0E H。利用此调用可释放或阻止线路的接地故障监视功能。