组织块的基本功能是调用用户程序,同时还执行以下操作:
•自动化系统的启动;
•循环程序处理;
•中断响应的程序执行;
•错误处理。
1.组织块类型与说明
不同类型的组织块完成不同的系统功能。S7-1200CPU支持的组织块,相应的启动事件,优先级和编号等,见表4-14。
表4-14 组织块列表
(续)
(1)程序循环组织块
CPU处于RUN模式时,操作系统每个周期调用程序循环OB一次。所有的程序循环OB执行完成后,操作系统再重新调用程序循环OB。
S7-1200CPU支持多个程序循环OB,按编号顺序由小到大依次执行,如图4-23所示。程序循环OB的优先级为1(最低)且不可修改。
(2)启动组织块
操作系统从STOP切换到RUN时,启动OB将被执行一次,启动OB执行完后才开始执行程序循环。如果有多个启动OB,按照编号顺序由小到大依次执行。用户可以在启动OB中编写初始化程序。
图4-23 程序循环组织块的执行顺序
(3)时间中断组织块
时间中断OB用于在时间可控的应用中定期运行一部分用户程序,可实现在某个预设时间到达时只运行一次;或者在设定的触发日期到达后,按每分/小时/天/周/月等周期运行。
只有在设置并激活了时间中断,且程序中存在相应组织块的情况下,才能运行时间中断。通过以下指令对时间中断进行操作:
•“ACT_TINT”指令:激活时间中断;
•“SET_TINTL”指令:设定时间中断OB的参数;
•“CAN_TINT”指令:取消未执行的时间中断;
•“QRY_TINT”指令:查询时间中断的状态。
注意:
在启动OB中,调用“ACT_TINT”指令激活的时间中断不会在启动OB结束前执行。
(4)延时中断组织块
延时中断OB在一段可设置的延时时间后启动。通过以下指令对延时中断进行操作:
•“SRT_DINT”指令:用于启动延时中断,该中断在超过参数指定的延时时间后调用延时中断OB。延时时间范围1~60000ms,精度为1ms;
•“CAN_DINT”指令:取消启动的延时中断;
•“QRY_DINT”指令:查询延时中断的状态。
(5)循环中断组织块
循环中断OB按设定的时间间隔循环执行。例如,如果时间间隔为100ms,则在程序执行期间会每隔100ms调用该OB一次。双击项目树中相应PLC站点下的“程序块>添加新块”,如图4-24所示,在窗口中的“循环时间”中设置时间间隔。
图4-24 添加循环OB
如果在同一时间间隔内同时调用低优先级OB和高优先级OB,则只有在执行完成高优先级OB后才会调用低优先级OB。低优先级OB的调用时间可能有所偏移,这取决于执行高优先级OB的时间长度;如果为低优先级OB组态的相位偏移大于高优先级OB的当前执行时间,则会在固定时基内调用该块。相位偏移在循环中断OB调用过程中的作用,如图4-25所示。
循环时间和相移可以在循环中断OB“属性”的“常规>循环中断”中设置,如图4-26所示。
图4-25 循环中断OB的调用
①“循环时间”:是循环中断的间隔时间,单位为ms,范围1~60000。
②“相移”:循环OB启动的相位偏移量,单位为ms,范围0~100,必须是0.001的倍数。
通过以下指令对循环中断进行操作:
•“SET_CINT”指令:可置位循环中断的OB的参数,OB块号,时间间隔ms和相位偏移;(www.xing528.com)
图4-26 循环时间和相移
•“QRY_CINT”指令:查询循环中断的当前参数。
(6)硬件中断组织块
在RUN模式下,CPU立即响应硬件中断事件,调用相关的硬件中断OB,硬件中断的启动事件见表4-14。中断程序的执行不受主程序扫描和过程映像更新时间的影响,适合需要快速响应的应用。
一个硬件中断事件只允许对应一个硬件中断OB,而一个硬件中断OB可以分配给多个硬件中断事件。可以组态硬件中断事件并分配OB,也可以通过“ATTACH”和“DETACH”指令进行动态分配。
硬件中断触发后,操作系统将识别输入通道并确定所分配的OB。在识别和确认的过程中,同一模块上发生了触发硬件中断的另一事件,须遵循以下规则:
•如果该通道再次发生相同的中断事件,操作系统不予响应,硬件中断将丢失;
•如果发生不同的中断事件,则在当前正在执行的中断确认后响应这个新的中断事件。
(7)时间错误组织块OB80
OB80是操作系统用于处理时间故障的中断组织块。当程序执行时间超过最大循环时间或者发生时间错误事件时,CPU将触发时间错误中断OB80。更多关于OB80的说明,请参见第13.5.1章节。
(8)诊断错误组织块OB82
OB82是操作系统用于响应诊断错误的中断组织块。例如,激活诊断功能的模块检测到故障状态发生变化(事件到来或离开)时,向CPU发送诊断中断请求,触发诊断错误中断OB82。更多关于OB82的说明,请参见第13.5.1章节。
(9)插拔中断组织块OB83
OB83是操作系统用于响应对模块的移除或者插入操作的中断组织块。S7-1200PLC本地模块不支持热插拔,拔出或者插入中央机架模块将导致CPU进入停止模式。更多关于OB83的说明,请参见第13.5.1章节。
(10)机架错误中断组织块OB86
OB86是操作系统响应PROFIBUS-DP和PROFINET-IO分布式IO站通信故障的中断组织块。更多关于OB86的说明,请参见第13.5.1章节。
(11)MC-Interpolator、MC-Servo、MC-PreServo、MC-PostServo
这部分OB属于S7-1200PLC运动控制相关的组织块,请参见第12.2.1章节。
2.OB的过载
在处理属于先前事件的OB前,相同的事件可能再次或多次发生。当同一个源的事件的发生速度大于CPU的处理速度时,该OB将会发生过载。操作系统通过限制与同一源相关的未决事件的数量来控制临时过载。
S7-1200 CPU中,循环中断和时间中断可以设置OB过载的特性,如图4-27所示。
①“待排队的事件”:当未决启动事件的数目达到预设值时,将丢弃下一事件,范围是1~4。如果设置为1,则仅临时存储一个事件。
图4-27 循环中断OB事件队列
②“过载事件将在诊断缓冲区中留下一次记录”:选中该项时,当发生丢失了该OB的启动事件时,CPU将把此次过载情况写入诊断缓冲区。
③“启动时间错误”:选中该项时,当达到类似事件的指定过载级别时,调用时间错误OB80。
④“时间错误的时间阈值”:如果设置为1,则当发生一次中断事件时,在诊断缓冲区记录一次,并在发生第二个事件时,请求时间错误OB80。满足1≤“时间错误的时间阈值”≤“待排队的事件”。
3.组织块的临时存储区大小
CPU为每个优先级的OB提供了临时存储区,存储区的大小见表4-15。
表4-15 临时存储区的大小
注意:
如果使用的临时变量超过L区规定的限制,又没有进行编程错误处理,则S7-1200CPU将停机报错。
4.组织块的接口区
在组织块的接口区中,除了自动生成的变量之外,用户可以自行定义临时变量及本地常量。OB接口区参数所支持的数据类型,见表4-16。
表4-16 OB块接口区数据类型
①在这些区域不能声明STRING和WSTRING的长度。仅允许在优化访问的块中声明WSTRING。
②不允许使用数据类型为ARRAY或STRUCT的常量。
注意:
Input变量是所有OB的启动信息,由系统生成,并操作系统自动更新的,用户不能自行定义。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。