电气控制与PLC应用技术(第2版)课件:S7-200 SMART PLC功能指令_第1页
电气控制与PLC应用技术(第2版)课件:S7-200 SMART PLC功能指令_第2页
电气控制与PLC应用技术(第2版)课件:S7-200 SMART PLC功能指令_第3页
电气控制与PLC应用技术(第2版)课件:S7-200 SMART PLC功能指令_第4页
电气控制与PLC应用技术(第2版)课件:S7-200 SMART PLC功能指令_第5页
已阅读5页,还剩213页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

S7-200SMARTPLC的功能指令及使用6.1基本功能指令

6.2程序控制指令

6.3局部变量表与子程序

6.4中断程序与中断指令

6.5PID算法与PID回路指令

6.1S7-200PLC的基本功能指令6.1.1数据传送指令

6.1.2数学运算指令

6.1.3数据处理指令6.1.1数据传送指令1.单一数据传送指令2.数据块传送指令3.交换字节指令4.字节传送立即读、写指令

1.单一数据传送指令把输入(IN)指定的数据传送到输出(OUT),传送过程中数据值保持不变。输入输出允许输入端允许输出端数据传送指令按操作数的数据类型分为:

操作数可为有符号数或无符号数

字节传送(MOVB)字传送(MOVW)双字传送(MOVDW)实数传送(MOVR)2.数据块传送指令①字节块传送指令梯形图:语句表:BMBIN,OUT,N

(N:1~255)功能:当EN=1时,把输入端IN指定地址的N个字节的内容传送到OUT指定地址开始的N个连续字节的存储单元中去数据块传送指令操作数均为为无符号数。传送字节立即读、写指令(物理输入、输出点)交换字节指令数据块传送指令②字块传送指令梯形图:语句表:BMWIN,OUT,N

功能:当EN=1时,将从IN开始的N个字传送到OUT开始的N个字型存储单元。2.数据块传送指令③双字块传送指令梯形图:语句表:BMDIN,OUT,N

功能:当EN=1时,将从IN开始的N个双字传送到OUT开始的N个双字型存储单元。2.数据块传送指令3.交换字节指令梯形图:语句表:SWAPIN

功能:当EN=1时,将IN中的字的高字节内容与低字节内容互相交换,交换的结果仍存放在IN指定的地址中。例如:原vw100:D6A3执行SWAP指令后:A3D6该指令采用脉冲输入,否则每个扫描周期都会执行交换.4.字节传送立即读、写指令①字节传送立即读指令梯形图:语句表:BIRIN,OUT

功能:当EN=1时,读取IN指定字节地址的物理输入点(IB)的值,并传送到OUT指定的存储单元,相应的输入映像寄存器并不刷新。②字节传送立即写指令梯形图:语句表:BIWIN,OUT

功能:当EN=1时,将IN中的字节传送到OUT指定字节地址的物理输出点(QB),同时刷新相应的输出映像寄存器。运算结果立即输出到负载。4.字节传送立即读、写指令将VB100的值写入QB1的物理输出点.读取输入IB1的物理值,将结果写到输出VB1004.字节传送立即读、写指令当I0.0=1时,执行字节立即读、写指令,将IB1的状态立即读入VB40中,将VB30中的值立即输出到QB1中。5.数据传送指令举例6.1.2数学运算指令1.四则运算指令

2.数学功能指令

3.逻辑运算指令:与、或、异或、取反(1)加法指令

(2)减法指令

(3)乘法指令

(4)除法指令

(5)递增和递减指令平方根自然对数自然指数三角函数

将两个输入端(IN1、IN2)指定的有符号数相加,结果送到输出端(OUT)。1.四则运算指令--(1)加法指令加法指令可分为整数、双字整数、实数加法指令,它们各自对应的操作数的数据类型分别为有符号整数、有符号双字整数、实数。整数加法指令输入端输出端整数、双整数、实数加法指令

对应的操作数数据类型:

有符号整数(INT)有符号双字整数(DINT)实数(REAL)

整数加法双字整数加法 实数加法

梯形图:语句表:+IIN1,OUT

功能:当EN=1时,将两个16位有符号整数IN1和IN2相加,结果为16位有符号整数存入OUT

。①整数加法指令梯形图:语句表:+DIN1,OUT

功能:当EN=1时,将两个有符号双字整数IN1和IN2相加,结果为有符号双字整数存入OUT

。②双字整数加法指令梯形图:语句表:+RIN1,OUT

功能:当EN=1时,将两个32位实数IN1和IN2相加,结果为32位实数存入OUT

。③实数加法指令在LAD中,执行结果为IN1+IN2→OUT;在STL中,通常将操作数IN2与OUT共用一个地址单元,因而执行结果为IN1+OUT→OUT。

减法指令对两个输入端(IN1,IN2)指定的有符号数进行相减操作,结果送到输出端(OUT)。(2)减法指令减法指令可分为整数、双字整数、实数减法,对应的操作数分别是有符号整数、有符号双字整数、实数。梯形图:语句表:-IIN1,OUT

功能:当EN=1时,将两个单字长的有符号整数IN1和IN2相减,结果为单字长的有符号整数存入OUT

。①整数减法指令输出端输入端整数、双整数、实数减法指令对应的操作数:

有符号整数(INT)有符号双整数(DINT)实数(REAL)

整数减法 双整数减法 实数减法梯形图:语句表:-DIN1,OUT

功能:当EN=1时,将两个双字长的有符号整数IN1和IN2相减,结果为双字长的有符号整数存入OUT

。②双字整数减法指令梯形图:语句表:-RIN1,OUT

