S7-300程序家族的故事
- 格式:doc
- 大小:118.00 KB
- 文档页数:5
深⼊浅出西门⼦s7-300plc(2)基于PROFIBUS 的分布式I/O基于PROFIBUS的分布式与本地I/O的组态采⽤了统⼀的⽅式,因此,⽤户在编程时⽆须分辨I/O类型,可以像使⽤本地I/O⼀样⽅便地使⽤分布式I/O。
(3)系统中集成的路由功能TIA中的各种⽹络可以进⾏互联。
TIA中集成的路由功能可以⽅便地实现跨⽹络的下载、诊断等,使整个系统的安装调试更加容易。
(4)集成的系统诊断和报告功能TIA系统集成了⾃动诊断和错误报告功能,诊断和故障信息可以通过⽹络⾃动发送的相关设备⽽不需要编程。
1.1.3 TIA的开放性TIA是⼀个⾼度集成和统⼀的系统,同时它也是⼀个具有⾼度开放性的系统。
TIA的开放性体现在以下⼏个⽅⾯。
1.对所有类型的现场设备开放通过PROFIBUS,TIA对范围极⼴的现场设备开放。
⽬前,该总线已经实现了在防爆环境的应⽤和与驱动设备同步。
开关类产品和安装设备还可以通过AS-Interface。
总线接⼊⾃动化系统,作为PROFIBUS总线的扩展。
楼宇⾃动化与⽣产⾃动化的连接也可以通过instabus○R EIB实现。
2.对办公系统开放并⽀持Internet以太⽹通过TCP/IP协议将TIA与办公⾃动化应⽤及Internet/ Intranet世界相连接。
TIA采⽤OPC作为访问过程数据的标准接⼝,通过该接⼝,可以很容易地建⽴所有基于PC 的⾃动化系统与办公应⽤之间的连接,⽽不论它们所处的物理位置如何。
Internet 技术使在任意位置对⼯⼚进⾏远程操作和监视成为可能。
3.对新型⾃动化结构开放⾃动化领域当中的⼀个明显的技术趋势就是系统的模块化程度⼤⼤提⾼,即由带有智能功熊的技术模块组成的⾃动化结构。
这些模块可以预先进⾏组态、启动和测试。
这样,实现整个⼯⼚的投运要快得多,更改系统也不会影响到⽣产运⾏。
通过PROFInet,TIA使⽤与⼚商⽆关的通讯、⾃动化和⼯程标准,使系统使⽤智能仪表(甚⾄不同⼚家)⾮常容易,不必管它们是否与PROFIBUS或者以太⽹相连接。
S7-300是模块化小型PLC系统,能满足中等性能要求的应用。
SIMATIC S7-300 可编程序控制器是模块化结构设计。
各种单独的模块之间可进行广泛组合以用于扩展。
一.系统组成:中央处理单元 (CPU)各种 CPU 有各种不同的性能,例如,有的 CPU 上集成有输入/输出点,有的 CPU 上集成有 PROFIBUS-DP 通讯接口等。
信号模块 (SM)用于数字量和模拟量输入/输出通讯处理器 (CP)用于连接网络和点对点连接功能模块 (FM)用于高速计数,定位操作 (开环或闭环定位) 和闭环控制。
负载电源模块 (PS)用于将 SIMATIC S7-300 连接到 120/230 伏交流电源,或 24/48/60/110 伏直流电源。
接口模块 (IM)用于多机架配置时连接主机架 (CR) 和扩展机架 (ER)。
S7-300 通过分布式的主机架 (CR) 和 3 个扩展机架 (ER),可以操作多达 32 个模块。
运行时无需风扇。
SIMATIC S7-300 适用于通用领域:高电磁兼容性和强抗振动,冲击性,使其具有最高的工业环境适应性。
PLC控制系统示意图SIMATIC-S7-300实物模拟图S7-300 有两种类型:标准型温度范围从 0℃到 60℃环境条件扩展型温度范围从 -25℃到 +60℃更强的耐受振动和污染特性。
二.功能SIMATIC S7-300 的大量功能支持和帮助用户进行编程、启动和维护高速的指令处理0.6~0.1μs的指令处理时间在中等到较低的性能要求范围内开辟了全新的应用领域。
浮点数运算用此功能可以有效地实现更为复杂的算术运算方便用户的参数赋值一个带标准用户接口的软件工具给所有模块进行参数赋值,这样就节省了入门和培训的费用。
人机界面 (HMI)方便的人机界面服务已经集成在 S7-300 操作系统内。
因此人机对话的编程要求大大减少。
SIMATIC人机界面 (hmi) 从 S7-300 中取得数据,S7-300 按用户指定的刷新速度传送这些数据。
S7-300∙模块化微型PLC系统,满足中、小规模的性能要求∙各种性能的模块可以非常好地满足和适应自动化控制任务∙简单实用的分布式结构和多界面网络能力,应用十分灵活∙方便用户和简易的无风扇设计∙当控制任务增加时,可自由扩展∙大量的集成功能使它功能非常强劲S7-300自动化系统采用模块化设计。
它拥有丰富的模块,且这些模块均可以独立地组合使用。
一个系统包含下列组件:o CPU:不同的CPU 可用于不同的性能范围,包括具有集成I/O 和对应功能的CPU 以及具有集成PROFIBUS DP、PROFINET 和点对点接口的CPU。
o用于数字量和模拟量输入/输出的信号模块(SM)。
o用于连接总线和点对点连接的通信处理器(CP)。
o用于高速计数、定位(开环/闭环)及PID 控制的功能模块(FM)。
根据要求,也可使用下列模块:o用于将SIMATIC S7-300 连接到120/230 V AC 电源的负载电源模块(PS)。
o接口模块(IM),用于多层配置时连接中央控制器(CC) 和扩展装置(EU)。
通过分布式中央控制器(CC) 和3 个扩展装置(EU),SIMATIC S7-300 可以操作多达32 个模块。
所有模块均在外壳中运行,并且无需风扇。
o SIPLUS 模块可用于扩展的环境条件:适用于-25 至+60℃的温度范围及高湿度、结露以及有雾的环境条件。
防直接日晒、雨淋或水溅,在防护等级为IP20 机柜内使用时,可直接在汽车或室外建筑使用。
不需要空气调节的机柜和IP65 外壳。
设计简单的结构使得S7-300 使用灵活且易于维护:o安装模块:只需简单地将模块挂在安装导轨上,转动到位然后锁紧螺钉。
o集成的背板总线:背板总线集成到模块里。
模块通过总线连接器相连,总线连接器插在外壳的背面。
o模块采用机械编码,更换极为容易:更换模块时,必须拧下模块的固定螺钉。
按下闭锁机构,可轻松拔下前连接器。
前连接器上的编码装置防止将已接线的连接器错插到其他的模块上。
河北建材职业技术学院Hebei Vocational & Technical College of Building Materials毕业设计( 2016届)题目:基于PLC(S7-300)控制的智能家居系统所属系部机电工程系专业电气自动化技术班级 13 电气姓名吕宁学号 0418130118指导教师邢满荣完成日期: 2016 年 6 月13日摘要随着社会的不断发展进步,人们不断去追求更舒适、方便、高效、安全的生活环境。
传统的家居环境无法满足人们越来越高的要求。
本文的设计思路是将家居自动化、家居安全防护等功能集中在一个综合管理系统上,采用模块化的编程方法,分为智能窗帘开合系统、智能车库系统、电动衣架系统、智能洗衣机系统、智能烧水系统、夜间模式和防盗模式,在保证稳定可靠、环保节能和降低成本的前提下,提高家居环境的安全性、舒适性、方便性。
并且可以根据用户的实际需求,进行添加、删除和修改模块功能。
关键词:可编程控制器智能家庭 PLC编程目录绪论 (1)1.PLC选型 (2)2.智能家庭系统设计 (3)2.1智能家庭系统编程结构 (3)2.2智能家庭系统编程方法 (3)3.PLC编程部分 (4)3.1总输入输出分配表和总符号表 (4)3.2主程序部分 (4)3.3智能窗帘开合系统 (5)3.4智能车库系统 (5)3.5电动衣架系统 (5)3.6智能洗衣机系统 (6)3.7智能烧水系统 (8)3.8夜间模式系统 (8)4.调试 (8)结论 (9)致谢 (9)参考文献 (10)附录1 主程序 (11)附录2 智能窗帘程序 (13)附录3 智能车库程序 (15)附录4 电动衣架程序 (18)附录5 智能洗衣机程序 (20)附录6 智能烧水程序 (26)附录7 夜间模式程序 (28)表1 总输入输出分配表 (29)表2 总符号表 (30)绪论随着计算机技术、自动化技术的发展,智能家庭这种时代的产物应运而生。
(2)基于PROFIBUS 的分布式I/O基于PROFIBUS的分布式与本地I/O的组态采用了统一的方式,因此,用户在编程时无须分辨I/O类型,可以像使用本地I/O一样方便地使用分布式I/O。
(3)系统中集成的路由功能TIA中的各种网络可以进行互联。
TIA中集成的路由功能可以方便地实现跨网络的下载、诊断等,使整个系统的安装调试更加容易。
(4)集成的系统诊断和报告功能TIA系统集成了自动诊断和错误报告功能,诊断和故障信息可以通过网络自动发送的相关设备而不需要编程。
1.1.3 TIA的开放性TIA是一个高度集成和统一的系统,同时它也是一个具有高度开放性的系统。
TIA的开放性体现在以下几个方面。
1.对所有类型的现场设备开放通过PROFIBUS,TIA对范围极广的现场设备开放。
目前,该总线已经实现了在防爆环境的应用和与驱动设备同步。
开关类产品和安装设备还可以通过AS-Interface。
总线接入自动化系统,作为PROFIBUS总线的扩展。
楼宇自动化与生产自动化的连接也可以通过instabus○R EIB实现。
2.对办公系统开放并支持Internet以太网通过TCP/IP协议将TIA与办公自动化应用及Internet/ Intranet世界相连接。
TIA采用OPC作为访问过程数据的标准接口,通过该接口,可以很容易地建立所有基于PC 的自动化系统与办公应用之间的连接,而不论它们所处的物理位置如何。
Internet技术使在任意位置对工厂进行远程操作和监视成为可能。
3.对新型自动化结构开放自动化领域当中的一个明显的技术趋势就是系统的模块化程度大大提高,即由带有智能功熊的技术模块组成的自动化结构。
这些模块可以预先进行组态、启动和测试。
这样,实现整个工厂的投运要快得多,更改系统也不会影响到生产运行。
通过PROFInet,TIA使用与厂商无关的通讯、自动化和工程标准,使系统使用智能仪表(甚至不同厂家)非常容易,不必管它们是否与PROFIBUS或者以太网相连接。
程序家族的故事一、程序家族有哪些成员?PLC的控制程序一般由主程序、子程序和中断程序组成。
西门子的S7-300/400将子程序分为功能(Function,或称为函数)和功能块(Function Block)。
在每一个扫描循环周期,CPU都要调用一次主程序,用户程序必须有一个并且只能有一个主程序。
小型控制系统可以只有主程序。
中断程序用于快速响应中断事件。
在中断事件发生时,CPU将停止执行当时正在处理的程序或任务,去执行用户编写的中断程序。
执行完中断程序后,继续执行被暂停执行的程序或任务。
二、哪些情况需要使用子程序?当系统规模很大、控制要求复杂时,如果将全部控制任务放在主程序中,主程序将会非常复杂,既难以调试,也难以阅读。
使用子程序可以将程序分成容易管理的小块,使程序结构简单清晰,易于调试、查错和维护。
子程序也可以用于需要多次反复执行相同任务的地方,只需要编写一次子程序,别的程序在需要的时候多次调用它,而无需重写该程序。
三、怎样调用子程序?主程序可以调用子程序,子程序也可以嵌套调用别的子程序。
嵌套调用的层数是有限制的,例如S7-200的最大嵌套深度为8级。
执行完子程序后,返回调用它的程序中的调用指令的下一条指令。
四、每个扫描周期都会执行子程序吗?子程序的调用可以是有条件的,在被调用期间,每个扫描周期都要执行一次被调用的子程序。
调用条件不满足时不会执行子程序中的指令,因此使用子程序可以减少扫描循环时。
五、停止调用子程序后,子程序中的线圈处于什么状态?停止调用子程序后,不再执行子程序中的指令。
子程序中线圈对应的编程元件如果没有受到别的程序的控制,将保持子程序最后一次执行后的状态不变。
即使控制这些线圈的触点的状态变化,该线圈对应的元件的状态也不会变化,因为这时根本就没有执行子程序中的指令。
六、怎样实现子程序的无条件调用?有的PLC的子程序调用指令不能直接接到左侧的垂直“电源”线上,需要通过触点电路来控制是否调用子程序,即子程序的调用是有条件的。
可以用一直为ON的特殊位元件(例如S7-200的SM0.0或FX系列的M8000)的常开触点来实现子程序的无条件调用。
七、什么是全局变量和局部变量?不同品牌的PLC的子程序大致可以分为两种,一种子程序没有输入、输出参数和局部变量,另一种则有。
以西门子的S7-200为例,输入I、输出Q、变量存储器V、内部存储器位M、定时器T、计数器C等属于全局变量,可以在符号表中为全局变量定义符号名。
程序组织单元(Program Organizational Unit)简称为POU,包括主程序、子程序和中断程序。
每个POU均有自己的64字节局部变量,局部变量用L(Local)来表示,局部变量只能在它所在的POU中使用。
与此相反,全局变量可以在各POU中使用。
八、局部变量有哪些类型?子程序可以使用下列局部变量:1、TEMP (临时变量)是暂时保存在局部数据区中的变量。
只有在执行该POU时,定义的临时变量才被使用,POU执行完后,不再保存临时变量的数值。
主程序和中断程序的局部变量表中只有TEMP变量。
2、IN(输入参数)由调用它的POU提供的传入子程序的输入参数。
3、OUT(输出参数)是子程序的执行结果,它被返回给调用它的POU。
4、IN_OUT(输入_输出参数)的初始值由调用它的POU传送给子程序,并用同一变量将子程序的执行结果返回给调用它的POU。
主程序和中断程序的局部变量表中只有临时变量TEMP。
九、子程序的输入、输出参数有什么作用?具有输入、输出参数和局部变量的子程序易于实现结构化编程,对于长期生产同类设备或生产线的厂家尤为有用。
编程人员为设备的各部件或工艺功能编写了大量的通用的子程序。
即使不知道子程序的内部代码,只要知道子程序的功能和输入、输出参数的意义,就可以用它们快速“组装”出满足不同的用户要求的控制程序。
就好像可以用数字集成电路芯片组成复杂的数字电路一样。
如果子程序没有输入、输出参数,这种子程序没有明确的软件接口,使用起来很不方便。
十、局部变量有什么优点?1、子程序如果没有局部变量,它和调用它的程序之间只能通过全局变量来交换数据,子程序内部也只能使用全局变量。
将它移植到别的项目时,需要对各POU使用的全局变量作统一安排,以保证不会出现地址冲突。
当程序很复杂,子程序很多时,这种地址分配是很花时间的。
如果子程序有局部变量,并且在子程序中只使用局部变量,不使用全局变量,因为与其他POU没有地址冲突,不作任何改动,就可以将子程序移植到别的项目中去。
为了减少移植子程序的工作量,在子程序中应尽量避免使用全局变量和全局符号。
2、如果使用局部变量表中的临时变量(TEMP),同一片物理存储器可以在不同的程序中重复使用。
十一、下面以S7-200为例,介绍子程序的编程和调用的过程。
1.创建子程序生成项目时,自动生成一个子程序。
打开程序编辑器,执行“编辑”菜单中的命令“插入”→“子程序”,将自动生成和打开新的子程序。
2.生成局部变量名为“模拟量计算”的子程序如下图所示,在该子程序的局部变量表中,定义了3个输入(IN)参数,一个输出(OUT)参数,和名为“暂存1”的临时(TEMP)变量。
局部变量表最左边的一列是自动分配的每个变量在局部存储器(L)中的地址。
3.编写子程序的梯形图局部变量表的下面是程序区(见上图),输入参数“转换值”是来自模拟量输入模块的与模拟量成正比的转换值,输出参数“模拟值”是计算出的对应的模拟量(例如压力、温度等)的工程值。
子程序中变量名称前的“#”表示该变量是局部变量,它是编程软件自动添加的,输入局部变量时不用输入“#”号。
特殊存储器位SM0.0的常开触点总是闭合。
4.子程序的调用可以在主程序、其他子程序或中断程序中调用子程序,调用子程序时将执行子程序中的指令,直至子程序结束,然后返回调用它的程序中该子程序调用指令的下一条指令之处。
创建子程序后,在上图左边指令树最下面的“调用子程序”文件夹中自动生成刚创建的子程序“模拟量计算”对应的图标。
在梯形图程序中插入子程序调用指令时,首先打开主程序,显示出需要调用子程序的网络。
打开指令树最下面的“调用子程序”文件夹,用鼠标左键按住需要调用的子程序图标,将它“拖”到程序编辑器中需要的位置。
放开左键,子程序块便被放置在该位置。
子程序方框中左边的“转换值”等是在子程序“模拟量计算”的变量声明表中定义的输入参数,右边的“模拟值”是输出参数。
它们被称为子程序的形式参数,简称为形参,形参在子程序内部的程序中使用。
调用子程序时,需要为每个形参指定实际的参数(简称为实参),例如为形参“转换值”指定的实参为模拟量输入字AIW2(见上图)。
子程序调用指令中的实参的有效操作数为存储器地址、常量、全局符号和调用指令所在的POU中的局部变量,不能指定被调用子程序中的局部变量。
CPU调用子程序时,输入参数被复制到子程序的局部存储器,子程序执行完后,从局部存储器复制输出参数到指定的输出参数地址。
十二、S7-300/400的子程序分为功能(Function)和功能块(Function Block)1.功能(FC)功能是用户编写的没有固定的存储区的程序块,其临时变量存储在局部数据堆栈中,功能执行结束后,不再保存这些数据。
可以用共享数据区来存储那些在功能执行结束后需要保存的数据。
功能与S7-200的子程序的局部变量基本上相同(见下图)。
与S7-200的子程序相比,其局部变量多了个返回值(RET_V AL)。
返回值实际上属于输出参数。
2.参数类型用于块之间传送数据的形式参数可以定义为12种基本数据类型、5种复杂数据类型(见上图),也可以为块之间传送数据的形式参数定义下列的参数类型:1)Timer或Counter:指定执行块时要使用的定时器或计数器。
例如定义功能中的输入变量TON1的数据类型为Timer,两次调用功能时分别设置TON1的实参为T5和T6。
2)块:指定用作输入或输出的特定块。
例如定义某个输入变量的数据类型为Block_FB,在调用块时指定块地址(例如FB 3)作为实参。
3)POINTER:指针是变量的地址而不是变量的值。
POINTER参数类型的形参应为地址,例如P#M50.0。
在STEP 7中,指针也可以用地址作实参(例如M 50.0)。
4)ANY:用于将任意的数据类型传递给声明的形参。
ANY可用于实参的数据类型未知,或实参可以使用任意数据类型的情况。
例如P#DB2.DBX50.0 BYTE 10表示DB 2中的DBB50~DBB59。
ANY也可以用地址作实参,例如DB2.DBW30和Q12.5,但是只能指向一个变量。
5)UDT:用户自定义的数据类型。
3.功能块(FB)功能块是用户编写的有自己的存储区(背景数据块)的程序块,功能块的输入、输出变量和静态变量(STA T)存放在指定的背景数据块(DI) 中,临时变量存储在局部数据堆栈中。
功能块执行完后,背景数据块中的数据不会丢失,但是不会保存局部数据堆栈中的数据。
4.背景数据块背景数据块是专门指定给某个功能块(FB)使用的数据块,它是FB专用的工作存储区。
背景数据块用来保存FB的实参和静态数据,背景数据块中的数据是自动生成的。
它们是功能块的变量声明表中的数据(不包括临时变量)。
调用功能块时应指定对应的背景数据块。
5.功能与功能块的区别FB和FC均为用户编写的子程序,局部变量表中均有IN、OUT、IN_OUT和TEMP变量。
FC的返回值Ret_Val实际上属于输出参数。
下面是FC和FB的区别:1)功能块有背景数据块,功能没有背景数据块。
2)只能在功能内部访问它的局部变量。
其他逻辑块可以访问功能块的背景数据块中的变量。
3)功能没有静态变量(STAT),功能块有保存在背景数据块中的静态变量。
功能如果有执行完后需要保存的数据,只能存放在全局变量(例如共享数据块和M区)中,但是这样会影响功能的可移植性。
如果功能或功能块的内部不使用全局变量,只使用局部变量,不需要作任何修改,就可以将它们移植到其他项目。
如果块的内部使用了全局变量,在移植时需要考虑每个块使用的全局变量是否会与别的块产生地址冲突。
4)功能块的局部变量(不包括TEMP)有初始值,功能的局部变量没有初始值。
调用功能时应给所有的形参指定实参。
调用功能块时可以不设置某些输入、输出参数的实参,此时这些参数将使用背景数据块中的初始值。
十三、中断与中断程序1.中断与中断程序有很多PLC内部或外部的事件是随机发生的,例如外部开关量输入信号的上升沿或下降沿、通信事件、高速计数器的当前值等于设定值和定时中断等,事先并不知道这些事件何时发生,但是它们出现时需要尽快地处理它们,PLC用中断来快速处理上述事件。
例如电力系统出现故障时,可能引发多个断路器相继跳闸。