CPU原则上运行两个不同的程序:
• 操作系统
• 用户程序。
操作系统
每个CPU都带有集成的操作系统,组织与特定控制任务无关的所有 CPU功能和顺序。操作系统任务包括下列各项:
• 处理重启(热启动)和热重启。
• 更新输入的过程映像表,并输出输出过程映像表
• 调用用户程序
• 采集中断信息,调用中断 OB。
• 识别错误并进行错误处理
• 管理内存区域
• 与编程设备和其它通讯伙伴进行通讯
通过修改操作系统参数(操作系统默认设置),可以在某些区域影响CPU响应。
用户程序
可以创建用户程序,并将其下载到CPU中。它包含处理特定自动化任务所要求的所有功能。用户程序任务包括:
• 确定CPU的重启(热启动)和热重启条件(例如,用特定值初始化信号)
• 处理过程数据(例如,产生二进制信号的逻辑链接,获取并评估模拟量信号,指定用于输出的二进制信号,输出模拟值)
• 响应中断
• 处理正常程序周期中的干扰。
用户程序中的块
可以应用 STEP 7编程软件构建用户程序,也就是说,可以将程序分成单个、独立的程序段。这具有下列优点:
• 大程序更易于理解。
• 可以标准化单个程序段。
• 简化程序结构。
• 更易于修改程序。
• 可测试单个程序段,因而简化调试。
• 系统调试变得更简单。
工业混合过程实例阐述了将一个自动化过程分成单个任务的优点。结构化用户程序的程序段,即程序块对应于这些单个任务。
在S7用户程序内可使用多种类型的块:
组织块(OB) | OB 确定用户程序的结构。 |
系统功能块(SFB) 和系统功能(SFC) | SFB 和SFC集成在S7 CPU 中,可以用来访问一些重要的系统功能。 |
功能块(FB) | FB 是带有用户可自行编程的“存储器”的块。 |
功能(FC) | FC 包含频繁使用功能的例行程序。 |
实例数据块 (背景DB) | 调用FB/SFB 时,实例DB与块关联。它们在编译期间自动创建。 |
数据块 (DB) | DB 是用于存储用户数据的数据区。除分配给功能块的数据外,共享数据块也可由任何一个块来定义和使用。 |
组织块和程序结构:
OB的启动信息
每个组织块都有20字节本地数据的启动信息,在启动OB时,由操作系统提供。启动信息指定OB的启动事件、OB启动的日期和时间、所发生的错误以及诊断事件。例如,OB40是硬件中断 OB,其启动信息包含产生中断的模块地址。
取消选定中断OB
如果将优先级为 0 或少于20字节的本地数据分配给优先级,则将取消选定相应的中断OB。处理取消中断 OB的限制条件如下:
• 处于运行模式时,这些中断 OB不能复制或链接到用户程序。
• 处于停止模式时,可以将它们复制或链接到用户程序,但CPU执行重启(热启动)时,它们停止启动,并向诊断缓冲区输入一个条目。
通过取消选定不需要的中断 OB,可以增大可用的本地数据区容量,从而可以保存其它优先级的临时数据。
循环程序处理
循环程序处理是可编程逻辑控制器上“正常”执行的程序类型,表示操作系统在程序循环(周期)中运行,在每次循环中,都会调用主程序中的组织块 OB1 。即循环执行OB1 中的用户程序。
事件驱动的程序处理
可由特定的事件(中断)中断循环程序处理。如果发生该类事件,将在命令边界中断当前执行的块,然后调用分配给该特定事件的其它组织块。该组织块一旦执行,将在中断点继续执行循环程序。
这表示可以处理部分用户程序,这些用户程序只有在需要时才循环处理。用户程序可分成一些“子程序”,分布在不同的组织块中。如果用户程序要对相对较少发生的重要信号(例如,限制值传感器,用于测量容器中的液位,并在到达最高液位时报告) 作出响应,则当输出该信号时需要处理的子程序可位于事件驱动处理型 OB上。
线性编程与结构化编程
可以在OB1中写入整个用户程序(线性编程)。只有在给S7-300 CPU 编写简单程序、并要求极少内存时才可行。
将复杂自动化任务分割成反映过程技术功能或可多次处理的小任务,可以更易于控制复杂任务。这些任务以相应的程序段表示,称为块(结构化编程)。
用户程序中的调用体系
要使用户程序正常运行,必须调用构成用户程序的块。这通过特殊的STEP 7 指令、块调用来完成,而这些指令、块调用只能在逻辑块中编程和启动。
次序和嵌套深度
块调用的次序和嵌套称为体系。可嵌套的块数目(嵌套深度)取决于特定的 CPU。下图阐述了一个扫描周期内块调用的次序和嵌套深度。
创建块的固定次序如下:
• 从上到下创建块,因此可以从块的顶行开始。
• 调用的每个块必须已经存在,即在一行块内,创建块的次序为从右到左。
• 最后要创建的块是 OB1 。
在图中所示的实例中应用这些规则,则可以按下列顺序创建块:
FC1 > FB1 + 实例DB1 > DB1 > SFC1 > FB2 + 实例DB2 > OB1
块调用
下图显示了在用户程序内块调用的顺序。该程序调用第二个块,然后完全执行该块的指令。一旦执行第二个块或调用块后,在块调用后的指令处继续执行发出调用命令的中断块。
当执行冷重启时,操作系统将 SFB3“TP”实例复位。如果在冷重启后,初始化该SFB 的实例,那么必须通过 OB100以PT = 0 ms 调用 SFB 的相关实例。例如,可通过在包含该 SFB 实例的块中执行初始化程序完成该操作。
责任编辑人:CC
全部0条评论
快来发表一下你的评论吧 !