功能:当EN=1时,将两个32位实数IN1和IN2相减,结果为32位实数存入OUT

。③实数减法指令

在LAD中,执行结果为IN1-IN2→OUT;在STL中,通常将操作数IN2与OUT共用一个地址单元,因而执行结果为OUT-IN1→OUT。

如:-RIN1,OUT(3)乘法指令

操作数的数据类型:有符号整数(INT)有符号双整数(DITN)实数(REAL)

整数乘法双整数乘法 实数乘法整数完全乘法

操作数IN2与OUT共用一个地址单元IN1×OUT=OUT

把两个输入端(IN1,IN2)指定的数相乘,结果送到输出端(OUT)指定的存储单元中去乘法指令对两个输入端(IN1,IN2)指定的有符号数进行相乘操作,结果送到输出端(OUT)。乘法指令可分为整数、双字整数、实数乘法指令和整数完全乘法指令。前三种指令的操作数的数据类型分别为I、DI、R。(3)乘法指令整数乘法双字整数乘法 实数乘法整数相乘得双字整数

梯形图:语句表:*IIN1,OUT

功能:当EN=1时,将两个16位的有符号整数IN1和IN2相乘,结果为16位的有符号整数存入OUT

。①整数乘法指令

在LAD中,执行结果为IN1*IN2→OUT;在STL中,通常将操作数IN2与OUT共用一个地址单元,因而执行结果为IN1*OUT→OUT。语句表:*IIN1,OUT梯形图:语句表:*DIN1,OUT

功能:当EN=1时,将两个双字长的有符号整数IN1和IN2相乘,结果为双字长的有符号整数存入OUT

。②双字整数乘法指令

梯形图:语句表:*RIN1,OUT

功能:当EN=1时,将两个32位实数IN1和IN2相乘,结果为32位实数存入OUT

。③实数乘法指令

把输入端指定的两个16位整数相乘,产生一个32位双字整数,并送到输出端。梯形图:语句表:MULVW100,VD200

④整数相乘得双字整数的乘法指令

操作数IN2与OUT的低16位用的是同地址单元VD200除法指令对两个输入端(IN1,IN2)指定的有符号数进行相除操作,结果送到输出端(OUT)。除法指令可分为整数、双字整数、实数除法指令和整数相除得商和余数的除法指令。前三种指令各自对应的操作数分别为有符号整数、有符号双字整数、实数。(4)除法指令整数除法 双字整数除法 实数除法 整数相除得商和余数除法

在LAD中,执行结果为IN1/IN2→OUT;在STL中,通常将操作数IN2与OUT共用一个地址单元,因而执行结果为OUT/IN1→OUT。语句表:/IIN1,OUT梯形图:语句表:/IIN1,OUT

功能:当EN=1时,将两个单字长的有符号整数IN1和IN2相除,结果为单字长的有符号整数存入OUT

。①整数除法指令

梯形图:语句表:/DIN1,OUT

功能:当EN=1时,将两个双字长的有符号整数IN1和IN2相除,结果为双字长的有符号整数存入OUT

。②双字整数除法指令

梯形图:语句表:/RIN1,OUT

功能:当EN=1时,将两个32位实数IN1和IN2相除,结果为32位实数存入OUT

。③实数除法指令

整数相除得商和余数指令,把输入端指定的两个16位整数相除,产生一个32位结果,并送到输出端指定的存储单元中去。其中高16位是余数,低16位是商。梯形图:语句表:DIVIN1,OUT

④整数相除得商和余数的除法指令

操作数IN2与OUT的低16位用的是同地址单元VD200DIVVW120,VD200

IN2与OUT的低16位用的是同地址单元④整数相除得商和余数的除法指令

四则运算举例:若VW10=100,VW12=15,则执行完该段程序后,各存储单元的数值为:VW20=115,VW22=85,VW24=1500,VW26=6,VD30=1500,VW40=10,VW42=6。

四则运算举例:IN2与OUT不是同一地址单元加法、减法、乘法指令遇到上述情况,也可作类似的处理。(5)递增(加1)指令①字节递增指令

梯形图:语句表:INCBOUT

功能:当EN=1时,将8位的无符号输入数IN加1,结果为8位的无符号数存入OUT

。②字递增指令

梯形图:语句表:INCWOUT

功能:当EN=1时,将16位的有符号整数IN加1,结果为16位有符号整数存入OUT

。(5)递增(加1)指令③双字递增指令

梯形图:语句表:INCDOUT

功能:当EN=1时,将32位的有符号双字整数IN加1,结果为32位有符号双字整数存入OUT

。(5)递增(加1)指令(6)递减(减1)指令①字节递减指令

梯形图:语句表:DECBOUT

功能:当EN=1时,将8位无符号输入字节IN减1,结果为8位无符号数存入OUT

。②字递减指令

梯形图:语句表:DECWOUT

功能:当EN=1时,将16位的有符号整数IN减1,结果为16位有符号整数存入OUT。(6)递减(减1)指令③双字递减指令

梯形图:语句表:DECDOUT

功能:当EN=1时,将32位的有符号双字整数IN减1,结果为有符号双字整数存入OUT

。(6)递减(减1)指令递增、递减指令的使用举例:若VW10=50,AC0=100,各存储单元的最终数值为:VW10=52,AC0=98。2.数学功能指令(1)平方根指令

(2)自然对数指令

(3)自然指数指令

(4)正弦、余弦、正切指令(1)平方根指令梯形图:语句表:SQRTIN,OUT

功能:当EN=1时,将实数IN开平方,结果为实数存入OUT

