




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
S7-1200PLC的用户程序结构提纲电气控制与S7-1200应用技术教程2函数和函数块组织块交叉引用函数和函数块电气控制与S7-1200应用技术教程3函数(Function,FC)和函数块(Functionblock,FB)是用户编写的子程序,它们包含完成特定任务的程序。FC和FB有与调用它的代码块交互信息的输入、输出接口参数,执行完FC和FB后,将执行结果返回给调用它的代码块。函数和函数块电气控制与S7-1200应用技术教程4函数函数FC主要用于进行一些运算,没有专用存储区,在FC执行结束后所有内部数据空间将全部释放。函数和函数块电气控制与S7-1200应用技术教程5函数函数和函数块电气控制与S7-1200应用技术教程6函数注意:在函数接口区中定义的这些变量都只能在函数所在块内使用,都属于局部变量。程序编辑器自动地在局部变量的前面添加#号,例如#in1。函数和函数块电气控制与S7-1200应用技术教程7函数图8-3函数FC在OB1中的调用在OB1中对函数FC1进行了调用,方框外面的参数是实参。程序编辑器自动地在全局变量的符号地址两边添加双引号,例如“Tag_1”。注意:调用函数时,Output和InOut不能用常数来作实参。只有Input的实参能设置为常数。函数和函数块电气控制与S7-1200应用技术教程8函数函数FC除了像上面那样作为处理一个复杂的运算的子程序外,还可以将函数FC作为子程序被OB1调用,使得整个程序更加结构化。函数和函数块电气控制与S7-1200应用技术教程9函数块函数块FB是用户编写的有自己的存储区(背景数据块)的代码块。每次调用FB时,都需要指定一个背景数据块。函数块FB的输入、输出参数和静态局部数据(Static)用指定的背景数据块保存,函数块执行完后,背景数据块中的数值不会丢失。函数和函数块电气控制与S7-1200应用技术教程10函数块去掉FB1“优化的块访问”属性。函数和函数块电气控制与S7-1200应用技术教程11函数块UDT用户自定义数据类型“Motor”,“Motor”的定义如图所示。函数和函数块电气控制与S7-1200应用技术教程12函数块FB1函数块的接口区变量定义m是“Motor”类型变量,T0_IDB是IEC_TIMER类型变量,用来作IEC定时器的背景数据块。还定义了一个Input参数“制动时间”,Time数据类型。图8-7函数块FB1接口区变量定义函数和函数块电气控制与S7-1200应用技术教程13函数块图8-8函数块FB1的梯形图程序函数和函数块电气控制与S7-1200应用技术教程14函数块注意:
在FB中,IEC定时器的背景数据块如果指定FB外的一个固定的数据块,在同时多次调用FB1时,该固定的定时器背景数据块将会被同时用于两处或多处,程序运行将会因共用背景数据块而出错。这里通过在FB1接口区中定义IEC_TIMER的静态变量“T0_IDB”,用它提供FB1中所用定时器的背景数据。每次调用FB1时,在FB1不同的背景数据块中,都有保存定时器背景数据的存储区“T0_IDB”。函数和函数块电气控制与S7-1200应用技术教程15函数块注意:
在编写梯形图中的TOF定时器时,会弹出“调用选项”对话框,用来选择TOF定时器背景数据块的类型,注意这里需要选择“多重实例”->“#T0_IDB”选项,并“确定”。也即使用FB1数据块的IEC_TIMER类型变量“T0_IDB”保存定时器TOF的背景数据。函数和函数块电气控制与S7-1200应用技术教程16函数块OB1代码块中对上面定义的FB1进行两次调用。在出现的如图8-10所示的“调用选项”对话框中,输入背景数据块的名称,这里取系统默认名称。单击“确定”按钮,自动生成FB1的背景数据块。函数和函数块电气控制与S7-1200应用技术教程17函数块程序的仿真调试可以通过“监控表”进行:函数和函数块电气控制与S7-1200应用技术教程18函数块函数块中定义的Static类型的UDT变量与PLC软元件进行映射:图8-13新建用于映射的FC图8-14用于映射的PLC变量函数和函数块电气控制与S7-1200应用技术教程19函数块图8-15FC中编写的SCL映射代码函数和函数块电气控制与S7-1200应用技术教程20函数块打开“Main[OB1]”代码块,在代码块中增加“Mapping”映射函数的调用,OB1梯形图程序如图所示。图8-16OB1中增加Mapping映射FC的调用函数和函数块电气控制与S7-1200应用技术教程21函数块添加映射代码程序的仿真调试可以通过“监控表”进行图8-17添加映射后的监控表调试程序函数和函数块电气控制与S7-1200应用技术教程22函数块总结: 1.FB接口区的参数类型与FC相比,新增了Static型数据;2.FB通过定义Static的UDT类型变量,而不是Input、Output类型变量,可以减少调用FB时因配置参数传递而带来的大量额外工作。至于Static的UDT类型变量与PLC的I点、Q点、M点映射可以通过新建一个FC,在FC中通过SCL语言进行映射;3.FB中使用定时器时,在FB的Static型数据中定义IEC_TIMER型变量,并将其作为定时器的背景数据,也即多重背景。多重背景使得多次调用相同FB时,各个FB中的定时器的背景数据被包含在它们所在FB的背景数据块中,从而避免使用FB外的一个固定的DB作背景数据块,也即单个实例,所带来的相同FB被多次调用时定时器因共享同一背景数据块而产生的严重冲突。函数和函数块电气控制与S7-1200应用技术教程23函数块的多重背景函数块“电动机控制FB1”使用的是单个实例。因此在两次调用FB1时在“程序块”目录下生成了两个背景数据块“电动机控制_DB[DB1]”和“电动机控制_DB_1[DB2]”。试想,如果一个程序需要控制一百台电机或者更多的电机,那“程序块”目录下的背景数据块也会生成一百个甚至更多,整个“程序块”的目录将十分庞大,不便于管理,因此这里提出多重实例,也叫多重背景的方式。函数和函数块电气控制与S7-1200应用技术教程24函数块的多重背景打开“添加新块”对话框,单击其中的“函数块”按钮,FB默认的编号为2,默认的语言为LAD,设置函数块名称为“多台电动机控制”,单击“确定”按钮,在项目树中生成FB2。去掉FB2“优化的块访问”属性。打开FB2,在函数块的接口区定义2个数据类型为“电动机控制”的Static类型变量“1号电动机”和“2号电动机”。每个Static类型变量将用作FB1调用时的背景数据,相当于在FB2中定义了FB1的2个背景数据。以此类推,如果在FB2中要控制一百台电机,那就可以在FB2中定义一百个数据类型为“电动机控制”的Static类型变量,这时可以通过数组的方式进行定义。函数和函数块电气控制与S7-1200应用技术教程25函数块的多重背景注意:FB2接口区中Static类型变量的数据类型是“电动机控制”。函数和函数块电气控制与S7-1200应用技术教程26函数块的多重背景接下来在FB2代码块中对FB1进行两次或多次调用。注意第一次调用FB1时,这里需要选择“多重实例”->#"1号电动机"(或#电动机数组[0])选项,并“确定”,第二次调用FB1时,这里需要选择“多重实例”->#"2号电动机"(或#电动机数组[1])选项,并“确定”,以此类推。因FB2中存在多个背景数据,故也称为多重背景或多重实例。使用多重背景后“程序块”的目录结构清晰,不会因多次调用FB1而生成多个背景数据块。函数和函数块电气控制与S7-1200应用技术教程27函数块的多重背景函数和函数块电气控制与S7-1200应用技术教程28函数块的多重背景图8-21函数块FB2调用选项对话框函数和函数块电气控制与S7-1200应用技术教程29函数块的多重背景图8-22OB1中调用FB2函数和函数块电气控制与S7-1200应用技术教程30函数块的多重背景图8-23用于映射的PLC变量表和函数Mapping中的SCL映射代码组织块电气控制与S7-1200应用技术教程31程序循环OB程序循环OB在CPU处于RUN模式时,周期性地循环执行。可在程序循环OB中放置控制程序的指令或调用其它功能块(FC或FB)。主程序(Main)为程序循环OB,要启动程序执行,项目中至少有一个程序循环OB。操作系统每个扫描周期调用该程序循环OB一次,从而启动用户程序的执行。S7-1200允许使用多个程序循环OB,按OB的编号顺序执行。OB1是新建工程时默认生成的,其它程序循环OB的编号必须大于或等于123。程序循环OB的优先级为1,可被高优先级的组织块中断;程序循环执行一次需要的时间即为程序的循环扫描周期时间。最长循环时间缺省设置为150ms。如果您的程序超过了最长循环时间,操作系统将调用OB80(时间故障OB);如果OB80不存在,则CPU停机。例如:在循环组织块OB123中调用FC1。具体实现过程如下:组织块电气控制与S7-1200应用技术教程32程序循环OB组织块电气控制与S7-1200应用技术教程33程序循环OB组织块电气控制与S7-1200应用技术教程34程序循环OB组织块电气控制与S7-1200应用技术教程35时间中断OB时间中断OB用于在时间可控的应用中定期运行一部分用户程序,可实现在某个预设时间到达时只运行一次;或者在设定的触发日期到达后,按每分/小时/天/周/月等周期运行。只有在设置并激活了时间中断,且程序中存在时间中断组织块的情况下,才能运行时间中断。时间中断OB的默认编号是10。与时间中断OB10相关的指令:SET_TINTL(设置时间中断)、CAN_TINT(取消时间中断)、ACT_TINT(激活时间中断)和QRY_TINT(查询时间中断状态),这些指令的位置在指令列表的“扩展指令”->“中断”->“时间中断”。组织块电气控制与S7-1200应用技术教程36时间中断OB例如:从设定时间开始每分钟执行时间中断OB10,每调用一次OB10将MD200加1。具体实现过程如下:1、按如下步骤创建时间中断OB10。如图8-27所示。2、OB10中编程,当触发时间中断时执行OB10,将MD200加1。如图8-28所示。3、OB1中编程,设置时间中断、激活时间中断、取消时间中断、查询时间中断。如图8-29所示。组织块电气控制与S7-1200应用技术教程37时间中断OB图8-27创建时间中断OB10组织块电气控制与S7-1200应用技术教程38时间中断OB图8-28OB10中编程组织块电气控制与S7-1200应用技术教程39时间中断OB图8-29OB1中编程组织块电气控制与S7-1200应用技术教程40延时中断OBPLC的普通定时器的工作过程与扫描工作方式有关,其定时精度较差。如果需要高精度的延时,应使用延时中断。延时中断OB在经过一段指定的时间延时后,才执行相应的延时中断OB中的程序。可以通过在OB1中调用“SRT_DINT”指令启动延时中断OB。在使用“SRT_DINT”指令编程时,需要提供延时中断OB号、延时时间,当到达设定的延时时间,操作系统将启动相应的延时中断OB;当启动延时中断后,在延时时间到达之前,也可以通过“CAN_DINT”指令取消已启动的延时中断,同时还可以使用“QRY_DINT”指令查询延时中断的状态。这些指令的位置在指令列表的“扩展指令”->“中断”->“延时中断”中。组织块电气控制与S7-1200应用技术教程41延时中断OB例如:当M0.0由1变0时,延时5s后启动延时中断OB20,将Q0.0置位。具体实现过程如下:1、按如下步骤创建延时中断OB20。如图所示。组织块电气控制与S7-1200应用技术教程42延时中断OB2、打开OB20,在OB20中编程,当延时中断执行时,置位Q0.0。如图8-32。组织块电气控制与S7-1200应用技术教程43延时中断OB3、在OB1中编程调用“SRT_DINT”指令启动延时中断;调用“CAN_DINT”指令取消延时中断;调用“QRY_DINT”指令查询中断状态。组织块电气控制与S7-1200应用技术教程44延时中断OB4、测试结果:当M0.0由1变0时,延时5s后执行延时中断OB20,可看到PLC输出点Q0.0指示灯亮;当M0.0由1变0时,在延时的5s到达之前,如果M0.1由0变1则取消延时中断,OB20将不会执行。组织块电气控制与S7-1200应用技术教程45循环中断OB循环中断OB在经过一段固定的时间间隔后执行循环中断OB中的程序。S7-1200在创建循环中断OB时设定固定的间隔扫描时间。可以使用“SET_CINT”指令设置循环中断的间隔扫描时间;使用“QRY_CINT”指令查询循环中断的状态。这些指令的位置在指令列表的“扩展指令”->“中断”->“循环中断”中。循环中断OB的默认编号为30。组织块电气控制与S7-1200应用技术教程46循环中断OB例如:运用循环中断,使Q0.0点500ms输出为1,500ms输出为0,即实现周期为1s的方波输出。具体实现过程如下:1、按如下步骤创建循环中断OB30,这里将循环时间设置成500ms。组织块电气控制与S7-1200应用技术教程47循环中断OB2、OB30中编程如下图,当循环中断执行时,Q0.0以方波形式输出。组织块电气控制与S7-1200应用技术教程48循环中断OB3、在OB1中编程调用“SET_CINT”指令,可以重新设置循环中断时间间隔,例如:CYCLE=1s(即周期为2s)。组织块电气控制与S7-1200应用技术教程49循环中断OB4、测试结果:程序下载后,可看到CPU的输出Q0.0指示灯0.5s亮,0.5s灭交替切换;当M100.0由0变1时,通过“SET_CINT”将循环间隔时间设置为1s,这时,可看到CPU的输出Q0.0指示灯1s亮,1s灭交替切换。组织块电气控制与S7-1200应用技术教程50硬件中断OB硬件中断OB在发生相关硬件事件时执行,可以快速的响应并执行硬件中断OB中的程序(例如立即停止某些关键设备)。硬件中断事件包括内置数字输入端的上升沿和下降沿事件以及HSC(高速计数器)事件。当发生硬件中断事件,硬件中断OB将中断正常的循环程序而优先执行。S7-1200可以在硬件配置的属性中预先定义硬件中断事件。硬件中断OB的编号默认为40起始。与硬件中断OB相关的指令功能:“ATTACH”将硬件中断事件和硬件中断OB进行关联;“DETACH”将硬件中断事件和硬件中断OB进行分离。这些指令的位置在指令列表的“扩展指令”->“中断”中。组织块电气控制与S7-1200应用技术教程51硬件中断OB例如:当硬件输入I0.0上升沿时,触发硬件中断OB40(执行累加程序),当硬件输入I0.1上升沿时,触发硬件中断OB41(执行递减程序)。组织块电气控制与S7-1200应用技术教程52硬件中断OB1、按如下步骤创建硬件中断OB40,同样的方法创建OB41。组织块电气控制与S7-1200应用技术教程53硬件中断OB2、OB40中编程如下图,当硬件输入I0.0上升沿时,触发硬件中断执行MW200加1。组织块电气控制与S7-1200应用技术教程54硬件中断OB3、OB41中编程如下图,当硬件输入I0.1上升沿时,触发硬件中断执行MW200减1。组织块电气控制与S7-1200应用技术教程55硬件中断OB4.在CPU属性窗口中关联硬件中断事件,分别将I0.0和OB40关联,I0.1和OB41关联。组织块电气控制与S7-1200应用技术教程56硬件中断OB5、测试结果:硬件中断只能在物理PLC上进行测试,不能仿真。程序下载后,在监控表中查看MW200的数据。组织块电气控制与S7-1200应用技术教程57诊断错误、插拔中断、机架或站故障用户在写程序时由于没有考虑到现场很多因素,导致写的程序,有可能进入死循环的状态,当出现这种错误时就会启用诊断错误OB82。如果程序在编写的时候没有建立OB82这个组织块,PLC将会停机。除了程序错误,还有硬件错误,比如某个模块烧了、模块通道出现短路、超出模块测量上下限等都会产生诊断错误,调用OB82。用户可以在OB82里写一些跟安全生产相关的保护程序,防止产生严重的事故,如紧急关掉一些设备,阀门等。用户搭建分布式IO的时候,有些设备比较低端,是不支持热插拔的,一旦在运行时插拔这类模块,如果没有插拔中断OB83的话,同样会导致PLC停机。为了保证整个系统能连续稳定的运行,需要在PLC程序中创建一个OB83组织块,即使是空的。当CPU检测到分布式机架或站出现故障或发生通信丢失时,如果用户没有在PLC程序中创建机架或站故障OB86,会导致PLC停机。为了保证整个系统能连续稳定的运行,也需要在PLC程序中创建一个OB86组织块,即使是空的。组织块电气控制与S7-1200应用技术教程58诊断错误、插拔中断、机架或站故障提示:实际中,一些设备厂家,为了降低PLC停机给公司带来的人员现场维护成本的增加,程序里会调用一个空的OB82、OB83、OB86,即使里面没有代码,就可以保证我们的程序不会因为OB82、OB83、OB86的错误导致PLC的停机。组织块电气控制与S7-1200应用技术教程59启动OB启动OB用于系统初始化,CPU从STOP切换到RUN时,执行一次启动OB。执行完后,才执行主“程序循环”OB1。启动OB默认的是OB100,一般只需要一个启动组织块。组织块电气控制与S7-1200应用技术教程60启动OB例如:在启动OB100中无条
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 四川达州山体喷浆施工方案
- 变压器现场吊芯施工方案
- 重庆地铁5号线施工方案
- 《大数据技术导论》-教学大纲
- 高埗写字楼杀虫施工方案
- 铁制容器防腐措施方案
- 八下南充数学试卷
- 太阳能发电安装 施工方案
- 熔盐炉拼接炉拱施工方案
- 黑龙江城镇亮化施工方案
- 2025年全国国家版图知识竞赛题库及答案(中小学组)
- 《红岩》中考试题(截至2024年)
- 2024年河南省公务员考试《行测》真题及答案解析
- 2024年国家危险化学品生产单位安全管理人员考试题库(含答案)
- 钒电池项目财务数据分析(范文模板)
- 电晕水测试液配方
- 日处理300t鲜奶的脱脂奶粉生产车间
- 工业锅炉水处理系统调试报告
- 秘书处职能手册(完整版)74页
- 【原创】幼儿的愤怒情绪管理个案观察分析
- 外科手术缝线分类
评论
0/150
提交评论