技术论坛

 SIMATIC S7-1500与TIA博途软件的使用---连载55

返回主题列表
作者 主题

至圣

经验值: 11068
发帖数: 1023
精华帖: 21
楼主    2016-09-01 09:42:43
主题:SIMATIC S7-1500与TIA博途软件的使用---连载55

以下内容节选自机械工业出版社出版的西门子自动化技术丛书----《SIMATIC S7- 1500 与 TIA博途软件使用指南》, 作者崔坚。更多更详细的内容请您参考《SIMATIC S7- 1500 与 TIA博途软件使用指南》一书。

 

 

用户程序中的程序块

7.1用户程序中的程序块

        用户程序中包含不同的程序块,各程序块实现的功能不同。S7-1500 CPU支持的程序块类型与S7-300/400一致,而允许每种类型程序块的数量及每个程序块最大的容量与CPU的技术参数有关。程序块的类型及功能描述参考表7-1。

 

表7-1程序块类型

 

7.1.1组织块与程序结构

        组织块(OB)构成了操作系统与用户程序之间的接口。组织块由操作系统(OS)调用。CPU通过组织块以循环或者事件驱动的方式控制用户程序的执行。此外,CPU的启动及故障处理都要调用不同的组织块,在这些组织块中编写用户程序可以判断CPU及外部设备的状态。

        PLC的CPU循环执行操作系统,操作系统在每一个循环中调用主程序,即“程序循环”OB,这样就执行了在“程序循环”OB中编写的用户程序。S7-1500支持的“程序循环”OB的数量最多可达100个。操作系统与主程序执行过程如图7-1所示。

图7-1操作系统与主程序关系

        一个OB的调用和执行可以中断另一个正在执行的OB。是否允许一个OB中断另一个OB,取决于它们的优先级,即高优先级的OB可以中断低优先级的OB。例如,“程序循环”OB的优先级最低,为“1”,它可以被高优先级的OB中断。当中断事件出现时,调用与该事件相关的OB,则当前执行的程序在当前指令执行完成后(两个指令边界处)被中断,并立即执行相应中断程序,中断程序执行完成后跳回到中断处继续执行其后的程序。不同的中断事件由操作系统触发不同的OB块,中断程序编写在相应的OB块中。这样一旦出现中断事件,就执行一次相应中断OB块中的程序,如图7-2所示。

 

图7-2中断程序的执行

        线性化编程是将所有的程序指令都写在主程序中以实现一个自动化控制任务。这样的编程方式不利于程序的查看、修改和调试,仅建议对简单程序进行线性编程。结构化编程方式则是将复杂自动化任务分割成与工艺功能相对应的或可重复使用的更小的子任务。相比于线性化编程,结构化编程更易于对复杂任务进行处理和管理。子任务在用户程序中以块表示,即每个相对独立的控制任务既可以对应结构化程序中的一个程序段或程序块(FC或者FB),也可以分别写在不同的“程序循环”OB中。两种编程方式及程序结构的对比如图7-3所示。

图7-3线性化编程与结构化编程

 

        结构化的程序是由不同的程序块构成的,具有下列优点:

  • 通过结构化更容易进行大规模程序编程

  • 各个程序段都可以实现标准化,通过更改参数可被其它项目反复使用

  • 更改程序变得更容易

  • 可分别测试程序段,简化程序排错过程

  • 控制任务分开,简化了调试

 

7.1.2用户程序的分层调用

        用户编写的函数或函数块必须在OB块中调用才能执行。在一个程序块中可以使用指令调用其它程序块,被调用的程序块执行完成后返回原程序中断处继续运行。程序块的调用过程如图7-4所示。

图7-4 程序块的调用

 

        OB、FB和FC可以调用其它程序块,被调用的程序块可以是FB和FC,OB不能被用户程序直接调用。

        举例来说,在自动化控制任务中,可以将工厂级控制任务划分为几个车间级控制任务,将车间级控制任务再划分为对几组生产线的控制任务,再对生产线的控制任务划分为对几个电机的控制,这样从上到下将控制任务分层划分。同样也可以将控制程序根据控制任务分层划分,每一层控制程序作为上一层控制程序的子程序,同时调用下一层的子程序,形成程序块的嵌套调用。用户程序的分层调用就是将整个程序按照控制工艺划分为小的子程序,按次序分层嵌套调用(S7-1500 CPU的嵌套深度为24层)。例如将一个控制任务划分为3个独立的子任务,在每个子任务下划分小的控制任务,程序的分层调用如图7-5所示。

图7-5 用户程序的分层调用

        3个独立的子程序分别为FB10、FB2和FC3,在FB2中又嵌套调用FB1,这样通过程序块或子程序的嵌套调用实现对控制任务的分层管理。用户程序执行次序为:OB1 à FB10 + 背景 DB7 à FC1 à FB2 +背景 DB2 à FB1 + 背景 DB1 à FC3 à OB1。用户程序的分层调用是结构化编程方式的延伸。

您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。