项目5 步进电机控制系统.docx
《项目5 步进电机控制系统.docx》由会员分享,可在线阅读,更多相关《项目5 步进电机控制系统.docx(41页珍藏版)》请在冰豆网上搜索。
项目5步进电机控制系统
项目5:
步进电机控制系统
【学习目标】
1.掌握PLC处理的数据的形式。
2.掌握PLC功能指令的作用、表示形式。
3.会分析功能指令编写的程序。
4.掌握利用传送、比较、移位、跳转等常用功能指令进行程序设计的方法和技能。
【任务描述】
步进电机控制要求如下:
步进电机的控制方式是采用四项双四拍的控制方式,每步旋转150,每周走24步。
电机正转时的供电时序是:
DCCBBAAD
电机反转时供电时序是:
ABBCCDDA
【相关知识点】
一.算术与逻辑运算指令
算术运算指令包括加、减、乘、除运算和常用的数学函数变换;逻辑运算指令包括逻辑与、或和取反等。
1.算术运算指令
(一)加/减运算
加/减运算指令是对符号数的加/减、双整数加/减运算和实数加/减运算。
(1)加/减运算指令格式
加/减运算6种指令的梯形图指令格式如表5-1所示。
表5-1加/减运算指令格式
LAD
功能
IN1+IN2=OUT
IN1-IN2=OUT
梯形图加/减运算指令采用指令盒格式,指令盒由指令类型,使能端EN,操作数(IN1、IN2)输入端,运算结果输出OUT,逻辑结果输出端ENO等组成。
(2)指令类型和运算关系
①整数加/减运算(ADDI/SUBI)使能EN输入有效时,将两个单字长(16位)符号整数(IN1和IN2)相加/减,然后将运算结果送OUT指定的存储器单元输出。
②双整数加/减运算(ADDDI/SUBDI)使能EN输入有效时,将两个双字长(32位)符号证书(IN1和IN2)加/减,运算结果送OUT指定的存储器单元输出。
③实数加/减运算(ADDR/SUBR)使能EN输入有效时,将两个双字长(32位)符号数IN1和IN2相加/减,运算结果送OUT指定的存储器单元输出。
(3)加/减运算IN1、IN2、OUT操作数的数据类型:
INT、DINT、REAL。
(4)对标志位的影响
加/减运算指令影响特殊标志的算术状态位SM1.0~SM1.2,并建立指令盒能量流输出ENO.
算术状态位(特殊标志位)SM1.0(零),SM1.1(溢出),SM1.2(负)
SM1.1用来指示溢出错误和非法值。
如果SM1.0和SM1.2的状态无效,原始操作数不变。
如果SM1.1不置位,SM1.0和SM1.2的状态反映算术运算的结果。
ENO(能量流输出位),当输入使能EN有效,运算结果无效时,ENO=1,否则ENO=0(出错或无效)。
使能流输出ENO断开的出错条件:
SM1.1=1(溢出),0006(间接寻址错误),SM4.3(运行时间)。
(5)加法运算应用举例
【例1】求2000加100的和,2000在数据存储器VW100中,结果存入VW200。
图5-1例1题图
(二)乘/除运算
乘/除运算是对符号数的乘法运算和除法运算。
包括有整数乘/除运算,双整数乘/除运算,整数乘/除双整数输出运算和乘/除运算等。
(1)乘/除运算指令格式
表5-2乘/除运算指令格式
LAD
功能
乘法运算
除法运算
乘/除运算指令采用同加减运算类似的指令盒格式。
指令分为MULI/DIVI整数乘/除运算,MULDI/DIVDI双整数乘/除运算,MUL/DIV整数乘/除双整数输出,MULR/DIVR实数乘/除运算等8种类型。
LAD指令执行的结果:
乘法IN1*IN2=OUT
除法IN1/IN2=OUT
(2)指令功能分析
①整数乘/除法指令(MULI/DIVI)
使能EN输入有效时,将两个单字长(16位)符号整数IN1和IN2相乘/除,产生一个双字节长(16位)整数结果,从OUT(积/商)指定的存储器单元输出。
②双整数乘/除法指令有效时,将两个双字长(32位)符号整数IN1和IN2相乘/除,产生一个双字长(32位)整数结果,从OUT(积/商)指定的存储器单元输出。
③整数乘/除双整数输出指令(MUL/DIV)
使能输入EN有效时,将两个单字长(16位)符号整数IN1和IN2相乘/除,产生一个双字长(32位)整数结果,从OUT(积/商)指定的存储器单元输出。
整数除法产生的32位结果中低16位是商,高16位是余数。
④实数乘/除法指令(MULR/DIVR)
使能输入EN有效时,将两个双字节(32位)符号实数IN1和IN2相乘/除,产生一个双字长(32位)实数结果,从OUT(积/商)指定的存储器单元输出。
(3)操作数寻址范围
IN1、IN2、OUT操作数的数据类型根据乘/除法运算指令功能分为INT/(WORD)、DINT、REAL。
(4)乘/除运算对标志位的影响
①乘/除运算指令的结果影响算术状态位(特殊标志位):
SM1.0(零),SM1.1(溢出),SM1.2(负),SM1.3(被0除)。
乘法运算过程中SM1.1(溢出)被置位,就不写输出,并且所有其他的算术状态为0。
(整数乘法产生双整数指令输出不会产生溢出)。
②使能流输出ENO=0断开的出错条件是:
SM1.1(溢出),SM4.3(运行时间),0006(间接寻址错误)。
(5)乘/除运算应用举例
【例2】乘/除法指令的应用,程序如图5-2所示。
图5-2例2题图
2.数学函数变换指令
数学函数变换指令包括平方根、自然对数、指数、三角函数等几个常用的函数指令。
(一)平方根/自然对数/指数指令
平方根/自然对数/指数指令格式及功能表5-3。
表5-3平方根/自然对数/指数指令格式
LAD
STL
功能
SQRTIN,OUT
求平方根指令
SQRT(IN)=OUT
LNIN,OUT
求(IN)的自然对数指令
LN(IN)=OUT
EXPIN,OUT
求的指数指令
EXP(IN)=OUT
(1)平方根指令(SQRT)
平方根指令是把一个双字长(32位)的实数开方,得到32位得实数运算结果,通过OUT指定的存储器单元输出。
(2)自然对数(LN)
自然对数指令将输入的一个双字长(32位)实数的值取自然对数,得到32位的实数运算结果,通过OUT指定的存储器单元输出。
当求解以10为底的常用对数时,用实数除法指令将自然对数除以2.302585即可。
(LN10≈2.302585)
【例3】求以10为底,150的常用对数,150存于VD100,结果放到AC1(应用对数的换底公式求解lg
150=ln150/ln10)。
如图5-3所示。
(3)指数指令(EXP)
指数指令将一个双字长(32位)实数IN的值取以e为底的指数,得到32位的实数运算结果,通过OUT指定的存储器单元输出。
该指令可与自然对数指令想配合,完成以任意数为底,任意数为指数的计算。
可以利用指数函数求解任意函数的x次方(yx=exlny)。
例如:
7的4次方=EXP[4*LN(7)]=2401
8的3次方根=81/3=EXP[LN(8)*(1/3)]=2
图5-3例3题图
(二)三角函数
三角函数运算指令包括正弦(SIN)、余弦(COS)和正切(TAN)指令。
三角函数指令运行时把一个双字长(32位)的实数弧度值IN分别取正弦、余弦、正切,得到32位的实数运算结果,通过OUT指定存储器单元输出。
三角函数运算指令格式见表5-4。
表5-4三角函数运算指令格式
LAD
STL
功能
SININ,OUT
COSIN,OUT
TANIN,OUT
SIN(IN)=OUT
COS(IN)=OUT
TAN(IN)=OUT
【例4】求65゜的正切值。
图5-4例4题图
(三)数学函数变换指令对标志位的影响及操作数的寻址范围
(1)平方根、自然对数、指数、三角函数运算指令执行的结果影响特殊存储器位:
SM1.0(零),SM1.1(溢出),SM1.2(负),SM1.3(被0除)。
(2)能流输出ENO=0的错误条件是:
SM1.1(溢出),SM4.3(运行时间),0006(间接寻址错误)
(3)IN、OUT操作数的数据类型为REAL。
3.增1/减1计数
增1/减1计数器用于自增、自减操作,以实现累加计数和循环控制的等程序的编制。
梯形图为指令盒格式,增1/减1指令操作数长度可以是字节(无符号数)、字或双字(有符号数)。
指令格式见表5-5。
表5-5增1/减1计数指令格式
LAD
功能
字节、字、双字增1
字节、字、双字减1
IN1+1=OUT
IN1-1=OUT
(一)字节增1/减1(INCB/DECB)
字节增1指令/减1指令(INCB/DECB)用于使能输入有效时,把一个字节的无符号输入数IN加1/减1,得到一个字节的运算结果,通过OUT指定的存储器单元输出。
(二)字增1/减1(INCW/DECW)
字增1(INCW)/减1(DECW)指令,用于使能输入有效时,将单字长符号输入数IN端加1/减1,得到一个字的运算结果,通过OUT指定的存储器单元输出。
(三)双字节增1/减1(INCDW/DECDW)
双字增1/减1(INCDW/DECDW)指令用于使能输入有效时,将双字长符号输入数IN加1/减1,得到双字的运算结果,通过OUT指定的存储器单元输出。
IN、OUT操作的数据类型为DINT。
4.逻辑运算指令
逻辑运算是对无符号数进行的逻辑处理,包括逻辑与、逻辑或、逻辑异或和取反等运算指令。
按操作数长度可分为字节、字和双字逻辑运算。
IN1、IN2、OUT操作数的数据类型:
B、W、DW。
下面以字节操作逻辑运算指令格式为例讲解,其他的字和双字同字节相似,见表5-6。
表5-6逻辑运算指令格式
LAD
功能
与、或、异或、取反
(一)逻辑与指令(WAND)
逻辑与操作指令包括字节(B)、字(W)、双字(DW)等3种数据长度的与操作指令。
逻辑与指令功能:
使能输入有效时,把两个字节(字、双字)长的逻辑输入数按位相与,得到的一个字节(字、双字)逻辑运算结果,送到OUT指定的存储器单元输出。
(二)逻辑或指令(WOR)
逻辑或操作指令包括字节(B)、字(W)、双字(DW)等3种数据长度的与操作指令。
逻辑或指令功能:
使能输入有效时,把两个字节(字、双字)长的逻辑输入数按位相或,得到的一个字节(字、双字)逻辑运算结果,送到OUT指定的存储器单元输出。
(三)逻辑异或指令(WXOR)
逻辑异或操作指令包括字节(B)、字(W)、双字(DW)等3种数据长度的与操作指令。
逻辑异或指令功能:
使能输入有效时,把两个字节(字、双字)长的逻辑输入数按位相与,得到的一个字节(字、双字)逻辑运算结果,送到OUT指定的存储器单元输出。
(四)取反指令(INV)
取反指令包括字节(B)、字(W)、双字(DW)等3种数据长度的取反操作指令。
取反指令功能:
使能输入有效时,将一个字节(字、双字)长的逻辑数按位取反,得到的一个字节(字、双字)逻辑运算结果,送到OUT指定的单元输出。
【例5】字或、双字异或、字求反、字节与操作编程举例。
图5-5例5题图
二.数据处理指令
数据处理指令是可以进行复杂的数据处理和实现特殊用处的指令,包括数据的传送、交换、填充和移位指令等。
1.数据传送
数据传送的指令有字节、字、双字和实数的单个传送指令,还有以字节、字、双字为单位的数据块的成组传送指令,用来实现各存储器单元之间数据的传送和复制。
(一)单个数据传送
单个传送指令一次完成一个字节、字或双字的传送。
指令格式参见表5-7。
表5-7数据传送格式
LAD
STL
功能
MOVIN,OUT
IN=
OUT
功能:
使能流输入EN有效时,把一个输入IN单字节无符号数、单字长或双字长符号数送到OUT指定的存储器单元输出。
数据类型分别为B、W、DW。
使能流输出ENO=0断开的出错条件是:
SM4.3(运行时间),0006(间接寻址错误)。
(二)数据块传送
数据块传送指令一次可完成N个数据的成组传送。
指令类型有字节、字或双字等3种。
指令格式参见表5-8。
表5-8数据块传送指令格式
LAD
功能
字节、字和双字块传送
功能:
(1)字节的数据块传送指令,使能输入EN有效时,把从输入IN个字节数据传送到以输出字节OUT开始的N个字节中。
(2)字的数据块传送指令,使能输入EN有效时,把从输入IN字开始的N个字的数据传送到以输出字OUT开始的N个字的存储区中。
(3)双字节的数据块传送指令,使能输入EN的有效时,把从输入IN双字节开始的N个双字节的数据传送到以输出双字节OUT开始的N个双字节的存储区中。
(三)传送指令的数据类型和断开条件
IN,OUT操作数的数据类型分别为B、W、DW;N(BYTE)的数据范围0~255;IN、OUT操作数地寻址范围见S7-200系统手册。
使能流输出ENO=0断开的出错条件是:
SM4.3(运行时间),0006(间接寻址错误),0091(操作数超界)。
【例6】将变量存储器VW100中内容送到VW200中。
图5-6例6题图
2.字节变换/填充指令
字节变换/填充指令格式见表5-9。
表5-9字节变换/填充指令格式
LAD
STL
功能
SWAPIN
FILLIN,OUT,N
字节交换
字填充
(一)字节变换指令(SWAP)
字节变换指令用来实现字的高、低字节内容交换的功能。
使能输入EN有效时,将输入IN的高、低字节交换的结果输出到OUT指定的存储器单元。
IN、OUT操作数的数据类型为INT(WORD)。
使能流输出ENO=0断开的出错条件是:
SM4.3(运行时间),0006(间接寻址错误)。
(二)字节填充指令(FILL)
使能输入EN有效时,用字输入数据IN填充从输出OUT指定单元开始的N个字节存储单元。
N(BYTE)的数据范围0~255。
IN、OUT操作数的数据类型为INT(WORD)。
使能流输出ENO=0断开的出错条件是:
SM4.3(运行时间),0006(间接寻址错误),0091(操作数超界)。
【例7】将从VW100开始的256个字节(128个字)存储单元清零。
图5-7例7题图
3.移位指令
移位指令是使字节数据、位组合的字数据向指定方向循环、移位的指令,分为左、右移位和循环左、右移位及寄存器移位指令三大类。
移位指令最大移位位数N≤数据类型(B、W、DW)对应的位数,移位位数(次数)N为字节型数据。
(一)左、右移位指令
左、右移位指令数据存储单元与SM1.1(溢出)端相连,移出位被放到特殊标志存储器SM1.1位。
移位数据存储单元的另一端补0。
移位指令格式见表5-10。
表5-10移位指令格式
LAD
功能
字节、字、双字左移
字节、字、双字右移
(1)左移位指令(SHL)
使能输入有效时,将输入的字节、字或双字IN左移N位后(右端补0),将结果输出到OUT所指定的存储单元中,最后一次移出位保存在SM1.1。
(2)右移位指令(SHR)
使能输入有效时,将输入的字节、字或双字IN左移N位后,将结果输出到OUT所指定的存储单元中,最后一次移出位保存在SM1.1。
(二)循环左、右移位
循环移位是将移位数据存储单元的首尾相连,同时又与溢出标志SM1.1连接,SM1.1用来存放被移出的位。
指令格式见表5-11。
(1)循环左移位指令(ROL)
使能输入有效时,字节、字或双字IN数据循环左移N个位后,将结果输出到OUT所指定的存储单元中,并将最后一次移出位送SM1.1。
(2)循环右移位指令(ROR)
使能输入有效时,字节、字或双字IN数据循环右移N个位后,将结果输出到OUT所指定的存储单元中,并将最后一次移出位送SM1.1。
表5-11循环移位指令格式
LAD
功能
字节、字、双字循环左移位
字节、字、双字循环右移位
(三)左右移位、循环移位指令对标志位、ENO的影响及操作数的寻址范围
移位指令影响的特殊存储器位:
SM1.0(零);SM1.1(溢出)。
如果移位操作使数据变为0,则SM1.0置位。
使能流输出ENO=0断开的出错条件是:
SM4.3(运行时间),0006(间接寻址错误)。
N、IN、OUT操作数的数据类型为B、W、DW。
【例8】将VD0右移2位送AC0。
图5-8例8题图
4.寄存器移位指令
寄存器移位指令是一个移位长度可指定的移位指令。
寄存器移位指令格式见表5-12。
表5-12寄存器移位指令格式
LAD
STL
功能
SHRBDATA,S_BIT,N
寄存器移位
梯形图中DATA为数值输入,指令执行时将该位的值移入寄存器。
S-BIT为寄存器的最低位。
N个移位寄存器的长度(1~64),N个正值时左移位(由低位到高位),DATA值从S-BIT位移入,移出位进入SM1.1,N为负值时右移位(由高位到低位),S-BIT移出到SM1.1,另一端补充DATA移入位的值。
每次使能有效时,整个移位寄存器移动一位,最高位的计算方法:
﹝N的绝对值-1+(S-BIT的位号)﹞/8,余数即是最高位的位号,商与S-BIT字节号之和即是最高位的字节号。
如:
经计算它的最高位的值应该为:
M2.1。
使能流输出ENO=0断开的出错条件是:
SM4.3(运行时间),0006(间接寻址错误),0091(操作数超界),0092(计数区错误)。
三.程序控制类指令
程序控制类指令用于程序运行状态的控制,主要包括系统控制、跳转、循环、子程序调用、顺序控制等指令。
1.系统控制类指令
系统控制类指令主要包括暂停、结束、看门狗等指令,指令格式见表5-13。
表5-13系统控制类指令
LAD
STL
功能
STOP
暂停指令
END/MEND
条件/无条件结束指令
WDR
看门狗指令
(一)暂停指令(STOP)
使能输入有效时,立即终止程序的执行。
指令执行的结果使CPU工作方式由RUN切换到STOP方式。
在中断程序中执行STOP指令,该中断立即终止,并且忽略所有挂起的中断,继续扫描程序的剩余部分,在本次扫描的最后,将CPU由RUN切换到STOP。
(二)结束指令(END/MEND)
梯形图结束指令不连在左侧母线时,为条件结束指令(END)。
直接连在左侧电源母线时,为无条件结束指令(MEND)。
条件结束指令在使能输入有效时,终止用户程序的执行返回主程序的第一条指令指行(循环扫描工作方式)。
无条件结束指令执行时(指令直接连在左侧母线,无使能输入),立即终止用户程序的执行,返回主程序的第一条指令执行。
注意:
结束指令只能在主程序中使用,不能在子程序和中断服务程序中使用。
(三)看门狗复位指令(WDR)
当使能输入有效时,将看门狗定时器复位。
若使能输入无效,看门狗定时时间到,程序将中止当前指令的执行,重新启动,返回到第一条指令重新执行。
若程序扫描周期超过300ms,最好使用看门狗复位指令,重新触发看门狗定时器,可以增加一次扫描时间。
注意:
使用WDR指令时,要防止过度延迟扫描完成时间,否则,在终止本扫描之前,下列操作过程将被禁止(不予执行):
通信(自由端口方式除外)、I/0更新(立即I/0除外)、强制更新、SM更新(SM0,SM5~SM29不能被更新)、运行时间诊断、中断程序中的STOP指令。
扫描时间超过25s,10ms和100ms定时器将不能正确计时。
【例9】暂停、结束、看门狗指令应用程序。
图5-9例9图
2.跳转指令
跳转指令的指令格式见表5-14。
表5-14跳转指令格式
LAD
STL
功能
JMPn
LBLn
跳转指令
跳转标号
跳转指令(JMP)和跳转地址标号指令(LBL)配合实现程序的跳转。
使能输入有效时,使程序跳转到指定标号n处执行(在同一程序内),跳转标号n=0~255。
使能输入无效时,程序顺序执行。
【例10】跳转指令应用程序。
图5-10例10图
指令说明:
1.跳转指令和标号指令只能在同一程序块中,如主程序、同一个子程序和同一个中断程序。
不能在不同的程序块中互相跳转。
2.在执行跳转指令后,被跳过程序段中的各元器件状态如下:
(1)计数器停止工作,当前值存储器保持跳转前的计数值。
(2)定时器因刷新方式不同而工作状态不同。
分辨率为1ms和10ms的定时器会一直保持跳转前的工作状态,原来工作的继续工作,到设定值之后其位的状态也会改变,输出触点动作,当前值存储器一直累计到最大值32767才停止。
分辨率为100ms的定时器,跳转期间停止工作,但不会复位,存储器里的值为跳转时的值,跳转结束后,如输入条件允许,可继续计时,但已失去准确计时的意义。
所以跳转程序段里定时器慎用。
3.循环指令
循环指令用于描述一段程序的重复循环执行。
由FOR和NEXT指令构成程序的循环体。
循环指令的指令格式见表5-15。
表5-15循环指令的指令格式
LAD
STL
功能
FORIN1,IN2,IN3
NEXT
循环开始
循环结束
FOR指令标记循环的开始,NEXT指令为循环体的结束指令。
FOR指令为指令盒形式,主要参数有使能输入EN,当前值计数器INDX,循环次数初始值INIT,循环计数终止FINAL。
当使能输入EN有效,循环体开始执行,执行到NEXT指令时返回,每执行一次循环体,当前计数器INDX增1,达到终值FINAL时,循环结束。
【例11】循环指令应用程序。
图5-11例11图
使用说明:
(1)FOR/NEXT指令必须成对出现。
(2)FOR/NEXT可以循环嵌套,嵌套最多为8层,但各个嵌套之间不可有交叉现象。
(3)每次使能输入(EN)重新有效时,各个参数端将自动复位。
(4)当初值大于终值时,循环体不被执行。
4.子程序调用指令
通常将具有特定功能、并且多次使用的程序段作为子程序。
子程序可以多次被调用,也可以嵌套(最多8层),还可以递归调用(自己调自己)。
与子程序有关的操作有:
建立子程序、子程序调用和子程序返回。
1.建立子程序的方法:
在编程软件的程序数据窗口的下方有主程序(OBI)、子程序(SUB_n)、中断服务程序(INT_O)的标签,点击子程序标签即可进入SUB_n子程序显示区,也可以通过指令树的项目进入子程序SUB_n显示区。
添加一个子程序时,可以用编辑菜单的插入项增加一个子程序,子程序编号n从0开始自动向上生成。
2.子程序调用和子程序返回两大类指令,子程序返回又分条件返回和无条件返回。
子程序调用指令用在主程序或其它调用子程序的程序中,子程序的无条件返回指令在子程序的最后网络段,梯形图指令系统能够自动生成子程序的无条件返回指令,用户不需输入。
子程序指令的指令格式见表5-16。
表5-16子程序指令的指令格式
LAD
STL
功能
CALLSBR0
CRET
RET
子程序调用
子程序条件返回
自动生成无条件返回
【例12】子程序指令应用程序。
图5-12例12图
使用说明:
(1)当一个子程序被调用时,