用于循环程序处理的组织块(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 上一次扫描的运行时间(ms)
OB1_MIN_CYCLE INT 自上次启动后的最小周期(ms)
OB1_MAX_CYCLE INT 从上次启动后的最大周期(ms)
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参数“Scan Cycle Load from Communication(扫描通讯循环负载)”,在给定框架内控制通讯过程的持续时间,因为一般通讯过程会增加扫描循环时间。
例如通讯过程包括以MPI方式将数据传送至其它CPU,或使用编程设备加载的通讯功能块。
该参数很少影响编程器测试功能。当然,你可以显著增加扫描时间。在处理模式中,你可以限制测试功能的时间(只适用于S7-300)。
参数的工作原理
CPU操作系统可持续提供用户组态的整个CPU处理能力的百分比(时间片技术)用于所组态的通讯。但如果不需要处理通讯时,可用于其它处理。
设置扫描循环时间
无需其它异步事件,OB1扫描循环时间可以根据以下公式乘以一个系数进行扩展:
审核编辑:刘清
-
控制器
+关注
关注
112文章
16205浏览量
177421 -
plc
+关注
关注
5008文章
13163浏览量
462090 -
cpu
+关注
关注
68文章
10826浏览量
211160 -
可编程控制器
+关注
关注
6文章
535浏览量
38828
原文标题:西门子PLC--用于循环程序处理的组织块(OB1)
文章出处:【微信号:gh_a8b121171b08,微信公众号:机器人及PLC自动化应用】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
相关推荐
评论