第六章 结构化编程
合集下载
第6章结构化程序设计基础教学课件VF

语句格式: Do While <循环条件> <语句序列> Enddo 说明: Do While 与 Enddo 必须成对使用。
33/65
循环体后的语句 结束
6.5.1 Do While(当型)循环语句
例6.14,求前100个自然数的和: S=0 N=1 Do While N<=100 循环条件 S=S+N 循环体 N=N+1 Enddo
16/65
6.3.2 等待语句
Timeout <数值表达式>:用于设定等待的秒 数。在等待时间内按任意键或等待超时,程序 将继续向下执行。 例:Wait "显示时间:" Timeout 3 ?? Time()
17/65
6.3.3 输入表达式语句
语句格式: Input [<字符表达式>] To <内存变量> 说明:允许输入任何类型的表达式。Input输 入字符串时必须加上定界符。 例6.5: N=2 Input "请输入数据: " To M ? M
程序文件的类型
在 VFP 中,可以执行源程序、编译程序、 应用程序和可执行程序4种程序文件。 (1)源程序(PRG):源程序是文本文件,可 以对其内容进行修改。只要有源程序文件, 就可以生成其他3种程序文件。
8/65
6.2.3 程序的编译与执行
(2)编译程序(FXP):每个源程序文件都有 对应的编译程序文件,执行编译程序比执行 源程序的速度快。
说明2:若所有条件都不成立,而有Otherwise 项,则执行语句序列n+1,然后执行Endcase后 面的语句;若所有条件都不成立,且无 Otherwise项,则直接执行Endcase后面的语句。
VisualFoxPro程序设计 第6章结构化程序设计

1.菜单方式 ? 单击“文件”|“新建”命令,在弹出的“新建”对话框中,
选择文件类型为“程序”,然后单击“新建文件”按钮,即可 打开如图所示的程序编辑窗口。
? 在编辑窗口中可以逐条输入命令,程序文件建立好后,可以单 击“文件”|“保存”命令来保存该程序文件。
Visual FoxPro 6.0 程序设计.课件
? 其中各参数的说明如下:
? [<提示信息 >]表示在等待用户输入时,在屏幕上显示的提示 内容,通常是一个字符串,需用单引号、双引号或方括号作 为定界符括起来,也可以是字符串变量。若省略该项,屏幕 上显示的是系统默认的提示信息“按任意键继续……”。
? [TO < 内存变量 >]表示将输入的单个字符赋给内存变量。输 入字符时,不需输入字符的定界符,否则内存变量得到的是 第一个定界符;若未输入字符就按回车键或单击鼠标,则内 存变量得到空值。若省略该项,则输入的字符不能保留。
第6章 结构化程序设计
? 6.1 程序文件 ? 6.2 程序控制结构 ? 6.3 过程与过程调用 ? 6.4 程序的调试
提示:单击各个标题前的动画符号“ ” ,链接到相应的章节。
Visual FoxPro 6.0 程序设计.课件
-1-
前页 后页 首页
? 在程序设计的方法中,结构化程序设计是程序设 计的基本方法。结构化程序设计的基本思想是逐 步求精、模块化和自顶向下,将一个复杂的程序 系统的设计任务分成多个易于控制和处理的子任 务,每个子任务都是可独立编程的子程序、过程 或函数模块。其程序控制结构有顺序结构、分支 结构和循环结构三种。
Visual FoxPro 6.0 程序设计.课件
Visual FoxPro 6.0 程序设计.课件
选择文件类型为“程序”,然后单击“新建文件”按钮,即可 打开如图所示的程序编辑窗口。
? 在编辑窗口中可以逐条输入命令,程序文件建立好后,可以单 击“文件”|“保存”命令来保存该程序文件。
Visual FoxPro 6.0 程序设计.课件
? 其中各参数的说明如下:
? [<提示信息 >]表示在等待用户输入时,在屏幕上显示的提示 内容,通常是一个字符串,需用单引号、双引号或方括号作 为定界符括起来,也可以是字符串变量。若省略该项,屏幕 上显示的是系统默认的提示信息“按任意键继续……”。
? [TO < 内存变量 >]表示将输入的单个字符赋给内存变量。输 入字符时,不需输入字符的定界符,否则内存变量得到的是 第一个定界符;若未输入字符就按回车键或单击鼠标,则内 存变量得到空值。若省略该项,则输入的字符不能保留。
第6章 结构化程序设计
? 6.1 程序文件 ? 6.2 程序控制结构 ? 6.3 过程与过程调用 ? 6.4 程序的调试
提示:单击各个标题前的动画符号“ ” ,链接到相应的章节。
Visual FoxPro 6.0 程序设计.课件
-1-
前页 后页 首页
? 在程序设计的方法中,结构化程序设计是程序设 计的基本方法。结构化程序设计的基本思想是逐 步求精、模块化和自顶向下,将一个复杂的程序 系统的设计任务分成多个易于控制和处理的子任 务,每个子任务都是可独立编程的子程序、过程 或函数模块。其程序控制结构有顺序结构、分支 结构和循环结构三种。
Visual FoxPro 6.0 程序设计.课件
Visual FoxPro 6.0 程序设计.课件
第6章 STEP7结构化程序设计(1)

