收藏 分享(赏)

S7-300_PLC课件 数据块中的数据存储,组织快,结构化编程.ppt

上传人:yjrm16270 文档编号:7207574 上传时间:2019-05-10 格式:PPT 页数:92 大小:1.66MB
下载 相关 举报
S7-300_PLC课件 数据块中的数据存储,组织快,结构化编程.ppt_第1页
第1页 / 共92页
S7-300_PLC课件 数据块中的数据存储,组织快,结构化编程.ppt_第2页
第2页 / 共92页
S7-300_PLC课件 数据块中的数据存储,组织快,结构化编程.ppt_第3页
第3页 / 共92页
S7-300_PLC课件 数据块中的数据存储,组织快,结构化编程.ppt_第4页
第4页 / 共92页
S7-300_PLC课件 数据块中的数据存储,组织快,结构化编程.ppt_第5页
第5页 / 共92页
点击查看更多>>
资源描述

1、组织块,组织块概述,完全再启动,自动,手动,S7-300 / 400,Power ON,清除过程映像,非保持的M, T, C,允许输出,执行 OB 101,启动组织块,循环,循环,组织块的启动信息,OB1 连续执行,中断循环程序, 直到被其它OB中断,被中断的 OB 块的数据保存,系统调用新的 OB,在执行新的 OB 前, 保存被中断块的寄 存器,日期时间中断OB10(1),日时钟 OB (OB10 在 S7-314) 允许你在某一特定日期或特定间隔,中断正在循环的 OB 而去执行中断程序。你可以对此 OB 编程使其按下列间隔运行: Once(一次): 只在特定日期和时间执行一次。 Every

2、 minute(每分钟): 从某一特定日期和时间开始,每分钟执行一次。 Hourly(每小时): 从某一特定日期和时间开始,每小时执行一次。 Daily(每天): 从某一特定日期和时间开始,每天执行一次。 Weekly(每周): 从某一特定日期和时间开始,每周执行一次。 Monthly(每月): 从某一特定日期和时间开始,每月执行一次。 Annually(每年): 从某一特定日期和时间开始,每年执行一次。,日期时间中断OB10(2),练习2: 设置系统时间,练习3: 编写日期时间中断程序,练习4: 利用时间中断实现定时检测,令 CPU 调用一个 OB 以检测 和控制罐的温度,从一个特定 日期和

3、时间开始每分钟执行一 次。,循环中断 (OB35),RUN,OB35,OB35,OB35,O,OB1,B1,OB1,OB1,OB1,OB1,OB1,O,B1,练习5: 利用循环中断产生闪烁信号,延时中断 (OB20),模拟输入模块,上限值,下限值,+27648,0,硬件中断 (OB40),模拟输入模块,断线,诊断中断,异步错误中断(OB81.87),异步错误组织块,错误类型,例 子,OB,时间错误,超出最大循环扫描时间,OB80,同步错误,错误类型,例子,OB,编程错误,在程序中调用一个 CPU中并不存在的块,OB121,错误类型,使用错误组织块,为避免发生某错误时CPU进入停机状态,可以在C

4、PU中建立一个相应的空错误组织块。 可以在错误OB块中编程实现所希望的响应,如果需要,在执行完规定指令后,调用系统功能SFC 46申请停机。 在错误组织块的启动信息中包含有错误的特征,可以在程序中使用。 关于错误组织块的详细描述参见在线帮助或系统和标准功能手册。 当CPU不支持某些错误OB时,相关的错误信息就不会记录在OB块中。,错误组织块应用举例,错误处理OB块中的附加信息,OB 122 (访问错误)中的附加信息,变量 类型 描述 OB122_EV_CLASS BYTE 事件类别, IDs = B#16#29 OB122_SW_FLT BYTE 错误代码: (可能的值为: B#16#42,

