PLC 技术培训班 (第2讲修改稿)STEP 7编程软件.ppt
2021/1/4,1,热烈欢迎,参加PLC技术培训班的全体学员,北京精诚智合教学科技有限公司,2021/1/4,2,第1讲-可编程控制器的基本原理第2讲-STEP7编程软件第3讲-PLC指令系统介绍上机练习第4讲-IEC61131-3编程语言标准第5讲-现场总线上机练习第6讲-WinCC组态软件,培训计划,2021/1/4,3,技术培训班(第1讲)PLC概况和基本原理,陈忠华教授E-mailchenzhoa-,2021/1/4,4,SIEMENS公司S7PLC标准工具软件STEP7介绍,2021/1/4,5,S7PLC的STEP7编程软件介绍,这一讲通过以西门子公司的STEP7编程语言为例,来介绍实际PLC应用的编程语言,在第4讲中将介绍PLC编程语言的国际标准,即IEC61131-3标准。STEP7编程软件是用来对西门子公司的系列PLC产品,包括S7300系列、S7400系列、M7系列以及基于PC的PLC等产品,进行编程、调试、监视的软件。为了组态PLC硬件配置或开始编写S7用户程序,首先必须在PC计算机中安装STEP7软件如果使用的是编程器,则STEP7软件已经预装在编程器内。在STEP7CD光盘的Readme.wri文件中,有关于安装STEP7对PC计算机的软件和硬件配置要求。将STEP7的CD光盘插入PC机的光驱中,安装程序能自动执行,按照屏幕上的提示操作,可一步一步完成STEP7软件的安装。完成STEP7的安装后,要重新启动计算机,在PC的Windows桌面上会出现一个SIMATICManager的小图标。,2021/1/4,6,,应用STEP7软件,能在一个“项目”project内建立起S7用户程序。可编程序控制器是由电源模板、CPU以及输入/输出模板I/O模板组成。可编程逻辑控制器PLC通过S7程序,监视和控制被控对象。在S7程序内通过地址,对I/O模板进行寻址。图3.1所示为PLC控制被控对象的过程,图3.2所示为STEP-7软件的应用过程。,S7PLC和STEP7编程软件应用示意图,2021/1/4,7,S7PLC和STEP7编程软件应用示意图,2021/1/4,8,,,应用STEP7的基本步骤,2021/1/4,9,有两个选择项,如果要解决的自动化任务比较复杂,编写的程序量比较大,涉及的输入、输出点数多,建议采用选择项1,即先对PLC的硬件进行组态,然后编写用户程序,这样做的优点是通过STEP7对所有输入、输出点的绝对地址先进行了定义和分配,在以后的程序编写过程中就不会混淆,另外,在组态过程中还可以改变模板的参数和属性,例如,对模拟量输入模板,在组态过程中,可以确定它是电压输入信号(0-10V,+/-10V)还是电流输入信号(4-20mA),对一个多CPU项目,在组态过程中,可以确定各个CPU的MPI地址。对于比较简单的项目,涉及的输入、输出点数不多,也可以采用选择项2的步骤。,应用STEP7软件于PLC实现自动化任务的过程,2021/1/4,10,启动STEP7时将激活SIMATICmanagerSIMATIC管理器的中央窗口。一般默认设置是启动STEP7WizardSTEP7向导,在“向导”帮助下建立一个STEP7项目,STEP7项目的结构按一定的次序安排数据和程序并被保存。项目内的数据是以对象的形式按分层结构保存。SIMATIC站和CPU包含硬件的组态和参数数据。S7程序是由所有的方块组成,这些方块包含控制对象的程序。下面介绍SIMATIC管理器的项目结构。,启动SIMATIC管理器SIMATICManager,2021/1/4,11,STEP7编程语言的主窗口界面,打开“项目”窗口,左边页面显示项目结构,右边页面显示左边页面所选文件夹中的对象和其他文件夹图所示。,2021/1/4,12,SIMATIC管理器窗口的菜单项,打开SIMATIC管理器的窗口能见到以下菜单项File打开、组织和打印“项目”project。Edit复制、粘贴、删除、全选、对象属性等。Insert插入程序单元。PLC下载程序和监视硬件。View选择“在线/离线”和编程语言。Options用户定义。Window设置窗口显示。Help帮助信息。,2021/1/4,13,建立一个项目和SIMATIC站后,就可以对PLC进行硬件组态了。下面介绍S7PLC中央机架模板的组态过程。打开“项目”中的“站”,在窗口的右边页面出现“硬件”图标和所建项目中选择的CPU图标,如下面的图所示。双击“硬件”图标,“硬件”组态窗口自动打开,在组态窗口的右边面会显示硬件组态单元库目录菜单。,应用STEP7对PLC进行硬件组态,2021/1/4,14,选择目录菜单中的某一项,例如SIMATIC300,在其下拉菜单中再选择RACK-300,双击RACK-300下面的图标,这时在窗口左边页面上就会出现0UL机架带槽位的rack表。为了在0UL的1号槽位上放置PS307电源模板,导航目录菜单,找到PS3075A6ES7307-1EA00-0AA0,用鼠标拖至0UL机架的1号槽位上。为了在0UL的2号槽位上放置CPU模板,导航目录菜单,打开CPU-300项,在其下拉菜单中找到CPU314C-2DP6ES7314-6CF01-0AB0,用鼠标将其拖至0UL机架上的2号槽位,由于CPU314C-2DP占用2个槽位,从第4个槽位开始,可以组态配置其他的I/O模板。,应用STEP7对PLC进行硬件组态,2021/1/4,15,用同样的方法,在4号槽位上配置了32点的直流输入模板(6ES7312-1BL00-0AA0),在5号槽位上配置了32点的直流输出模板(6ES7322-1BLL00-0AA0)。下面的图表示了用上面的方法组态完成后的STEP7硬件组态界面,从图上还能看到所选模板的订货号,I/O模板组态定义的绝对地址以及分配给CPU模板的MPI地址。以上完成了硬件中央机架的模板组态。,应用STEP7对PLC进行硬件组态,2021/1/4,16,STEP7主窗口右边页面上的硬件组态图标,2021/1/4,17,STEP7硬件组态界面,2021/1/4,18,S7PLC分布式I/O模板的组态,,2021/1/4,19,S7PLC分布式I/O模板的组态,在常用配置的自动化系统中,中央可编程控制器的I/O模板与传感器、执行机构之间需要大量的连接电缆,这不仅增加了安装的工作量,也增加了安装费用和发生故障的机率。应用分布式I/O,将I/O模板就近放置于传感器和执行机构附近,在可编程控制器和I/O模板及现场器件之间用现场总线Profibus-DP连接,就可克服中央I/O模板的上述缺点。,2021/1/4,20,S7PLC分布式I/O模板的组态,分布式I/O模板的硬件组态与中央机架模板的硬件组态类似,从导航窗口右边页面的目录菜单,选择分布式I/O模板单元,对它们进行硬件组态和属性定义。下图表示了S7PLC的分布式I/O结构举例和通过Profibus-DP网络进行连接。下面用图解说明,怎样建立一个新的项目来组态分布式I/O系统。,2021/1/4,21,建立一个新的项目来组态分布式I/O系统,2021/1/4,22,建立一个新的项目来组态分布式I/O系统,2021/1/4,23,组态建立一个站,2021/1/4,24,组态建立一个站,,,2021/1/4,25,组态DP主站和分布式I/O,上面用图解说明怎样组态一个可以配置分布式I/O的站,到目前为止,所描述的步骤和中央机架的组态步骤是类似的,得到的组态界面也类似。下面一些图的画面进一步说明,怎样将分布式I/O单元,组态到上述已经建立起来的站中,并设置或修改他们的属性参数。,2021/1/4,26,组态DP主站和分布式I/O,,2021/1/4,27,组态DP主站和分布式I/O,2021/1/4,28,组态分布式I/OET200M,2021/1/4,29,组态分布式I/OET200M,2021/1/4,30,组态分布式I/OET200M,前面用图解方法,说明怎样在主站上组态一个分布式I/O的从站,这种从站是模块化结构的,从站是由Profibus-DP通信模板IM153-2和若干块标准的I/O模板例如,图上的DI32xDC24V组成。,2021/1/4,31,在组态过程中改变节点和I/O的地址,2021/1/4,32,在组态过程中改变节点和I/O的地址,2021/1/4,33,在组态过程中改变节点和I/O的地址,如果用户有需要改变已经组态完成的I/O模板的地址,上面的图解说明了这一改变的过程和步骤。,2021/1/4,34,应用符号地址编程,在对PLC进行硬件组态时,事先定义其输入和输出的绝对地址。因为,这些地址是直接指定,亦即绝对地址。也可以选择用任意符号名来替代绝对地址。为了应用符号地址进行编程,需要建立一个符号表,对在以后的程序中将要用到的所有绝对地址,在符号表中给他们每一个分配一个符号名,同时定义它们的数据类型。例如,对于输入I1.2,其符号名为PE_Failure,表示汽油发动机有故障。这一符号名,适用于整个程序,因此,称为全局变量。使用符号地址进行编程,使得所编的S7程序,可读性强。,2021/1/4,35,PLC及其输入/输出的绝对地址,2021/1/4,36,建立编程用的符号地址表,2021/1/4,37,建立编程用的符号地址表,2021/1/4,38,在STEP7程序中建立符号地址表举例,,2021/1/4,39,在STEP7程序中建立符号地址表举例,在完成对PLC进行硬件组态之后,开始编写用户程序之前,需要做的一件工作是建立编程用的符号地址表。前面用图解的方式,说明建立符号地址表的步骤,上图是为项目GettingStarted所编写的符号地址表。一般而言,每一个S7程序只建立一个符号地址表,这与在编程中使用哪一种编程语言进行编程无关系。所有可以打印的字母(例如特殊字母、空格),在符号表中都允许使用。在符号表中会自动加入的数据类型,取决于由CPU所处理的信号类型。下表给出在STEP7中使用的各种数据类型。,2021/1/4,40,在S7程序中使用的数据类型,2021/1/4,41,在组织方块OB1中建立程序,根据所选择使用的编程语言,右面分别介绍用梯形图(LAD)、语句表(STL)和功能块图(FBD)来编写OB1程序。,2021/1/4,42,在组织方块OB1中建立程序,在STEP7中,OB1是由CPU执行的主循环程序,CPU一行一行地读并且执行程序命令,当CPU返回到第一程序行时,它就精确地完成了一个循环周期。此过程所需要的时间就是扫描周期时间。在用STEP7建立S7程序时,可以选择3种标准编程语言中的一种,即梯形图逻辑语言LAD、语句表STL或者功能块图FBD。,2021/1/4,43,在组织方块OB1中建立程序,梯形图逻辑LAD适合于熟悉继电器逻辑的电气工程师,语句表STL适合于熟悉计算机编程语言的工程师,功能块图FBD对习惯于使用逻辑图设计的工程师更为合适。前面的图是分别使用这3种编程语言的示例。为了打开OB1方块,在工具条上单击打开图标,在出现的对话框中选择项目GettingStarted,单击OK确认。为了选择用某一种编程语言来对OB1进行编程,单击打开对话框中的Browse按钮,在出现的路径菜单(SIEMENSSTEP7EXAMPLES)中,选择打开以下的项目样板,2021/1/4,44,在组织方块OB1中建立程序,Zen01_01_STEP7_STL_1-9,Zen01_03_STEP7_FBD_1-9或者Zen01_05_STEP7_LAD_1-9在图3.16的中间部分,显示了这3个样板项目。对选中的样板,例如Zen01_05_STEP7_LAD_1-9,采用导航的方法,一直到出现符号表Symbols,用“拖拉”的方法,将符号表复制到项目GettingStarted的S7程序文件夹中,然后关闭项目Zen01_05_STEP7_LAD_1-9的窗口。用“拖拉”方法是指,用鼠标选中目标并按住鼠标左键,拖动目标到所选择的位置,释放鼠标左键,完成复制。,2021/1/4,45,,选择打开以下的项目样板,,2021/1/4,46,,复制符号地址表和打开OB1程序组织方块,,,2021/1/4,47,S7程序的编程窗口(以梯形图逻辑的编程为例),在GettingStarted项目的右边窗口,双击OB1,从而打开了用LDA(或STL/FBD)来编写OB1程序的编程窗口。图3.17表示这一窗口的各个部分。,2021/1/4,48,用梯形图逻辑编写一个串联电路程序示例,2021/1/4,49,用梯形图逻辑编写一个串联电路程序示例,2021/1/4,50,用梯形图逻辑编写一个串联电路程序示例,2021/1/4,51,用梯形图逻辑编写一个并联电路程序示例,2021/1/4,52,用梯形图逻辑编写一个并联电路程序示例,2021/1/4,53,用梯形图逻辑编写SR单元(存储置位、复位)程序示例,前面用图解的方法示例说明,怎样用梯形图逻辑语言来编写一个串联电路和并联电路的程序。右图进一步说明怎样编写一个存储置位、复位电路。,2021/1/4,54,用梯形图逻辑编写SR单元(存储置位、复位)程序示例,,2021/1/4,55,梯形图逻辑编程中的绝对地址和符号地址,,前面分别表示用梯形图逻辑编程语言LAD编写的串联电路、并联电路和SR触发器的程序网络段。下面将用语句表语言STL和功能块图语言FBD来编写同样的电路程序。,2021/1/4,56,用语句表语言完成“与”(AND)指令语句程序示例,,2021/1/4,57,用语句表语言完成“与”(AND)指令语句程序示例,,2021/1/4,58,用语句表语言编写“或”指令和“存储置位/复位”指令程序示例,,2021/1/4,59,用语句表语言编写“或”指令和“存储置位/复位”指令程序示例,,2021/1/4,60,用语句表语言编写“或”指令和“存储置位/复位”指令程序示例,,在用语句表语言编程的过程中,如果出现红色符号,这表明在已经建立的符号表中没有该符号,或者存在语法错误。在编程过程中,也可以直接从符号表中插入符号名。单击.符号,然后单击菜单命令Insert→Symbol,通过下拉表的滚动条,找到相应的符号名,选择这一符号名,即可自动地替代.地址。在前面的图中,网络段1的说明是当两个输入点“Key_1”和“Key_2”都激活时(即,都是信号状态“1”=24V),则“Green_Light”激活。亦即,为了使“绿灯”接通,必须两个输入同时为“1“状态。,2021/1/4,61,用语句表语言编写“或”指令和“存储置位/复位”指令程序示例,,网络段2的说明是当两个输入点“Key_3”和“Key_4”中有一个激活时(即,有一个是信号状态“1”=24V),则输出“Red_Light”激活。亦即,为了使“红灯”接通,只须两个输入中有一个为“1“状态。网络段3的说明是当输入“Automatic_On”激活时,由于S指令的作用,输出“Automatic_Mode”被激活,且一直保持激活状态,即使输入“Automatic_On”又变成非激活状态,对输出也没有影响。,2021/1/4,62,用语句表语言编写“或”指令和“存储置位/复位”指令程序示例,当输入“Manual_On”激活时,R指令起作用,输出“Automatic_Mode”复位到非激活状态,且一直保持非激活状态,即使输入“Manual_On”又变成非激活状态,对输出也没有影响。输出的状态是由S(Set)和R(Reset)操作来决定的。如果两个输入同时被激活,则首先是置位功能,随后是复位功能被处理,由于主程序(OB1)是顺序执行,因此一个OB1周期结束时的结果使输出处于复位状态,在这种情况下,称复位优先。,2021/1/4,63,在用语句表编程中的绝对地址和符号地址,,2021/1/4,64,PLC的用功能块图编写“与”(AND)逻辑功能程序示例工作原理,,2021/1/4,65,用功能块图编写“与”(AND)逻辑功能程序示例,,2021/1/4,66,用功能块图编写“或”OR)逻辑功能程序示例,,2021/1/4,67,用功能块图编写SR功能(存储置位/位)程序示例,,2021/1/4,68,功能块图编程中的绝对地址和符号地址,,2021/1/4,69,用功能块和数据块建立一个程序,,在程序结构中功能块(FB)在组织块的下面,它包含一部分程序,能够被OB1调用很多次,所有功能块的形式参数和静态数据保存在一个分开的数据块(DB)中,这一数据块专门分配给功能块,称为背景数据块。,2021/1/4,70,建立一个开放的功能块(FB),,2021/1/4,71,建立一个开放的功能块(FB),,2021/1/4,72,建立一个开放的功能块(FB),,上图用图解说明怎样在LAD/STL/FBD窗口中,建立一个功能块程序(FB1,符号名为Engine,参看前面的符号地址表),在这里选择与编程OB1相同的编程语言LAD。单击Help→Contents之后,在ProgrammingBlocks和CreatingBlockandLibraries(“编程方块”和“建立方块和库”)项下,能找到更多的信息。,2021/1/4,73,在功能块编程中建立变量登记表,,在编写功能块之前,首先要建立变量登记表,下图用图解说明变量登记表的建立和相关的属性。,2021/1/4,74,在功能块编程中建立变量登记表,2021/1/4,75,编程用于发动机(engine)启动/停止的功能块FB1,,2021/1/4,76,编程用于发动机(engine)启动/停止的功能块FB1,,2021/1/4,77,编程用于发动机(engine)启动/停止的功能块FB1,,上图用图解介绍怎样来编写一个功能块,例如要用两个不同的背景数据块,通过一个功能块,控制和监视“汽油引擎”和“柴油引擎”。所有的“引擎指标”信号,将作为参数块从组织方块传送到功能块,为此必须将输入和输出参数列在“变量登记表”(Variabledeclarationtable)内登记“输入和输出”。在前面的章节中已经介绍了如何编写一个串联电路、并联电路和一个存储功能的程序,这些在编程功能块时都很有用。,2021/1/4,78,在FB1功能块中插入一段速度监视网络段,,2021/1/4,79,在FB1功能块中插入一段速度监视网络段,,下面对功能块FB1作一些说明。1.“发动机”(engine)何时将“启动”或“停止”当变量#Switch_On具有1状态,同时变量Automatic_Mode具有0状态,“发动机”将启动。如果“发动机”采用自动方式,Automatic_Mode=1,则这一功能是不允许的。当变量#Switch_Off具有1状态或者当变量#Fault具有0状态,“发动机”将停止(故障#Fault是0激活信号,在正常时#Fault的状态为1,在发生故障时#Fault的状态为0)。,2021/1/4,80,在FB1功能块中插入一段速度监视网络段,2.怎样用比较器来监视“发动机”的速度比较器将变量Actual_Speed(实际速度)和变量#Setpoint_Speed(设定点速度)进行比较,而且将结果分配给变量#Setpoint_Speed_Reached(达到设定点速度),在大于、等于时,#Setpoint_Speed_Reached的状态变为1。,2021/1/4,81,在FB1功能块中插入一段速度监视网络段,单击Help→Contents之后,在ProgrammingBlocks和CreatingLogicBlock(“编程方块”和“建立逻辑方块”)和EditingtheVariableDeclaration和EditingLADInstruction(“编辑变量登记表”和“编辑梯形图指令”)项下,能找到更多的信息。上面已经编写了功能块FB1engine,并在变量登记表中特别定义了与engine相关的参数。为了以后在OB1组织方块中能够调用功能块,必须生成相应的数据块,称为背景数据块,分配给功能块。,2021/1/4,82,生成功能块(FB)的背景数据块及使用实际参数替代形式参数改变实际值,下面通过控制和监视汽油发动机或柴油发动机来举例说明,由于这两种发动机的设定速度不同,因此分别把它们存储在不同的背景数据块中,其具体的值(Setpoint_Speed)是不同的,而控制和监视这两种发动机的功能块相同,类似地,不同的其他参数,分别存放在不同的背景数据块中。由于对功能块只需集中编写一次,这样就减少了所涉及的编程工作量。下面说明怎样在一个项目下建立属于功能块(FB)的背景数据块(InstanceDB)。,2021/1/4,83,生成功能块(FB)的背景数据块及使用实际参数替代形式参数改变实际值,打开SIMATIC管理器中的GettingStarted项目,用导航的方式找到Block,用鼠标右键单击右半窗口,在弹出菜单上单击DataBlock,插入一个数据块。在数据块属性对话框中,输入数据块名称DB1,同时在旁边标签的下拉菜单中选择InstanceDB,赋予功能块名字FB1,单击OK按钮,确认在属性窗口中显示的所有设置。这样就完成了在Gettingstart项目,加入DB1数据块的工作。,2021/1/4,84,生成功能块(FB)的背景数据块及使用实际参数替代形式参数改变实际值,2021/1/4,85,生成功能块(FB)的背景数据块及使用实际参数替代形式参数改变实际值,双击DB1,打开这一方块,出现左面所示的对话窗口,单击Yes按钮确认,分配参数到背景数据块。对于汽油发动机,在背景数据块DB1设定速度项的实际值列中,写入1500。即定义了这一发动机的最大速度。单击存盘图标,保存DB1并关闭编程窗口,2021/1/4,86,生成功能块(FB)的背景数据块及使用实际参数替代形式参数改变实际值,用建立DB1相同的方法,建立另一个用于FB1的背景数据块DB2,适用于柴油发动机,在背景数据块DB2设定速度项的实际值列中,输入1200,保存DB2,并关闭编程窗口。下一步就是在OB1中编写一个调用功能块FB1的程序。,