。(2)自然指数指令梯形图:语句表:EXPIN,OUT

功能:当EN=1时,将实数IN取e为底的指数,结果为实数存入OUT

。(3)自然对数指令梯形图:语句表:LNIN,OUT

功能:当EN=1时,将实数IN取自然对数,结果为实数存入OUT

。(4)正弦、余弦、正切指令①正弦指令梯形图:语句表:SININ,OUT

功能:当EN=1时,将实数IN(弧度值)取正弦,结果为实数存入OUT

。②余弦指令梯形图:语句表:COSIN,OUT

功能:当EN=1时,将实数IN(弧度值)取余弦,结果为实数存入OUT

。(4)正弦、余弦、正切指令③正切指令梯形图:语句表:TANIN,OUT

功能:当EN=1时,将实数IN(弧度值)取正切,结果为实数存入OUT

。(4)正弦、余弦、正切指令数学功能指令的使用举例:[例1]求75°的余弦值,并将结果置于AC1中。[例2]求以10为底,150的常用对数,150存于VD100,结果放到AC1(应用对数的换底公式求解)。

当求解以10为底的常用对数时,用实数除法指令将自然对数除以2.302585即可。(LN10≈2.302585)

LDI0.1//使能输入LNVD100,AC1//自然对数LN10.0,VD200//自然对数/RVD200,AC1//实数除法[例3]

求65o的正切值

LDNI0.0//使能输入MOVR3.14159,AC0//π装入AC0/R180.0,AC0//得π/1800弧度

*R65.0,AC0//将角度转化为弧度

TANAC0,AC1

//求正切,结果存放到AC13.逻辑运算指令(1)逻辑“与”指令

(2)逻辑“或”指令

(3)逻辑“异或”指令

(4)取反指令对无符号的逻辑数按位进行逻辑处理,与、或、异或、取反等(1)逻辑“与”指令①字节“与”指令梯形图:语句表:ANDBIN1,OUT

功能:当EN=1时,将输入字节IN按位进行相“与”操作,结果存入OUT

。②其他“与”指令梯形图:语句表:ANDWIN1,OUTANDDIN1,OUT

(2)逻辑“或”指令①字节“或”指令梯形图:语句表:ORBIN1,OUT

功能:当EN=1时,将输入字节IN按位进行“或”操作,结果存入OUT

。②其他“或”指令梯形图:语句表:ORWIN1,OUTORDIN1,OUT

(3)逻辑“异或”指令①字节“异或”指令梯形图:语句表:XORBIN1,OUT

功能:当EN=1时,将输入字节IN按位进行“异或”操作,结果存入OUT

。②其他“异或”指令梯形图:语句表:XORWIN1,OUTXORDIN1,OUT

(4)逻辑“取反”指令①字节“取反”指令梯形图:语句表:INVBOUT功能:当EN=1时,将输入字节IN按位进行“取反”操作,结果存入OUT

。②其他“取反”指令梯形图:语句表:INVWOUT

INVDOUT

6.1.3数据处理指令1.移位和循环移位指令

2.数据转换指令

3.表功能指令4.读、写实时时钟指令(自学)1.移位和循环移位指令(1)移位指令

(2)循环移位指令(1)右移位指令

把输入端(IN)指定的数据右移N位,结果存入OUT。多位操作,移走后留下的空位补0。字节右移 字右移 双字右移

举例:空位自动补零(1)右移位指令

字节、字、双字移位指令的实际最大可移位数:8、16、32;移位后溢出位(SM1.1)的值就是最后一次移出的位值。

STL中,移位指令通常将操作数IN和OUT共用一个地址单元。(1)右移位指令

(2)左移位指令

字节左移 字左移 双字左移

自学(3)循环右移指令

字节循环右移 字循环右移 双字循环右移

把输入端(IN)指定的数据循环右移(Rotate)N位,结果存入OUT举例:最后移出的位存入:溢出位SM1.1(3)循环右移指令

字节、字、双字循环移位指令的实际移动位数

字节、字、双字循环移位指令,如果所需移位次数N大于或等于8、16、32,那么在执行循环移位前,先对N取以8、16、32为底的模,其结果0~7、0~15、0~31为实际移动位数。

例:字节循环移位,N除以8取余数,可得到实际循环移位位数。(4)循环左移指令

字节循环左移 字循环左移 双字循环左移

自学举例:移位和循环移位举例:移位和循环移位2.数据转换指令(1)BCD码与整数的转换指令

(2)双字整数与实数的转换指令

(3)双字整数与整数的转换指令

(4)字节与整数的转换指令

(5)译码、编码指令

(6)段码指令

(7)ASCII码与十六进制数的转换指令

(8)整数、双字整数、实数转换为ASCII码指令BCD码每四位表示一个十进制数。比如二进制数01111111,它对应的十进制数是127,

1对应的BCD码(四位)为0001,2对应的BCD码为0010,7对应的BCD码为0111.合起来

127对应的BCD码就是000100100111。(1)BCD码与整数(16位)的转换范围:0~9999BCD至整数指令(BCDI)将BCD码转换为整数,并将结果载入OUT。IN的有效范围是0到9999的BCD码。例:BCDIBCD:16#1234(0001001000110100)整数:1234梯形图:语句表:BCDIOUT

功能:当EN=1时,将IN指定的整数转换成BCD码,并将结果存放到OUT,输入数据的范围是0~9999的整数

。整数转换为BCD码指令例:IBCD整数:1234BCD:16#1234(0001001000110100)举例:当AIW16输入的BCD码数据大于VW100的实际值时,输出Q0.0接通。(2)双字整数与实数的转换32bit→32bitDINT→REAL

