FCFBSTRUCTUREPROGRAMING1numericalcalculate1第7章结构化编程第9章工程应用numericalcalculate结构化编程通讯组态读取模拟量功能块FC105内容提要numericalcalculate程序设计方法:线性化编程、模块化编程和结构化编程。第七章结构化编程线性化编程是将整个用户程序放在组织块OB1中,在CPU循环扫描时执行OB1中的全部指令。其特点是结构简单、但效率低下。另一方面,某些相同或相近的操作需要多次执行,这样会造成不必要的编程工作。再者,由于程序结构不清晰,会造成管理和调试的不方便。所以在编写大型程序时,避免线性化编程。numericalcalculate模块化编程是将程序根据功能分为不同的逻辑块,且每一逻辑块完成的功能不同。在OB1中可以根据条件调用不同的功能或功能块。其特点是易于分工合作,调试方便。由于逻辑块是有条件的调用,所以可以提高CPU的利用率。numericalcalculate结构化编程是将过程要求类似或相关的任务归类,在功能或功能块中编程,形成通用解决方案。通过不同的参数调用相同的功能或通过不同的背景数据块调用相同的功能块。其特点是结构化编程必须对系统功能进行合理分析、分解和综合,所以对设计人员的要求较高,另外,当使用结构化编程方法时,需要对数据进行管理。•传送带系统中所有交流电机的通用逻辑控制块;•装配线机械中所有电磁线圈的通用逻辑控制块;•造纸机器中所有驱动装置的通用逻辑控制块。numericalcalculate功能是不带“记忆”的逻辑块。所谓不带“记忆”表示没有背景数据块。当完成操作后,数据不能保持。这些数据为临时变量,对于那些需要保存的数据你只能通过共享数据块(ShareBlock)来存储。调用功能时,需用实参来代替形参。功能(FC)numericalcalculate功能块是用户所编写的有固定存储区的块。FB为带“记忆”的逻辑块。它有一个数据结构与功能块参数表完全相同的数据块(DB)。我们称该数据块为背景数据块(InstanceDataBlock)。当功能块被执行时,数据块被调用,功能块结束。调用随之结束。存放在背景数据块中的数据在FB块结束以后,仍能继续保持。具有“记忆”功能。一个功能块可以有多个背景数据块,使功能块可以被不同的对象使用。功能块(FB)numericalcalculate块的结构块由两部分组成:变量声明表,程序。numericalcalculate输入IN输出OUT输入/输出IN_OUT静态变量STAT:只有FB有临时变量TEMP变量类型:numericalcalculate功能和功能块的编程步骤如下:第一步定义局部变量。首先定义形参和临时变量名,功能块还须定义静态变量。之后确定变量的类型及变量注释。第二步编写执行程序,在编程中若使用变量名,则变量名标识显示为前缀“#”加变量名。若使用全局符号则显示为全局符号加引号的形式。numericalcalculate控制任务描述:在发动机控制系统工程实例中,被控对象是一个“汽油发动机”和一个对该汽油发动机进行散热的“风扇”,一个“柴油发动机”和一个对该柴油发动机进行散热的“风扇”。对这些被控对象,有相应的起动、停止按钮控制其状态的改变,并要求这两个发动机在起动的同时,对应的风扇要同时起动对其散热,当发动机停止运行时,风扇要延时4秒后再关闭,以保证发动机充分的散热。发动机控制系统工程numericalcalculate汽油机控制汽油机风扇控制柴油机控制柴油机风扇控制发动机控制风扇控制汽油机数据柴油机数据FB1FC1OB1DB1DB2发动机控制系统结构化程序的结构示意图numericalcalculate1、创建符号地址表numericalcalculate2、发动机控制功能块(FBl)的程序设计输入:定义FB1的输入、输出参数。这些定义包括变量名、数据类型和声明类型。numericalcalculate输出:静态变量:numericalcalculateFBl功能块的程序设计numericalcalculate汽油机数据块DB1的内容numericalcalculate3、风扇控制功能(FCl)的程序设计定义FC1的输入、输出参数。这些定义包括变量名、数据类型和声明类型。输入:numericalcalculate输出:numericalcalculateFBl功能块的程序设计numericalcalculate4、组织块(OB1)的程序设计发电机控制系统组织块OBl的指令程序numericalcalculatenumericalcalculatenumericalcalculate功能和功能块的调用必须用实参代替形参,因为形参是在功能或功能块的变量声明表中定义的。为保证功能或功能块对同一类设备的通用性,在编程中不能使用实际对应的存储区地址参数,而是使用抽象参数,这就是形参。而块在调用时,必须将实际参数(实参)替代形参,从而可以通过功能或功能块实现对具体设备的控制。这里必须注意:实参的数据类型必须与形参一致。总结numericalcalculate第九章工程应用1、PROFIBUS总线通讯PROFIBUS是一种国际化,开放式,不依赖于生产商的现场总线标准。PROFIBUS以ISO7498为基础,以开放式系统互联网络OSI作为参考模型。其传输速率为9.6kpbs-12Mbps。最多可挂接127个站点。传输可使用RS-485传输技术或光纤媒体。下面演示PROFIBUS总线的不打包通讯。numericalcalculatenumericalcalculate设备及连接硬件和软件配置如下:硬件:1)CPU315-2DP及SM模块2)CPU313C-2DP一块(根据条件可选用其他型号的S7-300/400)3)插入PROFIBUS网卡CP5611的PC机(组态编程用)4)PROFIBUS电缆及三个接头软件:1)STEP7V5.2或STEP7V5.3PROFIBUS通讯组态过程numericalcalculate首先用工具制作带有三个接头的PROFIBUS电缆,并将两端接头上的拨码至ON,中间的接头拨码至OFF。利用这根电缆将PC机、CPU313C-2DP和CPU315-2DP建立PROFIBUS物理连接。如图1所示。硬件连接numericalcalculate图1numericalcalculate系统硬件组态原则上先组态从站,再组态主站1)新建项目:在STEP7中创建一个新项目,插入两个SIMATIC300Station,并重新命名为“SIMATIC300(zhu)”和“SIMATIC300(fu)”。numericalcalculate2)组态从站组态硬件双击Hardware,根据硬件安装次序和定货号依次插入机架、电源、CUP、输入、输出模块,进行硬件组态。在插入CPU时,同时弹出PROFIBUS组态画面。点击“New”按钮新建PROFIBUS(1),组态PROFIBUS站地址:2,点击“Properties”按钮组态网络属性,选择“NetworkSettings”,进行网络参数设置,如图2所示。双击CPU项下的Dp栏,在网络属性窗口选择“OperatingMode”,选择“DpSlave”。选择此300站为Dpslave(从站方式),如图3所示。numericalcalculate图2numericalcalculate图3numericalcalculate组态通讯区选择标签“Configuration”,点击“New”按钮新建两行通讯接口区,一行输入,注意选择输入方式:input、地址:1、传输数据长度length:2(最多32个字节)、传输单元Unit:Byte、传输方式Consistency:All。一行输出,方式同前。如图4,图5所示。编译保存numericalcalculate图4numericalcalculate图5numericalcalculate注意【Addresstype】:选择Input,表示将CPU315-2DP从站作为数据的输入接口区【Address】:填入数据接收区的起始地址,此时写入0【length】:设置传输数据长度为2(最多32个字节)【Unit】:传输单元为Byte数据【Consistency】:选择传输方式ALLnumericalcalculate3)组态主站以同样的方式组态主站,注意在图3中选择Dpmaster。选择PROFIBUS站地址:3,并选择与从站相同的PROFIBUS网络PROFIBUS(1)。打开硬件目录,选择“PROFIBUSDP-ConfigurationStation”文件夹,选择CPU31x,将其拖曳到DP主站系统的PROFIBUS总线上,从而将其连接到DP网络上,如图6所示。numericalcalculate图6numericalcalculate此时自动弹出“DpslaveProperties”,在其中的“Connection”标签中选择已经组态过的从站,点击“Connect”按钮将其连接到网络,如图7所示。图7numericalcalculate之后点击“Configuration”标签,设置主站的通讯接口区。注意从站的输出区必须与主站的输入区对应,同样从站的输入区必须与主站的输出区对应。这样一发一收彼此对应。numericalcalculate4)硬件下装设置及PROFIBUS通讯检测在下装时,先存盘编译,在控制面板中,选择“SetPG/PCinterface”选择“S7ONLINEPC→adapterMPI”,如图8所示。numericalcalculate图8numericalcalculate将下装电缆插在S7300CPU的MPI通讯槽中。检查通讯是否畅通,如图9所示。图9numericalcalculate如此将主站和从站分别下装。利用软件检查PROFIBUS通讯线是否一致。点击图标如图10。可以看到网络图如图11。图10numericalcalculate图11numericalcalculate库函数介绍SFC14SFC15PROFIBUS通讯程序numericalcalculateSFC14:解开存放在IB端的数据包,接收数据。放在对应的数据库中。SFC15:将存放在相应数据库中的数据打包,并通过QB端发送数据。具体参数说明如下:参数名参数说明EN使能端LADDR接收区或发送区的起始地址RET-VAL状态字:包含出错信息代码RECORD通信数据区,一般为ANY指针格式numericalcalculate使用场合:在数据的连续类型是“Unit”,可以直接读入输入、输出区,如果数据类型是“All”,程序需用SFC14、SFC15对数据进行打包和解包。编写主站程序要求建立OB1、OB82、OB86、OB122,其中OB82、OB86、OB122是为避免网络某个站点掉电而使整个网络不能正常工作。numericalcalculate建立相应的数据块,DB1、DB2。DB块的建立如图12。图12numericalcalculate建立监控变量表VAT1。在RECORD端设置为P#DB1.DBX0.0BYTE2形式。RET-VAL的返回值放在不同的MW中。编程要求主站发送数据,打包后通过QB端发送字节。同时通过IB端接收数据,并解包。程序如图13所示。numericalcalculate图11图13numericalcalculate编写从站程序要求建立OB1、OB82、OB86、OB122,其中OB82、OB86、OB122是为避免网络某个站点掉电而使整个网络不能正常工作。建立相应的数据块,DB1、DB2。DB块的建立。建立监控变量表VAT2。在RECORD端设置为P#DB1.DBX0.0BYTE2形式。RET-VAL的返回值放在不同的MW中。numericalcalculate编程要求从站接收数据,打包后通过QB端发送字节。注意从站的接收