资源预览内容
第1页 / 共97页
第2页 / 共97页
第3页 / 共97页
第4页 / 共97页
第5页 / 共97页
第6页 / 共97页
第7页 / 共97页
第8页 / 共97页
第9页 / 共97页
第10页 / 共97页
亲,该文档总共97页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
项目四 PLC功能指令应用PLC的基本指令主要用于逻辑功能处理,步进顺控指令用于顺序逻辑控制系统。但在工业自动化控制领域中,许多场合需要数据运算和特殊处理。因此,现代PLC中引入了功能指令(或称为应用指令)。功能指令主要用于数据的传送、运算、变换及程序控制等功能。本章主要介绍三菱FX2N系列PLC的各种数据类软元件的组成和用法、功能指令的表示方法和使用要素,以及常用的传送比较指令、运算指令、数据处理指令及程序控制指令等。任务1 设备维护提醒装置(一)任务分析现代设备维护保养都需要规范操作。现有5台设备要进行维护保养管理,需设计一个维护保养的提醒装置。要求:5台设备同时启停工作,每操作使用一次,提醒装置记录一次,当操作使用次数等于10次时,点亮红色指示灯,提醒已到维护时间,当操作次数小于10次时,点亮绿色指示灯,表明可以继续使用。这个设计任务其实只要用一对启停按钮控制5台设备的启停运行,然后用计数器记录设备操作次数,计满10次作相应输出控制即可。用基本指令编制的梯形图程序如图41所示。按下启动按钮后,Y0Y4同时启动,输出指令就要一个一个的编制,这很繁琐。使用功能指令会使程序设计更简捷。(二)相关知识在PLC中,基本指令的操作对象都是位元件,如Y0、M0等,主要用于开关量信息的处理,因而编程时需要一个一个的表示。但功能指令的操作对象都是字元件或者位组合元件,就是将相同类别的相邻位元件组合在一起作为字存储单位,因此与使用基本指令相比,使用功能指令编制的程序更简单,且功能更强大。1. 功能指令的操作数功能指令的操作数FX2N系列系列PLC的数的数据类软元件据类软元件 数据寄存器(D)数据寄存器用于存储数值数据,可写可读,都是16位的(最高位为符号位),可处理的数值范围为-32768+32767。两个相邻的寄存器可组成32位数据寄存器(最高位为符号位)。在进行32位操作时只要指定低位的编号即可,例如用D0表示(D1、D0)32位数据。低位的编号一般采用偶数编号。数据寄存器又分为一般型,停电保持型和特殊型。FX系列的PLC,其数据寄存器的编号如表41所示。 表4-1 FX系列PLC数据寄存器机型一般用停电保持用停电保持专用文件用特殊用FX1SD0D129128点D128D255128点根据参数设定,可以将D1000D2499作为文件寄存器使用D8000D8255256点FX2NFX2NCD0D199128点D200D511312点D512D79997488点根据参数设定,可以将D1000以上作为文件寄存器使用D8000D8255256点 非停电保持领域,通过设定参数可变更停电保持领域; 停电保持领域,通过设定参数可变更非停电保持领域; 无法通过设定参数变更停电保持的特性。 位组合数据 因为4位BCD码表示1位十进制数据,所以在FX系列PLC中,用相邻的4个位元件作为一个组合,表示一个十进制数,表达形式为KnX、KnY、KnM、KnS等。n指4位BCD码的个数。例如: K1X0表示由X3X0这 4位输入继电器的组合; K3Y0表示由Y13Y10、Y7Y0这12位输出继电器的组合; K4M10表示由M25M10这16位辅助继电器的组合。【注意】 位组合元件的最低位最好采用0结尾的位元件。 其它K表示十进制常数;H表示十六进制常数;T、C分别表示定时器、计数器的当前值寄存器。2. 功能指令的表达形式功能指令的表达形式 功能指令与基本指令不同,功能指令类似一个子程序,直接由助记符(功能代号)表达本条指令要做什么。FX系列PLC的功能指令表达形式如图42所示。S 表示源操作数,其内容不随指令执行而变化,源的数量较多时,用S1、S2等表示。D 表示目标操作数,其内容随指令执行而改变,目标数量较多时,用D1、D2等表示。3. 数据长度和指令类型数据长度和指令类型 数据长度 功能指令可处理l6位数据和32位数据。处理32位数据时,在指令助记符前面加字母“D”,如图43所示。 指令类型 FX系列PLC的功能指令有连续执行型和脉冲执行型两种形式。连续执行型的梯形图形式如图44所示。当X0011时,功能指令在每个扫描周期都被执行一次。 脉冲执行型的梯形图形式如图45所示,X000每接通一次,功能指令只在第一扫描周期被执行一次。4. 传送指令传送指令 传送指令 MOV是将源操作数内的数据传送到指定的目标操作数内,即 S D ,源操作数内的数据不改变。如图46所示,当X0 接通(X0=1)时,源操作数 S 中的常数 K100 传送到目标操作元件 D10 中 。当指令执行时,常数 K100 自动转换成二进制数。当 X0 断开时,指令不执行,数据保持不变。 【应用举例1】如图47所示是传送指令的应用实例。图(a)表示当X0=1 时,将计数器C0的当前值读出并送到数据寄存器D20中;图(b)表示当X1=1 时,将常数K100写入到定时器T0的设定值寄存器中。【应用举例2】 三相交流电机Y/降压启动控制线路如图48所示,应用数据传送指令设计的降压启动控制程序如图49所示。按下启动按钮SB2(X2),传送常数K7(B0111)给K1Y0,即Y0Y1Y2都得电,电机Y形连接启动,同时T0开始定时。10s到,传送K3(B11)给K1Y0,即Y2表示的Y形连接断开,1s后传送K10(B1010),即电机连接运行,同时启动指示灯(Y0)熄灭。若运行中电机过载(X0)断开,电机自动停止并且Y0指示灯亮报警。5. 比较指令比较指令 比较指令CMP 是将源操作数 S1 和 S2 的数据进行比较,然后将目标操作数 D进行相应的操作。如图410所示,X01时,将C20的当前值与常数K100进行比较。若当前值小于K100,D指定的M0自动置1(即Y0接通);若当前值等于K100,M1自动置1(即Y1接通);若当前值大于K100,M2自动置1(即Y2接通)。在X0 断开,即不执行CMP 指令时,M0M2 保持X0断开前的状态。因此若要清除比较结果需要用RST或ZRST指令。【说明】数据比较是进行代数值大小比较(即带符号比较)。所有的源数据均按二进制处理。【应用举例】有一高性能的密码锁,由两组密码数据锁定。开锁时只有输入两组正确的密码,才能打开锁,锁打开后,经过5s再重新锁定。图411所示是密码锁的梯形图程序。程序运行时用初始脉冲M8002预先设定好密码(2个十六进制数H5A和H6C)。密码设定为2位十六进制数,所以输入只需要8位(K2X0).只有在两次比较中,从输入点K2X0送进来的二进制数恰好等于所设定的H5A和H6C,才能打开密码锁。因为要从K2X0两次输入数据进行比较,而CMP指令中定义的目标操作数的通、断是随机的,即做第二次比较时,第一次的比较结果将自动清零。所以梯形图中使用了中间变量M11和M14,对应M1和M4,这样就将两次比较的结果保存下来,再用M11和M14的常开触点串联以后驱动Y000(打开密码锁)。(三)任务实施选择输入输出设备,分配选择输入输出设备,分配I/O 地址,绘制地址,绘制PLC输入输出输入输出接线图接线图根据本任务的控制要求,输入设备需要有启停5台电机的操作按钮和整个控制装置的启停按钮(主要是用于系统复位和计数器复位)。输出设备就是红、绿色的信号灯和五台电机的接触器。地址分配如下:输入:电机启动按钮X0,停止按钮X1,系统复位按钮X2;输出:绿色灯L0Y10,红色灯L1Y11,电机的接触器KM1-KM5Y0-Y4;绘制的接线图如图412所示。2.设计控制程序设计控制程序运用功能指令设计的梯形图控制程序如图413所示。按下启动按钮,传送十六进制数据H1F到K2Y0,即让Y0-Y4接通,启动5台电机运行,且C1记录一次,此时由于C1的当前值小于K10,因此M0置位使Y10绿灯点亮。当记录到第10次时,M1置位使Y11红灯点亮,提醒已到维护时间。程序中C1的设定值可以等于或大于K10均可。当设备维护完毕后需用复位按钮(X2)对计数器C1以及M0、M1进行复位后才能重新投入使用。 (四)知识拓展 1. 区间比较指令区间比较指令ZCP ZCP指令的使用说明见图414所示。它是将一个数据 S与两个源操作数S1、 S2进行代数比较,然后将目标操作数 D进行相应的操作。如图4-14所示,X01时,将C0的当前值与K50、K100比较。若C0当前值K50,M0自动置1;若K50C0K100,自动M1置1;若C0K100,M2自动置1。2. 触点比较指令触点比较指令16位数据比较指令的助记符、操作数等属性如表42所示。触点比较指令的应用实例见图415所示。图(a)表示C0的当前值等于K10时,输出Y0被驱动;D10的值大于K30且X0=1时Y1被置位。图(b)表示X0=1、且D20的值小于K50时Y0被复位;X1=1或K10大于等于C0当前值时,Y1被驱动。【应用实例】工业控制中有时候受比较条件的限制,要反复使用几次CMP指令或ZCP指令。这时候改用触点比较指令编程就会方便得多。如图416所示,是用功能指令设计的交替点亮12盏彩灯的控制程序。12盏彩灯接在Y13Y0点,当X0接通后系统开始工作。小于等于2秒时第16盏灯点亮;2秒4秒之间第712盏灯点亮;大于等于4秒时12盏灯全亮;保持到 6秒,再循环。当X0为OFF时彩灯全部熄灭。3. 块传送指令块传送指令BMOV块传送指令的使用见图417所示,当X0001时,从源操作数指定的软元件(D0)开始的n(K3)个数据传送到指定的目标操作数(D10)开始的K3个软元件中。【注意】 BMOV指令中的源与目标是位组合元件时,源与目标要采用相同的位数,如图418所示。 4. 多点传送指令多点传送指令FMOV多点传送指令FMOV是将源操作数指定的软元件的内容向以目标操作数指定的软元件开头的n个软元件传送。n个软元件的内容都一样。如图419所示,将D0D99共100个软元件的内容全部置0。5. 区间复位指令区间复位指令ZRST区间复位指令ZRST是将D1、D2指定的元件号范围内的同类元件成批复位。目标操作数可取T、C、D(字元件)或Y、M、S(位元件)。D1、D2指定的应为同一类元件,D1的元件号应小于D2的元件号。如图420所示,将M0M100的101位辅助继电器全部清0。任务2 电子四则运算器的设计(一)任务分析现要求设计一个电子四则运算器,完成Y20X/358的计算,当结果Y=0时,点亮红灯,否则点亮绿灯。运算式中的X和Y是两位数(变量),“X”是自变量,可选用KnX输入,“Y”是因变量,由KnY输出。从表达式看出,因变量Y与自变量X成比例,X的变化范围(位数)决定了Y的变化范围(位数)。注意:KnX与KnY表示的都是二进制数。本任务需要用到PLC的四则运算指令。(二)相关知识1. 加法指令加法指令ADDADD 加法指令是将指定的源元件中的二进制数相加,结果送到指定的目标元件中去。如图421表示,当执行条件 X0 1 时,将 D10+D12 D14 。ADD指令是代数运算,如 5(8 ) = 3 。ADD加法指令有3个常用标志。 M8020为零标志, M8021为借位标志, M8022为进位标志。 如果运算结果为0,则零标志 M8020 自动置 1 ;如果运算结果超过 32767(16位)或 2147483647(32 位),则进位标志 M8022 置 1 ;如果运算结果小于 32767(16 位)或 2147483647(32 位),则借位标志 M8021 置 1 。 在32位运算中,被指定的字元件是低16位元件,而下一个元件为高16位元件。 源和目标元件可以用相同的元件号。若源和目标元件号相同而采用连续执行的 ADD 、(D)ADD 指令时,加法的结果在每个扫描周期都会改变。 2 减法指令减法指令SUB SUB 减法指令是将指定的源元件中的二进制数相减,结果送到指定的目标元件中去。如图422 表示,当执行条件X01 时, D10D12 D14 。SUB也是代数运算,如 5(8 )=13 。各种标志位的动作、32 位运算中软元件的指定方法、连续执行型和脉冲执行型的差异均与ADD加法指令相同。 3. 乘法指令乘法指令MUL 乘法指令MUL是将指定的源元件中的二进制数相乘,结果送到指定的目标元件中去。MUL分为16位和32位两种情况,源操作数是16位时,目标操作数为32位,源操作数是32位时,目标操作数是64位。最高位为符号位,0 为正,1 为负。 如图 423 所示,当为16 位运算,执行条件X01时, D0xD2 D5、D4 。当为 32 位运算,执行条件 X0 1 时, D1、D0xD3、D2 D7、D6、D5、D4 。如将位组合元件用于目标操作数时,限于K的取值,只能得到低32位的结果,不能得到高32位的结果。这时,应将数据移入字元件再进行计算。 用字元件时,也不可能监视64位数据,只能分别监视高32位和低32位。 4. 除法指令除法指令DIVDIV除法指令是将指定的源元件中的二进制数相除, S1 为被除数, S2 为除数,商送到指定的目标元件 D 中去,余数送到 D 的下一个目标元件。DIV分为16位和32位两种情况。如图424所示,当为 16 位运算,执行条件X01 时,D0除 D2的商 D4,余数 D5 。如当 D0=19 ,D2=3 时,则执行指令后D4=6 ,D5=1。当为32位运算,执行条件X01 时,D1、D0除D3、D2,商在 D5、D4 ,余数在 D7、D6 中。商为0时,有运算错误,不执行指令。若 D 指定位元件,得不到余数。商和余数的最高位是符号位。被除数或余数中有一个为负数,商为负数;被除数为负数时,余数为负数。【乘除法指令拓展应用】四则运算指令除了能进行最基本的加、减、乘、除运算之外,还能巧妙的利用其运算功能,实现某些特定的控制关系。如425图所示为利用乘除法指令实现灯组移位循环的实例。有一组灯共8盏,接于Y0Y7。当K3Y0*2时,相当于将其二进制数码左移了一位。所以执行乘2运算,实现了Y0 Y7的正序变化。同理除2运算实现了Y7 Y0的反序变化。程序中T0和M8013配合,使两条运算指令轮流执行。先从Y0 Y7,每隔1s移一位,再从Y7 Y0,每隔1s移一位,并循环,如图426所示效果图。(三)任务实施选择输入输出设备,分配输入选择输入输出设备,分配输入/输出地址,画出输出地址,画出I/O接线图接线图根据前述任务分析,选定K2X0作自变量输入,K2Y0作因变量结果输出。表43所示是分配的I/O地址表,绘制的接线图如图427所示。输入功能说明输出功能说明K2X0X0 X7二进制数输入K2Y0Y0 Y7二进制数输出X20启动Y10绿灯Y11红灯2. 设计设计PLC控制程序控制程序根据本电子四则运算器的控制要求,设计的PLC控制程序如图428所示。当X20=1时,从K2X0输入的变量存入D0中,与常数K20相乘以后存入D2;再除以常数K35后减去8,结果送入K2Y0输出。当输出结果等于0时,零标志位自动置1,点亮红灯Y11,否则点亮绿灯Y10。(四)知识拓展1. 加加1指令指令INC、减、减1指令指令DEC如图429(a)所示为加1指令,当X000由OFFON时,由D指定的目标元件D1中的二进制数自动加1。图(b)所示为减1指令,当X001由OFFON时,由D指定的目标元件D1中的二进制数自动减1。若用连续指令时,每个扫描周期都要加1、减1,不容易精确判断结果,所以INC、DEC指令应采用脉冲执行型。【注意】INC、DEC指令的运算结果不影响标志位M8020、M8021和M8022。2. 逻辑字逻辑字“与与”指令指令WAND如图430所示,当X000=1时,将S1指定的D10和S2指定的D12中的数据按位对应,进行逻辑“与”运算,结果存于由D指定的目标元件D14中。3. 逻辑字逻辑字“或或”指令指令WOR如图431所示,当X010=1时,将S1指定的D10和S2指定的D12中的数据按位对应,进行逻辑“或”运算,结果存于由D指定的目标元件D14中。4. 逻辑字逻辑字“异或异或”指令指令WXOR如图432所示,当X020=1时,将S1指定的D10和S2指定的D12中的数据按位对应,进行逻辑“异或”运算,结果存于由D指定的目标元件D14中。【应用举例】 如图433所示是用输入继电器的K2X0对输出继电器的K2Y0进行控制的实例程序。当X01时,K2X0与H0F相“与”运算,实现K2X0低四位对K2Y0低四位的直接控制(状态保持),高四位被屏蔽。当X11时,K2X0与H0F相“或”运算,实现K2X0高四位对K2Y0高四位的直接控制(状态保持),低四位被置1。当X21时,K2X0与H0F相“异或”运算,实现K2X0低四位对K2Y0低四位的取反控制(状态取反),高四位直接控制(状态保持)。任务3 霓虹灯闪烁控制(一)任务分析某广场需安装6盏霓虹灯L0L5,要求L0L5以正序每隔1s依次轮流点亮,然后全亮保持5s,再循环。将霓虹灯L0L5接于Y0Y5,除了可以用乘2除2的方法实现控制功能外,还可以用移位指令、编码及解码指令编程满足控制要求。(二)相关知识二)相关知识1. FX系列系列PLC的移位指令的移位指令循环左移及循环右移指令循环左移及循环右移指令循环移位是一种环形移动,循环右移指令ROR使D中各位数据向右循环移n位,最后从最低位移出的状态存于进位标识M8022中,如图434(a)所示。循环左移指令POL使D中各位数据向左循环移n位,最后从最高位移出的状态存于进位标识M8022中,如图434(b)所示。【特别说明】执行这两条指令时,如果目标操作数为位组合元件。则只有K4或K8才有效。【应用举例】某彩灯组共14个接于Y0Y15点上,要求灯组以0.1s速度正、反序轮流点亮。图335所示是用基本指令和移位指令编制的控制程序。X0、X1分别为启动和停止按钮。按下启动按钮时首先赋初值K1给K4Y0,然后每隔0.1s左移位一次,形成正序移动;当最后一个灯(接在Y15点上)点亮0.1s后移位到Y16点时,立即将M1置位切断正序移位,并将M2复位接通反序的右移位,使Y16中的“1”又移回到Y15中,也就是说,Y16只起到转换信息的作用,以后每隔0.1s右移位一次,形成反序点亮。反序到Y0接通后又进入正序,依次循环。位左移及位右移指令位左移及位右移指令 位右移指令的源操作数和目标操作数都是位元件。当执行条件满足时,S中数据和D中数据向右移动n2位,共有n1位参与移动。如图436所示,当X101时,(M3M0)溢出,(M7M4)(M3M0),(M11M8)(M7M4),(M15M12)(M11M8),(X3X0)(M15M12)。位左移指令与位右移的方向相反。当执行条件满足时,S中数据和D中数据向左移动n2位,共有n1位参与移动。如图437所示,当X101时,(M15M12)溢出,(M11M8)(M15M12),(M7M4)(M11M8),(M3M0)(M7M4),(X3X0)(M3M0)。【应用实例】 现有五行三列15个彩灯组成的点阵,自行编号,按照中文“王”字的书写顺序,依次以1s间隔点亮,形成“王”字,保持3s后熄灭,再循环。为方便编程,可按照书写顺序进行地址编号,如图438所示。共有11个输出点,按书写顺序依次为(Y0-Y12),用X0作启动地址,设计的梯形图程序如图438所示。当X0=1时,将常数K7分别传到K1M0和K3Y0,Y0-Y2被点亮,也就是写下了“王”字的第一笔。同时T0自复位电路开始定时,1s后进行左移位,(M2M0)(Y2Y0),(Y2Y0)(Y5Y3),其它的位也依次左移3位,使Y5Y3点亮,即写下“王”字的第二笔。依次下去将Y12Y0全部点亮形成“王”字。T1定时3S后全部熄灭,进入下一轮循环。(三)任务实施(三)任务实施1. 选择输入输出设备,分配选择输入输出设备,分配I/O地址,画出接线图地址,画出接线图根据本任务的控制要求,选定X0为启动按钮,X1为停止按钮;霓虹灯L0-L5接于Y0-Y5,绘制I/O接线图如图439所示。2. 设计设计PLC控制程序控制程序本任务的梯形图程序如图440所示。是用基本指令和循环移位指令设计的。程序中用了M1和M2两个辅助继电器,分别用于接通1S左移位电路和全亮电路(M2还用于切断1S左移位电路)。当启动信号X0=1时,先赋初值K1给K4Y0,使Y0接通L0灯被点亮,同时接通M1,为产生1s左移位信号作准备。随着M8013的接通和断开,左移位信号被一次一次的接通,霓虹灯就一个接一个的被依次轮流点亮。当Y6接通时将Y5-Y0里面传“1”,全部灯点亮,并且将M2置位以切断1s左移位电路而保持全亮5s状态。5s后将M2复位进入循环。循环移位指令要求占用(K4)16个或者(K8)32个目的地址,本程序中占用了(K4Y0)16个输出端点。当输出端点不富裕时,可以考虑用辅助继电器M做循环移位的目的地址,再将辅助继电器信号转移到实际要用的输出地址上。如图441所示。功能指令也可以采用步进顺控的思想编程图442所示是用步进指令和移位指令编制的梯形图程序。在S21步中,使用了循环左移指令ROL,每隔1s向左移动1位,形成霓虹灯一个接一个的被依次轮流点亮。在S22步中,将霓虹灯全部点亮并保持5s,然后就在这两步中轮流接通,形成循环。用步进思想编程很简洁,思路也很清晰,便于初学着掌握。【试试看】 能否用SFTL指令设计霓虹灯的闪烁控制程序?分析图443所示的控制原理。 (四)知识拓展1. 译码(解码)指令译码(解码)指令功能:将源操作数中的n位二进制代码用2n位目标操作数中对应位置“1”表示, 如图444所示。图(a)中D为位元件,当X0041时,将X2X1X0这3位(n3)所表示的二进制数010,在2n(238)位目标元件M7M0中,将其对应位(010b2位)置1表示。图(b)中D为字元件,当X0041时,将D0中的3位(n3)所表示的二进制数010,用目标元件D1的对应位(010b2位)置1表示。2. 编码指令编码指令功能:与译码指令相反,在源操作数的2n位数据中,将最高位为1的位用目标操作数的n位二进制代码表示出来。N18(位元件)或N14(字元件)。如图445所示。图(a)中S为位元件,当X51时,将S指定的8位(2n=23=8)数据M17M10中,最高位为1的M13(b3)位,用目标操作地址的 n位(n=3)二进制代码011(b3=011)表示出来。图(b)中S为字元件,当X51时,将S指定的8位(2n=23=8)数据(00001011)中,最高位为1的b3位,用目标操作地址的 n位(n=3)二进制代码011(b3=011)表示出来。【应用实例】 用一个开关实现5台电机的顺序启动控制。要求:合上开关时,M1M5按顺序间隔一定的时间启动运行;断开开关时,5台电机同时停止工作。梯形图程序如图446所示,合上开关,X01,执行加1操作使M10=1,经DECO译码后将第一台电机M1启动(Y0置位)。间隔6s后T0接通,再次执行加1、译码等操作使第二台电机M2启动(Y1置位),如此下去,将5台电机全部启动起来。断开X0,下降沿边沿指令将辅助继电器和Y0-Y4复位,5台电机全部停止。任务4 变地址数据显示控制 (一)任务分析设计数据寄存器区域内容的显示控制程序。数据寄存器区域地址从D0开始,按钮X1每按一次地址号加1。即地址号依次是D0、D1、D2、D3,其内容也从1000开始,依次为1000、1001、1002、1003。本任务是要显示不同地址单元中的内容。D0中的内容为1000,从D0开始,X1每按一下地址号加1,其中的内容也加1。即D0=1000、D1=1001、D2=1002。这涉及到变址寄存器的使用。本任务要显示的内容是4位BCD码,需要用4个LED数码管,分别显示寄存器数据的千位、百位、十位和个位。(二)相关知识1. 变址寄存器变址寄存器(V、Z)功能指令的操作数功能指令的操作数变址寄存器V、Z是两组16位的数据寄存器,分别为V0V7和Z0Z7。变址寄存器除了与通用数据寄存器有相同的存储数据功能外,主要用于操作数地址的修改或数据内容的修改。变址的方法是将V或Z放在操作数的后面,充当修改操作数地址或内容的偏移量,修改后其实际地址等于操作数的原地址加上偏移量的代数和。若是修改数据,则修改后实际数据等于原数据加上偏移量的代数和。变址功能可以使地址像数据一样被操作,大大增强了程序的功能。可充当变址操作数的有K、H、KnX、KnY、KnM、KnS、P、T、C、D。在图447所示的变址操作程序中,当X0=1后,变址寄存器V3中的数据是10、Z3中的数据是20,则地址D0Z3D(020)D20;常数K30V3K(3010)K40;32位数据传送指令“DMOVP D4Z3 D20”表示由D25、D24组成的32位字元件中的数据传送到D21、D20组成的32位字元件中。当需要用32位变址寄存器时,就由V、Z组合而成。V是高16位,Z是低16位。在操作指令中只要指定Z,编号相同的V就被自动占用。如图447中传送指令“DMOVP H00013A5C Z3”表示将32位的十六进制常数H00013A5C送到由V3、Z3组成的32位字元件中。【应用举例】如图448所示为用加1减1指令及变址寄存器完成的彩灯正序亮至全亮、反序熄至全熄的循环变化。Y0-Y13接12个彩灯,程序中初始运行时将变址Z清0,X1为控制开关。当X1合上后,用M8013使K4Y0Z中的数据加1,然后Z中的值也加1,点亮第一个灯(Y0)。以后每隔1s点亮一个,依序点亮所有的灯。当Y14=1时置位M1,将加1程序切断,并接通减1程序。首先将变址Z的值减1,接着将K4Y0Z中的数据减1,即熄灭第十二个灯。以后每隔1s熄灭一个,依次熄灭所有的灯,再循环。2. 二进制数与二进制数与BCD码变换指令码变换指令 BCD码变换为二进制数(BIN)BIN变换指令是将源操作数S中的BCD码转换成二进制数存入目标操作数D中。如图449(a)所示,当X01时,K2X0中的BCD码转换成二进制数存入D10中。说明:如果源操作数不是BCD码就会出错,而且常数K不可作为该指令的操作数,因为常数K在操作前自动进行二进制变换处理。BCD码的取值范围:16位时为09999,32位时为099999999. 二进制数变换为BCD码BCD码变换指令是将源操作数S中的二进制数转换成BCD码送到目标操作数D中。如图449(b)所示,当X01时,D10中的二进制数转换成BCD码送到输出端K2Y0中。说明:BCD码变换指令可用于将PLC的二进制数据变为LED七段显示码所需的BCD码。(可直接用于带译码器的LED数码显示,见图450所示。)3. 七段码译码指令七段码译码指令SEGDSEGD指令是将S指定元件的低4位(只用低4位)所确定的十六进制数(0F)经译码驱动LED七段显示器进行显示。SEGD译码真值表如表44所示。如图451所示,当X0=1时,D0中的低4位所确定的十六进制数(0F)经K2Y0所连接的七段码进行显示。4. 位传送指令位传送指令SMOVSMOV指令是仅适用于FX2N、FX2NC的PLC。如图452所示,当X000=1时,将S源数据(D1)中的二进制数先转换成BCD码,然后再把指定位上的BCD码传送到D指定的目的地址单元(D2)的指定位上,再把目的地址单元中的BCD码转换成二进制数。如图中,将源数据(D1)中(已转换成BCD码)的数据第4位(因为m1=K4)起的低2位(因m2=K2)一起向目标D2中传送,传送至D2的第3位和第2位(因n=K3)。(D2)中的其它位(第1位和第4位)原数据不变。传送完毕后再转换成二进制数。BCD码的数值若超过9999范围则会出错。【应用举例】位传送指令的应用如图453所示。将D1的第1位(BCD码)传送到D2的第3位(BCD码)并自动转换成BIN数,这样3位BCD码数字开关的数据被合成后,以二进制数方式存入D2中。(三)任务实施1. 选择输入输出设备,分配选择输入输出设备,分配I/O地址,画出接线图地址,画出接线图根据本任务的控制要求,选定X0为系统启停开关,输出设备就是显示用的LED数码管。本任务要显示的内容是4位BCD码,因此需要用4个LED数码管,分别显示寄存器内容的千、百、十和个位。如果将4位数码管并行输出显示则需要占用28点输出。若采用分时显示4位BCD码的方案,可节省大量的输出点。如接线图454中将4个数码管的阳极并接在Y7-Y0,用Y10Y13对应连接4位数码管的阴极。再用程序将这4位阴极分时连接到负载电源的负极上,以达到分时显示个、十、百、千位的目的。这样设计只需要7位数码管阳极输入端和4位阴极COM点(片选端)共计11位输出点,与同时显示方案相比可节省输出点60。2. 设计设计PLC控制程序控制程序如图455所示是显示变地址数据寄存器内容的控制程序。程序先给首地址D0赋初值1000,并对变量Z0进行清0处理。当X0合上后,每按一次X1,地址号及数据内容都加1,实现向不同的地址单元赋予不同的数值。PLC控制数码显示有两种方案。一种是用带译码器的数码显示,这种方法只需将要显示的内容预先放在指定的地方,用BCD码转换指令就可以直接显示出来。(参考图450)。第二种是采用PLC机内译码指令SEGD进行译码并显示出来。图455所示的程序采用机内译码方案。如图455所示,当Y010接通时,选通个位上的数码管,显示个位数据。由于SEGD指令只显示个位上的十六进制数,而本任务要显示的内容是BCD码,所以要先用BCD指令将D0Z0中要显示的内容转换成BCD码(传送到D10Z0)再进行显示。当Y011接通时,选通十位上的数码管,显示十位上的数据。因此用位传送SMOV指令将D0Z0十位上的BCD数传送到D20Z0的个位上,再用SEGD指令进行显示。百位、千位上的数据显示依次类推。分时显示的时间应尽量短暂,以减少抖动,增强视觉效果。图455所示程序的分时显示的时间为0.005s。任务5 寻找数组最大值并求和运算 (一)任务分析某车间要对生产流水线进行过程控制。动态采集20个现场数据(16位),存放在D0D19中。每隔半小时找出其中的最大值,将其与标准值(放入D30中)进行比较,如果大于标准值点亮红灯(Y0);每隔1小时计算他们的平均值,并与标准平均值(放入D40中)进行比较,若大于标准平均值红灯(Y1)闪烁报警。本任务每隔半小时要对现场的20个数据进行反复比较,找出其中的最大值,并与标准值进行比较;每隔1小时要计算平均值,并与标准平均值进行比较,这要用到比较指令,还要用到程序控制类指令的编程。(二)相关知识1. 跳转指令跳转指令CJ跳转指令可用来选择执行指定的程序段,跳过暂时不需要执行的程序段。条件跳转指令CJ的助记符、操作数等指令属性如表4-5所示。 表4-5 跳转指令CJ属性指令名称助记符指令编号操作位数操作数程序步条件跳转CJ(P)FNC0(16)P0P127P63表示跳转到ENDCJ(P) 3步标号P 1步图456所示是条件跳转指令CJ的应用实例。X0是手动/自动运行的选择开关。X1、X2分别是电机M1和M2在手动操作方式下的启动按钮(点动控制),X3是自动运行方式下两电机的启动按钮。Y1、Y2分别是控制电机M1启动和M2启动的输出信号。当X0常开触点接通时,执行“CJ P0”指令,跳到标号为P0处执行手动操作程序。此时分别按下X1和X2,可点动M1和M2进行机床调整;而当X10常闭触点接通时,不执行“CJ P0”指令,顺序执行自动运行程序。此时按下启动按钮X3电机M1先启动,5s后电机M2自行启动运行,按下停止按钮可同时停止两台机床。然后执行“CJ P1”指令,跳过自动程序直接转到标号P1处结束。X10的常开/常闭触点起联锁作用,使手动操作和自动运行两个程序只能选择其中之一。使用跳转指令应注意的几个问题: FX2N系列PLC的指针标号P有128点(P0P127),用于分支和跳转程序。多条跳转指令可以使用相同的指针标号,但同一个指针标号只能出现一次,否则程序会出错。 如果跳转条件满足,则执行跳转指令,程序跳到以指针标号P为入口的程序段开始执行。否则不执行跳转指令,按顺序执行下一条指令。 P63是END所在的步序,在程序中不需要设置P63。 如果用M8000常开触点作为跳转条件,则CJ变成无条件跳转指令。 不在同一个指针标号的程序段中出现的同一线圈不看作是双线圈。 处于被跳过的程序段中的Y、M、S由于该段程序不执行,故即使驱动它们的工作条件发生了变化,它们的状态也依然保持跳转前的状态不变。同理,T、C如果被跳过,则跳转期间它们的当前值被锁定,当跳转中止、程序继续执行时,定时计数接着进行。2. 子程序指令子程序指令在程序编制中,经常会遇到一些逻辑功能相同的程序段需要反复被运行,为了简化程序结构,可以编写成子程序,然后在主程序中根据需要反复调用。子程序调用指令CALL、返回指令SRET的助记符、操作数等指令属性如表4-6所示。表4-6 子程序调用指令CALL、返回指令SRET属性指令名称助记符指令编号操作位数操作数程序步子程序调用CALLFNC1(16)P0P62P64P127CALL 3步标号P 1步子程序返回SRETFNC2无1步主程序结束FENDFNC6无1步子程序的使用见图4-57所示。当X0常开触点接通时,执行“CALL P1”,即程序转到标号P1处,执行子程序。当执行到子程序的最后一句“SRET”时,程序返回到主程序,从步序号4开始继续往下执行。当X0常开触点断开时,标号为P1的子程序不能被调用执行。使用子程序时应注意的问题: 主程序在前,子程序在后,即子程序要放在FEND指令之后。不同位置的“CALL”指令可以调用相同标号的子程序,但同一标号的指针只能使用一次,跳转指令中用过的指针标号不能再重复使用。 子程序可以调用下一级子程序,称为子程序嵌套, FX2N系列的PLC最多可以有5级子程序嵌套。【应用举例】某电机要求有连续运行和手动调整两种工作方式,用子程序设计的梯形图控制程序如图458所示。当工作方式开关X0的常开触点接通时,运行标号为P2的子程序,此时为手动调整状态;当X0常开触点断开时,运行标号为P1的子程序,此时电机为连续运行状态。3. 循环指令循环指令FOR、NEXT循环指令用于某种操作反复进行的场合,使用循环指令可以使程序变得简洁,方便。循环指令FOR、NEXT的助记符、操作数等指令属性如表4-7所示。循环指令由FOR和NEXT两条指令构成,因此这两条指令是要成对使用的。 表4-7 循环指令FOR、NEXT属性指令名称助记符指令编号操作位数操作数程序步循环开始FORFNC8(16)K、H、KnX、KnY、KnM、KnS、T、C、D、V、Z3步循环结束NEXTFNC9无1步【应用举例】有10个数据放在从D0开始的连续10个数据寄存器中,编制程序计算它们的和。编制的梯形图程序如图459所示。当计算控制开关X0接通时,首先将变址寄存器Z1和数据寄存器D10、D11清0,然后用循环指令从D0单元开始进行连续的求和运算,并将所求之和送到D10中。若有进位,则标志位M8022置1,向高16位D11中加1。然后变址Z1中数据加1,循环10次,最后结果存于D11和D10中。(三)任务实施1. 选择输入输出设备,选择输入输出设备,分配分配I/O地址,画出接线地址,画出接线图图本任务在这里编程时不涉及到20个现场数据的动态采集过程。假定这20个数据已经采集到位,只对其比较、计算控制进行编程。选择X0作为控制装置的启停开关,两个红灯地址分别为Y0和Y1,绘制的I/O接线图如图460所示。2. 设计设计PLC控制程序控制程序根据本任务的控制要求,编制出PLC的梯形图程序如图461所示。程序中,当通过开关输入使X01后,C0、C1同时对M8014(1min时钟脉冲)计数。C0每计满半小时,执行一次子程序P0,即比较20个现场数据的大小。C1每计满1小时执行一次子程序P1,即计算20个数据的平均值。在子程序P0中,先将20个数据中的第一个数送到D20中,赋变址寄存器Z的初值为1。再用循环指令将剩下的19个数据(因此循环次数应等于19)逐一与D20进行比较,若有比D20数据大的,就直接送往D20覆盖原数据,然后地址变量Z加1。等全部比较完毕,20个数据中的最大值就一定存放在D20中。再用触点比较指令将最大值(存放在D20中)与标准值(存放在D30中)对比,若大于标准值就把Y0接通。在子程序P1中,先将D23、D22清0,地址变量Z也清0,再用循环指令对20个数据逐一相加,并将所求之和存放到D23(高16位)、D22(低16位)中,因此循环次数为20。接下来用32位操作的除法指令将所求的总和除以数据的个数20,得到平均值放到D24中。最后用触点比较指令与标准平均值(存放在D40)对照,若大于标准平均值就使Y1闪烁报警。本任务要求每隔半小时找出最大值;每隔1小时计算平均值。也就是说当执行子程序P1计算平均值的时候,同时也要执行子程序P0找出最大值。程序实际执行时,每到半小时,只执行P0;每到1小时先执行P0找出最大值,接着执行P1计算平均值,P0、P1会在同一个扫描周期中执行。
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号