资源描述
,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,第三章 STEP7编程技术,3.1 STEP 7中的块,在STEP7软件中主要有以下几种类型的块:,组织块: OB(Organization Block),功能: FC(Function),功能块: FB(Function Block),系统功能: SFC(System Function),系统功能块:SFB(System Function Block),背景数据块:DB(Instance Data Block),共享数据块:DB(Share Data Block),3.1.1组织块OB,启动组织块,循环执行的程序组织块,定期执行的程序组织块,事件驱动执行的程序组织块,1.启动组织块,(1)OB100为完全再启动类型(暖启动)。启动时,过程映像区和不保持的标志存储器、定时器及计数器被清零,保持的标志存储器、定时器和计数器以及数据块的当前值保持原状态,执行OB100,然后开始执行循环程序OB1。一般S7-300PLC都采用此种启动方式。,(2) OB101为再启动类型(热启动)。启动时,所有数据(无论是保持型和非保持型)都将保持原状态,并且将OB101中的程序执行一次。然后程序从断点处开始执行。剩余循环执行完以后,开始执行循环程序。热启动一般只有S7-400具有此功能。,(3) OB102为冷启动方式。CPU318-2和CPU417-4具有冷启动型的启动方式,冷启动时,所有过程映像区和标志存储器、定时器和计数器(无论是保持型还是非保持型)都将被清零,而且数据块的当前值被装载存储器的原始值覆盖。然后将OB102中的程序执行一次后执行循环程序。,2.循环执行的程序组织块,OB1是循环执行的组织块。其优先级为最低。PLC在运行时将反复循环执行OB1中的程序,当有优先级较高的事件发生时,CPU将中断当前的任务,去执行优先级较高的组织块,执行完成以后,CPU将回到断点处继续执行OB1中的程序,并反复循环下去,直到停机或者是下一个中断发生。一般用户主程序写在OB1中。,3.定期的程序执行组织块,OB10、OB11OB17为日期中断组织块。通过日期中断组织块可以在指定的日期时间执行一次程序,或者从某个特定的日期时间开始,间隔指定的时间(如一天,一个星期,一个月等)执行一次程序。,OB30、OB31OB38为循环中断组织块。通过循环中断组织块可以每隔一段预定的时间执行一次程序。循环中断组织块的间隔时间较短,最长为1分钟。最短为1毫秒。在使用循环中断组织块时,应该保证设定的循环间隔时间大于执行该程序块的时间,否则CPU将出错。,4.事件驱动的程序执行组织块,延时中断组织块,硬件中断组织块,异步错误组织块,同步错误组织块,延时中断组织块,OB20OB27:延时中断,当某一事件发生后,延时中断组织块(OB20)将延时指定的时间后执行。OB20 OB27只能通过调用系统功能SFC32而激活,同时可以设置延时时间。,硬件中断组织块,OB40OB47:硬件中断。一旦硬件中断事件发生,硬件中断组织块OB40OB47将被调用。硬件中断可以由不同的模块触发,对于可分配参数的信号模块DI、DO、AI、AO等,可使用硬件组态工具来定义触发硬件中断的信号;对于CP模块和FM模块,利用相应的组态软件可以定义中断的特性。,异步错误组织块,OB80OB87:异步错误中断。异步错误是PLC的功能性错误。它们与程序执行时不同步地出现,不能跟踪到程序中的某个具体位置。 在运行模式下检测到一个故障后,如果已经编写了相关的组织块,则调用并执行该组织块中的程序。如果,发生故障时,相应的故障组织块不存在,则CPU将进入STOP模式。,同步错误组织块,OB121、OB122:同步错误中断。如果在某特定的语句执行时出现错误,CPU可以跟踪到程序中某一具体的位置。由同步错误所触发的错误处理组织块,将作为程序的一部分来执行,与错误出现时正在执行的块具有相同的优先级。,编程错误,例如在程序中调用一个不存在的块,将调用OB121。,访问错误,例如程序中访问了一个有故障或不存在的模块,将调用OB122。,3.1.2,功能FC和功能块FB,FC和FB都是用户自己编写的程序块,用户可以将具有相同控制过程的程序编写在FC或FB中,然后在主程序OB1或其他程序块中(包括组织块和功能、功能块)调用FC或FB。 FC或FB相当于子程序的功能,都可以定义自己的参数,1. FC和FB的变量声明表的差别,2FC和FB参数赋值不同,FC没有自己的背景数据块,FB有自己的背景数据块,FC的参数必须指定实参,FB的参数可根据需要决定是否指定实参,3.1.3,系统功能SFC和系统功能块SFB,SFC和SFB是预先编好的可供用户调用的程序块,它们已经固化在S7PLC的CPU中,其功能和参数已经确定。一台PLC具有哪些SFC和SFB功能,是由CPU型号决定的。具体信息可查阅CPU的相关技术手册。通常SFC和SFB提供一些系统级的功能调用,如通讯功能、高速处理功能等。注意:在调用SFB时,需要用户指定其背景数据块(CPU中不包含其背景数据块),并确定将背景数据块下载到PLC中。,3.1.4背景数据块和共享数据块,背景DB是和某个FB或SFB相关联,其内部数据的结构与其对应的FB或SFB的变量声明表一致。,共享DB的主要目的是为用户程序提供一个可保存的数据区,它的数据结构和大小并不依赖于特定的程序块,而是用户自己定义。需要说明的是,背景DB和共享DB没有本质的区别,它们的数据可以被任何一个程序块读写。,3.2STEP7的程序结构和编程语言,STEP7的程序结构可分为以下三类:,1.线性程序结构,2.分块程序结构,3.结构化程序结构,编程语言 (三种基本编程语言),1.梯形图LAD,2.语句表STL,3.功能图FBD,3.3数据类型,数据是程序处理和控制的对象,在程序运行过程中,CPU处理的一串二进制符号所代表的意义是由数据类型决定的,数据类型决定了数据的属性,例如数据长度,取值范围等。,STEP7中的数据可分为以下三大类:,基本数据类型,复合数据类型,参数数据类型,基本数据类型(一),位(BOOL),字节(BYTE),字(WORD),双字(DOUBLE WORD),整数(INT),双整数(DOUBLE INT),浮点数(REAL),基本数据类型(二),S5TIME(SIMATIC时间),IEC时间(TIME),IEC日期(date),日计时(TIME_OF_DAY),字符(CHAR),3.3.2复杂数据类型,日期时间数据类型( Data_And_Time ),字符串类型(String),数组类型Array,结构(STRUCT),用户定义类型(UDT),3.3.3,参数数据类型,参数数据类型是一类用于功能FC或功能块FB的数据类型,主要包括以下两种:,Pointe指针类型,6字节指针类型,传递数据块号和数据地址,Any指针类型,10字节指针类型,传递数据块号、数据地址、数据数量以及数据类型,3.4,S7的系统存储区和寻址方式,S7的系统存储区集成在CPU中,不能被扩展。系统存储区根据功能分为不同的区域供用户使用。,S7的寻址方式为:,符号地址寻址,绝对地址寻址,3.4.1系统存储区,输入过程暂存区(I),输出过程暂存区(Q),位存储区(M),外部输入输出(PI/PQ),计时器(T),计数器(C),数据块(DB),局部数据(L),3.4.2绝对地址寻址,位寻址,字节寻址,字寻址,双字寻址,位寻址,位寻址是最小存储单元的寻址方式。寻址时,采用以下结构:,存储区关键字+字节地址+位地址:,例如: Q 10.3,Q:表示输出过程暂存区;,10:表示第十个字节;字节地址从0开始,最大值由该存储区的大小决定;,3:表示位地址为3,位地址的取值范围是07。,字节寻址,字节寻址时,访问一个8位的存储区域。寻址时,采用以下结构进行寻址:,存储区关键字+字节的关键字(B)+字节地址,例如:MB0,M:表示位存储区,B:表示字节byte,0:表示第0个字节。其中最低位的位地址为M0.0,最高位的为M0.7,字节寻址,字寻址,字寻址时,访问一个16位的存储区域,包含两个字节。寻址时采用以下结构:,存储区关键字+字的关键字(W)+第一字节地址,例如:IW10,I:表示输入过程暂存区,W:表示字word,10:表示从第10个字节开始,包括两个字节的存储空间,即IB10和IB11。,字寻址,双字寻址,双字寻址时,访问一个32位的存储区域,包含4个字节。寻址时采用以下结构:存储区关键字+字的关键字(D)+第一字节地址,例如:LD20,L:表示局部数据暂存区,D:表示字word,20:表示从第20个字节开始,包括4个字节的存储空间。包括LB20、LB21、LB22和LB23四个字节,双字寻址,3.4.3符号地址寻址,STEP7中的符号寻址是先给需要使用的绝对地址或参数变量定义符号,然后在程序中使用所定义好的符号进行编程寻址,STEP7中可以定义的符号有两种:,全局符号,局部符号,全局符号 和局部符号,全局符号,在符号编辑器中定义,适用于所有的程序块,以双引号表示,局部符号,在块中的变量申明表中定义,所定符号只在本程序块中有效,符号前加#号表示,3.5STEP7指令系统(一),S7系列PLC的CPU中的寄存器,累加器(Accumulators),地址寻址寄存器(Address Register),数据块寄存器(Data Block Register),状态字(Status Word),位逻辑指令,3.5.1S7系列PLC的CPU中的寄存器,状态字,/FC:首次检查位。,RLO:逻辑操作结果位。,STA:状态位,OR:或位,OV:溢出位,OS:溢出存储位,CC0和CC1:条件码,BR:二进制结果,3.5.2,位逻辑指令,常开接点,常闭接点,输出线圈,程序实例:,位逻辑指令,中间输出单元,信号流反向指令,复位线圈,置位线圈,复位置位触发器和置位复位触发器,位逻辑指令,程序实例,对应时序图如下所示:,位逻辑指令,时序图,位逻辑指令,正跳沿(上升沿)检测指令,位逻辑指令,负跳沿(下降沿)检测指令,位逻辑指令,地址正跳沿检测,地址负跳沿检测,SAVE指令,位逻辑指令地址上升沿检测指令示例,位逻辑指令以上程序的时序图,3.6实训四:PLC控制一台电机正反转,使用S7-300PLC实现一台电动机的正反转控制。控制要求如下:要求能实现电机的正转和反转控制,并能进行正反转的直接切换。另外,还可进行正反向的点动控制,当电机处于正常运行时,点动按钮不起作用。,3.6.1实训目的:,掌握S7-300PLC输入输出模块接线方法;,掌握西门子S7-300PLC编程软件的使用方法和程序输入、下载和调试方法;,掌握基本指令的使用方法;,3.6.2,实训设备:,PLC实验板(西门子S7-300),开关按钮5个,直流继电器两个(线圈电压为24V),直流电动机一台(额定电压9V),导线若干,PC机和STEP 7编程调试软件,3.6.3,实训内容:,系统分析(预习):,PLC硬件配置,分析控制要求进行输入输出点分配,并根据资源分配画出外部接线图。,根据控制要求设计程序。,在线调试程序,3.6.4,实训步骤:,按照输入输出模块接线图以及直流电动机主电路接线图进行外部接线;,使用STEP-7软件创建项目,进行硬件配置和参数设置;,打开项目中的OB1程序块编写并书写控制程序;,下载,并调试程序;,打开直流电动机主电路电源进行整体调试;,参考硬件配置表,序号,名称,型号说明,数量,1,CPU,CPU313,1,2,电源模块,PS307,1,3,开关量输入模块,SM321,1,4,开关量输出模块,SM322,1,5,前连接器,20针,2,参考输入输出地址分配表,序号,输入信号名称,地址,1,正向长动按钮SB1(常开),I0.0,2,正向点动按钮SB2(常开),I0.1,3,反向长动按钮SB3(常开),I0.2,4,反向点动按钮SB4(常开),I0.3,5,停止按钮SB5(常开),I0.4,序号,输出信号名称,地址,1,正转继电器KM1,Q4.0,2,反转继电器KM2,Q4.1,3.7,STEP7指令系统(二),定时器指令,1.脉冲定时器:-(SP),2.扩展脉冲定时器-(SE),3.开通延时定时器-(SD),4.保持型开通延时定时器-(SS),5.关断延时定时器-(SF),数据装载和传送指令(MOVE),1、脉冲定时器 -(SP),-(SP)指令是产生指定时间宽度脉冲的定时器。,LAD,参数,数据类型,存储区,说明,TIMER,T,地址表示要起动的计时器号,时间值,S5TIME,I,Q,M,D,L,定时时间值(S5TIME格式),1、脉冲定时器 -(SP),如图所示程序,定时器定义的时间值为2S,1、脉冲定时器 -(SP),上图程序对应的时序图如图所示,1、脉冲定时器 -(SP),T1接点控制Q0.0线圈,因此T1接点的状态与Q0.0的状态一致。由时序图可以看出,脉冲定时器每次起动的条件是逻辑位有正跳沿发生,定时器启动计时,T1接点开始输出高电平“1”。从时序图可以看到,-(SP)指令计时的过程中,逻辑位的状态若变为“0”(如图3.7.2第7秒处)则定时器停止计时,且输出为“0”。因此,脉冲定时器输出的高电平的宽度小于或等于所定义的时间值。,1、脉冲定时器 -(SP),脉冲定时器的方框指令如表所示,LAD,参数,数据类型,说明,存储区,TIMER,要启动的计时器号如T0,T,S,BOOL,启动输入端,I,Q,M,D,L,TV,S5TIME,定时时间(S5TIME格式),R,BOOL,复位输入端,Q,BOOL,定时器的状态,BI,WORD,当前时间(整数格式),BCD,WORD,当前时间(BCD码格式),1、脉冲定时器 -(SP),如图所示的程序中,可从MW10和MW12中以不同的格式读出定时器计时T1剩余的时间。,1、脉冲定时器 -(SP),上图所示的程序对应的时序图如图所示,2、扩展脉冲定时器 -(SE),-(SE)指令与-(SP)指令相似,但-(SE)指令具有保持功能。,LAD,参数,数据类型,存储区,说明,TIMER,T,地址表示要起动的计时器号,时间值,S5TIME,I,Q,M,D,L,定时时间值(S5TIME格式),2、扩展脉冲定时器 -(SE),如图所示的程序,2、扩展脉冲定时器 -(SE),上图所示的程序对应的时序图如图所示,2、扩展脉冲定时器 -(SE),一旦逻辑位(即I0.0的状态)有正跳沿发生,定时器T0启动,同时输出高电平“1”。定时时间到后,输出将自动变成低电平“0”。如果定时时间尚未到达,逻辑位的状态就由“1”变为“0”,这时定时器仍然继续运行,直到计时完成。这一点是-(SE)指令与-(SP)指令的不同之处。,2、扩展脉冲定时器 -(SE),扩展脉冲定时器的方框指令如表所示,LAD,参数,数据类型,说明,存储区,TIMER,要启动的计时器号如T0,T,S,BOOL,启动输入端,I,Q,M,D,L,TV,S5TIME,定时时间(S5TIME格式),R,BOOL,复位输入端,Q,BOOL,定时器的状态,BI,WORD,当前时间(整数格式),BCD,WORD,当前时间(BCD码格式),3、开通延时定时器-(SD),开通延时定时器指令-(SD),相当于继电器控制系统中的通电延时时间继电器。,LAD,参数,数据类型,存储区,说明,TIMER,T,地址表示要起动的计时器号,时间值,S5TIME,I,Q,M,D,L,定时时间值(S5TIME格式),3、开通延时定时器-(SD),如图所示的程序:,3、开通延时定时器-(SD),上图所示的程序对应的时序图如图所示,3、开通延时定时器-(SD),-(SD)对应的方框如表所示,LAD,参数,数据类型,说明,存储区,TIMER,要启动的计时器号如T0,T,S,BOOL,启动输入端,I,Q,M,D,L,TV,S5TIME,定时时间(S5TIME格式),R,BOOL,复位输入端,Q,BOOL,定时器的状态,BI,WORD,当前时间(整数格式),BCD,WORD,当前时间(BCD码格式),4、保持型开通延时定时器-(SS),保持型开通延时-(SS)与开通延时定时器-(SD)类似,但-(SS)指令有保持功能。,LAD,参数,数据类型,存储区,说明,TIMER,T,地址表示要起动的计时器号,时间值,S5TIME,I,Q,M,D,L,定时时间值(S5TIME格式),4、保持型开通延时定时器-(SS),保持型开通延时定时器的应用方法如图所示,4、保持型开通延时定时器-(SS),上图中的程序对应的时序图如图所示,4、保持型开通延时定时器-(SS),保持型开通延时定时器的方框指令如表所示,LAD,参数,数据类型,说明,存储区,TIMER,要启动的计时器号如T0,T,S,BOOL,启动输入端,I,Q,M,D,L,TV,S5TIME,定时时间(S5TIME格式),R,BOOL,复位输入端,Q,BOOL,定时器的状态,BI,WORD,当前时间(整数格式),BCD,WORD,当前时间(BCD码格式),5、关断延时定时器-(SF),关断延时定时器-(SF)相当于继电器控制系统中的断电延时时间继电器。也是定时器指令中唯一的一个由下降沿启动的定时器指令。,LAD,参数,数据类型,存储区,说明,TIMER,T,地址表示要起动的计时器号,时间值,S5TIME,I,Q,M,D,L,定时时间值(S5TIME格式),5、关断延时定时器-(SF),如图所示的程序,5、关断延时定时器-(SF),上图中的程序对应的时序图如图所示,5、关断延时定时器-(SF),关断延时计时器的方框指令如下表所示,LAD,参数,数据类型,说明,存储区,TIMER,要启动的计时器号如T0,T,S,BOOL,启动输入端,I,Q,M,D,L,TV,S5TIME,定时时间,(S5TIME格式),R,BOOL,复位输入端,Q,BOOL,定时器的状态,BI,WORD,当前时间(整数格式),BCD,WORD,当前时间(BCD码格式),定时器应用举例:,1、使用-(SP)或-(SE)指令构成脉冲发生器:使用脉冲定时器如图所示的程序可产生周期性变化的脉冲信号。,定时器应用举例:,上图中的程序对应的时序图如图所示,定时器应用举例:,程序又可写成如图所示的程序,定时器应用举例:,2、使用-(SD)指令产生周期性变化的脉冲信号:,使用-(SD)指令可以采用下图所示的程序得到脉冲信号,定时器应用举例:,上图所示的程序对应的时序图如图所示,定时器应用举例:,使用 -(SD)指令还可以用二分频电路产生一个方波。程序如图所示,定时器应用举例:,时序图如图所示,数据装载和传送指令:(MOVE),数据装载和传送指令(MOVE)如表所示,LAD,参数,数据类型,说明,存储区,EN,BOOL,允许输入,I,Q,M,D,L,ENO,BOOL,允许输出,IN,长度为8位、16位、32位的所有数据类型,源数据,OUT,长度为8位、16位、32位的所有数据类型,目的地地址,数据装载和传送指令:(MOVE),如图3.7.20所示程序,3.8实训5:交通信号灯控制,实训目的,1.掌握交通信号的工作原理,2.熟悉西门子S7-300PLC编程软件的使用方法和程序输入、下载和调试方法,3.掌握S7-300PLC定时器的使用方法,实训设备,1. PLC实验板(西门子S7-300),2.开关按钮1个,3.指示灯6个(也可直接使用S7-300PLC输出模块输出指示灯),4. PC机和STEP 7编程调试软件,实训内容:交通信号灯的控制要求,实训步骤,实训内容:交通信号灯的控制要求,交通信号灯模型如图所示,实训内容:交通信号灯的控制要求,控制要求如下:自动开关合上之后,东西绿灯亮8秒灭,黄灯亮3秒之后灭,红灯亮10秒后闪2秒然后绿灯亮.循环,对应东西绿黄灯亮时,南北红灯亮9秒后闪2秒,接着绿灯亮9秒后闪秒灭,黄灯亮3秒,红灯又亮.循环。当断开自动开关时,交通信号灯立刻停止工作。,实训内容:交通信号灯的控制要求,根据控制要求画出交通信号灯的时序图如图所示,实训内容:交通信号灯的控制要求,系统分析,1PLC硬件配置:控制系统中的硬件配置如下,序号,名称,型号说明,数量,1,CPU,CPU313,1,2,电源模块,PS307,1,3,开关量输入模块,SM321,1,4,开关量输出模块,SM322,1,5,前连接器,20针,2,实训内容:交通信号灯的控制要求,2分析控制要求进行输入输出点分配,并根据分配画出外部接线图。,序号,输入信号名称,地址,1,自动开关QS(常开),I0.0,序号,输出信号名称,地址,1,东西绿灯HL1,Q4.0,2,东西黄灯HL2,Q4.1,3,东西红灯HL3,Q4.2,4,南北绿灯HL4,Q4.3,5,南北黄灯HL5,Q4.4,6,南北红灯HL6,Q4.5,实训内容:交通信号灯的控制要求,输入输出模块接线如图所示,实训内容:交通信号灯的控制要求,3程序设计: 设计提示:可先采用SE指令,产生周期为23秒,占空比为11:12的矩形波。再将其分割成所需要的矩形波。参考程序见附录光盘,实训步骤,1按照输入输出模块接线图以及直流电动机主电路接线图进行外部接线;,2使用STEP-7软件创建项目,并进行硬件配置和参数设置,3打开项目中的OB1程序块编写控制程序,4下载,调试程序,3.9STEP7指令系统(三),移位指令和循环指令,控制转移指令及应用,比较指令及其应用,移位指令和循环指令,字左移指令SHL_W,字右移指令SHR_W,双字左移指令SHL_DW,双字右移指令SHR_DW,整数右移指令SHR_I,双整数右移指令SHR_DI,循环指令能够将累加器1整个内容逐位向左或者向右循环移位。可使用的循环指令有:,双字左循环指令ROL_DW,双字右循环指令ROR_DW,1字左移指令,当允许输入EN位为高电平“1”时,将执行移位指令,将IN端指令的内容送入累加器1低字中,并左移N端指定的位数,然后写入OUT端指令的目的地址中。,LAD,参数,数据类型,说明,存储区,EN,BOOL,允许输入,I、Q、M、D、L,ENO,BOOL,允许输出,IN,WORD,移位对象,N,WORD,移动的位数,OUT,WORD,移动操作的结果,1字左移指令,字左移指令的工作方式如图所示,1字左移指令,如图所示的程序中,当I0.2的状态为“1”时,CPU把MW2中的数据读入累加器1低字中,并将累加器1低字的内容左移2位(N=W#16#2),然后再将移位后的内容写入到MW10中,注意MW2中的内容并没有变化,1字左移指令,要想在同一个存储字中看到移位的效果,可以将IN和OUT端指定相同的地址。如图所示,1字左移指令,注意:移位指令是高电平执行。要每次按下I0.2的外部输入按钮,移位指令只执行一次,可以在I0.2的常开接点后加上升沿检测指令-(P),将EN端的信号变成只有一个扫描周期的高电平信号。如图所示,2字右移指令,字右移指令执行时,当允许输入EN的状态为“1”时,将执行移位指令,LAD,参数,数据类型,说明,存储区,EN,BOOL,允许输入,I、Q、M、D、L,ENO,BOOL,允许输出,IN,WORD,移位对象,N,WORD,移动的位数,OUT,WORD,移动操作的结果,2字右移指令,字右移指令工作方式如图所示,2字右移指令,如图所示的程序,3双字左移指令,双字左移指令是移位对象是32位,当EN端的为“1”时,CPU将IN端的内容读入累加器1,并将累加器1中的内容整体左移N端指定的位数。移位过程中,按照高位丢失低位补“0”的原则进行,LAD,参数,数据类型,说明,存储区,EN,BOOL,允许输入,I、Q、M、D、L,ENO,BOOL,允许输出,IN,DWORD,移位对象,N,WORD,移动的位数,OUT,DWORD,移动操作的结果,4双字右移指令,双字右移指令移位的对象是32位,当EN端的状态为“1”时,CPU将IN端指定的内容读入累加器1中,并将累加器1整体右移N端指定的位数,按照低位丢失高位补“0”的原则进行,LAD,参数,数据类型,说明,存储区,EN,BOOL,允许输入,I、Q、M、D、L,ENO,BOOL,允许输出,IN,DWORD,移位对象,N,WORD,移动的位数,OUT,DWORD,移动操作的结果,5整数右移指令,整数右移指令与字移位指令不同。整数只有右移指令,移位时按照低位丢失,高位补符号位状态的原则,也就是正数高位补“0”,负数高位补“1”的原则,LAD,参数,数据类型,说明,存储区,EN,BOOL,允许输入,I、Q、M、D、L,ENO,BOOL,允许输出,IN,INT,移位对象,N,WORD,移动的位数,OUT,INT,移动操作的结果,5整数右移指令,整数右移指令工作原理如图所示,6双整数右移指令,双整数右移指令与整数右移类似,双整数移位对象为32位,LAD,参数,数据类型,说明,存储区,EN,BOOL,允许输入,I、Q、M、D、L,ENO,BOOL,允许输出,IN,INT,移位对象,N,WORD,移动的位数,OUT,INT,移动操作的结果,7双字左循环指令,双字左循环指令的循环移位对象为32位,当EN端的状态为“1”时,将执行指令:CPU将IN端指定的内容读入累加器1中,然后将累加器1中的内容循环左移N端指定的位数,并写入OUT端指定的目的地址中,LAD,参数,数据类型,说明,存储区,EN,BOOL,允许输入,I、Q、M、D、L,ENO,BOOL,允许输出,IN,WORD,移位对象,N,WORD,移动的位数,OUT,WORD,移动操作的结果,7双字左循环指令,双字左循环的工作过程如图所示,7双字右循环指令,LAD,参数,数据类型,说明,存储区,EN,BOOL,允许输入,I、Q、M、D、L,ENO,BOOL,允许输出,IN,WORD,移位对象,N,WORD,移动的位数,OUT,WORD,移动操作的结果,7双字右循环指令,双字右循环指令的工作方式如图所示,控制转移指令及应用,1转移指令(JMP),2若非转移指令(JMPN),1转移指令(JMP),当逻辑位RLO的状态为“1”时,将触发转移指令,程序将直接跳转至标号指定的网路,并从此网路开始顺序执行以下的程序,在转移指令和标号之间的程序将不予执行,1转移指令(JMP),如图所示程序,1转移指令(JMP),如图所示程序,2若非转移指令(JMPN),若非转移指令(JMPN)与转移指令相似,其转移条件是当逻辑位的状态为“0”时。,2若非转移指令(JMPN),如图所示程序:当I0.1的状态为“1”,时,跳转条件不成立,CPU将按正常顺序执行程序。当I0.1的状态为“0”时,跳转条件成立,CPU将跳过程序段2,直接执行程序段3的指令。,2若非转移指令(JMPN),使用跳转指令的以下结构,可实现选择性执行程序段的功能。程序如图所示,比较指令及其应用,两个整数的比较(每一整数均为16位);,两个双整数的比较(每一双整数均为32位);,两个实数的比较(每一实数均为32位);,比较类型有以下几种类型:,等于(EQ) :IN1等于(= =)IN2;,不等于(NQ):IN1不等于()IN2;,大于(GT):IN1大于()IN2;,小于(LT):IN1小于( =)IN2;,小于或等于(LE):IN1小于或等于( =)IN2;,1整数等于比较指令,整数比较指令关键字符为I。整数等于比较指令是判断两个正数是否相等,如果相等,则逻辑结果为“1”,如果不相等则逻辑结果为“0”。,LAD,参数,数据类型,说明,存储区,IN1,INT,比较的第一个数值,I、Q、M、D、L,IN2,INT,比较的第二个数值,1整数等于比较指令,如图所示的程序,当MW10中的内容等于23时,Q0.0的状态为“1”,否则,Q0.0的状态为“0”。,1整数等于比较指令,注意:比较指令的使用接点类似,因此比较指令不能放在逻辑串的最后。如图所示,注意:上图所示程序是一个不完整的程序,不能被保存或下载。比较指令只能放在逻辑串的中间。,2整数不等于比较指令,整数不等于比较指令是指当两个整数不相等时,比较的逻辑结果为“1”,而当两个数相等时逻辑结果为“0”。这一指令相当于等于比较指令的“非”操作。,LAD,参数,数据类型,说明,存储区,IN1,INT,比较的第一个数值,I、Q、M、D、L,IN2,INT,比较的第二个数值,3双整数大于比较指令,双整数的关键字为D。大于比较指令是当第一个数值大于第二个数值时,即IN1大于IN2,比较逻辑结果为“1”,否则逻辑结果为“0”。,LAD,参数,数据类型,说明,存储区,IN1,DINT,比较的第一个数值,I、Q、M、D、L,IN2,DINT,比较的第二个数值,4实数小于等于比较指令,实数比较指令的关键字为R。小于等于比较指令是当第一个数值小于或等于第二个数值时,即IN1=IN2时,比较逻辑结果为“1”,否则逻辑结果为“0”。,LAD,参数,数据类型,说明,存储区,IN1,DINT,比较的第一个数值,I、Q、M、D、L,IN2,DINT,比较的第二个数值,3.10实训六 彩灯循环,实训目的,1掌握移位指令的使用。,2锻炼PLC的程序编制和调试能力,实验设备,1PLC实验板(西门子S7-300),2开关按钮1个,3指示灯6个(也可直接使用S7-300PLC输出模块输出指示灯),4PC机和STEP 7编程调试软件,实验内容,实验步骤,实验内容,用西门子公司系列的PLC实现一个个彩灯循环闪烁的控制系统。控制要求如下 :,控制项目1:单向手动控制:要求通过按钮SB1使得16灯泡按照HL1、HL2HL16的顺序亮灭,移到最高位HL16以后,再回到HL1、重复循环下去。按下停止按钮SB2后,彩灯熄灭,停止工作。,实验内容,控制项目2:往复手动控制:要求通过按钮SB1使得16灯泡按照HL1、HL2HL16的顺序亮灭,移到最高位HL16以后,再按HL16、HL15HL2、HL1的顺序亮灭,如此反复循环下去。按下停止按钮SB2后,彩灯熄灭,停止工作。,实验内容,控制项目3:单向自动控制:彩灯亮灭的顺序与实验1要求相同,但要求彩灯能自动循环,彩灯移动的时间间隔为1秒钟(可根据实际情况修改),实验内容,控制项目4:往复自动控制:彩灯亮灭的顺序与实验2要求相同,但要求彩灯能自动循环,彩灯移动的时间间隔为2秒钟(可根据实际情况修改),实验内容,控制项目5:要求按下启动按钮SB1彩灯按照从小到大(HL1、HL2HL16)的顺序自动亮灭,第一次时间间隔为1秒钟,第二次移动的时间间隔为2秒钟,第三次移动的时间间隔为3秒钟,移动三次后完成一个循环,重复循环。按下停止按钮SB2后彩灯全灭。,系统分析,1 PLC硬件配置控制系统中的硬件配置如下,序号,名称,型号说明,数量,1,CPU,CPU313,1,2,电源模块,PS307,1,3,开关量输入模块,SM321,1,4,开关量输出模块,SM322,1,5,前连接器,20针,2,系统分析,2分析控制要求进行输入输出点分配,并根据分配画出外部接线图。资源分配表如表所示,序号,输入信号名称,地址,1,开始按钮SB1(常开),I0.0,2,停止按钮SB2(常开),I0.1,系统分析,序号,输出信号名称,地址,序号,输出信号名称,地址,1,彩灯HL1,Q5.0,9,彩灯HL9,Q4.0,2,彩灯HL2,Q5.1,10,彩灯HL10,Q4.1,3,彩灯HL3,Q5.2,11,彩灯HL11,Q4.2,4,彩灯HL4,Q5.3,12,彩灯HL12,Q4.3,5,彩灯HL5,Q5.4,13,彩灯HL13,Q4.4,6,彩灯HL6,Q5.5,14,彩灯HL14,Q4.5,7,彩灯HL7,Q5.6,15,彩灯HL15,Q4.6,8,彩灯HL8,Q5.7,16,彩灯HL16,Q4.7,系统分析,输入输出模块接线图,系统分析,3分析控制要求写出程序清单,实验步骤,1根据实验要求编写PLC程序,2按照PLC实验线路接线并合上电源,3启动编程软件,编写程序,4进行模拟在线调试。,3.11STEP7指令(四),计数器指令,算数运算指令,转换指令,字逻辑指令,计数器指令,计数器置初值指令(SC),加法计数器线圈(CU),减法计数器线圈(CD),1计数器置初值指令(SC),当逻辑位RLO有正跳沿时,计数器置初值线圈将预置值装入指定计数器中。若RLO位的状态没有正跳沿发生,则计数器的值保持不变。,LAD,参数,数据类型,存储区,说明,计数器号,COUNTER,C,地址表示预置初值的计数器号,预置值,WORD,I,Q,M,D,L,预置值(必须是BCD码格式,即为C#,例如C#23),2加法计数器线圈,当逻辑位RLO有正跳沿时,加法计数器线圈使指定计数器的值加1,如果RLO位的状态没有正跳沿发生,或者计数器数值已经达到最大值999,则计数器的值保持不变。,LAD,参数,数据类型,存储区,说明,计数器号,COUNTER,C,地址表示要执行加法计数的计数器号,3减法计数器线圈,当逻辑位RLO有正跳沿时,减法计数器线圈使指定计数器的值减1,如果RLO位的状态没有正跳沿发生,或者计数器数值已经达到最小值0,则计数器的值保持不变。,LAD,参数,数据类型,存储区,说明,计数器号,COUNTER,C,地址表示要执行减法计数的计数器号,计数器指令的使用举例,如图所示,计数器指令的使用举例,当I0.0的状态由“0”变为“1”时,(SC)指令将数值23装入计数器C0中,当I0.1的状态由“0”变为“1”时,计数器C0的值将减1,当I0.2的状态由“0”变为“1”时,计数器C0的值将加1。计数器的位状态与计数器值的关系如表所示,计数器的计数值,计数器的位状态,不等于0,“1”(高电平),等于0,“0”(低电平),计数器指令的使用举例,如图所示,若I0.3的状态为“1”,则计数器C0所计的数值立刻变为零,由于(R)指令是高电平执行,因此若I0.3的状态保持“1”,则计数器C0始终处于清零状态而无法正常使用。用户在使用指令时,应注意指令的执行方式。,4可逆计数器S_CUD,LAD,参数,数据类型,说明,存储区,COUNTER,计数器标识号,C,CU,BOOL,加计数输入,I,Q,M,D,L,CD,BOOL,减计数输入,S,BOOL,计数器预置输入,PV,WORD,计数器预置值(C#格式),R,BOOL,复位输入,Q,BOOL,计数器状态,CV,WORD,计数器当前值(整数格式),CV_BCD,WORD,计数器当前值(BCD格式),4可逆计数器S_CUD,可以看到,可逆计数器方框指令可以完成计数器的加(CU)、减(CD)计数和置初值(S、PV)以及计数器值清零(R)等功能,还可以将计数器当前值以不同的格式输出,整数格式(CV)和BCD格式(CV_BCD)。计数器的状态可以Q端输出,也可以由计数器的触点输出。,4可逆计数器S_CUD,例如,前面例子中两图所示的程序可以由下图所示的程序代替,4可逆计数器S_CUD,使用计数器时应该注意下面几点问题,(1)计数器指令的加、减计数输入端以及预置值输入端均为上升沿执行,即逻辑位必须有从“0”到“1”的变化时,指令才会执行。,4可逆计数器S_CUD,(2)计数器的预置的初始值及PV端的数据格式为BCD码二十进制格式。如果在PV端使用地址如MW10,而不是直接数C#.,应该保证在执行置初值指令时,地址MW10中保存的数据满足BCD码格式,否则执行程序时,CPU将会出错。,4可逆计数器S_CUD,(3)计数器触点的状态由计数器的值决定,如果计数值等于零,则计数器触点的状态为低电平“0”,如果计数值不等于零(无论等于几),则计数器触点的状态为高电平“1”。,算数运算指令,加法运算指令 ADD,减法运算指令 SUB,乘法运算指令 MUL,除法运算指令 DIV,1整数加法运算ADD_I,LAD,参数,数据类型,说明,存储区,EN,BOOL,允许输入,I、Q、M、D、L,ENO,BOOL,允许输出,IN1,INT,相加的第1个值,IN2,INT,相加的第2个值,OUT,INT,相加的结果,1整数加法运算ADD_I,程序示例如图所示,1整数加法运算ADD_I,如图所示的程序中,1整数加法运算ADD_I,若I0.0后面没有边沿检测指令,程序段1如图所示,2整数减法运算SUB_I,减法指令运算规则为: IN1 IN2=OUT,LAD,参数,数据类型,说明,存储区,EN,BOOL,允许输入,I、Q、M、D、L,ENO,BOOL,允许输出,IN1,INT,被减数,IN2,INT,减数,OUT,INT,减法运算的结果,3整数乘法运算MUL_I,允许输入EN的状态为“1”时,启动乘法运算指令,将IN1乘以IN2,并将计算结果送至OUT端。如果计算结果正确,ENO端输出为“1”。,LAD,参数,数据类型,说明,存储区,EN,BOOL,允许输入,I、Q、M、D、L,ENO,BOOL,允许输出,IN1,INT,第1个乘数,IN2,INT,第2个乘数,OUT,INT,乘法运算的结果,4整数除法运算DIV_I,除法指令的运算规则为: IN1IN2=OUT,LAD,参数,数据类型,说明,存储区,EN,BOOL,允许输入,I、Q、M、D、L,ENO,BOOL,允许输出,IN1,INT,被除数,IN2,INT,除数,OUT,INT,除法运算的结果,4整数除法运算DIV_I,例如如图所示的程序,运算结果为6。,5双整数取余数指令MOD_DI,双整数取余数指令,是将两个双整数进行除法运算,并将余数作为结果送到OUT端,LAD,参数,数据类型,说明,存储区,EN,BOOL,允许输入,I、Q、M、D、L,ENO,BOOL,允许输出,IN1,DINT,被除数,IN2,DINT,除数,OUT,DINT,除法运算取余数的结果,5双整数取余数指令MOD_DI,例如27与4两个整数相处的余数为3,利用如图所示的程序可以计算出来,转换指令,BCD转换为整数: BCD_I,整数转换为BCD:I_BCD,整数转换为双整数:I_DI,BCD转换为双整数:BCD_DI,双整数转换为BCD:DI_BCD,双整数转换为实数:DI_R,整数二进制码的位取反:INV_I,双整数二进制码的位取反:INV_DI,转换指令,整数的二进制补码:NEG_I,双整数的二进制补码:NEG_DI,实数求反: NEG_R,实数四舍五入为双整数:ROUND,实数舍去小数部分为双整数:TRUNC,实数向上取整为双整数: CEIL,实数向下取整为双整数: FLOOR,1BCD转换为整数BCD_I,BCD_I指令是将IN指定的内容以BCD码二十进制格式读出,并将其转换为整数格式,输出到OUT端,LAD,参数,数据类型,说明,存储区,EN,BOOL,允许输入,I、Q、M、D、L,ENO,BOOL,允许输出,IN,WORD,BCD数,OUT,INT,BCD数的整数值,1BCD转换为整数BCD_I,注意:如果IN端指定的内容超出BCD码的范围(例如四位二进制数出现10101111的几种组合),则执行指令时将会发生错误,使CPU进入STOP方式,或者调用编程错误组织块OB121(如果OB121被编程且下载到PLC中)。,1BCD转换为整数BCD_I,如图所示的程序中,2整数转换为BCD:I_BCD,I_BCD指令是将IN端指定的内容以整数的格式读出,然后将其转换为BCD码格式输出到OUT端。,LAD,参数,数据类型,说明,存储区,EN,BOOL,允许输入,I、Q、M、D、L,ENO,BOOL,允许输出,IN,INT,整数,OUT,WORD,整数转换为BCD码,2整数转换为BCD:I_BCD,在使用I_BCD指令可能会遇到以下情况,(1)IN端的整数大于999。这时,PLC不停机,仍然正常运行。由于字的BCD码最大只能表示C#999(最高四位为符号位)。若IN端的内容大于999,CPU将IN端的内容直接送到OUT端输出,不经过I_BCD的转换。这时OUT输出的内容可能超出BCD码的范围。另外OUT端的内容若为BCD码,也有可能是超过999的整数转换出来的,例如整数2457通过I_BCD指令以后,OUT的值为C#999。因此在使用I_BCD指令时应该保证整数的小于等于999。,2整数转换为BCD:I_BCD,如图所示程序段1(Network1)中,由于整数2457的二进制码为2#0000_1001_1001_1001。因此MW10与MW12中的内容相同,以二进制格式表示均为2#0000_1001_1001_1001。,2整数转换为BCD:I_BCD,(2)IN端的整数为负整数时。转换出的BCD码最高四位为“1”。如下图中程序段2所示,MW14中的内容以二进制表示为2#1111_1001_1001_1001。但MW16中的内容为整数-2457的二进制码(负整数以正整数二进制补码形式保存),为2#1111_0110_0110_0111。因此,应保证IN端的内容不小于-999。,3整数二进制码的位取反运算:INV_I,INV_I指令是将IN的指定的内容与W#16#FFFF作逻辑“或”运算,其结果是IN端输入的状态与OUT输出的状态每一位都相反。,LAD,参数,数据类型,说明,存储区,EN,BOOL,允许输入,I、Q、M、D、L,ENO,BOOL,允许输出,IN,INT,整数,OUT,WORD,整数二进码的取反运算结果,3整数二进制码的位取反运算:INV_I,如图所示的程序中,MW20中的内容与MW22中的内容完全相反。MW20为2#0000_0000_1110_1110,而MW22中为2#1111_1111_0001_0001。,4整数的二进制补码: NEG_I,NEG_I是将IN端的内容进行补码运算(将IN端的内容每一位取反以后再加1)。其结果如果以整数格式读出的话,即为整数值取反。,LAD,参数,数据类型,说明,存储区,EN,BOOL,允许输入,I、Q、M、D、L,ENO,BOOL,允许输出,IN,INT,整数,OUT,WORD,整数的二进制补码结果,5实数四舍五入为双整数:ROUND,ROUND指令是将实数进行四舍五入取整后转换成双整数的格式,LAD,参数,数据类型,说明,存储区,EN,BOOL,允许输入,I、Q、M、D、L,ENO,BOOL,允许输出,IN,REAL,实数,OUT,DINT,四舍五入后为双整数,6实数舍去小数部分为双整数:TRUNC,TRUNC指令是将实数舍弃小数部分,并将其转换为双整数格式。,LAD,参数,数据类型,说明,存储区,EN,BOOL,允许输入,I、Q、M、D、L,ENO,BOOL,允许输出,IN,REAL,实数,OUT,DINT,舍去小数部分后为双整数,7实数向上取整为双整数:CEIL,CEIL指令是将实数向上取整,结果为大于指定实数的最小双整数。,LAD,参数,数据类型,说明,存储区,EN,BOOL,允许输入,I、Q、M、D、L,ENO,BOOL,允许输出,IN,REAL,实数,OUT,DINT,向上取整为双整数,8实数向下取整为双整数:FLOOR,FLOOR指令是将实数向下取整,结果为小于指定实数的最大双整数。,LAD,参数,数据类型,说明,存储区,EN,BOOL,允许输入,I、Q、M、D、L,ENO,BOOL,允许输出,IN,REAL,实数,OUT,DINT,向下取整为双整数,字逻辑指令,字与字相“与”指令:WAND_W,双字与双字相“与”指令:WAND_DW,字与字相“或”指令:WOR_W,双字与双字相“或”指令:WOR_DW,字与字相“异或”指令:WXOR_W,双字与双字相“异或”指令:WXOR_DW,1字与字相“与”指令:WAND_W,当EN端状态为“1”时,执行指令。这一指令根据“与”真值表将IN1端和IN2端的内容逐位组合,并将结果送至OUT端指定的地址。,LAD,参数,数据类型,说明,存储区,EN,BOOL,允许输入,I、Q、M、D、L,ENO,BOOL,允许输出,IN1,WORD,逻辑运算第1个值,IN2,WORD,逻辑运算第2个值,OUT,WORD,逻辑与运算的结果,1字与字相“与”指令:WAND_W,如图所示的程序:字逻辑“与”指令的操作结果(MW12中的内容)为2#0000_0000_0000_1001。,2字与字相“或”指令:WOR_W,当EN端状态为“1”时,执行字“或”指令,这一指令根据“或”真值表将输入IN1和IN2端指定的内容逐位组合,并将结果送至OUT端指定的地址。,LAD,参数,数据类型,说明,存储区,EN,BOOL,允许输入,I、Q、M、D、L,ENO,BOOL,允许输出,IN1,WORD,逻辑运算第1个值,IN2,WORD,逻辑运算第2个值,OUT,WORD,逻辑或运算的结果,3字与字相“异或”指令:WXOR_W,当EN端状态为“1”时,执行字“异或”指令,这一指令根据“异或”真值表将输入IN1和IN2端指定的内容逐位组合,并将结果送至OUT端指定的地址。,LAD,参数,数据类型,说明,存储区,EN,BOOL,允许输入,I、Q、M、D、L,ENO,BOOL,允许输出,IN1,WORD,逻辑运算第1个值,IN2,WORD,逻辑运算第2个值
展开阅读全文