5、B#16#43, B#16#44, B#16#45) OB122_PRIORITY BYTE 发生错误的OB块的优先级 OB122_OB_NUMBR BYTE OB块的号码 (122) OB122_BLK_TYPE BYTE 发生错误的块的类型: B#16#88: OB? B#16#8A: DB? B#16#8C: FC? B#16#8E: FB? OB122_MEM_AREA BYTE 内存区域和访问类型 OB122_MEM_ADDR WORD 发生错误处的内存地址 OB122_BLK_NUM WORD 导致错误的MC7指令所在块的地址 OB122_PRG_ADDR WORD 导致错误的MC

6、7 指令的相对地址OB122_DATE_TIME DATE_AND_TIME OB块被调用的日期和时刻,控制中断组织块的系统功能块,练习6: 模拟量模块的诊断中断,模拟量输入模块,额定范围,超上界,超上限,数据块(DB)中的数据存储,数据存储区,数据块 (DB),功能 FC10,功能 FC20,功能块 FB1,OB1,STEP 7数据类型概述,基本数据 类型 (到32 位),复杂数据 类型 (长于32位),用户定义数据类型 (长于 32 位),STEP 7基本数据类型,BOOL 1 True 或 False (1 或0) BYTE 8 B#16#A9 WORD 16 W#16#12AF DWO

7、RD 32 DW#16#ADAC1EF5 CHAR 8 w S5TIME 16 S5T#5s_200ms INT 16 123 DINT 32 L#65539 REAL 32 1.2 或 34.5E-12TIME 32 T#2D_1H_3M_45S_12MS DATE 16 D#1993-01-20 TIME_OF_DAY 32 TOD#12:23:45.12,关键字,长度 (位),该类型的常数举例,复杂数据类型,关键字 长度 (位) 举例,DATE_AND_TIME 64 DT#97-09-24-12:14:55.0 STRING 8 * (字符个数+2 ) This is a string

8、 (最多254个字符的字符串) SIEMENS ARRAY 用户定义 测量值: ARRAY120 (相同数据类型的元素组) INT STRUCT 用户定义 Motor: STRUCT (不同数据类型的元素组) Speed : INT Current: REAL END_STRUCTUDT UDT as block UDT as array element (用户定义数据类型 = 用户定义 基本或复杂数据类型组成的 STRUCT Drive: ARRAY14 模板) Speed : INT UDT1 Current: REAL END_STRUCT,结构举例,程序编辑器中的显示 (数据块 DB

9、1):,Operating Speed, data type Integer,Rated Current, data type Real,Startup Current, data type Real,Turning Direction, data type Bool,带有名字“Motor_data” 的结构 (不同数据类型的几个元素),Motor_data,矩阵举例,带有名字“Measuring_point” 的矩阵 (相同数据类型的几个元素), ,程序编辑器中的显示 (数据块 DB 2):,Measuring_point,建立新数据块,输入、保存、下载和监视数据块,寻址数据单元,0,7,8

10、 位,访问数据单元,0 1 2 3 4 5 6 7 8 9,DB 19 (符号名: Values),带有元素名字 “Start” 的 数据位 0.0,传统访问方法,符号寻址,完全表示访问,1),绝对寻址,UDT 块作为模板,用户定义数据类型 (UDT),输入UDT块,根据数据类型建立数据块,举例:UDT中矩阵,数据查看,练习1: 数据块和数据格式,IB1,DB10.DBW2,DB11.DBW8,BIN,BCD,QW6,DB11.DBW10,BIN,BCD,IB2,BCD,BIN,BCD,BIN,I0.7=“0” : BEC,: BE,(1)建立一个新块FC33,并按下列要求编写程序。(2)把I

11、B1与数据块DB10中的DBW2相加,其和存储到DB11中的DBW8里。 (3)将IB2和IB3的数值相加,结果存在DB11的DBW10中。 (4)I0.7=0时,在QW6上显示(2)的计算结果。I0.7=1时,在QW6上显示(3)的计算结果。 提示:IB2和IB3输入的是BCD码十进制数,在运算之前必须转换为二进制数。在转换之前必须把两位组成的BCD数(IB2)扩展为四位BCD数。,练习:,结构化编程,程序设计方法:线性化编程、模块化编程和结构化编程。,第七章 结构化编程,线性化编程是将整个用户程序放在组织块OB1中,在CPU循环扫描时执行OB1中的全部指令。其特点是结构简单、但效率低下。另

