第4章 S7-1200 用户程序结构_第1页
第4章 S7-1200 用户程序结构_第2页
第4章 S7-1200 用户程序结构_第3页
第4章 S7-1200 用户程序结构_第4页
第4章 S7-1200 用户程序结构_第5页
已阅读5页,还剩26页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

电气控制与PLC主讲教师:曾新红选用教材:《电气控制与PLC应用技术》曾新红

等主编广州航海学院教学目标知识目标:通过本章的学习,主要了解用户程序结构和使用结构化编程的理念,掌握在TIAPortal编程软件中添加变量表、添加新块和调用功能块,掌握全局数据块和数据类型。提高学生分析问题和PLC编程能力。能力目标:学生能正确运用模块化编程,熟练掌握编程技巧,能结合生产实际需求设计程序,独立撰写设计程序说明,准确分析和报告调试结果。并能自主学习,拓展知识,发掘想象力与创造力。第4章S7-1200PLC基本编程4.1概述

一、用户程序结构在使用S7-1200CPU编程的过程中,推荐用户使用结构化编程的理念。如下图中用户将不同的程序划分为FC1、FB1、FB2等,然后在OB1中单次/多次/嵌套调用这些程序块,从而实现高效、简洁、易读性强的程序编程。典型结构化程序结构如图4.1所示。图4-1典型结构化程序结构图4.1

典型结构化程序结构二、

结构化程序的设计流程用户在设计一个PLC系统时有多种多样的设计方法,推荐如下操作步骤:①分解控制过程或机械设备至多个子部分。②生成每个子部分的功能描述。③设计安全回路。④基于每个子部分的功能描述设计,为每个子部分设计电气及机械部分,分配开关、显示/指示设备,绘制图纸。⑤为每个子部分的电气设计分配模块,指定模块输入/输出地址。⑥生成程序/输入/输出中需要的地址的符号名。⑦为每个子部分编写相应的程序,单独调试这些子程序。⑧设计程序结构,联合调试子程序。⑤项目程序差错/改进。在S7-1200CPU编程理念中,特别强调符号寻址的使用。在开始编写程序之前,用户应当为输入/输出/中间变量定义在程序中使用的标签。用户需要为变量定义标签名称及数据类型。标签名称原则上以易于记忆,不易混淆为准。在默认情况下,用户程序中使用任意PLC地址都将被系统分配一个默认标签名称。但这些标签都以“Tag”+“_数字”的形式出现。例如“Tag_1”、“Tag_2”等,因为此格式不利于记忆与识别,所以不推荐用户使用系统默认标签格式。图4.2所示为添加用户变量表。图4.2添加用户变量表三、

编程准备与程序块添加1

添加用户变量表当用户希望生成用户程序时,可以在Projectview视图中的Programblocks目录下单击添加新块选项,此时将显示添加程序向导,添加用户程序如下图所示。

图4-3添加用户程序2添加用户程序图4.3添加用户程序在添加用户程序向导(如图4.4所示)中,用户首先要选择需要添加的程序类型,包括OB、FB、FC、DB。根据用户选择程序类型的不同,下一步的显示将有所不同。图4.4添加用户程序向导1)添加OB块当用户希望生成OB块时,可以在添加用户程序向导中单击OB按钮,此时将显示系统所有支持的事件类型,用户根据需要这样相应事件类型,可以手动/自动指定OB的编号。添加OB块的界面如图4.5所示。图4.5添加OB块2)添加FB块当用户希望生成FB块时,可以添加用户程序向导中单击FB按钮,相应操作与添加OB的类似。3)添加FC块当用户希望生成FC块时,可以添加用户程序向导中单击FC按钮,相应操作与添加OB的类似。4)添加DB块当用户希望生成DB块时,可以添加用户程序向导中单击DB按钮,相应操作与添加OB的类似。

S7-1200CPU的DB块按照变量使用范围可分为全局数据块(GlobalDB)和背景数据块(InstanceDB)。全局数据块一般用于存储在CPU中所有OB/FB/FC都需要访问的数据,背景数据块一般用于存储只在某个FB中需要存储的数据。

S7-1200CPU中的背景数据块又可分为一般背景数据块、定时器用背景数据块、计数器用数据块。当用户希望添加全局数据块时,可以在数据块类型中选择GlobalDB选项;如果用户希望为FB添加背景数据块,可以在数据块类型中选择具体FB编号;如果用户希望为定时器添加背景数据块,可以在数据块类型中选择“IEC定时器”(IEC_TIMER)选项;如果用户希望为计数器添加背景数据块,可以在数据块类型中选择“IEC计数器”(IEC_COUNTER)。如图所示为添加不同类型的DB块。图4.6添加不同类型的DB块四、数据块(DB)的分类4.2功能与功能块4.2.1生成与调用功能1、功能的特点