图6-1 CPU314为优先级分配L堆栈
(四)中断控制
用户程序能够对一个中断发生后是否真正产生中断调用来进行
控制,即在程序运行中适时地屏蔽或允许中断调用,对中断的控制功 能用STEP7 提供的SFC 完成。 SFC39 ( DIS _ IRT ) 可禁止处理所有优先级的中断和异步错误, 也可有选择地禁止某个优先级的中断或使优先级范围的中断和异步错 误得到处理。被SFC39 禁止的中断需用SFC40 允许,在CPU 完全再 启动后,SFC39 的作用自动失效。
(3)用数组作参数传递。数组可以在逻辑块变量声明表中或数据块 中定义。如果在逻辑块变量声明表中把其形参定义为数组类型时,可 将实际参数数组作为参数传送,但必须将整个数组而不是数组的某些 元素作为参数传递。当然,在调用快时。也可以将某个数组的元素赋 值给同一类型的参数。 将数组作为参数传递时,并不要求作为形参和实参的二个数组有相 同的名称,但它们必须有同样的组织结构、相同的数据类型并按相同 的顺序排列。例如都是由整数组成的2×3格式的数组。 2.结构(STRUCT)的生成与访问 结构(STRUCT)可以将不同数据类型的元素组合成一个整体, 或者说结构是不同类型的数据组合。如图6-4所示。可以用基本数据类 型、复合数据类型(包括数组、结构和用户定义的数据类型UDT)。 但由数组或结构组成的结构最多只能嵌套8层。用户可以将过程控制 中有关的数据统一组织在一个结构中,作为一个数据单元来使用,而 不是使用大量的单个的元素,这为统一处理不同类型的数据或参数提 供了方便。
(三)中断工作过程
1.中断工作过程
中断处理用来实现对特殊内部事件或外部事件的快速响应。如果没 有中断,CPU 循环执行组织块 OBl。在循环执行用户程序的过程中, 如果CPU 检测到有中断请求,因为OB1 的优级最低(背景组织块 OB90除外),所以操作系统在现有程序的当前指令执行结束后(称 断点)立即响应中断,调用申请中断的组织块OB ,执行该OB 中的 程序。当该OB 中程序执行完毕后,返回原程序断点处继续原程序的 执行。
汇编语言程序设计-结构化程序设计方法