12、一方面,某些相同或相近的操作需要多次执行,这样会造成不必要的编程工作。再者,由于程序结构不清晰,会造成管理和调试的不方便。所以在编写大型程序时,避免线性化编程。,模块化编程是将程序根据功能分为不同的逻辑块,且每一逻辑块完成的功能不同。在OB1中可以根据条件调用不同的功能或功能块。其特点是易于分工合作,调试方便。由于逻辑块是有条件的调用,所以可以提高CPU的利用率。,结构化编程是将过程要求类似或相关的任务归类,在功能或功能块中编程,形成通用解决方案。通过不同的参数调用相同的功能或通过不同的背景数据块调用相同的功能块。 其特点是结构化编程必须对系统功能进行合理分析、分解和综合,所以对设计人员的要求

13、较高,另外,当使用结构化编程方法时,需要对数据进行管理。,传送带系统中所有交流电机的通用逻辑控制块; 装配线机械中所有电磁线圈的通用逻辑控制块; 造纸机器中所有驱动装置的通用逻辑控制块。,结构化编程,OB 1,练习,电动机启保停电路 按下按钮,一个数加1,当此数值超过20时,输出指示,利用局部数据进行控制,FC1 (数学功能),OB1,FC1,Input1,Input2,Input3,Output_A,FC1,Input1,Input2,Input3,Output_A,MW5,3369,MW10,QW12,QW20,MW2,6869,MW16,I0.5,I0.5,( ),M5.1,O,#TEM

14、P1 #INPUT3,#Output_A,0.0,2.0,4.0,6.0,8.0,in,in,in,out,temp,int,int,int,int,int,sample measure 1,constant,offset,result,intermediate,局部变量,临时变量,局部数据堆栈的大小,对于 S7-300:,局部堆栈大小,优先级,256 bytes,1,27,总容量: 1.5 Kbyte (CPU 313316),启动程序 (只执行一次),循环扫描程序,块所需要的局部数据区的长度,rechts,程序所占用的局部数据区的总长度,练习1: 使用临时变量,QW6,示例:计算公式,Di

15、sturb_ input,Report_ memory,Acknowledge,Edge_ mem_bit,Display,Flash_freq,FC 20,调用,可以分配参数的块,A i 1.2 R m 40.0 A i 1.3 Fp m 40.1 S m 40.0 A m 40.0 A m 10.3 O Anm 40.0 A i 1.3 = Q 4.3,不可以 分配参数的块,M 40.0,M 40.1,I 1.3,I 1.2,Q 4.3,M 10.3,实际参数,A #Acknowledge R #Report memory A #Disturb_input FP #Edge_mem_bit

16、 S #Report_memory A #Report_memory A #Flash_freq O AN #Report_memory A #Disturb_input = #Display,可以分配参数的块,程序,定义形式参数,使用方法,图形显示,只能读,在块的左侧,只能写,在块的右侧,参数类型,输入参数,输出参数,输入/输出 参数,定义,in,out,In_out,可读/可写,在块的左侧,形式参数,编辑一个可分配参数的块,对于无参数分配的块,此处可能是: 绝对地址: I1.3 符号地址: “End_left”,Disturb_input,Acknowledge,Flash_freq,Ed

17、ge_mem_bit,Display,ENO,EN,FC20,调用一个分配了参数的块,Network 3: First Call,Network 4: Second Call,M40.1,“Position error”,“End left”,“Acknow.button”,M10.3,M40.0,“End right”,Q4.1,“Acknow.button”,M10.3,M40.2,符号的,寻址方式,符号,局部符号 形式参数,M40.3,Q5.4,Report_memory,LAD/FBD,STL,在块调用时使用EN/ENO参数,CALL FC 1 NOP 0,FC 1,EN,ENO,?