REAL→DINTREAL→DINT

32位有符号双字整数转换成32位实数+101→+101.0实数转换成双字整数,取整:四舍五入256.54→257取整:舍去小数部分256.54→256若实数太大或无效,用整数无法表示,则SM1.1=1,输出不变(3)双字整数与整数的转换有效的双字整数DINTINT若转换的数太大,溢出位被置位,输出不变有符号的整数转换为双字整数时,符号位被扩展到高位字。★整数转换为实数,如何进行?

ITDDTRINT→DINT→REAL(4)字节与整数的转换有效的整数转换成字节,范围:0~255,否则溢出,输出不变字节是无符号的,转换成整数,无符号扩展问题转换指令编程举例IN2与OUT不是同一地址注意!本例将单位英寸转换为厘米。若VB0=101(in),各存储单元的最终数值为:VW2=101(in),VD4=101(in),VD10=101.0(in),VD14=256.54(cm),VD20=257(cm),VW24=257(cm)。转换指令编程举例将模拟量输入端采样值由整数转换为双字整数,然后由双字整数转换为实数,再除以一个比例因子得到PLC允许范围内的值(0.0~1.0)。例:模拟量控制程序中数据类型转换:将AIW16中的值转换为PLC能处理的值。(5)解码、编码指令解码:DECO根据输入字节的低4位的二进制数对应的十进制数,置OUT的相应位为1,其余位置0。(BYTEWORD)3210举例:DECOAC2,VW40

输入字节AC2:00000011(3)VW40:0000000000001000DECO指令相当于自动电话交换机的功能,源操作数的最低4位为电话号码,交换机根据它接通对应的电话机(将目标操作数的对应位置为1)。编码:ENCO(与译码相反)将IN的最低有效位(值为1)的位号编码成4位二进制数,写入OUT的低4位(半个字节)(WORDBYTE)举例:ENCOAC2,VB10AC2:1000001000000000

执行后:VB10:000010019876543210将IN指定的字节低4位的对应的十六进制数转换成七段显示码,送入OUT指定的字节地址。例:

SEGVB10,AC1VB10:000001015要亮5

f,g,c,d,a均为1AC1:01101101adecgbf(6)段码(SEG)指令举例:1.若要显示25,可用整数的完全除法DIV,除以10,得到32位的结果VD100,高16位VW100是余数5,低16位VW102是商2,将高16位和低16位分别SEG,送给QB0和QB1。2.或先使用I_BCD(思考)其他转换指令ATHASC码转换成16进制HTA

16进制转换成ASC码ITA

整数转换成ASC码DTA

双字整数转换成ASC码RTA

实数转换成ASC码自学填表、查表指令先进先出、后进先出指令存储器填充指令3、表功能指令(1)、填表ATT向表TBL中增加DATA指定的一个字0006000254318942VW200202204206208TL(最大填表数)TL最大=100EC(实际填表数)

16#1234将字填充到原表最后一个数据的后面,EC+1EC****例:ATT16#1234,VW200(2)、查表FND在表TBL中寻找符合条件的数据STL:FND=TBL,PATRN,INDX

表给定数据符合数据编号

命令参数CMD1~4:=,<>,<,>例:FND=VW402,16#3451,AC0

到表中查#3451,(表以VW402打头)查表前,AC0=0,查到符合条件的数据,该数的编号2给AC0;为查找下一个符合条件的数据,激活指令前AC0+1AC0,继续查找,如没有符合条件的数据,则AC0=6,表示表已经查完注意:ATT,FIFO,LIFO都需要最大填表数(TL),如表格首地址:VW200而FND不需要TL,则操作数的地址比其他高两个字节,如VW202即FND从VW404开始就是数据,FND指令的操作数TBL的首地址是EC(3)、先进先出指令FIFO从表(TBL)中移走第一个数据,并将此数输出到DATA,剩余数据依次上移一个位置注意:每执行一次FIFO,EC-1EC(4)、后进先出指令LIFO移走最后一个数据,并将此数输出到DATAEC-1EC执行FILL指令后,VW400~VW418的区域被清零。

FILLIN,OUT,N用输入值(IN)填充从输出单元(OUT)开始的N个字

的内容。(5)存储器填充指令FILL举例:

将从VW100开始的256个字节(128个字)的存储单元清零。

NETWORK1LDI0.0

FILL+0,VW100,128指令执行结果:从VW100开始的256个字节(VW100~VW354)的存储单元全部清零。

6.2程序控制指令6.2.1有条件结束指令

6.2.2暂停指令

6.2.3监视定时器复位指令

6.2.4跳转与标号指令

6.2.5循环指令

6.2.1有条件结束指令梯形图:语句表:

END

举例:当前面的逻辑关系成立,终止当前扫描周期,只能在主程序中使用END指令;如果不写,系统自动在主程序结束时加上一个无条件结束;注意:END不能在子程序或中断程序中使用,如果使用,系统将终止整个程序的执行6.2.2有条件停止指令梯形图:语句表:

STOP

举例:用在主程序中,终止主程序执行,CPU由RUN模式转到STOP模式用在中断程序中,执行STOP,则该中断立即终止,忽略所有等待执行的中断,继续扫描主程序的剩余部分,主程序执行结束时,CPU从RUN模式转换到STOP模式。SM5.0出现I/O错误时,为1有条件结束和暂停指令的应用举例当I0.0接通时,Q0.0有输出,当I0.1接通,执行END指令,终止用户程序,END指令下面的程序不会继续执行,返回主程序的起点,Q0.0仍然保持接通。若I0.1断开,接通I0.2,则Q0.1有输出,若将I0.3接通,则执行STOP指令,立即终止程序的执行,CPU转为STOP模式,Q0.0和Q0.1输出均为0。6.2.3监视定时器复位指令梯形图:语句表:WDR