'0'~'9'的ASCII码(30h~39h),对应规则n+'0'(30h) ; 若n是10~15,则转换成'A'~'F'的ASCII码(41h~46h), 对应规则n-10+'A'。 这实际上是一个二分支结构
.386
_DATA SEGMENT'DATA' USE16
Chr DB
?
_DATA ENDS
将首地址为B1、长度为n的数据块内容传到首地 址为B2数据块中
分析:
– 用串处理指令实现数据块传送。 – 假设传送"abcdef"六个字节数据,针对源、目的数据块
重叠与否分三种情况:两数据块地址不重叠,正向传 送和反向传送均正确;若两数据块有部分地址重叠, 且B1<B2,如分别为100和102,则只能反向传送,若 正向传送,则目的块内容为"ababab",原因是在传送过 程中覆盖了源块的重叠部分;若两数据块有部分地址 重叠,且B1>B2,如分别为102和100,则只能正向传 送,若反向传送,则目的块内容为"defdef",原因也是 源块的重叠部分被覆盖。所以,若B1>B2时,采用正 向传送方式;若B1<B2时,采用反向传送方式。
形如P1P2…Pn的组合条件中,若Pi为
Q1Q2…Qn,则可按顺序测试Qj,只要有
一个Qj为假,则转去测试下一个Pi+1,当所 有的Qj为真时,则直接转至Then_loc
例6.9 把下列C语言的语句改写成等价的汇 编语言指令序列。
– if(x1+x2>0&&(x3%2==0||x4<'a')&&(x5+x6<0||x7 >100)&&x8<'z') a=65;else a=97;
.386
_DATA SEGMENT'DATA' USE16
Chr DB
?
_DATA ENDS
将首地址为B1、长度为n的数据块内容传到首地 址为B2数据块中
分析:
– 用串处理指令实现数据块传送。 – 假设传送"abcdef"六个字节数据,针对源、目的数据块
重叠与否分三种情况:两数据块地址不重叠,正向传 送和反向传送均正确;若两数据块有部分地址重叠, 且B1<B2,如分别为100和102,则只能反向传送,若 正向传送,则目的块内容为"ababab",原因是在传送过 程中覆盖了源块的重叠部分;若两数据块有部分地址 重叠,且B1>B2,如分别为102和100,则只能正向传 送,若反向传送,则目的块内容为"defdef",原因也是 源块的重叠部分被覆盖。所以,若B1>B2时,采用正 向传送方式;若B1<B2时,采用反向传送方式。
形如P1P2…Pn的组合条件中,若Pi为
Q1Q2…Qn,则可按顺序测试Qj,只要有
一个Qj为假,则转去测试下一个Pi+1,当所 有的Qj为真时,则直接转至Then_loc
例6.9 把下列C语言的语句改写成等价的汇 编语言指令序列。
– if(x1+x2>0&&(x3%2==0||x4<'a')&&(x5+x6<0||x7 >100)&&x8<'z') a=65;else a=97;
Visual FoxPro程序设计-电子教案 第6章结构化程序设计

3. accept命令 格式: ACCEPT [<字符表达式>] TO <内存变量> 功能:程序运行时,通过键盘把字符型常量给变量赋值 说明: ① 系统显示<字符表达式>的内容作为输入的提示信息, 如果不指定<字符表达式>,则执行命令时屏幕上只显 示光标等待输入。 ② 此命令只能接收字符型常量,用户在输入时不需要加 字符串定界符,否则系统会把定界符作为字符串内的 字符。 ③ 如果不输入内容直接按回车键,系统将把空串赋值给 指定的内存变量。
【例6-5】在学生档案表中按姓名查找满足条件的记录, 若找到则显示该学生的学号、姓名、性别、家庭住址 ;若没找到,则显示“姓名输入错误!” 【例6-6】输入货物重量,计算货物的托运费。计费标准 为每公斤0.1元,当超过50公斤时,超出部分为每公斤 0.2元。
6.2.2 嵌套的分支语句 IF语句中还可以出现IF语句,这就构成了IF语句的嵌套。 1.IF语句嵌套的一般格式 2.语句执行过程 3.说明 (1)也可以在IF子句中嵌套,或是在IF和ELSE子句中同 时嵌套; (2)每个嵌套中的IF和ENDIF必须成对出现; (3)各层嵌套不得交叉。
高职高专院校“十二五”精品示范系列教 材(软件技术专业群)
Visual FoxPro程序设计
第6章 结构化程序设计
6.1 程序和程序文件 6.2 选择结构程序设计 6.3 循环结构程序设计 6.4 过程与函数
6.1 程序和程序文件
程序是能够完成一定任务的命令的有序集合。许多任务单靠 一条命令是无法完成的,而是要执行一组命令来完成。学习 Visual FoxPro的目的就是要学习利用命令来编写程序,以完成一 些具体的任务。 程序以文件形式保存在磁盘上,被称为程序文件或命令文件 ,扩展名为.prg。VFP的程序文件和其Байду номын сангаас高级语言程序一样,是一 个文本文件。程序运行时,系统会按照一定的次序自动执行包含 在程序文件中的命令。编写程序文件与在命令窗口中逐条输入命 令相比有以下优点: (1)可以利用编辑器,方便地输入、编辑和保存程序; (2)可以利用多种方式、多次运行程序; (3)可以在一个程序中调用另一个程序。
第6章 STEP7结构化程序设计(1)