功能(Function,FC)和功能块(Functionblock,FB)是用户编写的程序,它们包含完成特定任务的程序。FC和FB有与调用它的块共享的输入、输出参数,执行完FC和FB后,将执行结果返回给调用它的代码块。

功能没有固定的存储区,功能执行结束后,其局部变量中的临时数据就丢失了。可以用全局变量来存储那些在功能执行结束后需要保存的数据。设压力变送器量程的下限为0MPa,上限为HighMPa.经A/D转换后得到0~27648的整数。下式是转换后的数字N和压力P之间的计算公式:P=(High×N)/27648(MPa)(4-1)用功能FC1实现上述运算,在OB1中调用FC1。2、生成功能打开STEP7V15的项目视图,生成一个名为“FB_FC”的新项目。双击项目树中的“添加设备”,添加一个新设备。CPU的型号为CPU1214CDC/DC/DC如图4-7CPU选型。压力变送器0-100MPa0-10V温度变送器20MPa→2VPLCIW640~276482V→5530

3、生成功能的局部数据将鼠标的光标放在FCl的程序区最上面的分隔条上,按住鼠标的左键,往下拉动分隔条,分隔条上面是功能的界面(Interface)区,下面是程序区。由图4-8可知,功能有5种局部变量:1)Input(输入参数):由调用它的块提供的输入数据。2)Output(输出参数):返回给调用它的块的程序执行结果。3)InOut(输入输出参数):初值由调用它的块提供,块执行后将它的值返回给调用它的块。4)Temp(临时数据):暂时保存在局部数据堆栈中的数据。只是在执行块时使用临时数据,执行完后,不再保存临时数据的数值,它可能被别的块的临时数据覆盖。5)Returm中的Pressure(返回值),属于输出参数。图4.8FC1的局部变量4、FC1的程序设计首先用CONV指令将参数“输入数据”接收的A/D转换后的整数值(0~27648)转换为实数(Real),再用实数乘法指令和除法指令完成式(4-8)的运算(见图4.9)。运算的中间结果用临时局部变量“中间变量”保存。STEP7V15自动地在局部变量的前面添加#号,例如"#压力值"。图4-9FC1中的压力测量值计算程序图4.9FC1中的压力测量值计算程序5、在OB1中调用FC1在变量表中生成调用FC1时需要的3个变量(见图4-10),IW64是CPU集成的AI点的通道0的地址。将项目树中的FC1拖放到右边的程序区的水平“导线”上(见图4-11)。FC1的方框中左边的“输入数据”等是在FC1的界面区定义的输入参数,右边的“压力值”是输出参数。它们被称为FC的形式参数,简称为形参。形参在FC内部的程序中使用,在别的逻辑块调用FC时,需要为每个形参指定实际的参数,简称为实参。实参与它对应的形参应具有相同的数据类型。定实参时,可以使用变量表和全局数据块中定义的符号地址或绝对地址,也可以是调用FC1的块(例如OB1)的局部变量。STEP7V15自动地在全局变量的符号地址两边添加双引号。块的Output(输出)和InOut(输入/输出)参数不能用常数来作实参,因为它们用来保存变量值,例如计算结果,因此应设置为地址。只有Input(输入参数)的实参能设置为常数。

图4.10PLC变量表

图4.110B1调用FC1的程序选中项目树中的PLC_l,将组态数据和用户程序下载到CPU,将CPU切换到RUN模式。在CPU集成的模拟量输入的通道0的输入端输入一个DC0~10V的电压,用程序状态功能监视FC1或OB1中的程序。调节该通道的输入电压,观察MD18中的压力计算值是否与理论计算值相同。如果输入模拟量电压不太方便,可以将输入参数“输入数据”的实参“压力转换值”(IW64)临时改为一个其他存储区中的字,例如MW14。打开项目树中的“监视表格”文件夹,双击其中的“添加新监视表格",生成一个新的监视表,并在工作区自动打开它。在监视表中生成需要监视的FC1的输入参数MW14和输出参数MDl8(见图4.12),点击工具栏上的按钮,启动监视功能,“监视值”列显示的是CPU中变量的实际值。在MW14的“修改值”列输入修改值后,点击工具栏上的按钮,将修改值送入CPU。接通I0.6对应的外接的小开关,使FC1的EN输入变为l状态,开始执行FC1。分别将27648和0写入MW14,MD18输出的压力计算值应为10.0MPa和0.0MPa,将某个中间值写入MW14,FC1通过MD18输出的压力计算值应与计算器计算出的值相同。6、调用功能的实验图4.12用监视表测试程序温度变送器0-100℃0-10V温度变送器50℃→5VPLCIW640~276485V→138244.2.2生成与调用功能块1、功能块功能块(FB)是用户编写的有自己的存储区(背景数据块)的块。FB的典型应用是执行不能在一个扫描周期结束的操作。每次调用功能块时,都需要指定一个背景数据块。后者随功能块的调用而打开,在调用结束时自动关闭。功能块的输入、输出参数和静态变量(Static)用指定的背景数据块保存,但是不会保存临时局部变量中的数据。功能块执行完后,背景数据块中的数据不会丢失。2、生成功能块打开项目树中的文件夹“\PLC_1\程序块”,双击其中的“添加新块”,点击打开的对话框中的“功能块”按钮,FB默认的编号为1,语言为LAD(梯形图)。设置功能的名称为“Motor”,功能和功能块的名称也可以使用汉字。点击“确认”按钮,自动生成FB1,可以在项目树的文件夹“\PLC_1\程序块”中看到新生成的FB1(见图4.8)。