功能:对CPU系统的监视定时器WDT进行复位操作。看门狗WDT:1、CPU处于RUN模式时,默认状态下,主扫描的持续时间限制为500毫秒。如果主扫描的持续时间超过500毫秒,则CPU会自动切换为STOP模式;2、可以在程序中执行看门狗复位(WDR)指令来延长主扫描的持续时间。每次执行WDR指令时,扫描看门狗超时时间都会复位为500毫秒。但是,主扫描的最大持续时间为5秒。如果当前扫描持续时间达到5秒,CPU会无条件切换为STOP模式。若用户程序过长,希望扫描时间>500ms,或出现中断使得扫描时间>500ms,可使用WDR指令来重新触发WDT,扩展允许扫描的周期;使用WDR指令时,下列操作只有在扫描周期结束时才能执行:通信(自由端口方式除外)、I/O更新(立即I/O除外)、强制更新、SM位更新、运行时间诊断、中断程序中的STOP等6.2.4跳转与标号指令①跳转指令梯形图:语句表:JMPn

(n=0~255)功能:当输入端逻辑为1时,程序跳转到同一程序中的标号n处执行。②标号指令梯形图:语句表:LBLn

功能:用以标记跳转目的地的具体位置。注意:两者成对出现,并且只能在同一个程序中(主、子、中断程序不能互跳)可以多个跳转指令使用同一标号,但不允许一个跳转指令对应多个标号;同一程序中也不允许存在相同的标号;在SCR指令中,JMP和LBL只能在同一个SCR段中使用;一般,将LBL放在JMP后面,减少程序的执行时间。SM0.2:当RAM中保存的数据丢失时,SM0.2=1一个扫描周期本程序:当保存的数据没有丢失,则跳转到标号4处,往LBL=4的下方执行程序举例:用增减计数器进行计数,如果当前值小于500,则程序按原顺序执行,若当前值超过500,则跳转到从标号10开始的程序执行。程序实例:1516---------当操作方式选择开关闭合时,I0.0的常开触点闭合,跳过手动程序段不执行;I0.0常闭触点断开,选择自动方式的程序段执行;而操作方式选择开关断开时的情况与此相反,跳过自动方式程序段不执行,选择手动方式的程序段执行.移位寄存器指令实现顺序起动和顺序停止6.2.5循环指令梯形图:语句表:FORINDX,INIT,FINALNEXT

功能:FOR标记循环体的开始;NEXT标记循环体的结束,无操作数;两者成对出现,包括中间的程序,表示一个循环FOR指定三个值:INDX、INIT、FINAL

当前循环记数、初值、终值

FINAL>INDX循环

FINAL=INDX顺序向下执行,不循环FINAL<INDX循环不执行当FOR指令的逻辑条件满足时反复执行循环体指令。循环嵌套指令的使用举例1.若初值为1,终值为100,则循环100次。循环允许后,将初值1拷贝到指针值,当前循环计数为1,然后每执行依次循环体,当前计数值+1,并将结果与终值100比较,直到=终值。若想变化循环次数,则在循环执行过程中可以修改参数2.FOR/NEXT的循环嵌套可达8层3.循环程序是在一个扫描周期内执行的,如果循环次数很大,循环程序的执行时间很长,可能使监控定时器(看门狗)动作;4.循环程序一般使用信号的上升沿调用。[例]循环、跳转指令应用程序:6.3局部变量表与子程序6.3.1局部变量

6.3.2子程序6.3.1局部变量1.局部变量的名称及类型

2.局部变量的地址分配及增加新变量I、Q、M、SM、AI、AQ、V、S、T、C、HC地址区中的变量称为全局变量,在符号表中定义的上述地址区中的符号称为全局符号。在子程序中,尽量使用局部变量。1.局部变量的名称及类型局部变量用局部变量表来定义。打开变量表窗口方法:单击“视图”菜单的“窗口”区域中的“组件”按钮,再打开下拉菜单“变量表”,将出现程序编辑器下面。1.局部变量的名称及类型用局部变量表定义局部变量,需为各个变量命名。局部变量名又称符号名,最多23个字符,首字符不能是数字。选用合适的变量名可方便编程,并增强程序的可读性。局部变量表中的变量类型区定义的变量有:输入参数(IN)、输入输出子程序参数(IN/OUT)、输出子程序参数(OUT)、临时变量(TEMP)4种类型。IN类型:将指定位置的参数传入子程序。IN/OUT类型:将指定位置的参数传到子程序,从子程序来的结果值被返回到同样的地址。OUT类型:从子程序的结果值(数据)传入到指定参数位置。TEMP类型:局部存储器只用作子程序内部的暂时存储器,不能用来传递参数。以上顺序不能变。1.局部变量的名称及类型2.局部变量表的地址分配及增加新变量

在局部变量表中定义局部变量时,只需指定局部变量的类型(IN、IN/OUT、OUT和TEMP)和数据类型,不用指定存储器地址,程序编辑器自动为各个局部变量分配地址;起始地址为LB0,1~8个连续的位参数分配一个字节,字节中位地址为Lx.0~Lx.7

(x为字节地址).若要增加变量,鼠标右键单击已有的行,菜单“插入”→“行”命令。6.3.2子程序1.子程序的创建