②Name(名称):输入数组的符号名。如PRESS、 Motor_data等。 ③Type(数据类型):数组的数据类型。如BOOL、WORD、 INT、STRACT、UDT等基本数据类型或复合数据类型,注意不能 用ARRAY类型。 ④Initial Value(初值):如果不想用缺省值可输入初值。如 “30、22、-3、3(0)”(这里的3(0)表示后3个数组元素全为0, 是一种简化的写法)。当数据块第一次存盘时,若用户没有明确地 声明实际值,则初值将被用于实际值。 ⑤Comment(注释):用于栏目的文字注释,最多可为80 个字符。如“2×3数组”。 (2)访问数组。利用数组中指定元素的下标可访问数组中的 元素数据,这时数据块名、数组名及下标一起使用并用英语的句号 分开。如图6-5中声明的数组在DB3(假设符号名MOTOR)数据块 中,可用以下符号地址或绝对地址访问存在DB3中数组的第3个元素 (数据类型为整数INT,占用一个字或2个字节): MOTOR.PRESS[1 ,3] 或DB3.DBW5
第六章
STEP7结构化程序设计
一个复杂的生产过程或大规模的分散被控对象,总是可以把它分 解为若干个较小的分过程。自动化过程的这种分解处理,得到了 STEP7 “开发软件包”在各个技术层次上的支持。它将控制任务分为 项目,项目可以由一个或多个CPU 程序组成,而每个CPU 程序又是
由它的各种逻辑块和数据块构成,逻辑块中的功能块总是对应一个控
用户根据生产控制的复杂程度,将程序放在不同的逻辑块(包括 OB、FC和FB)中。程序运行时所需的大量数据或变量存储在数据块中, 调用功能块FB 时也必须为其指定一个相应的背景数据块DI ,它随功 能块FB 的调用而打开,随功能块FB的结束而关闭。在块调用时,调 用块可以是任何逻辑块( OB 、FB 、FC 、SFB 、SFC ) ,被调用的 块只能是功能块(除OB 外的逻辑块)。 块调用时,OB的临时变量数据压入L堆栈,所有OB要求至少20字 节的L堆栈中的内存空间。所以OB1 即使没有声明使用其他额外的临 时变量,也要使用20 字节的L堆栈中的内存空间。 二、PLC中断 S7 系列PLC 采用循环程序处理与中断程序处理结合的工作方式。 中断处理方式在计算机和PLC 中均得到广泛应用。这种工作方式是当 有中断申请时,CPU 将暂时中断现有程序的执行,转而执行相关的中 断程序,中断程序执行完毕后,再返回原程序执行。但不同PLC 对中 断的处理可能各有不同,下面介绍S7-300 /400 系列PLC 的中断。
《VisualFoxPro程序设计》第六章结构化程序设计

