起订量:
渭南西门子PLC代理商
渭南西门子PLC代理商 渭南西门子PLC代理商
STEP 7不仅从不同层次充分支持合理的程序结构设计,而且也简化了结构设计的复杂程度。
一个复杂的自动化过程可以被分解并定义为一个或多个项目(PROJECT);而对于每个项目,又可以进一步分解并定义给一个或多个CPU,每个CPU都有一个控制程序(CPU_PROGRAM)。图5.10显示了一个样本过程,它分成4个不同的项目:项目1和项目2只有一个CPU,而项目3和项目4有多个CPU。这样,一个很复杂的控制任务的结构设计,就被简化为各个CPU程序的结构设计。项目间或项目中的各CPU程序之间,能以某种方式联网,实现信息共享。如在S7协议支持下,用MPI网以全局数据通信的方式可方便地建立起联系,实现一个项目中各CPU共享信息
典型的情况是一个过程控制任务只有一个项目,该项目下也仅有一个CPU程序,每一个CPU程序又可依据时间特性或事件触发特性的差异分类编入不同的组织块(OB)中。例如,需要以固定时间间隔循环执行的那部分程序编入组织块OB35中,为PLC正常运行而需进行初始化的程序编入组织块OBl00中。又如,由硬件触发的中断服务程序编入组织块OB40中,对程序执行中产生的同步错误的响应处理程序编入组织块OB121或OB122中。
-
对于各组织块中的程序,可以根据其复杂程度分别选用线性、分部或结构化等三种形式中的一种程序结构。由于组织块OB1(主程序循环)中的程序是应用程序中主要的也是复杂的部分,因此,对OB1中的程序设计合理的结构是十分重要的。下面分别说明三种典型结构的特点及选用原则。
1. 线性程序结构
用“线性”结构设计的程序连续放置在一个块内(通常为OB1),块中的程序按顺序执行。这一结构是初的PLC模拟的继电器梯形逻辑的模型。线性程序具有简单、直接的特点。编程时,不必考虑功能块如何编程及如何调用,也不必考虑如何定义局部变量及如何使用背景数据块。由于所有的指令在一个块内,因此它适用于只需一个人编写的、相对简单的控制程序。
这是一种部分模块化的程序结构,也称为部分结构化。程序被分成各部分放在若干功能块中,每个功能块含有用于一种设备的一系列控制逻辑。放置在组织块OB1中的指令决定控制程序的各功能块的执行。比如说,一个分部程序可能包含以下内容:
(1) 用于控制设备每一部分的FC;
(2) 用于控制设备每一工作状态的FC;
(3) 用于控制操作员接口的FC;
(4) 用于进行PLC自诊断的FC。
在分部程序中,既无数据交换也没有重复利用的程序代码。各功能块收集并使用自己的数据,功能块不传递也不接收参数,功能块的编程与调用比较简单。由于每个功能区分为不同的块,因而使得多个程序员能够同时编程而不发生冲突。分部程序结构的编程效率比线性程序有所提高,程序测试也较方便,对程序员的要求也不太高。对不太复杂的控制程序可考虑采用这种程序结构。
3. 结构化程序结构
*结构化(模块化)的程序结构是PLC程序设计和编程较有效的结构形式,它可用于复杂程度高、程序规模大的控制应用程序设计。结构化程序可以重复使用某些功能块,只需要在使用功能块时为其提供不同的环境变量(实参),就能完成对不同设备的控制。例如,在工业搅拌控制过程中有三台泵,对它们的控制功能相似,可以编写一个用于对泵进行控制的功能块,编程时先定义泵控制所需的变量(形参),并使用这些变量构成一个称为“泵控制”的一般功能块。在调用该功能块时,通过改变传入功能块中的参数(实参),可以分别对成分A、成分B和搅拌桶中的三台泵进行控制。
结构化程序有高的编程和程序调试效率,应用程序代码量也小。结构化程序也支持多个程序员协同编程。这种程序结构建立在对PLC系统功能的合理分析、分解及综合的基础之上,程序具体结构形式的确定与程序设计人员的水平及经验关系很大,对程序员的要求也较前两种高。
1. 将过程分割为任务和区域
一个自动化过程包括许多单个的任务,通过识别一个过程内的相关任务组,然后将这些组再分解为更小的任务,即使复杂的过程也能够被定义。下面将这个工业搅拌过程构造为四个功能区域:配料A区域、配料B区域、混合罐区域和排料区域。
2. 说明各个功能区域
1) 配料A和配料B区域
(1) 每种配料的管道都配备有一个入口和一个进料阀以及进料泵。
(2) 进料管还有流量传感器。
(3) 当罐的液面传感器指示罐满时,进料泵的接通必须被锁定。
(4) 当排料阀打开时,进料泵的启动必须被锁定。
(5) 在启动进料泵后1 s内必须打开入口阀和进料阀。
(6) 在进料泵停止后(来自流量传感器的信号)阀门必须立即被关闭以防止配料从泵中泄露。
(7) 进料泵的启动与一个时间监控功能相结合,换句话说,在泵启动后的7 s之内,流量传感器会报告溢出。
(8) 当进料泵运行时,如果流量传感器没有流量信号,进料泵必须尽可能快地断开。
(9) 必须对进料泵启动的次数进行计数(维护间隔)。
2) 混合罐区域
(1) 当罐的液面传感器指示“液面低于低限”或排料阀打开时,搅拌电机的启动必须被锁定。
(2) 搅拌电机在达到额定速度时要发出一个响应信号。如果在电机启动后10 s内还未接收到该信号,则电机必须被断开。
(3) 必须对搅拌电机的启动次数进行计数(维护间隔)。
(4) 在混合罐中必须安装三个传感器。① 罐装满:一个常闭触点。当达到罐的高液面时,该触点断开。② 罐中液面高于低限:一个常开触点。如果达到低限,该触点关闭。③ 罐非空:一个常开触点,如果罐不空,该触点闭合。
3) 排料区域
(1) 罐内产品的排出由一个螺线管阀门控制。
(2) 这个螺线管阀门由操作员控制,但是迟在“罐空”信号产生时,该阀必须被关闭。
(3) 当搅拌电机在工作或罐空时打开排料阀必须被锁定。
3. 定义逻辑块
通过程序块可以将用户程序分布到不同的块中并建立块调用的分层结构来组织程序。本例中用户程序主要由组织块OB1、功能块FB1、功能FC1及三个数据块DB1~DB3组成。图5.12所示为结构化编程的块的分层调用结构。
(1) OB1:与CPU操作系统的接口,包含主要程序。在OBl中调用块FBl和FCl并传送控制过程所需的特定参数。
(2) FB1:用于配料A的进料泵、配料B的进料泵和搅拌电机的控制。由于要求*(接通、断开、计数应用程序等),可以通过同一个功能块实现。
(3) 背景DB1~DB3:用于控制配料A、配料B的进料泵和搅拌电机的实参及静态数据各不相同,因此分别存储在与FBl相关的三个背景DB中。
(4) FC1:用于阀的控制。配料A和B的入口阀和进料阀以及排料阀共同使用本逻辑块。
符号名
如果在用户程序中使用了符号,则必须用STEP 7在符号表中对这些符号进行定义。表5.6所示为所用的程序组件的符号名及地址。
5. 生成电机的FB
电机的FB包括以下逻辑功能:
(1) 启动和停止输入。
(2) 允许设备操作的一系列互锁(泵和搅拌电机)。互锁状态存储在OB1的临时局域数据(L堆栈)中(“Motor_enable”和“Valve_enable”),并且当电机的FB被处理时与启动和停止的输入进行逻辑组合。
(3) 来自设备的反馈必须在一个特定的时间内出现,否则就假定有故障或错误出现,并使电机停止。
(4) 时间点和响应时间或错误故障循环持续时间都必须被。
(5) 如果启动按钮被按下并且电机被使能,则设备自行接通并运行直至按下停机按钮。
(6) 当设备接通时,一个定时器启动运行,如果在定时器的时间到达之前未接到来自设备的响应信号,则停机。