2.子程序调用指令、子程序返回指令

3.带参数调用子程序1.子程序的创建可采用下列方式创建子程序:①打开程序编辑器,在“编辑”下拉菜单“对象”→“子程序”;②在程序编辑器视窗中单击鼠标右键,在弹出菜单中执行命令“插入”→“子程序”;③用鼠标右键单击指令树上的“程序块”图标,在弹出菜单中执行命令“插入”→“子程序”,程序编辑器将自动生成并打开新的子程序,在程序编辑器底部出现标有新的子程序的标签。单击项目树中子程序的图标,可以重新命名子程序。2.子程序调用指令、子程序返回指令梯形图:语句表:CALLSBR_nCALLSBR_n,IN,IN_OUT,OUTCRET功能:当EN=1时,调用子程序SBR_n

。CRET:子程序返回子程序:优化程序结构,减少扫描时间主程序把程序控制权交给子程序

结束后,必须返回主程序

无条件子程序返回指令(RET)有条件子程序返回指令(CRET)CRET指令RET指令Micro/WIN为每个子程序自动加入无条件返回指令子程序返回之处注意:中断程序和子程序也可以调用子程序;允许子程序递归调用(子程序调用自己),但在进行递归调用时应非常慎重;主程序嵌套调用子程序,最大嵌套深度为8层;中断程序嵌套调用子程序,嵌套深度为4层;子程序中不能用end;不能用jmp指令跳入或跳出子程序;主程序和子程序共用累加器,调用时不需要重新存储或重装。3.带参数调用子程序子程序可带参数调用,使得子程序调用更为灵活方便,程序结构更为紧凑清晰。子程序的调用过程如果存在数据的传递,则在调用指令中应包含相应的参数。参数在子程序的局部变量表中定义,最多可以传递16个参数。先在子程序中设置好参数,然后到主程序中调用,就出现带参数调用的指令。看例子局部变量表中的变量有IN、OUT、IN/OUT和TEMP等4种类型。EN和IN1的输入为布尔型能流输入地址参数&VB100是将一个双字输入子程序调用时,输入参数被拷贝到局部存储器。子程序完成时,从局部存储器拷贝输出参数到指定的输出参数地址。例:子程序调用指令的使用举例要求将以度为单位的角度值保存在MD20中,通过子程序求取其余弦值并存放在VD20中。子程序中变量名称前面的“#”不是局部变量,是编程软件自动加上去的,不用键入“#”号。4.子程序中的定时器停止调用子程序时,子程序内的线圈的ON/OFF状态保持不变。如果停止调用SBR-2,该子程序中的定时器正在定时,100ms定时器将停止计时,当前值保持不变,重新调用子程序时继续定时。但是1ms定时器T32和10ms定时器T33将继续定时,定时时间到,它们在子程序之外的触点也会动作。SBR-2MAIN6.4中断程序与中断指令6.4.1中断程序

6.4.2中断指令6.4.1中断程序中断是使系统暂时中断现在正在执行的程序,而转到中断服务子程序,去处理那些急需处理的中断事件,处理后返回原程序时,恢复当时的程序执行状态并继续执行。中断程序是由用户编写处理中断事件的程序,但不是由用户程序调用,而是在中断事件发生时由操作系统调用。处理后返回原程序中断指令使系统暂时中断现在正在执行的程序,而转到中断服务程序去处理那些急需处理的事件。中断处理提供了对特殊的内部或外部事件的快速响应。6.4.2中断指令1.中断事件

2.中断优先级:

3.中断指令通信口中断I/O中断时基中断高低1.中断事件通信口中断PLC的串行通信口可由用户程序来控制,接收字符、接受完成、发送完成都可以产生中断事件;事件号:8、9、23~26(2)I/O中断可用输入点(I0.0~I0.3以及数字量输入信号板的标准CPU的输入通道I7.0和I7.1)的上升沿或下降沿产生中断、高速计数器中断(计数器当前值等于预设值发生中断,响应高速事件)、脉冲串输出中断(指定脉冲数输出已完成,典型应用是步进电机控制);事件号:0~7、12~20、27~33(3)时基中断包括定时中断和定时器中断(T32/T96);定时中断:可以按指定的周期时间循环产生周期性中断事件(定时中断0和1);常用定时中断以固定的事件间隔去控制模拟量的采集和执行PID回路程序;比如以1ms为增量,周期时间1~255ms,时间放在特殊存储器SMB34、SMB35中;定时中断0和1对应的事件号:10和11。(3)时基中断

包括定时中断和定时器中断;定时器中断(T32/T96):在给定时间间隔到达时产生中断;只能是1ms分辨率的定时器;在中断允许后,当定时器的当前值等于设定值时产生中断。对应的中断事件号:21、22。按优先级排列的中断事件按优先级排列的中断事件2.中断优先级中断按以下固定的次序来决定优先级:通讯(最高优先级)I/O中断(中等优先级)时基中断(最低优先级)优先级高的先处理,其他中断事件排队等候各型号CPU所能保存的最大中断事件个数:图6-24

SM4.0,SM4.1,SM4.2:通信口中断、I/O中断、定时中断的中断队列溢出标志位,只在中断程序中使用,队列变空或控制返回到主程序时,该标志位复位。3.中断指令(1)中断连接、中断分离指令

(2)全局中断允许、全局中断禁止指令

