SIEMENS
结构化编程OB1 FC FB 操作系统 SFC SFB其它
FB FC
OBs青岛大学-西门子先进自动化技术实验室 青岛大学自动化工程学院
SIEMENS
第七章 结构化编程程序设计方法:线性化编程、模块化编程 和结构化编程。 线性化编程是将整个用户程序放在组织块 OB1中,在CPU循环扫描时执行OB1中的全部指令。 其特点是结构简单、但效率低下。另一方面, 某些相同或相近的操作需要多次执行,这样会 造成不必要的编程工作。再者,由于程序结构 不清晰,会造成管理和调试的不方便。所以在 编写大型程序时,避免线性化编程。
青岛大学-西门子先进自动化技术实验室
青岛大学自动化工程学院
SIEMENS
模块化编程是将程序根据功能分为不同的逻 辑块,且每一逻辑块完成的功能不同。在 OB1中可以根据条件调用不同的功能或功能 块。 其特点是易于分工合作,调试方便。由于 逻辑块是有条件的调用,所以可以提高CPU的 利用率。
青岛大学-西门子先进自动化技术实验室
青岛大学自动化工程学院
SIEMENS
结构化编程是将过程要求类似或相关的任务 归类,在功能或功能块中编程,形成通用解 决方案。通过不同的参数调用相同的功能或 通过不同的背景数据块调用相同的功能块。 其特点是结构化编程必须对系统功能进行 合理分析、分解和综合,所以对设计人员的 要求较高,另外,当使用结构化编程方法时, 需要对数据进行管理。
传送带系统中所有交流电机的通用逻辑控制块; 装配线机械中所有电磁线圈的通用逻辑控制块; 造纸机器中所有驱动装置的通用逻辑控制块。青岛大学-西门子先进自动化技术实验室 青岛大学自动化工程学院
SIEMENS
结构化编程OB 1 FC 1
电机 1
FC 1 电机 2
FC 1
电机 3
青岛大学-西门子先进自动化技术实验室
青岛大学自动化工程学院
练习
SIEMENS
1. 电动机启保停电路 2. 按下按钮,一个数加1,当此数值超过20 时,输出指示
青岛大学-西门子先进自动化技术实验室
青岛大学自动化工程学院
SIEMENS
利用局部数据进行控制OB1FC1 (数学功能) I0.5 FC1 MW5 3369 MW10 Input1 Output_A Input2 Input3M5.0 ADD_I SUB_I
0.0 2.0 4.0
in in in out temp
Input1Input2 Input3 Output_A TEMP1
int int int int int
sample measure 1 constant offset resu lt intermediate
QW12
6.0 8.0
I0.5 FC1 MW2 6869 MW16 Input1 Output_A QW20#INPUT1 IN1 #INPUT2 IN2
M5.1 ( ) O #Output_A
O #TEMP1 #TEMP1 IN1 #INPUT3 IN2
Input2Input3
青岛大学-西门子先进自动化技术实验室
青岛大学自动化工程学院
SIEMENS
局部变量全局变量/数据 (在全部程序中有效) 局部变量 / 数据 (只在一个块中有效) 临时变量 当相关块执行完毕后被清除 临时存
储在 L stack中 可在下列块中使用 OBs / FCs / FBs 静态变量 当相关块执行完毕后仍然 保留
PII / PIQ I/ O M/T/C
DB areas
永久存储在DBs中 只能在FBs中使用
绝对地址 访问方式
符号地址
青岛大学-西门子先进自动化技术实验室
青岛大学自动化工程学院
SIEMENS
临时变量
青岛大学-西门子先进自动化技术实验室
青岛大学自动化工程学院
SIEMENS
局部数据堆栈的大小
总容量:
1.5 Kbyte(CPU 313..316) 对于 S7-300: 优先级 局部堆栈大小
执行的程序
启动程序 (只执行一次)循环扫描程序 日时钟中断 时间中断
271 2 256 bytes 256 bytes
延时处理中断循环处理中断 硬件中断
312 16 28 26
256 bytes256 bytes 256 bytes
事件驱动中断
启动过程中的错误处理中断 循环扫描中的错误处理中断
256 bytes
青岛大学-西门子先进自动化技术实验室
青岛大学自动化工程学院
SIEMENS
块所需要的局部数据区的长度rechts
青岛大学-西门子先进自动化技术实验室
青岛大学自动化工程学院
SIEMENS
程序所占用的局部数据区的总长度操作系统1
OB 12
FC 1有临时 变量
3 4
FC 2有临时 变量
5 7
FC 3有临时 变量
6
事件 所占用的 L stack
1
2
3
4
5
6
7
FC2 FC1 OB1青岛大学-西门子先进自动化技术实验室
FC3 FC1 OB1 FC1 OB1 FC1 OB1 OB1
FC1 OB1
OB1
256 Bytes
青岛大学自动化工程学院
SIEMENS
练习1: 使用临时变量
QW6
替换为临时变量
青岛大学-西门子先进自动化技术实验室
青岛大学自动化工程学院
SIEMENS
示例:计算公式
青岛大学-西门子先进自动化技术实验室
青岛大学自动化工程学院
SIEMENS
可以分配参数的块不可以 分配参数的块 程序 调用 可以分配参数的块
FC 20A R A Fp S A A O Anm 40.0 A = i Q 1.3 4.3 i m i m m m m 1.2 40.0 1.3 40.1 40.0 40.0 10.3
A R A
#Acknowledge #Report memory #Disturb_input
I 1.3 I 1.2
Disturb_ input Acknowledge Flash_freq Edge_ mem_bit Report_ memory
Display
Q 4.3
FP #Edge_mem_bit
M 10.3M 40.0 M 40.1
SA A O
#Report_memory#Report_memory #Flash_freq
AN #Report_memory A = #Disturb_input #Display
形式参数 实际参数
青岛大学-西门子先进自动化技术实验室
青岛大学自动化工程学院
SIEMENS
定义形式参数形式参数 参数类型输入参数 输出参数 输入/输出 参数 in out In_out
定义
使用方法只能读 只能写 可读/可写
图形显示在块的左侧 在块的右侧 在块的左侧
青岛大学-西门子先进自动化技术实验室
青岛大学自动化工程学院