西门子PLC用于循环程序处理的组织块_OB1

用于循环程序处理的组织块(OB1)

西门子PLC用于循环程序处理的组织块_OB1
文章插图
在可编程控制器上循环程序处理是程序执行的“普通”类型 。操作系统循环调用OB1启动用户程序的循环执行 。
循环程序执行的顺序
下表所示为循环程序处理的各个阶段:
1.操作系统启动循环监控时间
2.CPU从输出的过程映象表写数值到输出模板
3.CPU读输入模板的输入状态并刷新输入的过程映象表
4.CPU处理用户程序并执行程序中所包含的指令
5.在循环结束处,操作系统执行所有挂起的任务,如下载和删除块,接收和发送全局数据
6.最后,CPU 回到循环开始处并重新启动循环监控时间.
OB1_EV_CLASSBYTE事件等级和标识符:B#16#11:OB1激活
OB1_SCAN_1BYTEB#16#01:完成暖重启, B#16#04:完成冷重启,B#16#03:完成主循环
B#16#02:完成热重启
B#16#02:完成热重启
OB1_PRIORITYBYTE优先级1
OB1_OB_NUMBRBYTEOB编号(01)
OB1_PREV_CYCLEINT上一次扫描的运行时间(ms)
OB1_MIN_CYCLEINT自上次启动后的最小周期(ms)
OB1_MAX_CYCLEINT从上次启动后的最大周期(ms)
OB1_DATE_TIMEDATE_AND_TIME调用OB时的DATE_AND_TIME
过程映象
编程循环程序处理
你可以通过使用STEP 7在OB1 中编写你的用户程序以及在OB1调用的块中编写程序来编程循环程序处理 。
启动程序无错执行一结束,循环程序处理就立即开始 。
中断
循环程序处理可以被以下事件中断:
?一个中断
?STOP命令(模式选择开关编程器上的菜单选项,SFC46 STP,SFB20 STOP )
?电源掉电
?出现故障或编程错误
扫描循环时间
扫描循环时间是操作系统运行循环程序和中断循环的所有程序部分(例如,执行其它组织块)以及系统操作(如,刷新过程映象)所需要的时间 。这个时间可以被监控 。
每个循环的循环扫描时间(TC)并不相同 。下图所示为已有的CPU和新CPU之间不同的扫描循环时间(TC1 ≠TC2 ):

西门子PLC用于循环程序处理的组织块_OB1
文章插图
循环监视时间
使用STEP 7,可以修改缺省的最大循环监视时间 。如果这个时间溢出,CPU转为STOP模式或调用OB80,在OB80中你可以指定CPU如何响应这个故障 。
最小循环时间
使用STEP 7,可以为S7-400 CPU和CPU318 设置最小循环时间 。在以下情形下这个功能是有用的:
?当OB1(主程序扫描)执行程序的启动时间间隔必须一致时,或者
?如果循环时间太短,过程映象表的刷新没必要过于频繁 。
下图所示为已有的CPU和新CPU中程序处理过程中的循环监控时间的功能 。

西门子PLC用于循环程序处理的组织块_OB1
文章插图
刷新过程映象
在CPU的循环程序处理过程中,过程映象区被自动刷新 。
你也可以不刷新过程映象,如果你要:
?直接访问I/O 或者
?用系统功能SFC26 UPDAT_PI 和SFC27 UPDAT_PO在程序的不同点刷新一个或多个过程映象的输入或输出部分 。
通讯负载
你可以使用CPU参数“Scan Cycle Load from Communication(扫描通讯循环负载)”,在给定框架内控制通讯过程的持续时间,因为一般通讯过程会增加扫描循环时间 。例如通讯过程包括以MPI方式将数据传送至其它CPU,或使用编程设备加载的通讯功能块 。
该参数很少影响编程器测试功能 。当然,你可以显著增加扫描时间 。在处理模式中,你可以限制测试功能的时间(只适用于S7-300) 。
参数的工作原理
CPU操作系统可持续提供用户组态的整个CPU处理能力的百分比(时间片技术)用于所组态的通讯 。但如果不需要处理通讯时,可用于其它处理 。
设置扫描循环时间

西门子PLC用于循环程序处理的组织块_OB1
文章插图
无需其它异步事件,OB1扫描循环时间可以根据以下公式乘以一个系数进行扩展:

西门子PLC用于循环程序处理的组织块_OB1
文章插图

西门子PLC用于循环程序处理的组织块_OB1
文章插图
【西门子PLC用于循环程序处理的组织块_OB1】 责任编辑:lq

    推荐阅读