组织块是操作系统与用户程序的接口,组织块由操作系统(OS)调用。CPU循环执行操作系统。操作系统在每一个循环中调用主程序,同时执行在程序循环OB中编写的程序。
操作系统与主程序的关系,用户程序可以采用结构化编程,将程序根据任务分层划分,每一层控制程序作为上一层控制任务的子程序,同时调用下一层的子程序,形成嵌套调用。
程序中允许FB/FC的嵌套深度,用户程序的执行顺序:执行完启动OB之后进入RUN模式,然后循环执行程序循环OB,按照程序顺序执行OB中的程序。
组织块(OB)
组织块的基本功能是调用用户程序,同时还执行以下操作:
自动化系统的启动;循环程序处理;中断响应的程序执行;错误处理。
组织块类型与说明
不同类型的组织块完成不同的系统功能。S7-1200CPU支持的组织块,相应的启动事件,优先级和编号等。
程序循环组织块
CPU处于RUN模式时,操作系统每个周期调用程序循环OB一次。所有的程序循环OB执行完成后,操作系统再重新调用程序循环OB。S7-1200CPU支持多个程序循环OB,按编号顺序由小到大依次执行。
启动组织块
操作系统从STOP切换到RUN时,启动OB将被执行一次,启动OB执行完后才开始执行程序循环。如果有多个启动OB,按照编号顺序由小到大依次执行。用户可以在启动OB中编写初始化程序。
时间中断组织块
时间中断OB用于在时间可控的应用中定期运行一部分用户程序,可实现在某个预设时间到达时只运行一次;或者在设定的触发日期到达后,按每分/小时/天/周/月等周期运行。
只有在设置并激活了时间中断,且程序中存在相应组织块的情况下,才能运行时间中断。通过以下指令对时间中断进行操作:“ACT_TINT”指令:激活时间中断;“SET_TINTL”指令:设定时间中断OB的参数;“CAN_TINT”指令:取消未执行的时间中断;“QRY_TINT”指令:查询时间中断的状态。
延时中断组织块
延时中断OB在一段可设置的延时时间后启动。通过以下指令对延时中断进行操作:
“SRT_DINT”指令:用于启动延时中断,该中断在超过参数指定的延时时间后调用延时中断OB。延时时间范围1~60000ms,精度为1ms;“CAN_DINT”指令:取消启动的延时中断;“QRY_DINT”指令:查询延时中断的状态。
循环中断组织块
循环中断OB按设定的时间间隔循环执行。例如,如果时间间隔为100ms,则在程序执行期间会每隔100ms调用该OB一次。双击项目树中相应PLC站点下的“程序块>添加新块”。
如果在同一时间间隔内同时调用低优先级OB和高优先级OB,则只有在执行完成高优先级OB后才会调用低优先级OB。
低优先级OB的调用时间可能有所偏移,这取决于执行高优先级OB的时间长度;如果为低优先级OB组态的相位偏移大于高优先级OB的当前执行时间,则会在固定时基内调用该块。相位偏移在循环中断OB调用过程中的作用。
硬件中断组织块
在RUN模式下,CPU立即响应硬件中断事件,调用相关的硬件中断OB。中断程序的执行不受主程序扫描和过程映像更新时间的影响,适合需要快速响应的应用。
一个硬件中断事件只允许对应一个硬件中断OB,而一个硬件中断OB可以分配给多个硬件中断事件。可以组态硬件中断事件并分配OB,也可以通过“ATTACH”和“DETACH”指令进行动态分配。
时间错误组织块OB80
OB80是操作系统用于处理时间故障的中断组织块。当程序执行时间超过***大循环时间或者发生时间错误事件时,CPU将触发时间错误中断OB80。
诊断错误组织块OB82
OB82是操作系统用于响应诊断错误的中断组织块。例如,激活诊断功能的模块检测到故障状态发生变化(事件到来或离开)时,向CPU发送诊断中断请求,触发诊断错误中断OB82。
插拔中断组织块OB83
OB83是操作系统用于响应对模块的移除或者插入操作的中断组织块。S7-1200PLC本地模块不支持热插拔,拔出或者插入中央机架模块将导致CPU进入停止模式。
机架错误中断组织块OB86
OB86是操作系统响应PROFIBUS-DP和PROFINET-IO分布式IO站通信故障的中断组织块。
相关标签:西门子PLC官网
本文源自网络,如有涉及侵权请联系删除!