(3)中断返回指令(1)中断连接、中断分离指令①中断连接指令梯形图:语句表:ATCHINT,EVNT功能:当EN=1时,建立中断事件EVNT和中断程序INT之间的联系,并允许这个中断事件。●用来建立某个中断事件(EVNT)和某个中断程序(INT)之间的联系。●并允许这个中断事件●该中断事件发生时执行相关的中断程序中断事件中断程序多个中断事件可调用同一个中断程序;一个中断事件不能同时与多个中断程序建立连接,否则,系统默认执行这些中断程序中的最后一个。梯形图:语句表:DTCHEVNT

功能:当EN=1时,解除某个中断事件EVNT和中断程序之间的联系。②中断分离指令截断某个中断事件和所有中断程序之间的联系单独禁止某中断事件,使中断回到不激活或无效状态SM5.0:监测I/O状态,若有错误则SM5.0=1若发现I/O错误,禁止I0.0上升沿中断I/O中断程序,说明DTCH指令的使用(2)全局中断允许、禁止指令梯形图:语句表:ENI

DISI功能:全局允许中断/全局禁止中断。执行DISI指令后,出现的中断事件就进入中断队伍排队等候,直到全局中断允许指令(ENI)重新允许中断。全局地允许所有被连接的中断事件

全局地禁止处理所有中断事件当CPU进入RUN模式时自动禁止了中断。在RUN模式执行全局中断允许指令(ENI)后,允许所有中断。

(3)清除中断事件指令从中断队列中清除所有编号为EVNT的中断事件。例如用来清除由于机械振动造成的高速计数器产生的错误中断。如果该指令用于清除假的中断事件,则应在执行CEVNT之前分离该中断事件。否则,执行该指令后,由于错误继续存在,还会向队列中添加新的事件。语句表:CEVNTEVNT(4)中断返回指令梯形图:语句表:CRETI

功能:从中断程序中有条件返回。有条件中断返回指令(CRETI),根据控制的条件从中断程序中返回到主程序中断程序入口

编程软件自动在中断程序结尾加上无条件中断返回指令(RETI)优化中断程序:使其简短,减少中断程序的执行时间。在执行某特殊的任务后立即返回主程序,否则有可能引起主程序控制设备的异常操作。中断程序中不能使用:全局中断禁止指令DISI全局中断允许指令ENI定义高速计数器指令HDEF顺序控制继电器指令LSCR有条件结束指令END。通讯口中断I/O中断

时基中断自学定时中断定时器中断举例:定时中断按指定的周期时间循环执行中断程序必须用ATCH指令,建立中断程序与定时中断事件的连接。事件10是定时中断0例:每隔100ms,采集模拟量值并送到VW100中。事件10是定时中断0定时中断的周期时间周期增量:1ms

定时中断周期时间:1~255ms。定时中断0/1的周期时间SMB34/35改变周期时间:修改SMB34/35中的值,必须重新建立中断程序与定时中断事件的连接。定时中断事件中断程序当定时中断设定的周期时间到,即定时中断事件(10/11)发生,则执行相应的中断程序。定时中断一旦允许就连续地运行,按指定的时间间隔反复执行被连接的中断程序。常用定时中断以固定的时间间隔去控制模拟量的采集和执行PID回路程序。如果退出RUN模式或分离定时中断,则定时中断被禁止。定时中断的应用常用定时中断以固定的时间间隔去控制模拟量的采集(AIW16)和执行PID回路程序(定时中断0/1)AIW16中断指令举例例:用定时中断0,每100ms将VB0加1,VB0到100时关闭定时中断,并将Q0.0置1,设计主程序和中断程序【例6-26】使用定时器中断控制8路彩灯。彩灯初始状态是最右边1、2两路亮,然后每隔2s循环左移1位,即2、3两路亮,依次循环。使用定时器T32中断,主程序与中断程序见下图。6.5PID指令及应用6.5.1PID算法

6.5.2PID回路指令PID调节系统的组成在闭环系统中,PID控制器根据给定值和过程变量的偏差调节回路输出值,使得偏差为0,使系统达到稳定状态.用PLC实现模拟量闭环控制系统PLCc(t)M(t)SP(n)e(n)M(n)pv(n)pv(t)6.5.1PID算法(1)比例项

(2)积分项

(3)微分项PID回路的输出变量M(t)可看作比例项、积分项、微分项之和:连续系统的PID算法(PID回路输出的初值)PID比例调节(P)是按比例反应系统的偏差,系统一旦出现偏差,立即产生调节作用以减少偏差。比例作用越大,可加快调节时间,但过大的比例,使系统的稳定性下降,甚至造成系统不稳定。积分调节(I)作用是使系统消除稳态误差,提高误差度。积分作用的强弱取决于积分时间常数Ti,Ti越小,积分作用就越强;反之积分作用弱。加入积分使得系统动态响应变慢。(PI或PID)微分调节作用反映系统偏差信号的变化率具有预见性,能遇见偏差变化的趋势,因此能产生超前的控制作用,在偏差没有形成之前,已被微分调节作用消除。因此,微分可改善系统的动态性能。微分对噪声干扰有放大作用,因此过强的微分对系统抗干扰不利。PID控制器调节回路输出。为使系统达到稳定状态,应让偏差(e)趋于零。

偏差(e)=给定值(SP)-过程变量(PV)PID控制器的输出量M(t).比例项积分项初始值微分项随时间t连续变化的模拟量PID回路的增益6.5.1PID算法将连续函数离散化,第n次采样时控制器的输出为:

Mn——在第n采样时刻PID回路输出的计算值;en——在第n次采样时刻的偏差值;en-1——在第n-1采样时刻的偏差值(偏差前值);KI——积分项的系数;KD——微分项的系数;计算中,只需保留积分项前值(MX),即:从第一个采样周期到当前采样周期的所有误差的累积值比例项、积分项、微分项比例项

