SIEMENS西门子 接口模块 6ES7151-1AA06-0AB0
禁用 SNMP:完整程序示例 (S7-1200) 简介 本示例适用于 S7-1500 和 S7-1200。 要在项目中使用该程序代码,请按以下步骤操作: 1. 将整个程序代码复制到剪贴板中。 2. 打开文本编辑器(如,“Editor”)。 3. 使用快捷键 Ctrl+V,将剪贴板中的内容粘贴到文本编辑器中。将该文档保存为 scl 文件,如 SNMP_DEACT.scl。 4. 在 STEP 7 中打开项目。 5. 将 scl 文件作为外部源文件进行导入。 6. 生成启动 OB 和数据块。 7. 右键单击该 scl 文件,并在快捷菜单中选择“通过源文件生成块”(Generate block from source)。• 团体字符串只能在组态中更改;团体字符串不能通过用户程序中的数据记录来设置。 但是,可以通过数据记录激活组态的团体字符串。 例如: 已在 S7-1500 CPU 的组态中将 SNMP 设置为取消激活。更改 CPU 属性中的默认团体字符 串,然后将组态下载到 CPU 中。 然后,通过数据记录传输激活 SNMP。 结果:将采用更改后的团体字符串。 • 对于固件版本不超过 2.9 的 S7-1200 CPU 和 S7-1500 CPU,当激活 SNMP 时,预设的社 区字符串(“public”和“private”)始终有效。启动 OB (S7-1200) 说明 可以确定 CPU 启动特性的边界条件,例如,“RUN”对应的初始值。 为此,请编写启动程序。 启动程序包括一个或多个启动 OB(OB 编号为 100 或大于等于 123)。 启动程序在从“STOP”模式切换到“RUN”模式期间执行一次。 输入过程映像中的当前值对于启 动程序不可用,也不能设置这些值。 启动 OB 执行完毕后,将读入输入过程映像并启动循环程序。 启动例程的执行没有时间限制。 因此,未激活扫描循环监视时间。 不能使用时间驱动或中 断驱动的组织块。循环 OB (S7-1200) 简介 要启动程序执行,项目中至少要有一个程序循环 OB。操作系统每个周期调用该程序循环 OB 一次,从而启动用户程序的执行。 可以使用多个 OB(OB 编号大于等于 123)。 使用多个 程序循环 OB 时,将按照 OB 编号依次调用。 首先调用 OB 编号Zui低的程序循环 OB。 程序循环 OB 的优先等级为 1。这对应于所有 OB 的Zui低优先级。 任何其它事件类别的事件 都可以中断循环程序。 对循环程序执行进行编程 可通过在循环 OB 以及所调用的块中编写用户程序对循环程序执行进行编程。 一旦成功执行启动程序后,就会开始第一次循环程序执行。 每次循环程序执行结束后,循 环重新开始。 循环程序执行的顺序 一个程序执行周期包括以下步骤: 1. 操作系统启动Zui大循环时间。 2. 操作系统将输出过程映像中的值写到输出模块。 3. 操作系统读取输入模块的输入状态,并更新输入过程映像。 4. 操作系统处理用户程序并执行程序中包含的运算。 5. 在循环结束时,操作系统执行所有未决的任务,例如加载和删除块,或调用其它循环 OB。 6. Zui后,CPU 返回到循环起点,并重新启动扫描循环监视时间。 另请参见: 过程映像输入/输出 (页 1170) 中断选项 循环程序执行可被以下事件中断: • 中断 • 以下情况触发的 STOP 命令 – 编程设备的运行 – “STP”指令 • 电源故障 • 发生设备故障或程序出错。
名称 数据类型 含义 first_scan BOOL 为 TRUE,在下列情况下第一次调用此 OB 时: • 从 STOP 或 HOLD 切换为 RUN • 重新加载后 保持性 BOOL 为 TRUE,如果保持性数据可用时间中断 OB (S7-1200) 功能 时间中断组织块(OB 编号大于等于 123)可能的运行情况如下: • 在某个预设时间(带日时钟的日期)只运行一次 • 在预设的起始时间周期性运行,可设置以下时间间隔: – 每分钟 – 每小时 – 每天 – 每周 – 每月 – 每年 – 每月底 因此,时间中断 OB 用于在时间可控的基础上定期运行一部分用户程序。时间中断的状态: 下表列出了时间中断的可能状态及其含义。 状态 含义 取消 仅运行一次的时间中断已经发生,或尚未运行的时间中断的启动事件已通过指令 CAN_TINT 删除。 设置 已经设置时间中断运行的时间或启动时间。 激活 已经设置了是仅运行一次运行还是周期性运行;周期性运行时,时间间隔已设置。 时间中断规则: 以下规则适用于时间中断的应用: • 只有在设置并激活了时间中断且用户程序中存在相应组织块的情况下,才能运行时间中断。 • 周期性时间中断的启动时间必须与实际日期对应。 例如,若某个组织块第一次运行的时 间为 1 月 31 日,则无法每月重复执行该组织块。 这种情况下,只有在具有 31 天的月份 中才会启动该 OB。 • 启动期间通过扩展指令调用 ACT_TINT 激活的时间中断不会在启动结束前执行。 • 每次 CPU 启动之后,必须重新激活先前设置的时间中断。 设置和激活时间中断 OB 必须先设置和激活该时间中断后才能从操作系统删除和运行该时间中断 OB。 可使用下列方 法: 设置时间中断 激活时间中断 通过组态 通过组态 通过组态 通过调用扩展指令 ACT_TINT 通过调用扩展指令 SET_TINTL 通过调用扩展指令 ACT_TINT 说明 如果组态时间中断时设置相应 OB 只执行一次,则启动时间一定不能为过去的时间(与 CPU 的实时时钟相关)。 如果组态时间中断时设置周期性执行相应 OB,但启动时间已过,则将在下次的这个时间执 行该时间中断。时间中断状态查询 为了查询时间中断的状态,请调用扩展指令 QRY_TINT。 取消时间中断 可通过扩展指令 CAN_TINT 来取消尚未执行的时间中断。 可通过扩展指令 SET_TINTL 来恢复已经取消的时间中断,并通过扩展指令 ACT_TINT 激活。 影响时间中断 OB 的条件 由于时间中断仅在指定的时间间隔执行,因此在程序执行期间某些情况可能会影响相关 OB 的功能。 下表列出了其中的一些条件,并说明了它们对执行时间中断 OB 的影响。 条件 结果 在用户程序中调用扩展指令 CAN_TINT。 操作系统删除时间中断的启动事件(日期和时间)。 如果要再次调用时间中断 OB,必须恢复并重新激活该 时间中断。 通过对 CPU 系统时钟进行同步或修正,将日时钟设置 得快一些。 这样就会忽略时间中断 OB 的启动时间。 操作系统调用时间错误中断 OB (OB 80),并在启动信 息中记录第一个忽略的时间中断 OB 的启动事件、编号 和优先级。 在处理完 OB 80 之后,操作系统仅运行一 次刚才忽略的时间中断 OB。 通过对 CPU 系统时钟进行同步或修正,将日时钟设置 得慢一些。修正后的时钟时间较已运行的时间中断 OB 的启动时间要早。 重复执行该时间中断 OB。 下次启动事件开始时还在继续执行该时间中断 OB。 操作系统将调用时间错误中断 OB 80。只有在当前时 间中断 OB 的运行和后续执行完毕后,才会处理请求的 OB。CaughtUp BOOL =1(当由于将时钟向前调整而执行了 OB 调用时)。 SecondTime BOOL =1(当由于将时钟时间向后调整而再次调用该 OB 时,具体而言就是, 当前 OB 计划的执行时间早于或等于前一次 OB 计划的执行时间时)。 注: SecondTime 仅设置一次。 状态中断 OB (S7-1200) 说明 接收到状态中断时,S7-1200 CPU 的操作系统将从 DP 主站或 IO 控制器调用状态中断 OB。 如果从站中的模块更改了操作模式(如,从“RUN”转为“STOP”),则可能执行以上操作。有 关可触发状态中断的事件的更多详细信息,请参见从站或设备制造商文档。 启动信息的结构 状态中断 OB 包含有以下启动信息: 名称 数据类型 含义 LADDR HW_IO 触发中断组件的硬件地址 插槽 UINT 触发中断组件的插槽号 指示符 WORD 来自中断帧的中断指示符 参见 事件和 OB (页 1174) 更新中断 OB (S7-1200) 说明 接收到状态中断时,S7-1200 CPU 的操作系统将从 DP 主站或 IO 控制器调用更新中断 OB。 如果更改了从站或设备的插槽参数,则可能执行以上操作。有关可触发更新中断的事件的更 多详细信息,请参见从站或设备制造商文档。启动信息的结构 更新中断 OB 包含具有以下启动信息: 名称 数据类型 含义 LADDR HW_IO 触发中断组件的硬件地址 插槽 UINT 触发中断组件的插槽号 指示符 WORD 来自中断帧的中断指示符 参见 事件和 OB (页 1174) 供应商或配置文件特定的中断 OB (S7-1200) 说明 从 DP 主站或 IO 控制器接收到制造商或配置文件特定的中断时,S7-1200 CPU 的操作系统将 调用 OB 57。有关可触发此类型中断的事件的更多详细信息,请参见从站或设备制造商文档。 启动信息的结构 制造商或配置文件特定的中断 OB 包含有以下启动信息: 名称 数据类型 含义 LADDR HW_IO 触发中断组件的硬件地址 插槽 UINT 触发中断组件的插槽号 指示符 WORD 来自中断帧的中断指示符。延时中断 OB (S7-1200) 说明 延时中断 OB 在经过操作系统中一段可组态的延时时间后启动。在调用 SRT_DINT 指令后开 始计延时时间。 在用户程序中,Zui多可使用 4 个延时中断 OB(或循环中断 OB)。例如,如果已使用 2 个 循环中断 OB,则在用户程序中Zui多可以再插入 2 个延时中断 OB。 可以使用 CAN_DINT 指令阻止执行尚未启动的延时中断。 延时中断 OB 的功能 在完成将 OB 编号和标识符传送给 SRT_DINT 指令后,操作系统即会在延时时间过后启动相 应的 OB。 要使用延时中断 OB,必须执行以下任务: • 必须调用指令 SRT_DINT。 • 必须将延时中断 OB 作为用户程序的一部分下载到 CPU。 延时时间的测量精度为 1 ms。超出延时时间后,立即重新计时。 只有在 CPU 处于“RUN”模式时才会执行延时中断 OB。暖启动将清除延时中断 OB 的所有启动 事件。 如果发生以下事件之一,操作系统将调用延时中断 OB: • 如果操作系统试图启动一个尚未装载的 OB,并且用户在调用 SRT_DINT 指令时指定了其 编号。 • 如果在完全执行延时 OB 之前发生下一个延时中断启动事件。 可以使用 DIS_AIRT 和 EN_AIRT 指令来禁用和重新启用延时中断。 说明 如果执行 SRT_DINT 之后使用 DIS_AIRT 禁用中断,则该中断只有在使用 EN_AIRT 启用后才 会执行。延时时间将相应地延长。