其中各参数的说明如下:
Visual FoxPro 6.0 程序设计.课件
4.非格式输出命令
-*-
该命令的格式如下: ?|?? <表达式列表> 该命令的功能是在Visual FoxPro的主窗口中换行或不换行输出<表达式列表>中各个表达式的值,其中,?表示换行输出,即<表达式列表>中各个表达式的值在当前主窗口中最后一次输出位置的下一行输出;??表示不换行输出,即<表达式列表>中各个表达式的值在当前主窗口中最后一次输出位置后直接输出,并不换行。
程序文件 程序控制结构 过程与过程调用 程序的调试 提示:单击各个标题前的动画符号“ ” ,链接到相应的章节。
第6章 结构化程序设计
在程序设计的方法中,结构化程序设计是程序设计的基本方法。结构化程序设计的基本思想是逐步求精、模块化和自顶向下,将一个复杂的程序系统的设计任务分成多个易于控制和处理的子任务,每个子任务都是可独立编程的子程序、过程或函数模块。其程序控制结构有顺序结构、分支结构和循环结构三种。
Visual FoxPro 6.0 程序设计.课件
6.2 程序控制结构
Visual FoxPro 6.0 程序设计.课件
-*-
01
02
04
分支结构程序设计
循环结构程序设计
顺序结构程序设计
6.2程序控制结构
-*-
程序的控制结构包括顺序结构、分支结构和循环结构3种,每一种控制结构可以包含一个或多个语句,任何程序都是由这3种基本控制结构构成的。
其中各参数的说明如下:
该命令格式如下:
@<行,列> SAY <提示信息> [GET <变量名>6-6 结果显示 【例6-2】编写程序prog2.prg,使用格式输入输出命令,修改学生信息表student中指定学号的学生记录的字段值。 程序编辑窗口的输入如图6-5,运行时在屏幕中输入“王燕燕”,运行结果如图6-6。
Visual FoxPro 6.0 程序设计.课件
4.非格式输出命令
-*-
该命令的格式如下: ?|?? <表达式列表> 该命令的功能是在Visual FoxPro的主窗口中换行或不换行输出<表达式列表>中各个表达式的值,其中,?表示换行输出,即<表达式列表>中各个表达式的值在当前主窗口中最后一次输出位置的下一行输出;??表示不换行输出,即<表达式列表>中各个表达式的值在当前主窗口中最后一次输出位置后直接输出,并不换行。
程序文件 程序控制结构 过程与过程调用 程序的调试 提示:单击各个标题前的动画符号“ ” ,链接到相应的章节。
第6章 结构化程序设计
在程序设计的方法中,结构化程序设计是程序设计的基本方法。结构化程序设计的基本思想是逐步求精、模块化和自顶向下,将一个复杂的程序系统的设计任务分成多个易于控制和处理的子任务,每个子任务都是可独立编程的子程序、过程或函数模块。其程序控制结构有顺序结构、分支结构和循环结构三种。
Visual FoxPro 6.0 程序设计.课件
6.2 程序控制结构
Visual FoxPro 6.0 程序设计.课件
-*-
01
02
04
分支结构程序设计
循环结构程序设计
顺序结构程序设计
6.2程序控制结构
-*-
程序的控制结构包括顺序结构、分支结构和循环结构3种,每一种控制结构可以包含一个或多个语句,任何程序都是由这3种基本控制结构构成的。
其中各参数的说明如下:
该命令格式如下:
@<行,列> SAY <提示信息> [GET <变量名>6-6 结果显示 【例6-2】编写程序prog2.prg,使用格式输入输出命令,修改学生信息表student中指定学号的学生记录的字段值。 程序编辑窗口的输入如图6-5,运行时在屏幕中输入“王燕燕”,运行结果如图6-6。
结构化程序设计

上页
(它已预先赋值)或表中当前记录的字段名变量进
行编辑修改。
下页 【说明】 @…GET语句必须与编辑修改语句READ一起使用
才有意义。当执行READ语句时,系统将光标移到
退出
@…GET的变量位置,这时如果从键盘上键入新的
数据,则变量中原来的数据被取代
22
【例6-7】建立程序文件,要求通过程序方式在“读者”表中
第六章 结构化程序设计
1
本章目录
目录
第一页
第三节 程序的模块化
退出
第四节 程序调试
2
Visual FoxPro的工作方式
Visual FoxPro系统提供有三种工作方式:即单 命令方式、菜单方式及程序文件方式。
目录
1.单命令方式
上页
Visual FoxPro单命令方式是利用Command 窗口
所谓单命令方式,即输入一条命令,完成一个操 作的工作方式。
3
2.菜单方式
在Visual FoxPro 环境下,也可以通过系统提
供的菜单选项,对数据库资源进行操作管理和对系
统环境进行设置;并通过菜单建立命令文件及运行
目录
命令文件。所谓菜单方式,即通过打开不同的菜单
选择并完成不同的操作。我们在以前各章所讲的内
@ 10,10 SAY "出生日期:" GET 出生日期
@ 12,10 SAY "少数民族否:" GET 少数民族否
退出
@ 14,10 SAY "籍贯" GET 籍贯
READ
USE
23
【例6-8】编写程序文件PROG8.PRG ,修改读者表中第三 条记录的姓名和籍贯两个字段。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
二. 功能块编程及举例
• FB块带有一个存储区,即背景数据块,那么背景数据块 是如何生成的,有2中方法。
• 1)在调用FB并为它指定一个背景数据块后,如果该数据 块并不存在,则弹出一下提示信息:”Instance data block DBx does not exist. Do you want to generate it ?” 单击”Yes” 按钮可自动生成一个新的背景数据块。
正转,反转,停止,输出信号是电机正转,电机反转。
• 案例2:设计故障I1.3出现时,在操作面板上用一个指 示灯(Q4.3)来指示,指示灯以2HZ的频率闪烁,系 统复位输入是I1.2,用来检测故障是否存在,如果故障 存在,指示灯停止闪烁,转为常亮,故障消除,指示 灯熄灭。
故障信号 复位信号 存储器 指示灯
• 2)创建一个新的数据块时,选择其属性为“Data block referencing a function block”。
• 功能块FB的优点:当编写FC的程序时,用户必须寻找空 的标志区或数据区来存储需要保持的数据,并且要自己编 写程序来保存他们;而FB的静态变量可由STEP7的软件 自动保存。
• 一个功能块可以有多个背景数据块,使功能块可以被不同的对 象使用。
• 数据块包含共享数据块和背景数据块两种类型,共享数据块存 储的是全局变量,所有的逻辑块都可以从共享数据块中读取数 据,背景数据块则从属于某个功能块,用于传递参数。
• 块的调用即为子程序调用,块可以嵌套调用,嵌套的层数与 CPU的型号有关。
配料A
流量传感器 进料阀 进料泵 入口阀 M
流量传感器 进料阀 进料泵 入口阀
混合罐
配料B
排料阀
搅拌区功能为:
1.搅拌电动机 当液面指示“液面高 度低于最低限位”时,或者排料阀
打 开时,搅拌电动机必须停止。
2.故障检测 如果搅拌电动机在启动 后10s内没有达到电动机的额定转 速,则电动机必须断开。
• 通过案例2说明FC和FB的区别
6.3 FC和FB程序设计实例
• 任务描述:工业搅拌过程如下:两种配料(A.B)在一个混合罐中由 搅拌器混合在一起,之后通过排料阀排出。工业搅拌示意图如下图所 示。系统分为4个区:配料A,配料B,搅拌区排料区。电动机和泵有3 台:配料A进料泵,配料B进料泵,搅拌电动机。阀门有5个:配料A 入口阀,配料A进料阀,配料B入口阀,配料B进料阀,排料阀。
FB1 电动机
配料A DB1
配料B DB1
搅拌电动机 DB1
FC1 阀门
入口阀 A和B
入口阀 A和B
排料阀
习题
• 1.试用FC封装风扇控制。要求为:电动机起动(Engine_On)后, 起动延时定时器(Timmer_On)延时(Time),之后将风扇起动 (Fan_On)。
• 2.试用FB封装发动机的控制,发动机有两种类型:汽油机和柴油机, 要求为:输入为起动(Switch_On),停止(Switch_Off),故障 (Failure),复位故障(Reset)和转速设置(Actual_Speed);静态变量 为:转速预设值(Preset_Speed);输出为运行(Engine_On),转速 达到设置转速指示灯(Achieve_Speed_L)和故障指示灯(Failure_L)。 编程要求起动和停止按钮使运行线圈工作或停止。转速达到给定转 速时,显示转速达到预设值的指示灯亮。故障使故障灯亮。复位故 障后,故障指示灯灭。
三. 块的结构
• 块是有变量声明表和程序组成的。 • 变量声明表。每个逻辑块都有变量声明表,而变量声明表是用来说明
块的局部数据,局部数据包含参数和局部变量两大类型,在不同的的 逻辑块中可以重复声明和使用同一个局部数据,因为它们在每一个块 中有效一次。
局部数据声明类型
变量名 输入 输出 输入/输出 静态变量
• 3.将走马灯封装在FC中,输入为:起动和停止按钮,左转和右转按 钮(Left,Right),定时间隔(Time),初值设置(Initial)以及移位间隔 (Interval);输出为8位(Show)
系统功能(SFC) 系统功能块(SFB) 系统数据块(SDB)
二。块的含义及调用
• (一).功能(FC)
• 功能是用户所编写的无固定存储区的块。它为不带“记忆” 的逻辑块。所谓不带“记忆”表示没有背景数据块。当完 成操作后,数据不能保持。这些数据为临时变量,对于那 些需要保存的数据只能通过共享数据块(SB)来存储。 调用功能时,需要用实参来代替形参。
配料A
流量传感器 进料阀 进料泵 入口阀 M
流量传感器 进料阀 进料泵 入口阀
混合罐
配料B
排料阀
各个区域的功能如下: 配料A和配料B的每个配料管都配 有一个入口阀和进料阀,还有一个 进料泵。配料管中还有流量传感 器,检查是否有配料流过。区域功 能为: 1.进料泵 当罐的液面传感器指示 2.混合罐装满后,进料泵必须关 闭。进料泵 当排料阀打开时,进 料泵同样也要关闭。 3.阀门 在启动进料泵1s后,必须 打开入口阀和进料阀。 4.阀门 在进料泵停止后,阀门必 须关闭,防止配料泄漏。
• 模块化编程:将程序分成根据功能分成不同的逻辑块,没 一逻辑块的功能不同,然后在OB1中可以根据条件调用不 同的功能块,特点是易于分工合作,调试方便。
• 结构化编程:结构化编程是将过程要求中类似或相似的任 务归类,在功能或功能块中编程,形成通用的解决方案。
一。块的分类
用户程序 操作系统
系统程序
组织块(OB),直接有系统调用 功能块(FB),由其他逻辑块调用 功能(FC),由其他逻辑块调用。 数据块(DB),
临时变量
类型 IN OUT IN_OUT STAT
TEMP
说
明
为调用逻辑块提供数据,输入给逻辑块。
从逻辑块中输出数据结果
参数值可以输入,也可以输出
静态变量存储于背景数据块中,块调用结束后, 变量被保留
临时变量存储于L堆栈中,块执行结束后,变 量消失。
6.2 功能和功能块编程及调用举例
• 一。 功能和功能块的编程步骤: • 1. 定义局部变量,首先定义形参和临时变量。 • 2. 编写执行程序,在编程中使用变量名。 • 3. 在OB1中调用这个功能块。 • 案例1. 做一个具有控制电动机正反转的功能,输入信号是
3.维护 搅拌电动机的启动次数超过 50次,进行维护。
配料A
流量传感器 进料阀 进料泵 入口阀 M
流量传感器 进料阀 进料泵 入口阀
混合罐
配料B
排料阀
排料区中成品的排出由螺线管阀门 控制。排料区的功能为:
1.罐空时,阀门必须关闭。
2.当搅拌电动机工作时,或者罐空 时排料阀必须关闭,这一要求与搅 拌区功能的第一项要求一致。
配料A
流量传感器 进料阀 进料泵 入口阀 M
流量传感器 进料阀 进料泵
混合罐
配料B
入口阀
排料阀
5.故障检测 进料泵启动7s之后, 流量传感器会报溢出。 6.故障检测 进料运行时,若流量 传感器没有流量信号,则进料泵关 闭。 7.维护 进料泵启动次数大于50 次,必须维护。
搅拌区的混合罐中装有3个传感 器:灌装满传感器(装满之后,触 点断开),罐不空传感器,罐液体 最低限位(达到最低限位,触点关 闭)。
• (二)。功能块(FB)
• 功能块是用户所编写的有固定存储区的块。FB为带“记忆”的 逻辑块。它有一个数据结构与功能块参数表完全相同的数据块 (DB)。我们称该数据块为背景数据块,当数据块背执行时, 数据块背调用;功能块结束,调用随之结束。存放在背景数据 块中的数据在FB块结束以后,仍能继续保持,具有“记忆”功 能。
在进行系统设计之前,首先分析系 统功能,可以看出系统有多台电动 机和多个阀门,如果直接用线性化 或模块编程,会有较多的重复编 程,而用结构化编程可以减少工作 量。
配料A
流量传感器 进料阀 进料泵 入口阀 M
流量传感器 进料阀 进料泵 入口阀
混合罐
配料B
排料阀
结构化编程分析
在进行系统设计之前,首先分析系统功能,可以看出系统有多台电动 机和多个阀门,如果直接用线性化或模块编程,会有较多的重复编 程,而用结构化编程可以减少工作量。将电动机设计封装在FB1中,以 不同的数据块分别表示不同的电动机:配料A的进料泵(DB1),配料B 的进料泵(DB2),搅拌电动机(DB3)。阀门用FC来封装,分别表示 配料A和B的入口阀,进料阀和排料阀。分层结构图如下图所示。
第六章 结构化编程
主讲:程子华
6.1 程序设计方法
• 在STEP7中有三种编程方法:线性化编程、模块化编程、 结构化编程。
• 线性化编程:线性化编程是将整个程序都放在循环控制组 织块OB1中。在整个程序执行的过程中,每一步都被扫描, 适用与一些比较简单的程序。如果是编写大型程序,要避 免线性化编程。