您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 项目/工程管理 > 项目十一自动送料车控制系统
项目十一自动送料车控制系统项目十一自动送料车控制系统项目描述任务1认知PLC程序结构任务2自动送料车系统工艺过程分析;外部接线图设计和I/O接线任务3用经验法编程控制送料车任务4用顺序控制编程控制送料车项目描述初始状态:S1=OFF,S2=OFF,阀K1、K2,电动机M1、M2、M3皆为OFF。气动系统,红灯灭L1=OFF,绿灯L2=ON,表示允许汽车开进装料,K1阀通电打开进料,当料斗中料到达上位S1时,K1阀关闭;5s后,红灯L1亮,绿灯L2灭。电机M3运行,电机M3运行2s后M2接通,M2运行2s后M1也接通运行,料斗出料阀K2在M1接通2s后打开出料。当汽车装料后S2=ON,料斗出料阀K2关闭,3s后电机M1停止运行,M1停止3s后m2停止,M2停止3s后M3停止,此时红灯灭L1=OFF,绿等L2=ON,汽车可以开走。前一汽车开走5s后,下一汽车进来,如此循环。当按下停止按钮后,系统停车顺序按汽车装满后的流程停车,直到全部到初始状态后系统停止运行。项目实施过程一、方案设计(1)硬件设计(2)软件设计二、项目实施(1)硬件接线(2)程序录入三、设备调试四、项目报告任务1认知PLC程序结构学习目标:掌握程序控制功能指令,PLC系统控制的典型程序结构1、S7-200的指令规约1.1使能输入与使能输出梯形图中有一条提供“能流”的左侧垂直母线,图中I2.4的常开触点接通时,能流流到功能块DIV_I的数字量输入端EN(EnableIN,使能输入),该输入端有能流时,功能指令DIV_I才能被执行。如果功能块在EN处有能流而且执行时无错误,则ENO(EnableOutput,使能输出)将能流传递给下一元件。如果执行过程中有错误,能流在出现错误的功能块终止。与ENO指令AENO,与ENO指令ENO是梯形图和功能框图编程时指令盒的布尔能流输出端。如果指令盒的能流输入有效,同时执行没有错误,ENO就置位,将能流向下传递。当用梯形图编程时,且指令盒后串联一个指令盒或线圈,语句表语言中用AENO指令描述。指令格式:AENO(无操作数)返回本节LDI0.0//使能输入+IVW200,VW204//整数加法指令,VW200+VW204=VW204AENO//与ENO指令,判断整数加法指令执行是否出错ATCHINT_0,10//如果加法指令执行正确,则调用中断程序INT_0//中断事件号为10与ENO指令AENO指令只能在语句表中使用,将栈顶值和ENO位的逻辑与运算,运算结果保存到栈顶。程序如图所示。返回本节与ENO指令1.2梯形图中的网络与指令在梯形图中,程序被划分为称为网络(Network)的独立的段,网络由触点、线圈和功能块组成。在梯形图中给出了网络的编号,如网络2。能流只能从左往右流功,网络中不能有断路、开路和反方向的能流。允许以网络为单位给梯形图程序加注释。STL程序不使用网络,如果用Network这个关键词对程序分段,可以将STL程序转换为梯形图程序。必须有能流输入才能执行的功能块或线圈指令称为条件输入指令,它们不能直接连接到左侧母线上。如果需要无条件执行这些指令,可以用接在左侧母线上的SM0.0(该位始终为1)的常开触点来驱动它们。有的线圈或功能块的执行与能流无关,例如标号指令LBL和顺序控制指令SCR等,称为无条件输入指令,应将它们直接接在左侧母线上。不能级连的指令块没有END输出端和能流流出。JMP、CRET、LBL、NEXT、SCR和SCRE等属于这类指令。触点比较指令没有能流输入时,输出为0,有能流输入时,输出与比较结果有关。1.3其他规约SIMATIC程序编辑器中的直接地址由存储器区和地址组成,如I0.0。IEC程序编辑器用%表示直接地址.如%I0.0。可以用数字和字母组成的符号来代替存储器的地址,符号地址便于记忆,使程序更容易理解。程序编译后下载到PLC时,所有的符号地址被转换为绝对地址。“INPUT1’’为全局符号名,符#INPUT1中的“#”号表示该符号是局部变量,红色问号“??.?”或“????”表示需要输入的地址或数值。梯形图中的规约:“”是一个开路符号,或需要能流连接。“|”表示输出是一个可选的能流,用于指令的级连。符号“”表示有一个值或能流可以使用。2.程序控制指令1.1结束指令结束指令有两条:END和MEND。两条指令在梯形图中以线圈形式编程。END(ConditionalEND),条件结束指令使能输入有效时,终止用户主程序。MEND,无条件结束指令无条件终止用户程序的执行,返回主程序的第一条指令。用Micro/Win32编程时,不需手工输入MEND指令,而是由软件自动加在主程序结尾。指令格式:END(无操作数)2.暂停指令STOP,暂停指令使能输入有效时,该指令使主机CPU的工作方式由RUN切换到STOP方式,从而立即终止用户程序的执行。STOP指令在梯形图中以线圈形式编程。指令不含操作数。STOP指令可用在主程序、子程序和中断程序中。指令格式:STOP(无操作数)返回本节2.2程序控制指令2.3监控定时器复位指令监控定时器(Watchdog)又称看门狗,它的定时时间为500ms,每次扫描都被自动复位一次,正常工作时,若扫描周期小于500ms,它不起作用。如扫描周期大于500ms,监控定时器会停止执行用户程序。如:1)用户程序很长;2)出现中断事件时,执行中断程序的时间很长;3)循环指令使扫描时间延长。4)为了防止在正常情况下监控定时器动作,可将监控定时器复位指令插到程序适当的地方。2.4看门狗复位指令WDR,看门狗复位指令当使能输入有效时,执行WDR指令,每执行一次,看门狗定时器就被复位一次。用本指令可用以延长扫描周期,从而可以有效避免看门狗超时错误。指令格式:WDR(无操作数)程序实例:指令STOP、END、WDR的应用如图所示。停止、结束、看门狗指令应用LDSM5.0//检查I/O错误OSM4.3//运行时刻检查编程OI0.3//外部切换开关STOP//条件满足,由RUN//切换到STOP方式////LDI0.5//外部停止控制END//停止程序执行////LDM0.4//用触点重新触发WDR//看门狗定时器AI0.2//返回本节2.5循环指令1.循环开始2.FOR,循环开始指令。用来标记循环体开始,3.在LAD中有3个输入端:4.INDX(Index):当前循环计数5.INIT(Initial):循环初值6.FINAL(Final):循环终值2.循环结束3.NEXT,循环结束指令。用来标记循环体结束,4.无操作数。5.指令格式:FORINDX,INIT,FINALNEXTFOR指令必须与NEXT指令配套使用。允许循环嵌套,即FOR/NEXT循环在另一个FOR/NEXT循环之中,最多可嵌套8层。图6-2中的I2.1接通时,执行100次标有1的外层循环,I2.1和I2.2同时接通时,执行2次标有2的内层循环。【例6-1】在I0.1=1的上升沿,将10,15,20,…,35这6个数分别送到VW10,VW12,…,VW20。程序实例LDM0.0//使能输入FORVW10,+1,+20//循环开始//与第2个NEXT//之间为一级循环体LDM0.1//使能输入FORVW20,+1,+5//循环开始//与第1个NEXT//之间为二级循环体LDI0.0//使能输入CALLSBR_0//调用子程序0//本梯级为二级//循环体的功能段NEXT//循环结束指令LDSM0.0//使能输入INCWVW100//字增指令//每执行一次一级//循环体,VW100//的值增1NEXT//循环结束指令返回本节2.6跳转与标号指令1.跳转指令(1)跳转指令JMP(Jump),跳转指令使能输入有效时,使程序流程跳到同一程序中的指定标号n处执行。执行跳转指令时,逻辑堆栈的栈顶值总是1。(2)标号指令LBL(Label),标号指令。标记程序段,作为跳转指令执行时跳转到的目的位置。操作数n为0~255的字型数据。指令格式:JMPnLBLn程序实例:如右图所示。用增减计数器进行计数,如果当前值小于500,则程序按原顺序执行,若当前值超过500,则跳转到从标号10开始的程序执行。2.7诊断LED指令S7-200检测到致命错误时,SF/DlAG(故障/诊断)LED发出红光。在V4.0版编程软件的系统块的“配置LED”选项卡中,如果选择了有变量被强制或是有I/0错误时LED亮,出现上述诊断事件时LED将发黄光。如果两个选项都没有被选择,SF/DIAGLED发黄光只受DIAG_LED指令的控制。如果此时指令的输人参数IN为0,诊断LED不亮。如果IN大于0,诊断LED发黄光。图6-4的VB10中如果有非零的错误代码,将使诊断LED亮。3局部变量表与子程序3.1局部变量表3.2建立子程序3.3子程序调用3.4带参数的子程序调用3.1局部变量表(1)局部变量与全局变量程序中的每个POU(ProgramOrganizationalunit,程序组织单元)均有自己的由64字节L存储器组成的局部变量表。局部变量只在它被创建的POU中有效,在局部变量表中定义。全局符号在各POU中均有效,只能在符号表/局变量表中定义。全局符号与局部变量名称相同时,在定义局部变量的POU中,该局部变量的定义优先。该全局定义则在其它POU中使用。局部变量有以下优点:(a)在子程序中只用局部变量,不用绝对地址成全局符号,子程序可移植到别的项目中去。(b)如果使用临时变量(TEMP),同一片物理存储器可在不同的程序中重复使用。(2)局部变量的类型TRMP(临时变量):暂时保存在局部数据区中的变量。IN(输入变量):由调用它的POU提供的输入参数。OUT(输出变量):返回给调用它的POU的输出参数;IN_OUT(输入/输出变量):其初始值由调用它的POU提供,被子程序修改后返回给调用它的POU。(3)局部变量的赋值在局部变量表中赋值时,只需指定局部变量的类型(TEMP、IN、IN_OUT或OUT)和数据类型,不用指定存储器地址,程序编辑器自动地在L存储区中为所有局部变量指定存储器位置。起始地址为L0,1~8个连续的位参数分配一个字节,字节中的位地址为Lx.0~Lx.7。字节、字和双字值在局部存储器中按字节顺序分配,例如LBx、Lwx或LDx。(4)在局部变量表中增加新的变量对于主程序与中断程序,局部变量表显示一组已被预先定义为TEMP(临时)变量的行。要向表中增加行,只需用右健单击表中的某一行,选择“插入行”指令,在所选行的上部插入新的行,选择“插入行下”指令,在所选行的下部插入新的行。对于子程序,局部变量表显示数据类型被项先定义为IN、IN_OUT、OUT和TEMP的一系列行,不能改变它们的顺序。如果要增加新的局部变量,必须用鼠标右键单击已有的行,并用弹出菜单在所击行的上下插入相同类型的另一局部变量。(5)局部变量数据类型检查局部变量作为参数向子程序传递时,在该子程序的局部变量表中指定的数据类型必须与调用POU中的数据类型值匹配。例如从主程序OB1调用子程序SBR0,使用名为INPUT1的全局符号作为子程序的输入参数。在SBR0的局部变量表中,已经定义了一个名为FIRST的局部变量作为该输入参数。当OB1调用SBR0时.INPUT1的数值被传入门FIRST,INPUT1和FIRST的数据类型必须匹配。3.2子程序的编写1.子程序的作用子程序常用于需要多次反复执行相同任务的地方,只需要写一次子程序,别的程序在需要子程序的时候调用它,而无需重写该程序。子程序的调用是有条件的,未调用它时不会执行子程序中的指令,因此使用子程序可以减少扫描时间。使用子程序可以将程序分成容易管理的小块,使程序结构简单清晰,易于查错和维护。如果子程序中只使用局部变量,因为与其他POU没有地址冲突,可以将子程序移植到其他项目。为了移植子程序,应避免使用全局符号和变量,例如
本文标题:项目十一自动送料车控制系统
链接地址:https://www.777doc.com/doc-806169 .html