MPn=KC·(SPn-PVn­) 积分项

MIn=KC·TS/TI·(SPn-PVn)+MX 微分项

MDn=KC·TD/TS·(PVn-1-PVn)

9个参数KIKD进行PID运算的9个参数:过程变量当前值PVn给定值SPn增益KC采样时间TS积分时间TI微分时间TD积分项前值MX过程变量前值PVn-1

输出值Mn6.5.2PID回路指令1.PID回路指令格式与说明

2.控制方式

3.回路输入/输出变量的数值转换

4.变量和范围

5.选择回路控制类型

6.报警与出错1.PID回路指令格式与说明①指令格式梯形图:语句表:PIDTBL,LOOP

功能:当EN=1时,运用回路表TBL中输入和配置的信息,在回路号LOOP指定的回路中进行PID运算。PID回路指令运用回路表中的输入信息和组态信息,进行PID运算,编程极其简便。(组态编程,即填表式编程)

回路号0-7回路表的起始地址限用VB区域1.PID回路指令格式与说明TBL是回路表起始地址,只能使用字节VB区域;LOOP是回路号,为字节常量0~7;程序中可使用八条PID指令,不可重复使用同一个回路号;如果两条或多条PID指令使用相同的回路号(即使它们的表格地址不同),PID计算会互相干扰,结果难以预料。1.进行PID运算的前提条件1逻辑堆栈栈顶值必须为1.②回路表格式存储九个参数,用于控制和监控循环运算,包括过程变量、给定值、输出、增益、采样时间、积分时间、微分时间及积分相前值(偏差)及过程变量前值。连续的36个字节

9个参数VB100注意回路表中:1.数据类型:实数,4个字节2.偏移地址:VD3.数据标准化4.回路表中的值进行组态:置给定值=过程变量置过程变量前值=过程变量当前值置积分项前值=输出值输出值为PID计算值注意:要以一定的采样频率进行PID运算,采样时间必须输入到回路表,且PID回路指令必须编入定时发生的中断程序中;或者在主程序中由定时器控制PID回路指令的执行频率。周期地进行PID运算2.控制方式

当允许输入端(EN)检测到一个正跳变信号,PID回路就从手动方式无扰动地切换到自动方式。无扰动切换时,系统把手动方式的当前输出值填入回路表中的Mn栏,用来初始化输出值Mn,且进行一系列的操作,对回路表中的值进行组态:置给定值SPn=过程变量PVn置过程变量前值PVn-1=过程变量当前值PVn置积分项前值MX=输出值Mn

自动手动为了能从手动方式顺利向自动方式切换,系统必须把手动方式的当前输出值填入回路表中的Mn栏,用来初始化输出值Mn,且进行一系列操作对回路表中的值进行组态:置给定值(SPn)=过程变量(PVn)置过程变量前值(PVn-1)=过程变量当前值(PVn)置积分项前值(MX)=输出值(Mn)变量名过程变量(PVn)给定值(SPn)输出值(Mn)增益(KC)采样时间(TS)积分时间(Ti)微分时间(TD)积分项前值(MX)过程变量前值(PVn-1)=给定值(SPn)=输出值(Mn)=过程变量当前值(PVn)偏移地址048121620242832输出值为PID计算值置给定值(SPn)=过程变量(PVn)置过程变量前值(PVn-1)=过程变量当前值(PVn)置积分项前值(MX)=输出值(Mn)3.回路输入/输出变量的数值转换(1)回路输入变量的转换和标准化(2)回路输出值转换成刻度整数值偏移地址变量名数据类型变量类型描述4给定值(SPn)实数输入必须在0.0~1.0之间8输出值(Mn)实数输入/输出必须在0.0~1.0之间一个PID回路有两个输入变量,设定值和过程变量设定值和过程变量是实际物理量,PID指令操作之前,必须转换成标准的浮点型实数。第一步:将实际物理数值从16位整数值转换为浮点型实数.程序:

MOVWAIW16,AC0ITDAC0,AC0//转换输入整数到双字整数DTRAC0,AC0//转换32位双字整数到实数(1)回路输入变量的转换和标准化3.回路输入变量的转换和标准化

执行PID指令前必须把给定值和过程变量转换成标准的浮点型实数。

AIW16pv(t)pv(n)Sp(n)将过程变量PVn输入值标准化为(0.0~1.0)的实数,填入表中(VD100):INT→REAL→(0.0~1.0)回路输入变量的数据转换

INT→REAL

XORD AC0,AC0,清空累加器MOVW AIW16,AC0,把待变换的AIW16的模拟量(INT)存入累加器。LDW>= AC0,0 如果模拟量为正JMP 0 则直接转成实数NOT 否则ORD 16#FFFF0000,AC0 先对AC0中的值进行符号扩展LBL 0 ITD AC0,AC0把16位整数转换成双字整数DTR AC0,AC0把双字整数转成实数第二步:

实数转换为标准化的0.0和1.0之间的数值。下列公式用于标准化设定值或过程变量值:RNorm=(RRaw/Span+Offset)RNorm

:标准化的实数值RRaw

:未标准化的实数值Span(扩展):是最大可能的数值减去最小可能的数值:对于单极数值(典型)=27648

对于双极数值(典型)=55296Offset(偏移量):对单极性数值是0.0,对双极性数值是0.5回路输入变量的数据转换与标准化

REAL→(0.0~1.0)

双极性实数标准化的程序:(Span=55296)/R

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论