用于循环程序处理的组织块(OB1)
可编程控制器上的循环程序处理是“正常”类型的程序执行。操作系统循环调用OB1来启动用户程序的循环执行。
循环程序的执行顺序
下表显示了循环程序处理的各个阶段:
1.操作系统启动周期监控时间
2. CPU将输出过程映像表中的值写入输出模板。
3. CPU 读取输入模板的输入状态并刷新输入过程映像表。
4、CPU处理用户程序并执行程序中包含的指令
5. 循环结束时,操作系统执行所有挂起的任务,例如下载和删除块、接收和发送全局数据
6. 最后,CPU 返回循环开始处并重新开始循环监控时间。
OB1_EV_CLASS BYTE 事件级别和标识符:B#16#11:OB1 已激活
OB1_SCAN_1 BYTE B#16#01:热重启完成,B#16#04:冷重启完成,B#16#03:主循环完成
B#16#02:热重启完成
B#16#02:热重启完成
OB1_PRIORITY BYTE 优先级1
OB1_OB_NUMBR BYTE OB 编号(01)
OB1_PREV_CYCLE INT 上次扫描运行时间(毫秒)
OB1_MIN_CYCLE INT 自上次启动以来的最小周期(ms)
OB1_MAX_CYCLE INT 自上次启动以来的最大周期(毫秒)
OB1_DATE_TIME DATE_AND_TIME 调用OB 时的DATE_AND_TIME
过程图像
因此,在循环程序处理过程中,CPU的过程信号图像是一致的。 CPU并不直接访问I/O模板上的输入(I)和输出(Q)地址区域,而是访问CPU内部包含输入和输出图像的存储区域。
编程循环处理
您可以使用STEP 7 对循环程序处理进行编程,将用户程序写入OB1 以及OB1 调用的块中。
一旦启动程序无错误地执行,循环程序处理就开始。
打断
循环程序处理可以被以下事件中断:
? 中断
? STOP 命令(模式选择开关、编程器上的菜单选项、SFC46 STP、SFB20 STOP)
? 电源(检测)失败
? 发生故障或编程错误
扫描周期时间
扫描周期时间是操作系统运行循环程序和中断周期的所有程序部分(例如,执行其他组织块)以及系统操作(例如,刷新过程映像)所需的时间。这个时间是可以监控的。
每个周期的周期扫描时间(TC) 并不相同。下图显示了现有CPU 和新CPU 之间的不同扫描周期时间(TC1 TC2):
循环监测时间
使用STEP 7,您可以修改默认的最大循环监视时间。如果该时间到期,CPU 会切换到STOP 模式或调用OB80。在OB80 中,您可以指定CPU 如何响应此故障。
最短循环时间
使用STEP 7,可以设置S7-400 CPU 和CPU318 的最小循环时间。此功能在以下情况下很有用:
? 当OB1(主程序扫描)执行程序的起始间隔必须一致时,或
? 如果循环时间太短,则无需过于频繁地刷新过程映像表。
下图显示了现有CPU 和新CPU 中程序处理期间的循环监视时间功能。
刷新过程图像
在CPU 的循环程序处理过程中,过程映像区会自动刷新。
如果您想执行以下操作,也可以不刷新过程映像:
? 直接访问I/O 或
? 使用系统功能SFC26 UPDAT_PI 和SFC27 UPDAT_PO 在程序中的不同点刷新一个或多个过程映像的输入或输出部分。
通讯负载
您可以使用CPU 参数“来自通信的扫描周期负载”来控制给定帧内通信过程的持续时间,因为通信过程通常会增加扫描周期时间。例如,通信过程包括以MPI模式向其他CPU传输数据,或者使用编程设备加载的通信功能块。
该参数很少影响程序员测试功能。当然,您可以显着增加扫描时间。在处理模式下,您可以限制测试功能的时间(仅适用于S7-300)。
参数如何工作
CPU 操作系统持续为所配置的通信提供用户配置的整个CPU 处理能力的百分比(时间片技术)。但如果不需要处理通信,可以用于其他处理。
设置扫描周期时间
在不需要其他异步事件的情况下,OB1 扫描周期时间可以根据以下公式延长一个因子:
责任编辑:lq