1、可编程控制器的功能指令PLC课程论文 题 目: 可编程控制器的功能指令 专 业: 电子信息科学与技术 院 系: 物理与电子工程学院 学生姓名: 学生学号: 年级、班: 指导教师: 2016 年 1月 10 日可编程控制器的功能指令PLC是由取代继电器控制开始产生、发展起来的,且早期的PLC绝大部分用于顺序控制,于是许多人习惯于把PLC看作是继电器、定时器、计数器的集合,把PLC的作用局限于等同继电接触器控制系统、顺控器等。其实,PLC就是工业控制计算机,PLC系统属于计算机控制系统的一个分支,大型PLC系统就是当代较先进的计算机控制系统。小型PLC由于运算速度较低及存贮容量较小,使其功能受到限
2、制,但为了使PLC在其基本逻辑功能、顺序步进功能之外具有更进一步的特殊功能,以尽可能多地满足PLC用户的特殊要求,从80年代开始,PLC制造商就逐步地在小型PLC中加入一些功能指令(Functional Instruction)或称为应用指令(Applied Instruction)。这些功能指令实际上就是一个个功能不同的子程序。随着芯片技术的进步,小型PLC的运算速度、存贮量不断增加,其指令的功能也越来越强。许多工程技术人员以前不敢想象的功能,通过功能指令就能容易实现,从而大大提高了PLC的实用价值。一般来说功能指令可以分以下几类:(1) 程序流控制。(2) 传送与比较。(3) 算术与逻辑运
3、算。(4) 移位与循环移位。(5) 数据处理。(6) 高速处理。(7) 方便命令。(8) 外部输入输出处理。(9) 外部设备通讯。4.1 功能指令通则4.1.1 功能指令的表现形式表4-1 功能指令的表现形式表MEAN FNC45(P) (16)Mean操作元件:K、HKnxKnyKnmKnsTCDV、ZN=164步数:MEAN、MEAN(P) 7步MEAN:指令助记符 FNC45:功能号(P):脉冲执行功能 (16):只能做16bit操作 (16/32):16或32bit操作功能指令按功能号(FNC00FNC99)编排,每条功能指令都有一助记符。某些功能指令只需指定功能号即可,但许多功能指令
4、在指定功能号的同时还必须指定操作数。这是取平均值的指令。图中S指取值首元件。n指定取值个数。D指定计算结果存放地址。S:(SOURSE)源操作数。若可使用变址功能时,表达为S。有时源操作数不止一个,可用S1、S2表示。D:(DESTINATION)目标操作数。若可使用变址功能时,表达为D。目标不止一个时用D1D2表示。m、n其它操作数。常常用来表示数制(十进制、十六进制等)或制作源和目标的补充注释。需注释的项目多时也可采用m1、m2等方式。功能指令的功能号助记符占一个程序步,操作数占2或4个程序步,取决于指令是16bit还是32bit的。注意,某些功能指令在整个程序中只能出现一次,即使用跳转指
5、令使其分别处于两个不可能同时执行的程序中也不允许,但可利用变址寄存器多次改变其操作数。4.1.2 数据长度及指令的执行形式116bit和32bit功能指令可处理16bit的数据和32bit数据。 功能指令中附有符号(D)表示处理32bit数据。如(D)MOV、FNC(D)12、FNC12(D)。处理32bit数据时,用元件号相邻的两元件组成元件对。元件对的首元件号用奇数偶数均可。但为避免错误,元件对的首元件建议统一用偶数编号。32bit计数器(C200C255)不能用作16bit指令的操作数。2连续执行/脉冲执行助记符后附的(P)符号表示脉冲执行。(P)和(D)可同时使用,如(D)MOV(P)
6、。上图所示功能指令仅在X0由OFF变为ON时执行。在不需要每个扫描周期都执行时,用脉冲执行方式可缩短程序处理周期。上图程序是连续执行方式的例子。当X1为ON状态时上述指令在每个扫描周期都被重复执行。某些指令,例如XCH、INC、DEC等,用连续执行方式时要特别留意,这些指令用“!”号标示。注意:当X0和X1为OFF状态时,上述两指令不执行。目标元件的内容不变化,除非另行指定。4.1.3 位元件1位元件和字元件只处理ON/OFF状态的元件,例如X、Y、M和S,称为位元件,其它处理数字数据的元件,例如T、C和D,称为字元件。位元件组合起来也可以处理数字数据。位元件组合由Kn加首元件号来表示。2位元
7、件的组合位元件每4bit为一组合单元,KnM0中的n是组数,16bit数操作时为K1K4,32bit数操作时为K1K8。当一个16bit的数据传送到K1M0、K2M0或K3M0时,只传送相应的低bit数据,较高bit的数据不传送。32bit数据传送时也一样。在进行16bit数操作时,参与操作的位元件由K1、K2、K3来指定,高位(不足部分)均作0,这就意味着只能处理正数(符号位为0)。在处理32bit数操作时也一样。由X4X13组成的2位BCD码数转换成二进制码送到D0。被组合的位元件号可以是任意的,但为避免混乱建议采用以0结尾的元件(如X0、X10、X20等)。注:字的指定与字串,以D1开始
8、的数据寄存器串即D1、D2、D3,用位元件组合的字作为字串处理,其指定格式如下:K1X0 K1X4 K1X10 K1X14,K2Y10 K2Y20 K2Y30K3M0 K3M12 K3M24 K3M36,K4S16 K4S32 K4S48即元件每4个为一组连续编号。如果“K2Y0”用在32bit操作时,高16bit作“0”处理,要获得32bit数据需要用“K8Y0”。4.1.4 变址寄存器(V、Z)变址寄存器在传送比较指令中用来修改操作对象的元件号,其操作方式与普通数据寄存器一样。表示操作对象: 对定时器及计数器指其当前值寄存器上图中表示从KnY到V、Z都可作为功能指令的目标元件。在D中的点(
9、)表示可以加入变址寄存器,对32bit指令,V作高16bit,Z为低16bit。32bit指令中用到变址寄存器时只需指定Z,这时Z就代表了V和Z。如上图所示,因为K10送到V,K20送到Z,所以(V)、(Z)的内容分别为10、20。(D5V)+(D15Z) (D40Z)就是 (D15)+(D35) (D60) V和Z可使编程简化。(D1,D0)+(D3,D2) (D25,D24)某些应用会用到各种标志,这些标志在附录中详细列表说明。例如:M8020:零标志(Z) M8021:借位标志(Br) M8022:进位标志(Cy) M8029:执行完毕标志(F)如果功能指令的语法或操作元件号有错误(出错
10、将在附录中加以解释),出错标志M8067(E)将被置1.功能指令每次执行时都会影响标志的状态(SET或RESET),而功能指令不执行或出错时标志状态不受影响。许多功能指令都会影响标志的状态,编程时要多加小心。 4.2 程序流控制指令(FNC00FNC09)4.2.1 条件跳转指令表4-2 条件跳转指令功能表CJ FNC00(P) (16)条件跳转操作元件:指针P0P63 (允许变址修改) P63即END,无需再标号。程序步数:CJ和CJ(P)步标号步和CJ(P)指令用于跳过顺序程序中的某一部分,这样可以减少扫描时间,并使“双线圈操作”成为可能。4.2.4 主程序结束指令表4-6 主程序结束指令
11、表FEND FNC06主程序结束操作元件:无程序步数:1步FEND指令表示主程序结束,执行到FEND指令时机器进行输出处理、输入处理、警戒时钟刷新,完成以后返回到第0步。例1 设计一PLC控制程序控制3盏灯A、B、C,使之具有手动和自动功能,自动时,每5秒起动一盏。4.3 传送和比较指令(FNC10FNC19)4.3.1 比较指令表4-9 比较指令表CMP FNC10(P)(16/32)比较操作元件:K、HKnxknYknmknsTCDV、ZXYMS程序步数:CMP和CMP(P)2步 (DCMP和(D)CMP(P)1步下面这段程序是将源S1和S2的数据比较,结果送到目标D中。这里源数据作代数比
12、较(如102且所有的源数据均作为二进制数值处理。程序中M0、M1、M2根据比较的结果动作。K100C20的当前值时,M0接通;K100=C20的当前值时,M1接通;K100C20的当前值时,M2接通。当执行条件X0=OFF时,CMP指令不执行,M0、M1、M2的状态保持不变。 注:(1) 一条CMP指令用到三个操作数,如果只指定了一或二个操作数,就会出错(出错码:6503),防碍PC运行。(2) 指定的操作元件超出上表范围时出错(出错码:6705).例如X、D、T或C被指定作目标时就会出错。(3) 如果被指定为操作数(元件)的元件号超出允许范围时出错(出错码:6706).用变址修改参数时可能会
13、出现这种情况。(4) 由于上述指定操作数出错时,请参阅附录。4.3.3 传送指令表4-11 传送指令表 MOV FNC12(P) (16/32)传送操作元件:K、HKnxKnyKnmKnsTCDV、Z程序步数:MOV和MOV(P)5步 (D)MOV和(D)MOV(P)9步源数据被传送到指定目标。如X0=OFF指令不执行,数据保持不变。当传送指令执行时,常数K100自动转换成二进制数。4.4 四则运算及逻辑运算指令(FNC20FNC29)4.4.1 BIN加法指令表4-19 BIN加法指令表ADD FNC20(P) (16/32)BIN加法操作元件:K、HKnxknYknMknSTCDV、Z程序
14、步数:ADD和ADD(P)7步 (D)ADD和(D)ADD(P)13步 标 志:M8020(零标志),M8021(借位);M8022(进位)指定的源元件中的二进制数相加,结果送到指定的目标元件。每个数据的最高bit作为符号位(0为正,1为负)。运算总是代数运算,如:5+(8)=3。如果运算结果为0,则零标志M8020置1。如果运算结果超过32767(16bit运算)或2147483647(32bit运算),则进位标志M8022置1。如果运算结果小于32767(16bit运算)或2147483647(32bit运算),则借位标志M8022置1。在32bit运算中,用到字元件时,被指定的字元件是最
15、低16bit元件,而其下一个元件即为最高16bit元件。为了避免重复使用某些元件,建议指定操作元件时用偶数元件号。源和目标可以用相同的元件号,若源和目标元件号相同而且采用连续执行的ADD/(D)ADD指令时,加法的结果在每个扫描周期都会改变。上图所示程序,每当X1从OFF变为ON时,D0的数据加1。这与INC(P)指令的执行结果相似。其不同之处在执行ADD指令时,零、借位、进位标志将按前述方法置位。4.4.2 BIN减法指令表4-20 BIN减法指令表SUD FNC20(P) (16/32)BIN减法操作元件:K、HKnxknYknMknSTCDV、Z程序步数:SUB和SUB(P)7步 (D)
16、SUB和(D)SUB(P)13步标 志:M8020(零标志),M8021(借位)M8022(进位)S1指定的元件中的数减去S1指定的元件中的数,结果送到D指定的目标中。运算是二进制代数法。例如:5(8)=13每个标志的功能、32bit运算的元件指定方法、连续执行和脉冲执行的区别等均与加法指令中的解释相同。上图所示的运算与执行(D)DEC(P)指令的运算极其相似。区别仅在于用SUB指令时可得到标志的状态。4.4.3 BIN乘法指令表4-21 BIN乘法指令表MUL FNC32(P) (16/32)BIN乘法操作元件:K、HKnxknYknMknSTCDV、Z程序步数:MUL和MUL(P)7步(D
17、)MUL和(D)MUL(P)13步116bit 运算两源的乘积以32bit形式送到指定目标。低16bit在指定目标元件,高16bit在下一个元件。若D0=8,D2=9,则上例中(D5,D4)=72最高bit是符号bit(0为正,1为负)。V不用于D之中,对bit元件,可用K1K8来指定bit数。记住结果是32bit数,所以如图K4指定bit数,则只能得到乘积的低16bit。232bit运算在32位运算中,如用bit元件作目标,则乘积只能得到低32bit,高32bit丢失,在这种情况下应先将数据移入字元件再进行运算。用字元件时,不可能监控这64bit数据的内容。在这种情况下通过监控结果的高32b
18、it和低32bit并利用下式计算:64bit结果=(高32bit)232+(低32bit)最高bit是符号bit,0为正,1为负。V和Z不能用于D。4.4.4 BIN除法指令表4-22 BIN除法指令表DIY FNC23(P) (16/32)BIN除法操作元件:K、HKnxKnyKnmKnsTCDV、Z*只有Z可用于16bit运算程序步数:DIY和DIY(P)7步 (D)DIY和(D)DIY(P)13步116bit运算用S1指令被除数,S2指定除数,商送到目标D,余数在D的下一个元件,V不可用于D中。232bit运算 S1指定的元件及其下一个元件组成被除数,S2及其下一个元件组成除数,商和余数
19、放在以D开始的4个连续元件中。V和Z不可用于D中。注:(1)若除数为“0”则出错,该指令不执行。(2)若bit元件被指定为目标D,则不能获得余数。(3)商和余数的最高bit是符号bit。例2 设计一PLC程序,计算(5352+72124577)/56的值,若余数大于28,A灯亮;若余数小于28,B灯亮;若余数等于28,C灯亮。4.4.5 加1和减1指令表4-23 加1和减1指令表INC FNC24(P)(16/32)(“!”)加1操作元件:K、HKnxknYknMknSTCDV、Z程序步数:INC、INC(P)DEC和DEC(P)3步 (D)INC、(D)INC(P)、(D)DEC和(D)DE
20、C(P)5步DEC FNC25(P)(16/32)(“!”)减1上例中,每次X0由OFF变ON时,由D指定的元件中的数增加1。如果不用脉冲指令,则每个扫描周期加1。在16bit运算中,达到+32767再加1就变为32768但标志不动作。32bit运算时,+2147483647再加1就变为2147483648时,标志也不动作。上例中,每次X1由OFF变为ON时,由D指定的元件中的数减1。16bit运算时,32768减1就变为+32767,但标志不动作。32bit运算时,2147483648再减1就变为+2147483647,但标志不动作。计数器C0C9的当前值转换成BCD码送到输出K4Y0。Z由
21、复位输入X10清0。每次X110N时,C0C9的当前值依次输出。例3 用INC指令设计一计数器,当按下按钮5次时,指示灯亮。4.5 循环移位指令4.5.3 移位(左/右)指令表4-28 移位(左/右)指令表SFTR FNC34(P)(16)(“!”)右移位操作元件:XYMS程序步数:SFTR,SFTR(P),SFTL,SFTL(P)9步SFTR FNC35(P)(16)(“!”)左移位本指令使bit元件中的状态向右/向左移位,由n1指定bit元件长度,n2指定移位bit数(n2n11024用脉冲移位指令时,在执行条件的上升沿到达时执行。用连续移位指令时,当执行条件为ON时,每个扫描周期执行一次
22、。4.6 数据处理指令(FNC40FNC49)4.6.1 区间复位指令表4-32 区间复位指令表ZRST FNC40(P) (16)区间复位操作元件:K、HKnxknYknMknSTCDV、ZXYMS程序步数:ZRST,ZRST(P)5步D1和D2指定的应为同类元件,D1指定的元件号应小于等于D2指定的元件号。如果D1号D2号,则只有D1指定的元件被复位。虽然ZRST作为16bit指令处理,但D1D2也可同时指定32bit计数器。注:(1) D1D2一个指定16bit,另一个指定32bit计数器是不允许的。其他的复位指令:(2) 可用RST指令逐个元件复位。(3) FNC16指令(FMOV)是
23、对多点写入K0。利用该指令,可将“0”写入KnY、KnM、KnS、T、C和D。例4 控制6盏灯A-F,每隔1s亮一盏,后面的亮则前面的灭,循环运行。4.6.6 平均值指令表4-37 平均值指令表MBAN FNC45(P) (16)平均值操作元件:K、HKnxknYknMknSTCDV、Z程序步数:MESN,MEAN(P)7步 n个源数据的平均值送到指定目标,平均值是指n个源数据的代数和被n除所得的商,余数略去,若元件超出范围,n的值会自动缩小允许范围内元件的平均值,若指定的“n”值超出164的范围,则出错。例5 求123,236,528,753,902五个数的平均值思考与练习1、求1103、569、432、2056、987、358、1355七个数的平均值,并将此值除以35,若余数大于17,红灯亮;若余数小于17,绿灯亮;若余数等于17,黄灯亮。2、控制8盏彩灯循环移位,每2s亮一盏,循环运行。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1