结构化编程具有如下一些优点:1)各单个任务块的创建和测试可以相互独立地进行。图3-17 结构化编程示意图3)块可以根据需要在不同的地方以不同的参数数据记录进行调用。建议用户在编程时可以根据实际工程特点采用结构化编程方式,通过传递参数使程序块重复调用,使其结构清晰、调试方便。结构化编程中用于解决单个任务的块使用局部变量来实现对其自身数据的管理。模块化编程和结构化编程的详细内容将在6.5节介绍。......
2023-06-15
由前述例子可以看出,模块化编程可能会存在大量的重复代码,块不能被分配参数,程序只能用于特定的设备,但是,在很多情况下一个大的程序要多次调用某一个功能,这时应建立通用的可分配参数的块(FC、FB),这些块的输入输出使用形式参数,当调用时赋给实际参数,这就是结构化编程。
结构化编程有如下优点:
1)程序只需生成一次,显著减少了编程时间。
2)该块只在用户存储器中保存一次,显著降低了存储器用量。
3)该块可以被程序任意次调用,每次使用不同的地址。该块采用形式参数(INPUT、OUTPUT或IN/OUT参数)编程,当用户程序调用该块时,要用实际地址(实际参数)给这些参数赋值。
结构化编程就要涉及到FC和FB中使用局部存储区,使用的名字和大小必须在块的声明部分中确定,如图6-37所示。当FC或FB被调用时,实际参数被传递到局部存储区。之前我们使用的是全局变量,如位存储区和数据块来存储数据,下面利用局部变量来存储数据。局部变量分为临时变量和静态变量两种,临时变量是一种在块执行时用来暂时存储数据的变量,如图6-37所示。如果有一些变量在块调用结束后还需保持原值,则必须被存储为静态变量,静态变量只能被用于FB块中。赋值给FB的背景数据块用做静态变量的存储区。关于静态变量的详细使用将在后续章节进行说明。
对于可传递参数的块,在编写程序之前,必须在变量声明表中定义形式参数。表6-3列举了几种类型的参数及定义方法。注意,当需对某个参数做读、写访问时,必须将它定义为IN/OUT型参数。
表6-3 形式参数的类型
在声明表中,每一种参数只占一行。如果需要定义多个参数,可以用回车键来增加新的参数定义行,也可以选中一个定义行后,通过菜单命令“插入”→“声明行”来插入一个新的参数定义行。当块已被调用后,再插入或删除定义行,必须重新编写调用指令。
现在重新编写前述电动机的控制电路程序。
新建块FC4,定义形式参数如图6-38所示。使用形式参数编写FC4程序,如图6-39所示。
要注意以下问题:
1)如果在编程一个块时使用符号名,编辑器将在该块的变量声明表查找该符号名。如果该符号名存在,编辑器将把它当做局部变量,并在符号名前加“#”号。
2)如果它不属于局部变量,则编辑器将在全局符号表中搜索。如果找到该符号名,编辑器将把它当做全局变量,并在符号名上加引号。
3)如果在全局变量表和变量声明表中使用了相同的符号名,编辑器将始终把它当做局部变量。然而,如果输入该符号名时加了引号,则可成为全局变量。
图6-38 FC4程序
在OB1中调用FC4,输入实际参数,如图6-39所示。可以看出,此时的FC4有两个输入参数和一个输入输出参数,分别输入相应的实际地址,实现的功能与前述例子相同,但是此时只编写了一个块FC4。
图6-39 调用FC4
重新编写前述求取平方根例子程序,定义局部参数并编写程序,如图6-40所示。
图6-40 求取平方根例子程序
【例6-4】工业生产中,经常需要对采集的模拟量进行滤波处理。本例通过将最近三个采样值求和除以3的方式来进行软件滤波。假设模拟量输入处理后的工程量存储在MD44中,为浮点数据类型。
编程思路:将采集的最近的三个数保存在三个全局地址区域,每个扫描周期进行更新以确保是最新的三个数,三数相加求平均即可。
首先定义FC5的形式参数,如图6-41所示。注意:定义的形式参数中,三个采集值Value1、Value2和Value3的参数类型为IN_OUT型,不能为TEMP型,否则将无法保存该数值。
在FC5中编写程序,如图6-41a所示。“程序段1”的含义是根据循环扫描工作方式从左到右的顺序将三个最近时间的采集值保存,注意三个MOVE指令的次序不能改变;“程序段2”的含义是将三个数相加除以3求平均值。
图6-41b中,调用FC5,并赋值实际参数,求得的平均值存放在MD72中。这样,通过不同的实际参数可以重复调用FC5进行多路滤波。
但是,通过此例也可以看出一个问题:我们关心的只是三个数的平均值,而调用FC1子程序时,却需要为三个采集值寻找全局地址进行保存,麻烦且容易造成地址重叠,能不能既不用人为寻找全局地址而又能保存数值呢?通过FB就可以实现。
图6-41 程序例子
a)子程序FC1 b)主程序OB1
有关西门子S7-1200 PLC编程与应用的文章
结构化编程具有如下一些优点:1)各单个任务块的创建和测试可以相互独立地进行。图3-17 结构化编程示意图3)块可以根据需要在不同的地方以不同的参数数据记录进行调用。建议用户在编程时可以根据实际工程特点采用结构化编程方式,通过传递参数使程序块重复调用,使其结构清晰、调试方便。结构化编程中用于解决单个任务的块使用局部变量来实现对其自身数据的管理。模块化编程和结构化编程的详细内容将在6.5节介绍。......
2023-06-15
第3章提到了PLC有三种编程方法:线性化编程、模块化编程和结构化编程。结构化编程是将过程要求类似或相关的任务归类,在功能FC或功能块FB中编程,形成通用解决方案。其特点是结构化编程必须对系统功能进行合理分析、分解和综合,所以对设计人员的要求较高,另外,当使用结构化编程方法时,需要对数据进行管理。但是,使用结构化编程方法时,需要管理程序和数据的存储与使用。......
2023-06-15
图11-19 程序的执行方式表11-4 定时器启动型与中断启动型3.FBD程序说明FBD程序1)使用编程工具进行编程,需要以IEC 61131-3—2003规定的FBD语言为基准。FBD程序是指使用FBD语言编写的程序。FBD程序示例图11-20 FBD程序构成如图11-20所示,连线后的功能块图类似于电气回路图。FBD部件FBD程序由FBD部件构成,将FBD部件用连线连接起来进行编程。表11-5 FBD部件分类基本数据类型编程工具可以处理的基本数据类型见表11-6。各FBD程序通过声明为局部变量的外部变量引用全局变量。......
2023-06-16
与常规的多效蒸发相比,MVR工艺技术应用于NMMO回收有三个突出的优点:回收产品的质量好、设备运行能耗低和投资成本少。MVR技术可以较大幅度地降低设备投资成本,Lyocell纤维溶剂回收中大都采用并流式多效蒸发工艺,这一工艺的特点是物料借助各效间的压力差流动。MVR系统不存在传热效率降低的问题,因此,不仅减少热交换器的面积,进而节约了近50%的建筑面积,使MVR整体的投资成本比多效蒸发下降了近17%。......
2023-06-25
目前,光纤通信已经成为通信中的最主要的传输技术,它与其他通信传输系统相比,具有以下优点:传输频带宽,通信容量大。目前,光纤通信使用的光载波频率在1014~1015Hz数量级,比常用的微波频率高104~105倍,所以,通信容量原则上比微波通信高104~105倍。光纤真正传光的是线芯,多模光纤的线芯直径为50~85μm,单模光纤的线芯直径为5~10μm,国际上规定通信光纤的包层直径为125μm。......
2023-06-27
显示部件是指能够显示各种电子产品工作状态的部件,是实现人机交互不可缺少的一种部件。在电子产品的实际应用中,随产品型号和性能的不同,显示屏和驱动电路中使用的元器件也不相同,下面就以常见的数码管显示屏、CRT(显像管)显示屏、LCD(液晶)显示屏以及LED显示屏及其驱动电路为例来介绍一下显示部件的结构和功能特点。图5-19 各种显示部件的实物外形及内部结构提示说明数码管是一种半导体发光器件,其基本单元是发光二极管。......
2023-06-26
图3-1涂料的作用3.特种功能保护和装饰是涂料最主要的两大功能,除此之外,采用特殊的涂料还可以使物体具有特种功能。涂装能使物体获得调节热、电传导性、防止生物附着(杀菌)、示温、声波的发散、反射和吸收、夜光等作用。防腐蚀涂料是以防腐为主要功能的涂料。防腐蚀涂料涂装是底材覆盖层保护方法之一,其目的就是将底材与环境用涂膜隔开,同时再辅以电化学保护、缓蚀等手段,以达到保护底材免受侵蚀而延长其使用寿命的目的。......
2023-06-23
这样,就形成了整个步进控制系统与SFC程序的一一对应。如果用顺序控制程序编写其互锁控制电路,不仅程序编写复杂,同时也无法显示信号运行时的先后逻辑顺序;而用SFC来编写互锁控制电路,由于其程序结构的特点,可以很好地应对这一要求。......
2023-06-16
相关推荐