




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第五章 S7系列程序结构,5.1 S7-300的程序结构 5.2 程序块类型 5.3 用户定义的块,5.1 S7-300的程序结构,STEP7为设计程序提供三种方法,即线性化编程、模块化编程和结构化编程,如图5.1。基于这些方法,可以选者最合适与你的应用程序设计方法。,图5.1 STEP7 3种设计程序的方法,5.1 S7-300的程序结构,1、线性化编程 线性化编程类似于硬件继电器控制电路,整个用户程序放在循环控制组织块OB1(主程序)中,循环扫描时不断地依次执行OB1中的全部指令,如图5.2。 这种方式的程序结构简单,不涉及功能块、功能、数据块、局域变量和中断等比较复杂的概念,分析起来一目
2、了然。这种结构是用于编写一些规模较小,运行过程比较简单的控制程序。 由于所有的指令都在一个块中,即使程序中的某些部分在大多数时候并不需要执行,每个扫描周期都要执行所有的指令,因此没有有效地利用CPU。此外如果要求多次执行相同或类似的操作,需要重复编写程序。,图5.2线性编程,5.1 S7-300的程序结构,2、模块化编程 程序被分为不同的逻辑块,每个块包含完成某些任务的逻辑指令,如图5.3。分块程序有更大的灵活性,适用于比较复杂、规模较大的控制工程的程序设计。 组织块OB1(即主程序)中的指令决定在什么情况下调用哪一个块,功能和功能块(即子程序)用来完成不同的过程任务。被调用的块执行完后,返回
3、到OB1中程序块的调用点,继续执行OB1。,图5.3模块化编程,模块化编程的程序被划分为若干个块,易于几个人同时对一个项目编程。由于只是在需要时才调用有关的程序块,提高了CPU的利用率。,5.1 S7-300的程序结构,3、结构化编程 结构化编程将复杂的自动化任务分解为能够反映过程的工艺、功能或可以反复使用的小任务,这些任务由相应的程序快(或称逻辑块)来表示,程序运行时所需的大量数据和变量存储在数据块中。结构化程序比分块程序有更大的灵活性、继承性。适用于比较复杂、规模较大的控制工程的程序设计。 某些程序块可以用来实现相同或相似的功能。这些程序块是相对独立的,它们被OB1或别的程序块调用,如图5
4、.4。,图5.4结构化编程,5.2 程序块类型,S7-300/400PLC的程序分系统程序和用户程序。 系统程序是协调PLC内部事务的程序,与控制对象特定的任务无关,在从经销商购买CPU硬件的时候,CPU里面本身就包含了系统程序。系统程序完成PLC的启动/停止、I/O映像区的更新、用户程序的调用、中断的响应、错误及通信处理等任务。 用户程序需要用户使用STEP7编程软件编写程序,然后下载到CPU中,可以完成需要的特定控制任务。用户程序包含用户编写的组织块(OB)、FB、FC和系统提供的SFB(系统功能块)与系统功能(SFC),被调用的块是OB之外的逻辑块。调用功能块时需要为它指定一个背景块,后
5、者随功能块的调用而打开,在调用结束时自动关闭。图5.5 STEP 7调用块的过程示意图,OB1调用FB1,FB1调用FC1,应按下面的顺序创建块:FC1、FB1及背景数据块OB1,即编程时被调用的块应该是已经存在的。,5.2 程序块类型,图5.5块调用的分层结构,5.3 用户定义的块,STEP7将用户编写的程序和程序中所需要的数据放置在块中,使单个的程序部件标准化。通过在块内或块之间类似子程序的调用,使用户程序结构化,可以简化程序组织,使程序易于修改、查错和调试。块结构显著增加了PLC程序的组织透明性、可理解性和易维护性。STEP7软件中主要的各种块的简要说明见表5.1所示。,表5.1逻辑块和
6、数据块,5.3.1 组织块(OB),组织块是CPU的操作系统与用户程序的接口,由操作系统调用,用于控制扫描循环和中断程序的执行、PLC的启动和错误处理等。OB与不同的CPU类型是相关的,某一型号的CPU支持哪些OB是确定的。例如,OB35和OB40可以在CPU315-2DP中使用,而OB36和OB41则不行。因此用户只能编写目标CPU支持的OB。 OB1是对应于循环执行的主程序的程序块,它是STEP7程序的主干。其他大多数OB则对应于不同的中断处理程序(另外还有启动程序和背景程序等非中断类的OB)。与每一个OB紧密相连的是它对应的类型和优先级。OB的类型指出了它的功能,例如延时中断、硬件中断等
7、;OB的优先级则用于表明一个OB是否可以被另外一个OB中断,优先级较低的OB总是可以被优先级较高的OB中断。在S7系列CPU中,背景循环OB90的优先级最低,其次就是OB1,它的优先级是1,因此OB1通常总是可以被其他的OB中断。对于S7-300的CPU各个OB的优先级都是固定的,用户无法更改。,5.3.1 组织块(OB),SIMATIC S7系列CPU的全部组织块的资源及优先权等级见表5.2。 不同的CPU模板具有不同的功能,因此并不是任何CPU模板都具有表5.1所示的全部组织块资源,如CPU312IFM只有OB1,OB40和OB100。,表5.2 组织块,5.3.1 组织块(OB),表5.
8、2 组织块,1、OB1(循环组织块,又称主程序) S7 CPU的操作系统定期执行OB1。当操作系统完成启动后,将启动循环执行OB1。在OB1中可以调用其他功能(FC、SFC)和功能块(FB、SFB)。 执行OB1后,操作系统发送全局数据。重新启动OB1之前,操作系统会将过程映像输出表写入输出模块中、更新过程映像输入表以及接收CPU的任何全局数据。 操作系统在运行期受监视的所有OB模块中,OB1的优先级最低,也就是除OB90之外的所有OB块均可中断OB1的执行。 S7专门有监视运行OB1的扫描时间的时间监视器,最大扫描时间的默认为150ms。用户编程时可以使用SFC43“RE_TRIGR”来重新
9、启动时间监视。如果用户程序超出了OB1的最大扫描时间,则操作系统将调用OB80(时间错误OB块),如果没有发现OB80,则CPU将转为STOP模式。 除了监视最大扫描时间外,还可以保证最小扫描时间。操作系统将延迟启动新循环(将过程映像输出表写入输出模块中),直至达到最小扫描时间为止。 在OB1中系统定义了如表5.3所示的本地数据,其地址从L0.0L19.7,地址从L20.0以上的本地数据允许用户定义。,5.3.1 组织块(OB),表5.3 OB1中系统定义的本地数据,2、时间中断组织块(OB10OB17) 时间中断组织块可以单次运行,也可以定期运行:每分钟、每小时、每天、每月、每个月末。对于每
10、月执行的时间中断OB,只可将1、2、28日作为起始日期。 要启动时间中断,必须先设置中断,然后再将其激活。有以下4种可能的启动方式: 1) 自动启动时间中断。一旦使用STEP7设置并激活了时间中断,即自动启动时间中断; 2) 使用STEP7设置时间中断,然后通过调用程序中的SFC30“ACT_TINT”来激活它; 3) 通过调用SFC28“SET_TINT”来设置时间中断,然后通过调用SFC30“ACT_TINT”来激活它; 4) 使用SFC39SFC42禁用或延迟和重新启用时间中断。 由于时间中断仅以指定的时间间隔发生,因此在执行用户程序期间,某些条件可能会影响OB的操作。表5.4列出了其中
11、的一些条件,并说明了该条件对执行时间中断OB的影响。 在OB10OB17中系统定义了如表5.5(表中的符号以OB10为例)所示的本地数据,其中地址从L0.0L19.7,地址从L20.0以上的本地数据允许用户定义。,表5.4 影响时间中断OB的条件,表5.5 OB10中系统定义的本地数据,5.3.1 组织块(OB),【例5-1】使用STEP7设置并激活时间中断。 首先建立一个完整项目,如图5.6所示,然后单击项目中的“SIMATIC300(1)”,打开右边的硬件图表,如图5.7所示,将自动弹出硬件组态画面,如图5.8所示,把电源和CPU等放到机架相应的位置上。,图5.6建立一个项目并完成项目中的
12、目录,5.3.1 组织块(OB),图5.7打开硬件组态画面,在硬件组态画面,双击机架上的CPU,如图5.8所示,将弹出CPU属性画面。在CPU属性画面点击“时刻中断”,打开时间中断设置画面,如图5.9所示选择“激活”,要求每分钟执行并写上执行OB10的日期和时间,图中的开始日期时间是2008年10月2日10时00分,然后点击“确定”。最后在硬件组态画面点击保存和编译快捷图标,如图5.10所示完成保存和编译。,图5.8硬件组态画面,图5.9在CPU属性栏设置OB10时间中断,5.3.1 组织块(OB),图5.10把硬件组态信息编译并保存,在管理画面点击“块”,然后在右边的目录下点击鼠标右键,在弹
13、出的画面中点击“插入新对象”,选择添加“组织块”,如图5.11所示。在生成组织块的过程中,选择组织块OB10及写上附加信息,如图5.12所示,然后点击“确定”。,5.3.1 组织块(OB),图5.11 在管理画面插入OB10,5.3.1 组织块(OB),图5.12在生成OB10过程中写上附加信息,在管理画面块的目录中双击OB10的图标,打开OB10编程界面,如图5.13所示。在OB10里编程如图5.14所示的程序,然后保存。,图5.13在管理画面打开OB10,图5.14在OB10里编写的程序,5.3.1 组织块(OB),在管理画面的目录块中点击“SIMATIC 300(1)”,然后点击下载快捷
14、图标,如图5.15所示,把整个项目的信息下载到CPU中。,图5.15把整个项目(站)的信息下载到CPU中,5.3.1 组织块(OB),最后把CPU工作方式选择到运行模式,监控OB10的程序状态,可以看到每分钟MW10的数值会加1,如图5.16所示。,图5.16在CPU运行状态下监控OB10的程序状态,5.3.1 组织块(OB),【例5-2】通过调用SFC28“SET_TINT”来设置时间中断,然后通过调用SFC30“ACT_TINT”来激活它。这个例子没看懂 首先建立一个项目并完成项目中的目录,然后进行硬件配置并把硬件配置的信息保存并编译。在管理画面块目录中插入OB10,如图5.17所示。在O
15、B10的生成过程中,写上附加信息,如图5.18所示。,图5.17在管理画面里插入OB10,5.3.1 组织块(OB),图5.18在生成OB10的过程中写上附加信息,在管理画面的块目录里打开OB10,如图5.19所示。在OB10里编写程序,如图5.20所示,然后保存。,图5.19在管理画面打开OB10,图5.20在OB10里编写的程序,5.3.1 组织块(OB),在管理画面的块目录里打开OB1,如图5.21所示。在OB1里编写程序,如图5.22所示,然后保存。,图5.21在管理画面打开OB1,5.3.1 组织块(OB),5.3.1 组织块(OB),5.3.1 组织块(OB),5.3.1 组织块(
16、OB),5.3.1 组织块(OB),在管理画面的块目录中插入OB80并打开OB80。在OB80里编写如图5.23所示程序并保存。,图5.23 在OB80里编写的程序,5.3.1 组织块(OB),图5.24是完成OB1和OB80的程序后在管理画面的块目录中的内容。然后在管理画面把整个目录信息下载到CPU中。,图5.24 管理画面中块的信息,5.3.1 组织块(OB),在调试时候重点监控M103.2和M103.4的状态。运行CPU,可以看到M103.4=1,表示OB10已经下载到CPU, 如图5.25(a);当接通M0.0时,可以看到M103.2=1,表示激活了OB10,并看到MW10每分钟加3;
17、当接通M0.4时,看到M103.2=0,表示OB10已经被取消激活,MW10停止加3, 如图5.25(b)。,(a),5.3.1 组织块(OB),(b),图5.25 PLCSIM仿真画面,5.3.1 组织块(OB),3、延时中断组织块(OB20OB23) S7提供多达4个在指定延迟后执行的OB(OB20OB23)。每个延时OB均可通过调用SFC32(SRT_DINT)来启动。延迟时间是SFC32的一个输入参数。 当用户程序调用SFC32(SRT_DINT)时,需要提供OB编号、延迟时间和用户专用的标识符。经过指定的延迟后,相应的OB将会启动。可以使用SFC33取消尚未启动的延时中断,可以使用S
18、FC34访问延时中断组织块的状态,可以使用SFC39SFC42来禁用或延迟并重新使能延迟中断。 只有当CPU处于RUN模式时才会执行延时OB。暖启动或冷启动将清除延时OB的所有启动事件。,5.3.1 组织块(OB),延迟时间(单位为ms)和OB编号一起传送给SFC32,时间到期后,操作系统将启动相应的OB。设置延时中断,最基本的步骤是:调用SFC32(SRT_DINT),并将延时中断OB作为用户程序的一部分下载到CPU。 如果发生了操作系统试图启动一个尚未装载的OB,并且用户在调用SFC32(SRT_DINT)时指定了其编号,或在完全执行延时OB之前发生延时中断的下一个启动事件时,操作系统将调
19、用异步错误OB。 在OB20OB23中定义了如表5.6(表中的符号以OB20为例)所示的本地数据,其地址从L0.0L19.7,地址从L20.0以上的本地数据允许用户定义。,表5.6 OB20中系统定义的本地数据,5.3.1 组织块(OB),【例5-3】延时中断组织块例子:通过调用SFC32来设置延时中断,通过调用SFC33来取消延时中断。这个例子没看懂 首先建立完整的项目目录,再完成硬件组态并编译保存,如图5.26所示。,图5.26 完整硬件组态,5.3.1 组织块(OB),在管理画面的块目录中打开OB1,在OB1里编写如图5.27所示的程序并保存。,5.3.1 组织块(OB),5.3.1 组
20、织块(OB),图5.27 在OB1里编写的程序,在管理画面的目录中插入OB20,在OB20里编写如图5.28所示程序并保存;在管理画面的块目录中插入OB85,在OB85里编写如图5.29所示程序并保存。完成OB1、OB20和OB85后管理画面的块目录如图5.30所示。,图5.28在OB20里编写程序 图5.29在OB85里编写的程序,图5.30完成OB1、OB20和OB85后管理画面的块目录,最后在管理画面里把延时中断的整个项目下载到CPU,调试时注意监控M17.2和M17.4的状态。当把CPU扳动到运行模式时,可以看到M17.4=1,说明OB20已经下载到CPU中。当接通M0.1启动延时中断
21、时,M17.2=1;当延时时间到,Q0.0=1。当接通M0.3取消延时中断或延时时间到后,M17.2=0。,5.3.1 组织块(OB),4、循环中断组织块(OB30OB38) S7提供了9个循环中断OB(OB30OB38),可以指定固定时间间隔来中断用户程序。循环中断OB的等距启动时间是由时间间隔和相位偏移量决定的。 用户编写程序时,必须确保每个循环中断OB的运行时间远远小于其时间间隔。如果因时间间隔已到期,在预期的再次执行前未完全执行循环中断OB,则启动时间错误OB80,稍后将执行导致错误的循环中断。 在编写程序时如果有多个循环中断OB,设置要求循环中断的时间间隔又成整数倍,那么有可能会出现
22、处理循环中断的时间过长而引起超出扫描周期时间错误。为了避免这种情况,最好定义一个偏移量时间,偏移量时间务必要小于间隔时间。偏移量时间使循环间隔时间已到,延时偏移量的时间再循环中断,偏移量时间不会影响循环中断的周期。 用户编写程序时可使用SFC39SFC42来禁用或延迟,并重新启动循环中断。使用SFC39来取消激活循环中断,使用SFC40用来激活循环中断。 在OB30OB38中系统定义了如表5.7(表中的符号以OB35为例)所示的本地数据,其地址从L0.0L19.7,地址从L20.0以上的本地数据允许用户定义。,表5.7 OB35中系统定义的本地数据,5.3.1 组织块(OB),【例5-4】循环
23、中断组织块例子:通过STEP7设置循环中断。 首先完成项目的所有目录。接着在管理画面打开硬件组态画面。 在硬件组态画面,双击机架上的CPU,自动弹出CPU属性设置画面。在CPU属性设置画面打开周期性设置画面,设置OB35循环中断执行时间为1000ms,如图5.31所示,然后点击确定。,图5.31完成CPU属性中周期性中断设置,5.3.1 组织块(OB),在管理画面的块目录里插入OB35,打开OB35编写如图5.32所示的程序并保存。,图5.32 在OB35里编写的程序,最后在管理画面把整个项目的信息下载到CPU中,运行PLC,监控OB35程序状态,可以看到MW10的数字每一秒中加2,如图5.3
24、3所示,表示OB35被激活了。,5.3.1 组织块(OB),图5.33 运行CPU监控OB35程序状态,5.3.1 组织块(OB),【例5-5】循环中断组织块例子:通过调用SFC40来设置循环中断,通过调用SFC39来取消循环中断。 在循环中断组织块例【5-4】的基础上,在管理画面的块目录里打开OB1,并在OB1编写如图5.34所示程序,然后保存。,图5.34在OB1里编写的程序,最后在管理画面把整个项目的信息下载到CPU中,运行PLC,监控OB35程序状态,可以看到MW10的数值每秒钟加2;当接通M0.0时,监控MW10的数值不再增加了,说明OB35循环中断被取消激活了;当接通M0.2时,可
25、以看到MW10的数值 又恢复了每秒钟加2,说明OB35循环中断被重新激活了。,5.3.1 组织块(OB),5、硬件中断组织块(OB40OB47) S7提供了8个独立的硬件中断,每一中断都具有自己的OB。硬件中断组织块是对具有中断能力的数字量信号模块(SM)、通信处理(CP)和功能模块(FM)信号变化进行中断响应。 对于具有中断能力的数字信号模块(SM),可以使用STEP7软件在硬件组态设置硬件中断,也可以使用SFC55SFC57为模块的硬件中断分配参数来实现设置硬件中断。 对具有中断能力的通信处理器(CP)和功能模块(FM),可以使用STEP7软件在硬件组态时按照向导对话框设置相应的参数来实现
26、设置中断。 在OB40OB47中系统定义了如表5.8(表中的符号以OB40为例。)所示的本地数据,其地址从L0.0L19.7,地址从L20.0以上的本地数据允许用户定义。,表5.8 OB40中系统定义的本地数据,5.3.1 组织块(OB),6、同步循环组织块(OB61OB65) 同步循环中断OB是通过循环中断选择在具有DP循环的同步循环中启动的程序。 OB61充当同步循环中断TSAL1的接口OB。可以将OB61的优先级设置为0(取消选定OB)和226之间的数。 在使用L或T命令直接访问以及使用SFC14“DPRD_DAT”和SFC15“DPWR_DAT”时,请避免访问已为其过程映像区分配到OB
27、61OB65的连接的I/O区域。 在OB61OB65中系统定义了如表5.9(表中的符号以OB61为例)所示的本地数据,其地址从L0.0L19.7,地址L20.0以上的本地数据允许用户定义。,5.3.1 组织块(OB),表5.9 OB61中系统定义的本地数据,5.3.1 组织块(OB),续表5.9 OB61中系统定义的本地数据,技术同步中断OB(OB65)。技术同步中断OB65仅适用于Technology CPU。通过技术同步中断可选择在更新技术块的同时启动程序。技术同步中断OB在更新技术块后启动。技术同步中断OB的优先级固定设置为25,不能对其进行更改。 在OB65中系统定义了如表5.10所示
28、的本地数据,其地址从L0.0L19.7,地址从L20.0以上的本地数据允许用户定义。,5.3.1 组织块(OB),表5.10 OB65中系统定义的本地数据,5.3.1 组织块(OB),7、错误处理组织块 当系统程序可以检测下列错误:不正确的CPU功能、系统程序执行中的错误、用户程序中的错误和I/O中的错误。根据错误类型的不同,CPU设置为进入STOP模式或调用一个错误处理OB。 当CPU检测到错误时,会调用适当的组织块,见表5.11。如果没有相应的错误处理OB,CPU将进入STOP模式。用户可以在错误处理OB中编写如何处理这种错误的程序,以减小或消除错误的影响。 为避免发生某种错误时CPU进入
29、停机,可以在CPU中建立一个对应的空的组织块。用户可以利用OB中的变量声明表提供的信息来判别错误的类型。 根据S7 CPU检测到并且用户可以通过组织块对其进行处理的错误分为异步错误和同步错误。 异步错误是与PLC的硬件或操作系统密切相关的错误,与程序执行无关。异步错误的后果一般都比较严重。异步错误对应的组织块为OB70OB73和OB80OB87,有最高的优先级。操作系统检测到一个异步错误时,将启动相应的OB。,5.3.1 组织块(OB),同步错误是与执行用户程序有关的错误,程序中如果有不正确的地址区、错误的编号和错误的地址,都会出现同步错误,操作系统将调用同步错误OB。 同步错误组织块包括OB
30、121用于对程序错误的处理和OB122用于处理模块访问错误。同步错误OB的优先级与检测到出错的块的优先级一致。因此OB121和OB122可以访问中断发生时累加器和其他寄存器中的内容,用户程序可以用它们来处理错误。 其中各错误处理组织块的具体参数和功能介绍详见第6章PLC故障诊断。,表5.11 错误处理组织块,5.3.2功能、功能块和数据块(FC、SFC、FB、SFB和DB、DI),1、功能 功能分用户编写的功能(FC)和系统预先定义的功能(SFC)两种,功能都没有存储区。功能在程序分级结构中位于组织块的下面。为使一个功能被CPU处理,必须在程序分级结构中的上一级调用它。 FC和SFC里都有一个
31、局域变量表和块参数。局域变量表里面有:IN(输入参数)、OUT(输出参数)、IN_OUT(输入/输出参数)、TEMP(临时数据)、RETURN(返回值RET_VEL)。 IN(输入参数)只在功能和功能模块中使用,是将数据传递到被调用的块中进行处理。 OUT(输出参数)是将结果传递到调用块中。 IN_OUT(输入/输出参数)是在功能和功能块中使用,将数据传递到被调用块中,在被调用块中处理数据后,再将重被调用块中发送的结果存储在相同的变量中。 TEMP(临时数据)是块的本地数据,并且在处理块时将其存储在本地数据堆栈(L堆栈)。关闭块并完成处理后,临时数据就变得不可再访问。,5.3.2功能、功能块和
32、数据块(FC、SFC、FB、SFB和DB、DI),1)FC功能如果由用户编写,完成用户期待的功能,这个功能为用户功能。由于编程时需要很多标准的特定功能,西门子公司把一些标准的特定功能附加在STEP7的库指令里面,供编程人员随意调用,这些功能称为库指令功能或简称库功能。因此FC功能分为用户功能和库功能 下面举例说明用户功能FC的编程。 【例5-6】编程一个启动/停止功能(没有使用参数传递) 首先完善项目中的目录,然后在管理画面中点击块目录,接着点击菜单栏的“插入”“S7块”“功能”,在块目录中插入一个功能(本例中插入FC10),如图5.35所示。,5.3.2功能、功能块和数据块(FC、SFC、F
33、B、SFB和DB、DI),图5.35在块目录中插入一个功能,在生成功能过程中,向导自动弹出功能的属性画面,在功能属性画面里选择功能的编号及其他附属信息,如图5.36所示,然后点击“确定”,自动生成一个空白的功能在块目录里。,5.3.2功能、功能块和数据块(FC、SFC、FB、SFB和DB、DI),图5.36选择块的编号及附属信息,双击目录块里的FC10图标,打开FC10的编程界面,然后在FC10里编写完成启动/停止功能的控制程序,如图5.37所示。,图5.37 在FC10里编写完成启动/停止功能的程序,为使一个功能能够被CPU处理,必须得在程序上分级结构中的上一级调用它,本例在OB1里调用FC
34、10,如图5.38所示。根据控制功能的需要,可以有条件或无条件调用。最后把项目中的所有信息下载到CPU中即可。,5.3.2功能、功能块和数据块(FC、SFC、FB、SFB和DB、DI),图5.38在OB1里调用FC10,在控制系统中有多个同样的启动/停止控制单元,那么需要调用多个功能来实现或在相同的功能编写其他控制单元,这样虽然比较啰嗦,但是还是可以实现。如果需要简单的方法,使用例5-7的方法。,5.3.2功能、功能块和数据块(FC、SFC、FB、SFB和DB、DI),5.3.2功能、功能块和数据块(FC、SFC、FB、SFB和DB、DI),【例5-7】编程一个启动/停止功能(使用参数传递)
35、首先完善项目中的目录,并在块目录中插入一个功能(本例插入的是FC20),双击块目录里的FC20图标,打开FC20的编程界面,然后在FC20里的局域变量表里定义输入、输出等符号参数,如图5.39所示,最后完成启动/停止功能的逻辑程序,如图5.40所示。,图5.39定义输入、输出等参数,5.3.2功能、功能块和数据块(FC、SFC、FB、SFB和DB、DI),图5.40控制逻辑程序,为了使一个功能能够被CPU处理,必须在程序分级结构中的上一级调用它,本例在OB1中调用FC20,如图5.41所示。根据控制功能的需要,可以有条件或无条件调用。最后把项目中的所有信息下载到CPU中即可实现需要的控制。,5
36、.3.2功能、功能块和数据块(FC、SFC、FB、SFB和DB、DI),图5.41在OB1里调用FC20,5.3.2功能、功能块和数据块(FC、SFC、FB、SFB和DB、DI),在控制系统中有多个同样的启动/停止控制单元,可以调用相同的一个功能(使用参数传递),在每个调用中写上相应的输入/输出就可以完成控制。 【例5-8】使用库功能。实现任务是:比较两个DATE_AND_TIME类型的变量,如果相等,则输出一个高电平控制信号,否则输出一个低电平控制信号。 首先完善项目中的目录,然后在管理画面中双击块目录的OB1,打开OB1的编程界面, 打开指令树里的库指令,双击“库”“stdlibs” “i
37、ec”,然后把FC9 EQ_DT拖拽到OB1指定的地方(本例是M0.0的右边)。 然后在FC9的输入参数DT1和DT2里输入DATE_AND_TIME类型的变量,在返回值里写上M0.1,如图5.42所示。最后保存到OB1。,5.3.2功能、功能块和数据块(FC、SFC、FB、SFB和DB、DI),图5.42在OB1里编写的程序,当程序里调用了库功能后,库功能的代码自动出现管理画面的块目录里,如图5.43所示的FC9,库功能是不能编辑内部程序的,都有保护所以看到块目录里的库功能都带上一把锁的符号。同时库功能的符号也会出现在S7程序的符号表里面。,5.3.2功能、功能块和数据块(FC、SFC、FB
38、、SFB和DB、DI),图5.43调用库功能后的块目录,把项目中所有的信息下载到CPU中,然后运行CPU,接通M0.0,在本例中可以看到M0.1=1。 2)SFC系统功能是集成在STEP7中,完成特定功能。 下面举例说明用户调用系统功能SFC的编程:使用SFC0“SET_CLK”(设定系统时钟),可以设定CPU时钟的时间和日期。调用SFC0会启动时钟,时钟将从设定时间和设定日期开始运行。,5.3.2功能、功能块和数据块(FC、SFC、FB、SFB和DB、DI),首先完善项目中的目录,然后在管理画面中双击块目录的OB1,打开OB1的编程界面。打开指令树里面的库指令,双击“库”“stdlibs”
39、“iec”,然后把FC3“DATE and TOD to DT”拖拽到OB1指定的地方;双击“库”“Standard Library” “System Function Blocks”,然后把SFC 0“SET_CLK”拖拽到OB1指定的地方,如图5.44所示。,5.3.2功能、功能块和数据块(FC、SFC、FB、SFB和DB、DI),图5.44在OB1里编写的程序,然后在FC3“DATE and TOD to DT”、SFC0“SET_CLK”中写上输入和输出参数并保存OB1。最后把整个项目信息下载到CPU中并运行,接通M0.0,可以监控系统时间已经更改为“2008年10月4日12:29”了
40、。 监控系统时间的方法首先把STEP7的编程工具与CPU连接好,在OB1等的程序界面点击菜单栏的“PLC” “组件状态”“系统时间”,可以看到当前CPU的大概时间。如果需要看到准确的当前系统时间,可以在系统时间画面点击“更新”,当前系统时间即显示出来。,5.3.2功能、功能块和数据块(FC、SFC、FB、SFB和DB、DI),2、功能块 功能块分用户编写的功能块FB和系统预先定义的功能块SFB两种,功能块都有存储区。功能块在程序分级结构中位于组织块下面。为使一个功能块被CPU处理,必须在程序分级结构中的上一级调用它。 FB和SFB里都有一个局域变量表和块参数。局域变量表里有:IN(输入参数)、
41、OUT(输出参数)、IN_OUT(输入/输出参数)、STAT(静态参数)、TMEP(临时数据)。 IN(输入参数)只在功能和功能块中使用,是将数据传递到被调用的块中进行处理。 OUT(输出参数)是将结果传递到调用块中。 IN_OUT(输入/输出参数)是在功能和功能块中使用,是将数据传递到被调用块中,在被调用块中处理数据后,再将从被调用块中发送的结果存储在相同的变量中。 STAT(静态参数)是存储在该功能块的背景数据块中的本地数据。在下次处理功能块之前 ,会一直保留存储的数据。,5.3.2功能、功能块和数据块(FC、SFC、FB、SFB和DB、DI),TEMP(临时数据)是块的本地数据,并且在处
42、理块时将其存储在本地数据堆栈(L堆栈)。关闭块并完成处理后,临时数据就变得不可再访问。 下面举例说明功能块的编程。 【例5-9】完成一个星/三角启动/停止功能(没有使用参数传递)。 在块目录中插入功能块,在生成的功能块的过程中需要选择块的编号及附加信息,如图5.45所示。,图5.45选择块的编号及写上附加信息,5.3.2功能、功能块和数据块(FC、SFC、FB、SFB和DB、DI),在块目录中可以查到当前块的详细记录,双击块目录中的FB10,在FB10里定义接口参数,如图5.46所示,然后编写FB10的程序,如图5.47所示。,图5.46在FB10中定义接口参数(定义背景数据块的符号),5.3
43、.2功能、功能块和数据块(FC、SFC、FB、SFB和DB、DI),图5.47在FB10中编写的程序,5.3.2功能、功能块和数据块(FC、SFC、FB、SFB和DB、DI),在OB1编程界面里打开指令树中功能块的指令(注意,该功能块的程序必须在这之前编写完毕,否则会出现时间不一致的错误)并拖拽到程序期待的地方,如图5.48所示,然后点击FB10顶上的“?”位置,写上背景数据块。在生成背景数据块的过程中会出现如图5.49所示的对话框,点击“是”确认,这样FB10的背景数据块就会出现在当前的FB10顶上、管理界面的块目录中和符号表里。,图5.48写上FB10的背景数据块,5.3.2功能、功能块和
44、数据块(FC、SFC、FB、SFB和DB、DI),图5.49生成实例数据块DB10,可以打开管理界面的块目录查看到详细的目录,并双击DB10图标,打开DB10查看详细信息,如图5.50所示。DB10的详细信息是FB10接口参数中除临时参数不会出现外,其他已经在FB10接口参数区定义了的参数将出现在DB10背景数据块里。,5.3.2功能、功能块和数据块(FC、SFC、FB、SFB和DB、DI),图5.50背景数据块里的信息,然后把项目中所有信息下载到CPU中并运行,当接通M0.0时可以启动水泵的星/三角单元,当接通M0.1时,可以停止水泵的星/三角单元。当接通M1.0时可以启动油泵的星/三角单元
45、,当接通M1.1时,可以停止油泵的星/三角单元。,5.3.2功能、功能块和数据块(FC、SFC、FB、SFB和DB、DI),【例5-10】完成一个星/三角启动功能(使用参数传递) 在块目录中插入功能块FB10,然后在块目录里插入数据块。在数据块生成功能块的过程中需要选择块的编号(本例是DB10)及附加信息,如图5.51所示,特别注意这时需要选择“实例DB”并指明属于哪一个功能块(本例是FB10)。这里的“实例DB”习惯称为背景数据块或背景DB。利用同样的方法插入DB11,也选择“实例DB”并指明属于哪一种功能块(本例是FB10)。,图5.51选择数据块的编号及附加信息,5.3.2功能、功能块和
46、数据块(FC、SFC、FB、SFB和DB、DI),使用这种方法生成的背景数据块也会出现在管理界面的块目录和符号表里。在块目录中可以查看到当前块的详细目录,如图5.52所示。,图5.52查看块目录里的详细目录,打开图5.52中的FB10,定义接口参数,如图5.53所示。在管理画面里点击“S7程序”双击“符号”图标,可以打开全局符号表,如图5.54所示,在全局符号表里可以编辑全局符号。然后在FB10里编写控制逻辑程序,如图5.55所示,注意FB10里的控制程序全部使用FB10的局域变量参数,如果使用全局变量,实现不了本例中的控制功能。,5.3.2功能、功能块和数据块(FC、SFC、FB、SFB和D
47、B、DI),图5.53 在FB10里定义接口参数,图5.54定义符号信息表,图5.55 在FB10里编写逻辑控制程序,然后编写调用FB10的程序,本例在OB1里调用FB10,如图5.56所示程序。,图5.55在OB1里编写的程序,在管理画面的块目录里打开DB10。打开的方法是双击块目录里的DB10,自动弹出数据块的参数分配方式对话框,点击“是”,默认以“数据视图”方式打开数据块,如图5.56所示。,图5.56可以监控和改变数据块当前值的界面(数据视图),在图5.56所示“数据视图”界面中可以编辑数据块的当前值以及在线监控数据块,并可以将当前值下载至PLC,无需下载整个块。 例如改变图5.56所
48、示DB10里面的“shi_jian”的当前值:点击DB10中名称为“shi_jian”的“实际值”一栏并改写实际值为“S5T#4S”,然后点击菜单栏的“数据块”“保存”,这样就把DB10的“shi_jian”当前值改为“S5T#4S”了。 例如监控图5.56所示DB10里的数据块:首先STEP7编程设备与CPU连线,点击菜单栏的“调试”“监控”,即可以看到DB10里的数据块的当前值。 在管理画面的块目录里可以使用同样的方法打开DB11,编辑当前值及在线监控。 在图5.56中点击菜单栏“查看”“说明视图”,可以查看到数据块里定义的数据,在说明视图中不能编辑和监控当前值,如图5.57所示。再点击菜
49、单栏“查看”“数据视图”,可以从说明视图切换到数据视图。,图5.57 不能监控和改变数据块当前值的界面(说明视图),5.3.2功能、功能块和数据块(FC、SFC、FB、SFB和DB、DI),最后把项目中所有信息下载到CPU中并运行,当接通M0.0时可以启动水泵的星/三角单元,当接通M0.1时,可以停止水泵星/三角单元。图5.58是使用PLCSIM的测试画面。,图5.58 使用PLCSIM的测试画面,5.3.2功能、功能块和数据块(FC、SFC、FB、SFB和DB、DI),【例5-11】完成一个星/三角单元的启动/停止功能(使用多重背景数据) 在块目录中插入FB10,然后双击块目录中的FB10,
50、打开FB10编辑界面,定义FB10的接口参数,如图5.59所示。,图5.59 定义FB10接口参数,在FB10里面使用局域变量编写星/三角单元启动/停止功能逻辑程序,如图5.60所示,并保存。,图5.60 在FB10里编写的逻辑控制程序,5.3.2功能、功能块和数据块(FC、SFC、FB、SFB和DB、DI),在管理画面的块目录里插入多背景功能块,在插入功能块的过程中自动弹出功能块属性对话框,如图5.61所示,选择“FB1”和“多实例能力”,也就是习惯说的“多背景功能”,如果需要可以填写其他的附属信息。,图5.61 新插入功能块的属性画面,5.3.2功能、功能块和数据块(FC、SFC、FB、S
51、FB和DB、DI),在管理画面的块目录里插入多背景功能块的数据块,在插入数据块的过程中自动弹出数据块属性对话框,如图5.62所示,选择“DB1”和“实例DB”,也就是习惯说的“背景数据块”,并指明属于FB1的背景数据块,如果需要可以填写其他的附属信息。,图5.62背景数据块的属性画面,5.3.2功能、功能块和数据块(FC、SFC、FB、SFB和DB、DI),使用这种方法生成的功能块及数据块会自动出现在符号表及目录里。双击管理界面块目录里的FB1图标,打开FB1,在FB1接口参数里的“STAT”静态变量里定义名称为“shui_beng”,数据类型为“FB10”和“you_beng”的变量,如图5
52、.63所示,并保存,那么在接口参数目录里“shui_beng”和“you_beng”底下的目录会自动生成,同时“shui_beng”和“you_beng”在指令树的“多重实例”里也会自动创建。,图5.63 定义FB1的接口参数,5.3.2功能、功能块和数据块(FC、SFC、FB、SFB和DB、DI),在FB1 里面编写调用指令树中“多重实例”里的“shui_beng”和“you_beng”的程序,并写上输入和输出参数,如图5.64所示,然后保存。,5.3.2功能、功能块和数据块(FC、SFC、FB、SFB和DB、DI),图5.64 在FB1里编写的程序,5.3.2功能、功能块和数据块(FC、S
53、FC、FB、SFB和DB、DI),在管理画面的目录块里双击DB1,打开DB1的数据视图,更改“shui_beng.shi_jian”和“you_beng.shi_jian”的当前值,如图5.65所示,然后保存。,图5.65 编辑多重背景数据块的当前值,在OB里编写调用FB1的程序,如图5.66所示,并保存。,图5.66 在OB1里编写的程序,在管理画面里点击“S7程序”双击“符号”图标,可以打开全局符号表,如图5.67所示,在全局符号表里可以编辑全局符号。,图5.67 符号表中的详细信息,最后把项目中所有信息下载到CPU中并运行,当接通M0.0时,可以启动水泵的星/三角单元;当接通M0.1时,可以停止水泵的星/三角单元。当接通M1.0时,可以启动油泵的星/三角单元;当接通M1.1时,可以停止油泵的星/三角单元。图5.68是使用PLCSIM的测试画面。,图5.68 使用PLCSIM的测试画面,【例5-12】创建一个SFB的程序。以SFB2“CTUD”递增和递减计数为例说明。打开块目录里的OB1 ,在OB1的编程界面点击指令树的“库
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 【正版授权】 IEC 63267-3-61:2025 EN-FR Fibre optic interconnecting devices and passive components - Fibre optic connector optical interfaces for enhanced macrobend multimode fibres - Par
- 华为管理课件
- 河北96年中考数学试卷
- 淮海小升初数学试卷
- 健康管理师课件口碑
- 2025届黑龙江省庆安县第三中学物理高二下期末质量跟踪监视试题含解析
- 2025年中国植物蛋白饮料行业市场调查研究及投资前景展望报告
- 交评报告汇报范本1看丹桥工业区项目交通影响评价
- 易拉盖产品项目投资可行性研究分析报告(2024-2030版)
- 2025年中国停车场建设行业发展趋势及投资前景预测报告
- 浙江国企招聘2025宁波慈溪市国有企业公开招聘公交驾驶员25人笔试参考题库附带答案详解版
- 2025年省国有资本运营控股集团有限公司人员招聘笔试备考试题及答案详解(名校卷)
- 2025年辅警招聘考试试题库完整答案
- 育婴员中级近年考试真题汇总(含答案)
- 顺德区国家工作人员因私出国(境)审批表
- 2022泉州实验中学初一新生入学考试语文卷
- 高原切花玫瑰编制说明(农标委报批)
- 酒店住宿水单模板
- 安徽省安装工程消耗量定额(共165页)
- 《课程标准》编制说明
- 土方回填施工组织设计方案
评论
0/150
提交评论