18、. ?,无条件调用,FC 20 的变量声明表,练习2: 生成一个分配了参数的FC块,1.,练习3: 调用一个分配了参数的FC块,Disturb_input,Report_memory,Acknowledge,Edge_mem_bit,Display,Flash_freq,第一次调用FC20时 的参数分配,M 40.0,M 40.1,I 1.3,I 1.2,Q 5.3,M 10.3,FC 20,Disturb_input,Report_memory,Acknowledge,Edge_mem_bit,Display,Flash_freq,M 40.2,M 40.3,I 1.4,I 1.2,Q 5.

19、4,M 10.3,FC 20,第二次调用FC20时 的参数分配,练习,将最近采集的三个数求平均,进行滤波处理。,先采用模块化编程实现此功能,接着采用结构化编程实现,最后引出FB块。,FB块,FB 2 EN Disturb. input Acknowledge Display Flash freq. ENO,DB 2,OB 1,FB块的变量声明表,用FB实现的故障信息显示,FB的声明表,生成背景数据块,1. 在FB调用时生成背景数据块,多重背景模型,DB10,普通背景模型,FB20,OB 1,Call FB20, DB10Disturb._Input:=Acknowledge:=Flash_Fr

20、eq:=Display:=,Parameters and static variables of the 2nd. call of FB20,Call Dist_2Disturb._Input:=Acknowledge:=Flash_Freq:=Display:=,Parameters and static variables of the 1st. call of FB20,Call Dist_1Disturb._Input:=Acknowledge:=Flash_Freq:=Display:=,练习4: 编写一个FB块,FB 20 的变量声明表,1.,练习5: 调用FB并调试,插入/删除块

21、的参数可能遇到的问题,Save,调用被修改过的块时应做的更正,当调用块被打开时:,单击鼠标右键,练习6: 多台设备的风扇监控功能,A,B,C,=1,S_ODT,TIMER_NO,ACKN,SIG,&,A,B,C,R,S,Q,=1,FLT,FC101,REPORT,A,B,C,ACKN,TIMER_NO,TV,FLT,SIG,功能,符号,练习7: 风扇监控功能的扩展,A,B,C,=1,S_ ODT,TIMER_NO,ACKN,SIG,&,A,B,C,R,S,Q,=1,FLT,FC101,REPORT,A,B,C,ACKN,TIMER_NO,TV,FLT,功能,符号,ENAB,&,ENAB,ENA

22、B,SIG,练习8: 识别变量的类型,TYPE OF VARIABLE,总结: 块的调用, CALL FC1 UC FC1 CC FC1,STL,LAD,FBD,FC1,FB,无参数,无背景数据块, UC FB1 CC FB1,CALL,无参数,语言,FC,FC1,控制任务描述:在发动机控制系统工程实例中,被控对象是一个“汽油发动机”和一个对该汽油发动机进行散热的“风扇”,一个“柴油发动机”和一个对该柴油发动机进行散热的“风扇”。对这些被控对象,有相应的起动、停止按钮控制其状态的改变,并要求这两个发动机在起动的同时,对应的风扇要同时起动对其散热,当发动机停止运行时,风扇要延时4秒后再关闭,以保

23、证发动机充分的散热。,发动机控制系统工程,发动机控制系统结构化程序的结构示意图,1、 创建符号地址表,2、发动机控制功能块(FBl)的程序设计,输入:,定义FB1的输入、输出参数。这些定义包括变量名、数据类型和声明类型。,输出:,静态变量:,FB1功能块的程序设计,汽油机数据块DB1的内容,3、风扇控制功能(FCl)的程序设计,定义FC1的输入、输出参数。这些定义包括变量名、数据类型和声明类型。,输入:,输出:,FBl功能块的程序设计,4、组织块(OB1)的程序设计,发电机控制系统组织块OB1的指令程序,功能和功能块的调用必须用实参代替形参,因为形参是在功能或功能块的变量声明表中定义的。为保证功能或功能块对同一类设备的通用性,在编程中不能使用实际对应的存储区地址参数,而是使用抽象参数,这就是形参。而块在调用时,必须将实际参数(实参)替代形参,从而可以通过功能或功能块实现对具体设备的控制。这里必须注意:实参的数据类型必须与形参一致。,总结,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报