3、生成功能块的局部变量将鼠标的光标放在FB1的程序区最上面的分隔条上,按住鼠标的左键,往下拉动分隔条,分隔条上面是功能块的界面区(见图4-14)。与功能相同,功能块的局部变量中也有Input(输入)、Output(输出)、InOut(输入输出)参数和Temp(临时)数据。功能块执行完后,下一次重新调用它时,其Static(静态)变量的值保持不变。背景数据块中的变量就是其功能块的局部变量中的Input、Output、InOut参数和Static变量(见图4.13和图4.14)。功能块的数据永久性地保存在它的背景数据块中,在功能块执行完后也不会丢失,以供下次执行时使用。其他代码块可以访问背景数据块中的变量。不能直接删除和修改背景数据块中的变量,只能在它的功能块的界面区中删除和修改这些变量。图4.13FB1的界面区

图4-14FB1的背景数数据块生成功能块的输入、输出参数和静态变量时,它们被自动指定一个默认值,可以修改这些默认值。变量的默认值被传送给FB的背景数据块,作为同一个变量的初始值。可以在背景数据块中修改变量的初始值。调用FB时没有指定实参的形参使用背景数据块中的初始值。

4、编写FB1的程序FB1的控制要求如下:用输入参数“起动按钮”和“停止按钮”控制输出参数“电动机”。按下停止按钮,断电延时定时器(TOF)开始定时,输出参数“制动器”为1状态,经过输入参数“定时时间”设置的时间预置值后,停止制动。图4.15是FB1中的程序。TOF的参数用静态变量TimerDB来保存,其数据类型为IEC_Timer。图4.16是FB1的界面区中静态变量TimerDB内部的数据。

图4.15FBl中的程序图4.16定时器的数据结构

5、在OB1中调用FB1在PLC变量表中生成两次调用FB1使用的符号地址(见图4-17)。将项目树中的FB1拖放到程序区的水平“导线”上(见图4-18)。在出现的“调用选项”对话框中,输入背景数据块的名称。点击“确认”按钮,自动生成FB1的背景数据块。为各形参指定实参时,可以使用变量表中定义的符号地址。也可以使用绝对地址,然后在变量表中修改自动生成的符号的名称。图4.17PLC变量表图4.180B1调用FB1的程序

6、处理调用错误FB1最初没有输入参数“定时时间”。在OB1中调用符号名为“Motor”的FB1之后,在FB1的界面区增加了输入参数“定时时间”,OB1中被调用的FB1的方框和字符变为红色(见图4-19中的左图)。点击程序编辑器的工具栏上的按钮,出现图4-19所示的“界面更新”对话框,显示出原有的块的界面和新的界面。点击“确认”按钮,OB1中被调用的FB1被修改为新的界面(见图4.19中的右图),FB1中的红色错误标记消失。图4.19更新块的界面7、调用功能块的实验将程序块下载到CPU后,切换到RUN模式。拨动外接的小开关,模拟按钮的操作。分别用两台设备的起动按钮起动设备,然后用停止接钮使设备停车,可以看到两台设备的输出参数“电动机”和“制动器”按程序的要求变化,“制动器”为1的时间与输入参数“定时时间”设置的相同。可以令两台设备分时工作,也可以令它们同时工作。在运行时可以用OB1的程序状态功能监视被调用的FB1的输入、输出参数的状态,也可以在线监视FB1内部的程序的执行情况。

8、功能与功能块的区别FB和FC均为用户编写的子程序,界面区中均有Input、Output

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论