1、cpu中的程序
s7-300/400系列cpu 原则上运行两个不同的程序:操作系统和用户程序。
每个cpu都带有集成的操作系统,组织与特定控制任务无关的所有cpu功能和顺序。操作系统任务包括下列各项:处理重启(热启动)和热重启;更新输入的过程映像表,并输出输出过程映像表;调用用户程序;采集中断信息,调用中断ob;识别错误并进行错误处理;管理内存区域;与编程设备和其它通讯伙伴进行通讯;通过修改操作系统参数(操作系统默认设置),可以在某些区域影响cpu响应。
用户程序则是由用户进行创建,在step 7中进行编程后并将其下载到cpu中。它包含处理特定自动化任务所要求的所有功能,其任务包括:确定cpu的重启(热启动)和热重启条件,如用特定值初始化信号;处理过程数据,如产生二进制信号的逻辑链接,获取并评估模拟量信号,指定用于输出的二进制信号,输出模拟值;响应中断;处理正常程序周期中的干扰。
2、用户程序中的块
在step 7编程软件中进行构建的用户程序,可以将程序分成单个或独立的程序段,称为“块”。,这对于一个大的工业自动化过程来说具有非常大的优点,比如易于理解、可以标准化、方便修改程序、简化测试等。表3-2所示为在s7用户程序内可使用多种块的类型。
ob、fb、sfb、fc和sfc包含程序段,因此也称为逻辑块。每种块类型许可的块数目和块长度由cpu决定。
3、组织块
组织块(ob)表示操作系统和用户程序之间的接口,它由操作系统调用,控制循环中断驱动的程序执行、plc启动特性和错误处理。用户可以在step 7中对组织块进行编程来确定cpu特性。
常见的组织块主要包括以下部分(如图1所示):
图1常见的组织块
组织块确定单个程序段执行的顺序,即启动事件。启动事件触发ob调用称为中断,一个ob调用可以中断另一个ob的执行,哪个ob允许中断另一个ob取决于其优先级,高优先级的ob可以中断低优先级的ob,背景ob的优先级最低。
可以通过step 7给中断分配参数,如通过参数分配,可以取消选定参数块中的中断ob或优先级:日历中断、延时中断、循环中断和硬件中断(如图2所示)。
图2组织块优先级
必须说明的是:s7-300 cpu上的组织块优先级固定,但是对于s7-400 cpu(和cpu 318),可以通过step 7 修改ob10 - ob47组织块的优先级或者可以将相同优先级分配给多个ob。具有相同优先级的ob按照其启动事件发生的先后次序进行处理。
4、功能块、功能和数据块
功能块(fb)是属于用户自己编程的块,需要分配数据块(db)作为其内存(实例数据块),因此传送到fb的参数和静态变量保存在实例db中,而临时变量则保存在本地数据堆栈中。执行完fb时,不会丢失实例db中保存的数据。但执行完fb时,会丢失保存在本地数据堆栈中的数据。
系统功能块(sfb)是集成在s7 cpu中的功能块,sfb是操作系统的一部分,不作为程序的一部分而被加载。同fb一样,必须给sfb创建实例数据块,然后将它们作为程序的一部分下载到cpu中。
功能(fc)也是属于用户自己编程的块,是一种不带内存的逻辑块。属于fc的临时变量保存在本地数据堆栈中,执行fc时,该数据将丢失,为永久保存该数据,功能也可使用共享数据块。由于fc本身没有内存,因此,必须始终给它指定实际参数。不能给fc的本地数据分配初始值。
fc和fb输出参数之间的重要区别在于后者使用实例db。在功能块(fb)中,访问参数时,使用实例db中的实际参数副本。如果调用fb时,没有传送输入参数或没有写访问输出参数,那么将使用原先保存在实例db(实例db = fb内存)中的值。但功能(fc)没有内存。因此,与fb相反,将形式参数分配给这些fc不是可选,而是必须的。通过地址(指针跨过区域边界指向目标)访问fc参数。当数据区(数据块)地址或调用块的局部变量用作实际参数时,实际参数的副本将临时保存到用于传送参数的调用块的本地数据区中。
系统功能(sfc)是集成在s7 cpu中的预编程功能,可以在程序中调用sfc。sfc属于操作系统,不能作为程序的一部分而被加载。同fc一样,sfc也是不具内存的块。
与逻辑块(如fb、ob等)相反,数据块不包含step 7指令,它们用来存储用户数据,即数据块包含用户程序使用的变量数据。共享数据块则用来存储可由所有其它块访问的用户数据,其大小各不相同。用户也可以任何方式构造共享数据块,满足特定要求。