PLC的指令系统课件_第1页
PLC的指令系统课件_第2页
PLC的指令系统课件_第3页
PLC的指令系统课件_第4页
PLC的指令系统课件_第5页
已阅读5页,还剩276页未读 继续免费阅读

下载本文档

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

文档简介

第五章S7-200PLC的指令系统2010.3主要内容

S7-200PLC编程的基本概念S7-200PLC基本指令及编程方法S7-200PLC功能指令2010.3第一节S7-200PLC编程的基本概念

★S7-200PLC的编程语言

★数据类型

★用户程序存储器区域

★S7-200CPU的寻址方式

★程序的组织结构

★编程的一般规约

2010.3IEC61131-3指令集

是国际电工委员会(IEC)制定的PLC国际标准61131-3ProgrammingLanguage(编程语言)中推荐的标准语言。支持系统完全数据类型检查只能用梯形图(LAD)和功能块图(FBD)编程语言编程指令执行时间较长2010.3SIMATIC指令集特点:大多数指令符合IEC61131-3标准不支持系统完全数据类型检查可以用梯形图(LAD)、功能块图(FBD)和语句表(STL)编程语言编程指令执行时间较短由西门子公司设计2010.31.梯形图(LAD)

梯形图(LAD)与电气控制电路图相呼应。▲沿用了继电器、触点、串并联等术语▲简化了图形符号▲增加了特殊功能的指令▲信号流向清楚、简单、直观、易懂2010.3

语句表(STL)是用助记符来编程。它类似于计算机的汇编语言。编程简单直观、易懂3.语句表(STL)2010.3有条件地相互转换语句表可以编写梯形图和功能块图无法编写的程序2010.3二、数据类型基本数据类型及数据类型检查

数据长度与数据范围

2010.32.数据类型检查

数据类型检查分为三级:完全数据类型检查简单数据类型检查无数据类型检查2010.33.数据长度与数据范围

数据长度无符号数有符号数十进制十六进制十进制十六进制B(字节):8bit值0to2550toFF-128to12780to7FW(字):16bit值0to65,5350toFFFF-32,768to32,7678000to7FFFD(双字):32bit值0to4,294,967,2950toFFFFFFFF-2,147,483,648to2,147,483,64780000000to7FFFFFFF实数:32bit值

2010.3三、用户程序存储器区域

数据区用户程序区系统区(存放有关PLC配置结构的参数)EEPROMEEPROMEEPROM和RAM2010.3(一)数据区存储器地址的表示格式

可分为:位地址字节地址字地址双字地址2010.31.位地址格式位号字节地址区域标识符

MSBLSBI076543210I1I2I3I4I5I3.42010.32.字节、字、双字地址格式

起始字节地址数据长度区域标识符VD100VB100VW100VB1002010.3(二)数据区存储器区域

输入/输出映象寄存器(I/Q)

内部标志位存储器(M

)变量存储器(V)

局部存储器(L)

顺序控制继电器存储器(S)

特殊标志位存储器(SM)

定时器存储器(T)

2010.3数据区存储器区域(续)计数器存储器(C)

模拟量输入映象寄存器(AI)

模拟量输出映象寄存器(AQ)

累加器(AC)高速计数器(HC)

2010.31.输入/输出映象寄存器(I/Q)

输入映象寄存器(I)输出映象寄存器(Q)

2010.3输入映象寄存器(I)的地址格式位地址

I[字节地址].[位地址]例I0.1字节、字、双字地址

I[长度][起始字节地址]例IB4CPU226模块输入映像寄存器的有效地址范围为:I(0.0~15.7);IB(0~15);IW(0~14);ID(0~12)。

2010.3输出映象寄存器(Q)

CPU将输出的结果存放在输出映象寄存器中,在扫描周期的结尾,CPU以批处理方式将输出映象寄存器的数值复制到相应的输出端子上。输出模块将输出信号传送给外部负载。2010.3I端子I映象区◎输入采样阶段采集◎存放在输入映象区中◎执行期间冻结采样值2010.3O映象区O端子输出刷新阶段集中输出:O映象区→输出锁存器→O端子→外部负载2010.3I/O映象区

I/O映象区每个位都映象I/O单元的每个端子状态

I/O映象区实际上就是外部I/O设备状态的映象区

PLC通过I/O映象区的各个位与外部物理设备建立联系2010.3I/O映象区I/O继电器执行程序过程:

I/O数据←I/O映象区

运算结果→O寄存器执行速度快,抗干扰能力强2010.32.内部标志位存储器(M)

内部标志位存储器(M)也称内部线圈,存放中间操作状态没有外部的输入/输出端子与之对应,因此不能收外部信号的直接控制,其触点也不能直接驱动外部负载。CPU226模块M的有效地址范围为:M(0.0~31.7);MB(0~31);MW(0~30);MD(0~28)2010.3内部标志位存储器(M)的地址格式位地址:

M[字节地址].[位地址]例M20.7字节、字、双字地址:

M[长度][起始字节地址]例MD202010.33.变量存储器(V)

■存放程序执行过程中的中间结果■存放其他相关的数据■全局有效全局是指同一个存储器可以被任何程序存取(主程序、子程序或中断程序)。

CPU226模块V的有效地址范围为:V(0.0~5119.7);VB(0~5119);VW(0~5118);VD(0~5116)2010.3V存储器的地址格式位地址:

V[字节地址].[位地址]例V10.2字节、字、双字地址:

V[长度][起始字节地址]例VW1002010.34.局部存储器(L)

作暂时存储器存放局部变量为子程序传递参数

作为间接寻址的指针不能作为间接寻址的存储器区局部存储器是局部有效局部有效是指某一局部存储器和特定的程序相关联2010.3局部存储器(L)的地址格式位地址:

L[字节地址]、[位地址]例L33.0字节、字、双字:

L[长度][起始字节地址],例LB33有效地址范围为:L(0.0~63.7);LB(0~63);LW(0~62);LD(0~60)。

2010.35.顺序控制继电器存储器(S)

▲顺序控制继电器存储器(S)用于顺序控制▲顺序控制继电器指令是基于顺序功能图(SFC)编程的。有效地址范围为:S(0.0~31.7);SB(0~31);SW(0~30);SD(0~28)2010.3顺序控制继电器存储器(S)的地址格式位地址:

S[字节地址].[位地址]例S4.1字节、字、双字地址:

S[长度][起始字节地址]例SB42010.36.特殊标志位存储器(SM)

■特殊内部线圈(SpecialMemory)■用户程序与系统程序之间的界面■提供特殊的控制功能及系统信息■用户通知系统特殊要求

2010.3只读区域~~可读写区域●只读区只能用其触点*SM0.0

PLC在RUN状态时,SM0.0总为1*SM0.1

初始脉冲,PLC由STOP→RUN时*┇

SM0.1ON一个扫描周期*SMB30

用于自由通信口设置*SMB34/SMB35

用于定时中断间隔时间设置的*┇●可读写区用于特殊控制功能

2010.3特殊标志位存储器(SM)的地址表示格式位地址:

SM[字节地址].[位地址]例SM86.7字节、字、双字地址:

SM[长度][起始字节地址]例SMB862010.37.定时器存储器(T)

※模拟物理时间继电器※时基有三种:

1ms10ms100ms※地址表示格式:T[定时器号]

例:T242010.3是累计时间增量的内部器件,它没有瞬动触点,使用时要提前输入时间预设值,当定时器的输入条件满足时开始计时,当前值从0开始按照一定的时间单位增加;当定时器的当前值达到预设值时,定时器触点动作。利用其触点就可以完成所需要的定时控制任务。定时器存储器(T)

2010.38.计数器存储器(C)累计其输入端脉冲电平由低到高的次数地址表示格式:

C[计数器号]

例:C32010.39.模拟量输入映象寄存器(AI)

模拟量输入模块将外界输入的模拟量信号的模拟值转换成1个字长(16bit)的数字量,转换后存放在模拟量输入存储器(AI)中,供CPU运算处理。

地址格式:AIW[起始字节地址]

例:AIW8对AI只能进行读取操作。必须用偶数字节地址

2010.310.模拟量输出映象寄存器(AQ)

▲存放CPU运算的相关结果,供D/A转换器将1个字长的数字值转换为模拟量。以驱动外部模拟量控制的设备。▲地址格式AQW[起始字节地址]

例:AQW10注意:AI/AQ的地址必须用偶数字节地址表示对AQ只能进行写入操作。2010.311.累加器(AC)

用来存储计算的中间值,也可用来向子程序传递参数,或从子程序返回参数

地址格式:AC[累加器号]

例:AC0提供4个32位累加器,(AC0、AC1、AC2、AC3)

2010.3根据使用场合不同,可以作为字节、字和双字使用11.累加器(AC)

2010.312.高速计数器(HC)

用来累计比CPU扫描速率更快的脉冲信号。高速计数器地址格式:

HC[高速计数器号]

例:HC12010.3存储器的范围2010.32010.3*2010.3CPU226存储器的范围V0.0-5119.7AC0-3I

0.0-15.7AIW0-62Q0.0-15.7AQW0-62M0.0-31.7HC0-5SM0.0-549.7常数常数S0.0-31.7T

0-255C0-255L0.0-63.7AIW62AIB62-AIB632010.3四、S7-200CPU的寻址方式

立即寻址

直接寻址

间接寻址

2010.3(一)立即寻址

立即寻址方式可用来提供常数。常数值可分为字节、字、双字型数据。CPU以二进制方式存储所有常数。指令中可用十进制、十六进制、ASCII码或浮点数形式来表示。例:

MOVB16#DB,SMB772010.3(二)直接寻址

△指令直接给出操作数地址△操作数的存储器地址应按规定的格式表示△指令中,数据类型应与指令标识符相匹配

例:位寻址:LDI3.4字节寻址:MOVBVB50,VB100字寻址:MOVWVW50,VW100双字寻址:MOVDVD50,VD1002010.3直接寻址的编址格式

2010.3说明:;A:元件名称,即该数据在数据存储器中的区域地址,可以是上表中的符号。T:数据类型,若为位寻址,则无该项;若为字节、字或双字寻址,则T的取值应分别为B、W和D;X:字节地址;Y:字节内的位地址,只有位寻址才有该项。2010.3T、C、HC、AC等,直接写出其编号即可。T、C的地址编号有2个含义:位和当前值。AC的特殊性:字节、字、双字特殊元件的直接寻址格式2010.3(三)间接寻址

★指令给出了存放操作数地址的存储单元的地址★操作数地址的地址称为指针★指针用“*”号表示,例*AC12010.3间接寻址2010.31.建立指针将存储器某个位置的地址移入另一存储器或累加器中作为指针“&”符号表示某存储单元的地址?必须使用双字传送指令建立指针2010.32.使用指针来存取数据▲对指针处所指定存储器中的值(内容)进行存取▲把指针处(&VB200)的值AC02010.33.修改指针■处理连续存取数据时,可以通过改变指针的值来进行■修改指针值时,应根据存取数据的长度来进行调整:*字节:指针值加/减1*字:指针值加/减2*双字:指针值加/减4

2010.3五、程序的组织结构

主程序(程序的主体)子程序(可选)中断程序(可选)※在CPU的每个扫描周期,主程序的指令按顺序执行一次※合理优化程序结构,可减少扫描时间构成

2010.3六、编程的一般规约

网络

梯形图(LAD)允许输入端、允许输出端

条件输入/无条件输入

无输出的指令

2010.31.网络

梯形图中,程序被分成称为网络的一些程序段程序不分段,则编译有误2010.32.梯形图(LAD)输入在图形的左边,输出在图形的右边触点与左母线相连,线圈或功能框终止右母线,从而构成一个梯级。在一个梯级中,左、右母线之间是一个完整的“电路”,不允许“短路”、“开路”,也不允许“能流”反向“流动”。2010.33.允许输入端/允许输出端允许输入端:允许输入端(EN)必须存在“能流”(EN=1),才能执行该功能框的功能

允许输入端2010.3允许输出端*ENO端允许功能框的布尔量输出*如果(EN)存在“能流”,且功能框准确无误地执行了其功能,那么允许输出端(ENO)将把“能流”传到下一个功能框的元件。(即ENO=1,实现级联)*如果执行过程中存在错误,那么“能流”就在出现错误的功能框终止,即ENO=0。允许输出端2010.34.条件输入/无条件输入

条件输入:

LAD中,不直接与左母线连接的与“能流”有关的功能框或线圈。2010.3无条件输入直接与左母线连接的与“能流”无关的线圈或功能框。

2010.35.无输出的指令

★功能框中没有允许输出端(ENO)★该指令方框不能用于级联控制2010.3第二节S7-200PLC基本指令及编程方法基本逻辑指令立即I/O指令逻辑堆栈指令取非触点指令正/负跳变触点指令定时器、计数器指令顺序控制继电器指令移位寄存器指令比较触点指令

2010.3基本指令开关量逻辑控制注意各操作数的数据类型及数值范围CPU对非法操作数将生成编译错误代码S7-200CPU操作数的范围见表5-52010.3一、基本逻辑指令

基本逻辑指令以位逻辑操作为主数据类型是Bool通过逻辑堆栈(Stack)实现逻辑处理逻辑堆栈:9级深度,1位宽度“能流”到,执行LAD/FBD指令当栈顶值为“1”时,才能执行语句表指令

逻辑堆栈(Stack)2010.3(一)标准触点指令

1.梯形图(LAD)常开和常闭触点指令用触点表示与某触点对应的存储器地址的位(bit)值为1时:*表示该触点的常开触点是接通的,为1*同时常闭触点为0,表示该常闭触点是断开的2010.32.语句表(STL)LD(Load)栈装载指令A(And)逻辑“与”指令O(or)逻辑“或”指令LDNANON对常闭触点编程2010.3栈装载指令LD(Load)将存储区某位(bit)值装入栈顶。(堆栈最后一级内容丢失)表示一个逻辑梯级常开触点的编程开始。2010.3逻辑“与”指令A(And)表示常开触点串联编程将某bit值“与”栈顶值,运算结果存入栈顶I0.1·I0.0没有压入和弹出操作2010.3LDN、AN、ON指令对常闭触点编程将操作数的bit值取反后,再作相应的“装载”、“与”、“或”操作。I0.2将I0.2的bit值取反后,装入栈顶。2010.3逻辑“或”指令(or)

表示常开触点的并联编程I0.2+I0.3堆栈没有压入和弹出操作将某bit值“或”栈顶值,运算结果仍存入栈顶I0.22010.3(二)输出指令

在(LAD)中输出线圈表示继电器输出线圈编程执行输出指令时,“能流”到,则线圈被激励。线圈被激励,输出映象寄存器或其他存储器的相应位为“1”,反之为“0”。输出线圈2010.3输出指令(续)

在(STL)中输出指令把栈顶值复制到由操作数地址指定的存储器的对应位中。堆栈操作过程中,传送前后堆栈值不变。输出指令Q0.02010.3(三)置位和复位指令

把从指令操作数指定的(bit)地址开始的N个点都被置位或复位N:1~255

N=32010.3在梯形图(LAD)中能流到,就执行置位(或复位)指令执行置位指令时,把从指令操作数指定的地址开始的N个点都被置位且保持,置位后即使能流断,仍保持置位执行复位指令时,把从指令操作数指定的地址开始的N个点都被复位且保持,复位后即使能流断,仍保持复位由于扫描工作方式,程序中写在后面的指令有优先权。2010.3在语句表(STL)中栈顶值为1时,执行置位(或复位)指令执行置位指令时,把从指令操作数指定的地址开始的N个点都被置位且保持,置位后即使栈顶值变为0,仍保持置位执行复位指令时,把从指令操作数(bit)指定的地址开始的N个点都被复位且保持,复位后即使栈顶值变为0,仍保持复位。12010.3电机的启、停控制程序1.2.2010.3已知图中I0.1的波形,画出M1.0的波形2010.3上述指令遵循CPU的扫描规则,程序执行过程中梯形图中各输入继电器、输出继电器触点的状态取自于I/O映象寄存器。程序运算的结果要在输出刷新阶段,将输出映象区的内容集中转存到输出锁存寄存器。然后传送到各相应的输出端子,驱动实际输出负载。小结2010.3二、立即I/O指令★为了加快输入输出响应速度★采用直接处理方式★引入立即I/O指令:立即触点指令立即输出指令立即置位/复位指令2010.3

(一)立即触点指令

※直接读取物理输入点的值※输入映象寄存器内容不更新※指令操作数仅限于物理输入点的值2010.3梯形图(LAD)中

“I”表示立即之意当某物理输入点的触点闭合时,相应的常开立即触点的位(bit)值为“1”常闭立即触点的位(bit)值为“0”常开立即触点常闭立即触点2010.3语句表(STL)中常开立即触点编程:LDI,AI,OI常闭立即触点编程:LDNI、ANI、ONI指令中的“I”表示立即之意2010.3常开立即触点编程执行LDI(立即装载)指令

把物理输入点的位(bit)值立即装入栈顶执行AI(立即与)指令

把物理输入点的位(bit)值“与”栈顶值,运算结果仍存入栈顶执行OI(立即或)指令

把物理输入点的位(bit)值“或”栈顶值,运算结果仍存入栈顶。2010.3常闭立即触点编程执行LDNI、ANI、ONI指令把物理输入点的位(bit)值取反后,再作相应的“装载”,“与”,“或”操作2010.3(二)立即输出指令

2010.3堆栈操作栈顶值被同时立即复制到物理输出点和相应的输出映象寄存器(立即赋值)不受扫描过程的影响不同于一般的输出指令,后者只是把新值写到输出映象寄存器指令操作数只限于物理输出点(Q)2010.3小结■立即触点指令:CPU不等待输入采样的时刻,绕过输入映象寄存器,直接读入物理输入点的状态作为程序执行期间的数据依据不对输入映象寄存器作刷新处理■立即输出指令:直接把结果传送到物理输出点,以驱动实际输出不等待程序执行阶段结束后,转入输出刷新阶段时才把结果传送到物理输出点将结果也写入输出映象寄存器■加快了输入输出响应速度2010.3必须指出:立即I/O指令是直接访问物理输入/输出点的,比一般指令访问输入/输出映象寄存器占用CPU时间要长。不能盲目地使用立即指令,否则,会加长扫描周期时间,反而对系统造成不利影响,应利弊权衡。2010.3(三)立即置位和立即复位指令

把从指令操作数指定的地址开始的N个物理输出点立即置位/复位且保持(即使能流断,仍保持置位/复位)。N:1~128新值被同时写到物理输出点和相应的输出映象寄存器。2010.3在语句表(STL)中

执行立即置位指令时,当栈顶值为1,把从指令操作数指定的地址开始的N个物理输出点立即置位且保持,置位后即使栈顶值变为0,仍保持置位;12010.3

执行立即复位指令时,把从指令操作数指定的地址开始的N个物理输出点立即复位且保持,复位后即使栈顶值变为0,仍保持复位。12010.32010.3三、逻辑堆栈指令

▲逻辑堆栈指令只用于语句表编程▲使用梯形图编程时,梯形图编辑器会自动插入相关的指令处理堆栈操作栈装载与(ALD)栈装载或(OLD)逻辑推入栈(LPS)逻辑读栈(LRD)逻辑弹出栈(LPP)2010.3(一)栈装载“或”(OLD)指令

将堆栈中的第一级和第二级的值进行逻辑或操作,结果放入栈顶,并将堆栈中其余各级的内容依次上弹一级。触点组的并联编程2010.3(二)栈装载“与”(ALD)指令将堆栈中的第一级和第二级的值进行逻辑与操作,结果置于栈顶,并将堆栈中的第三级至第九级的值依次上弹一级。触点组的串联编程2010.3(三)逻辑推入栈(LPS)指令

复制栈顶的值并将这个值推入栈顶,原堆栈中各级栈值依次下压一级,栈底值丢失。一个触点控制三个线圈S0S1S2S3S4S5S6S7S8S0S0S1S2S3S4S5S6S72010.3(四)逻辑读栈(LRD)指令

复制堆栈中的第二层的值到栈顶堆栈没有压入或弹出的操作原栈顶值被新的复制值取代S0S1S2S3S4S5S6S7S8S1S1S2S3S4S5S6S7S82010.3(五)逻辑弹出栈(LPP)指令

堆栈作弹出栈操作将栈顶的值弹出,其余各级依次上弹一级原堆栈第二级的值成为新的栈顶值。

S0S1S2S3S4S5S6S7S8S1S2S3S4S5S6S7S8

X2010.3合理运用LPS,LRD,LPP指令可达到简化程序的目的。注意:LPS与LPP必须配对使用。LPS:逻辑堆入栈,新母线的开始LRD:读栈LPP:弹出栈,新母线的结束,执行后,返回原母线开始中间最后小结2010.3思考已知图中的语句表程序,画出对应的梯形图2010.3四、取非触点指令

改变能流的状态能流到达取非触点时,能流就停止;能流未到达取非触点时,能流就通过对堆栈的栈顶作取反操作,改变栈顶值2010.3五、正/负跳变触点指令

正跳变触点检测到正跳变(由off到on)信号后,让能流通过一个扫描周期的时间检测上升沿一个扫描周期的宽度正跳变触点2010.3负跳变触点在检测到负跳变信号后,让能流通过一个扫描周期的时间检测下降沿一个扫描周期的宽度负跳变触点2010.3用S,R指令以及跳变指令

设计满足所示波形的梯形图2010.3画出图中

Q0.0的波形2010.3六、定时器、计数器指令

定时器指令计数器指令

2010.3(一)定时器指令

对PLC内部的时钟脉冲进行计数

定时器类型:接通延时定时器(TON)有记忆接通延时定时器(TONR)断开延时定时器(TOF)2010.3定时器分辨率1ms10ms100ms分辨率由定时器号决定2010.3●定时器号范围:(T0~T255)●定时器有两个相关的变量:

1.当前值:累计时间的当前值,存放在定时器的16(bit)当前值寄存器中。

2.定时器位:当定时器当前值等于或大于设定值时,该定时器位被置为“1”。2010.31.接通延时定时器TON

输入端(IN)接通时,定时器(TON)开始计时当定时器的当前值等于或大于设定值(PT)时,该定时器位被置位为“1”。2010.3定时器TON(续)当达到设定时间后,TON继续计时,一直计到最大值32767。输入端(1N)断开时,定时器TON复位,即当前值为“0”,定时器位为“0”(Off)。2010.3设定时间T设定时间T=设定值PT×分辨率TON是模拟通电延时型物理时间继电器功能T=5×100ms2010.32.有记忆接通延时定时器TONR输入端接通时,定时器(TONR)开始计时当当前值=>设定值时,该定时器位被置位为1当达到设定值后,定时器(TONR)继续计时,一直计到最大值32767

2010.3输入端断开时,定时器(TONR)的当前值保持不变,定时器位不变(与TON不同)当输入端再次接通,定时器当前值从原保持值开始再往上累计时间,继续计时可以用定时器(TONR)累计多次输入信号的接通时间2010.3上电周期或首次扫描时,定时器(TONR)的定时器位为0,当前值保持可利用复位指令(R)清除定时器(TONR)的当前值(定时器位=0)。

2010.33.断开延时定时器(TOF)

输入端接通时,定时器位立即为1,并把当前值设为0当输入端断开时,定时器开始计时,当达到设定时间时,定时器位为“0”,并停止计时TOF指令必须用输入信号的ON→OFF的跳变启动计时模拟断电延时型物理时间继电器功能2010.3小结

定时器类型接通IN当前值=设定值断开INTON计时T位=1复位TONR计时T位=1不变TOF不计时,T位=1

当前值=0T位=0开始计时2010.3注意

△定时器号不可重复使用△使用复位(R)指令对定时器复位时,定时器位=0,定时器当前值清零有记忆接通延时定时器(TONR)只能通过复位指令使定时器当前值清零对断开延时定时器(TOF),需在输入端有一个负跳变(ON→OFF)的输入信号才能启动计时。△不同分辨率的定时器它们当前值的刷新周期是不同的。

!2010.3T当前值的刷新

1ms分辩率定时器每隔1ms刷新一次在一个扫描周期中要刷新多次,而不和扫描周期同步。ON一个扫描周期

不会接通

错误正确2010.310ms分辩率定时器在每次扫描周期的开始对10ms定时器刷新在一个扫描周期内定时器当前值保持不变不会接通

错误正确2010.3100ms分辨率定时器在定时器指令执行时刷新100ms×30=3s

自复位式定时器2010.3100ms定时器100ms定时器只能用于每个扫描周期内同一定时器指令执行一次,且仅执行一次的场合。不宜用在子程序和中断程序中在主程序中不能重复使用同一个100ms的定时器号结论2010.3指出梯形图中的错误M0.7I0.4Q0.5T372010.3典型简单电路编程延时接通/延时断开电路2010.3典型的简单电路编程闪烁电路当I0.0有效时,T37就会产生一个2s通,1s断的闪烁信号。2010.3(二)计数器指令

对外部的或由程序产生的计数脉冲进行计数

计数器是累计其计数输入端的计数脉冲电平由低到高的次数计数器类型:增计数器减计数器增/减计数器2010.3计数器号范围:C(0~255)计数器有两个相关的变量:1.当前值:

计数器累计计数的当前值,存放在计数器的16(bit)当前值寄存器中。2.计数器位:

当计数器的当前值等于或大于设定值时,计数器位置为“1”。计数范围:(-32768~32767)

2010.31.增计数器指令CTU

当CU端有一上升沿信号时,计数器作递增计数当计数器当前值等于或大于设定值(PV)时,该计数器位被置位。复位输入端R为ON或执行复位指令时,计数器位为“0”,当前值被清零

计数输入端复位输入端2010.3自复位式计数器

自复位式计数器2010.32.减计数器指令(CTD)

②当装载输入端(LD)有效时,计数器复位并把设定值(PV)装入当前值寄存器(CV)中当I1.4=1:C40=0,PV→CV;当CV=0:C40=1;①当计数输入端(CD)有一个上升沿信号时,计数器从设定值(PV)开始作递减计数直至计数器当前值等于0时,停止计数,同时计数器位被置位2010.3减计数器用法举例2010.33.增/减计数器指令(CTUD)在每一个CU输入端的上升沿递增计数在每一个CD输入端的上升沿递减计数当复位输入端(R)有效时,计数器被复位当前值被清零当前值=>设定值(PV)时,该计数器位被置位或用复位指令(R)2010.3计数器在达到计数最大值32767后,下一个CU输入端上升沿将使计数值变为最小值(-32768)计数范围:+32767~-32768在达到最小计数值(-32768)后,下一个CD输入端上升沿将使计数值变为最大值(32767)2010.3增减计数器用法举例当前值2010.3注意在一个程序中,同一计数器号不要重复使用!2010.3典型的简单电路编程输入信号I0.0有效后,经过2h30min时,输出Q0.0置位长定时电路1min定时器1h定时器定时2h2h到,再计时30minPLC的输入:I0.0:起动按钮I0.1:停止按钮PLC的输出:Q0.02010.3产品通过检测器PH机械手电机KM1KM2传送带电机PLC的输入:I0.0—传送带起动按钮I0.1—传送带停机按钮I0.2—产品通过检测器PHPLC的输出:Q0.0—传送带电机KM1Q0.1—机械手KM2要求:每3个产品通过检测器,机械手动作1次,机械手动作后,延时5秒,将机械手电磁铁切断,即KM2失电典型的简单电路编程产品数量检测2010.3起、停传送带电机每检测到一个产品,I0.2产生一个正脉冲,使C20计一个数C20每计3个数,机械手动作一次机械手动作时间为5秒后,5秒后,将机械手电磁铁切断,同时将C20复位。C20复位后,T37也复位

举例:产品数量检测2010.3七、顺序控制继电器指令(SequentialControlRelay)顺序控制

SCR指令的功能使用SCR指令的限制编程举例2010.3顺序控制

所谓顺序控制,是使生产过程按工艺要求事先安排的顺序自动地进行控制。什么是顺序控制?四台电机的顺序启动2010.3顺序功能图SFC

(SequentialFunctionChart)顺序功能图——IEC1131标准颁布的一种PLC编程语言。一种基于工艺流程的高级语言。

2010.3顺序控制继电器(SCR)指令

基于SFC的编程方式它依据被控对象的顺序功能图进行编程将控制程序进行逻辑分段优点:

编制的程序清晰、明了、统一性强、简单、易学。编程效率高,调试方便。2010.3(一)SCR指令的功能

SCR程序段段的开始段的结束段的转换2010.3装载顺序控制继电器指令(LSCRn)LSCRn指令把S位的值装载到SCR堆栈和逻辑堆栈栈顶n=S0.1SCR堆栈的值决定该SCR段是否执行当SCR程序段的S位置“1”时,允许该SCR程序段工作2010.3顺序控制继电器转换指令SCRT执行SCR程序段的转换功能:①使当前SCR程序段的S位复位,停止该SCR程序段工作;②使下一个SCR程序段S位置位,以便下一个SCR程序段工作。程序段的转换2010.3顺序控制继电器结束指令SCRE它使程序退出一个激活的SCR程序段

SCR程序段必须由SCRE指令结束

程序段的结束2010.3(二)使用SCR指令的限制

同一地址的S位不可用于不同的程序分区在SCR段中不能使用的指令:跳转指令JMP、LBL;循环指令FOR、NEXT;有条件结束指令END。段外可使用跳转指令JMP、LBL;循环指令FOR、NEXT指令。2010.3(三)SCR指令的编程举例

课题:根据舞台灯光效果的要求,控制红、绿、黄三色灯。要求:红灯先亮,2秒后绿灯亮,再过3秒后黄灯亮。待红、绿、黄灯全亮3分钟后,全部熄灭。试用SCR指令设计其控制程序。2010.3PLC的外部接线图2010.32010.3步(0~1)不用置位指令行不行?2010.3步22010.3步32010.3步4、停止2010.3SCR程序段的三个要素①输出对象:在这一步序中应完成的动作输出对象转换条件转换目标②转换条件:满足转换条件后,实现SCR段的转换③转换目标:转换到下一个步序2010.3八、移位寄存器指令(SHRB)把输入端(DATA)的数值移入移位寄存器,并进行移位。移位寄存器是由S-BIT和N决定的。其中,S-BIT指定移位寄存器的最低位,N指定移位寄存器的长度。N为正数表示正向移位,N为负数表示反向移位2010.3I0.2正向移位时,输入数据从移位寄存器的最低有效位移入,从最高有效位移出BYTE型数据类型N≤64Bool型数据类型。移出的数据送入溢出存储器位(SM1.1)2010.3移位寄存器最高有效位地址的计算计算:由最低有效位(S-BIT)和长度(N)计算最高有效位(MSB.b)的地址计算公式:

MSB.b=[S-BIT的字节号+(|N|-1+S-BIT的位号)÷8].[被8除所得余数]举例:如果S-BIT是V22.5,N是8,那么:

MSB.b=V22+(8-1+5)÷8=V22+12÷8=V22+1(余数为4)=V23.4字节号位号2010.3■在允许输入端(EN)端的每个上升沿时刻对DATA端采样一次■当允许输入端(EN)有效时,在每个扫描周期:把输入端(DATA)的数值移入移位寄存器。使移位寄存器各位移动一位。I0.22010.3思考梯形图中不用正跳变触点指令行吗?2010.3移位寄存器的应用

移位寄存器的各位移位寄存器的各位移位寄存器的各位可用于电动机的顺序起动改为V10.22010.3九、比较触点指令

作上、下限控制比较触点2010.3梯形图(LAD)中将两个操作数(IN1、IN2)按指定的比较关系作比较比较关系成立则比较触点闭合“能流”存在,执行指令2010.36种比较关系IN1=IN2、IN1>=IN2、IN1<=IN2、IN1>IN2、IN1<IN2、IN1<>IN2,“<>”表示不等于。2010.3比较触点指令的类型

按操作数的数据类型可分:字节比较(无符号)整数比较双字整数比较实数比较指令有符号2010.3比较触点应用举例实现占空比可调的脉冲发生器2010.3第三节

S7-200PLC功能指令传送指令数学运算指令逻辑运算指令移位和循环移位指令数据转换指令表功能指令程序控制指令中断指令PID回路指令高速计数器指令高速脉冲输出指令时钟指令2010.3功能指令数据类型功能指令涉及的数据类型多,编程时应保证操作数在合法范围内。S7-200PLC不支持完全数据类型检查操作数的数据类型应与指令标识符相匹配2010.3一、传送指令

数据传送指令数据块传送指令交换字节指令传送字节立即读、写指令

2010.3(一)数据传送指令

把输入(IN)指定的数据传送到输出(OUT),传送过程中数据值保持不变。输入输出允许输入端允许输出端2010.3数据传送指令按操作数的数据类型可分为:操作数可为有符号数或无符号数字节传送(MOVB)字传送(MOVW)双字传送(MOVDW)实数传送(MOVR)2010.3自学数据块传送指令

(操作数均为为无符号数)传送字节立即读、写指令

(物理输入、输出点)交换字节指令●●●2010.3二、数学运算指令

四则运算指令数学功能指令

2010.3(一)四则运算指令

加法指令减法指令乘法指令除法指令2010.31.加法指令

把两个输入端(IN1,IN2)指定的数相加,结果送到输出端(OUT)指定的存储单元中。输入端输出端整数加法指令2010.3整数、双整数、实数加法指令对应的操作数数据类型:有符号整数(INT)有符号双整数(DINT)实数(REAL)整数加法双整数加法 实数加法

2010.3加法指令的操作操作数IN2与OUT共用一个地址单元操作:IN1+OUT=OUTIN1+OUT=OUT2010.32.减法指令

把两个输入端(IN1,IN2)指定的数相减,结果送到输出(OUT)指定的存储单元中去。输出端输入端2010.3整数、双整数、实数减法指令对应的操作数:

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

整数减法 双整数减法 实数减法2010.3减法指令的操作操作数IN1与OUT共用一个地址单元操作:OUT-IN2=OUT

OUT-IN2=OUT2010.33.乘法指令

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

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

把两个输入端(IN1,IN2)指定的数相乘,结果送到输出端(OUT)指定的存储单元中去2010.3整数完全乘法指令

操作数IN2与OUT的低16位用的是同地址单元16bit有符号整数32bit的乘积IN1×OUT=OUTVD200IN1(16bit)×IN2(16bit)=32(bit)乘积(OUT)

2010.34.除法指令

操作数的数据类型:有符号整数(INT)有符号双整数(DINT)实数(REAL)操作数IN1与OUT共用一个地址单元OUT/IN2=OUT整数除法 双整数除法 实数除法 整数完全除法

把两个输入端(IN1,IN2)指定的数相除,结果送到输出端(OUT)指定的存储单元中去。2010.3

整数完全除法指令

操作数IN1与OUT的低16位用的是同地址单元VD30032bit的结果OUT/IN2=OUT16bit有符号整数余数商IN1(16bit)÷IN2(16bit)=32(bit)结果(OUT)

2010.3

四则运算举例

IN1与OUT不是同一地址单元加法、减法、乘法指令遇到上述情况,也可作类似的处理。2010.35.加1和减1指令

操作数的数据类型:

字节、字、双字VB100VB100IN和OUT共用一个地址单元INCWOUTINCDOUT2010.3(二)数学功能指令平方根自然对数自然指数三角函数

操作数均为实数(REAL)自学2010.3三、逻辑运算指令

逻辑“与”指令逻辑“或”指令逻辑“异或”指令取反指令逻辑运算指令的操作数均为无符号数自学对两个输入端(IN1,IN2)的数据按位“与”,结果存入OUT单元

ORDIN1,OUT2010.3四、移位和循环移位指令

右移位指令左移位指令循环右移指令循环左移指令

移位和循环移位指令均为无符号数操作

2010.31.右移位指令

把输入端(IN)指定的数据右移N位,结果存入OUT.字节右移 字右移 双字右移

2010.3字节、字、双字移位指令的实际

最大可移位数:8、16、32空位自动补零溢出SM1.1移位后溢出位(SM1.1)的值就是最后一次移出的位值

2010.32.左移位指令

字节左移 字左移 双字左移

自学2010.33.循环右移指令

字节循环右移 字循环右移 双字循环右移SM1.1溢出位把输入端(IN)指定的数据循环右移N位,结果存入OUT

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

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

2010.34.循环左移指令

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

自学2010.3移位和循环移位

2010.3五、数据转换指令

BCD码与整数的转换双字整数与实数的转换双字整数与整数的转换字节与整数的转换译码、编码指令段码(SEG)指令

2010.31.BCD码与整数的转换0~99990~99992010.32.双字整数与实数的转换

32bit→32bitDINT→REAL+101→+101.0256.54→257256.54→256REAL→DINTREAL→DINT

2010.33.双字整数与整数的转换有效的双字整数进行符号扩展2010.3★整数转换为实数

ITDDTRINT→DINT→REAL2010.34.字节与整数的转换有效的整数2010.3转换指令编程举例IN2与OUT不是同一地址2010.3自学5.译码、编码指令6.段码(SEG)指令2010.3六、表功能指令填表、查表指令先进先出、后进先出指令存储器填充指令执行FILL指令后,VW400~VW418的区域被清零。自学用输入值(IN)填充从输出单元(OUT)开始的N个字的内容。2010.3七、程序控制指令

有条件结束指令(END)暂停指令(STOP)监视定时器复位指令(WDR)跳转与标号指令循环指令(For,Next)子程序调用、子程序返回指令

2010.31.有条件结束指令(END)执行条件成立时,终止当前的扫描周期,结束主程序,返回主程序起点。只能在主程序中使用2010.32.暂停指令(STOP)

从运行(RUN)模式进入停止(STOP)模式,立即终止程序的执行2010.33.监视定时器复位指令(WDR)

设置系统监视定时器WTD,定时时间为100~300ms,扫描到WTD时,WTD将复位监视扫描周期是否超时正常工作时:WTD及时复位;故障时:不能复位,会报警并终止系统运行;使用WDR指令:用户程序长执行中断程序的时间长循环指令使扫描周期延长2010.34.跳转与标号指令0~255跳转指令和对应的LBL指令必须在同一程序块中2010.35.循环指令循环开始循环结束INDX:当前循环次数计数器INIT:起始值FINAL:结束值FOR与NEXT必须成套使用循环体2010.3举例

8个12位二进制数存放在VW10开始的存储区内,在I0.3的上升沿,用循环指令求平均值,并将结果存放在VW0中。2010.3

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

把程序控制权交给子程序

结束后,必须返回主程序

2010.3子程序返回主程序指令有条件子程序返回指令(CRET)无条件子程序返回指令(RET)

RET指令Micro/WIN32为每个子程序自动加入无条件返回指令子程序返回之处2010.3逻辑堆栈子程序执行完毕,通过返回指令自动恢复逻辑堆栈原调用点的值,把控制权交还给调用程序。子程序被调用时,系统会保存当前的逻辑堆栈。保存后再置栈顶值为1,堆栈的其他值为零,把控制权交给被调用的子程序。2010.3注意在中断程序和子程序中可以调用子程序主程序和子程序共用累加器子程序中的定时器在停止调用时:100ms定时器将停止计时,当前值不变,重新调用时继续计时1ms和10ms定时器将继续定时,定时时间到,位变为1,可以在子程序之外起作用子程序内的定时器的位状态保持不变△△△2010.3

带参数调用子程序(自学)

2010.3例:当I0.1为ON时,定时器T32开始定时,产生每秒1次的周期脉冲。T32每次定时时间到时调用一个子程序,在子程序中将模拟量输入AIW0的值送入VW10,设计主程序和子程序2010.3

对特定的内部和外部事件作快速响应

八、中断指令

中断程序不是由用户程序调用,而是在中断事件发生时由操作系统调用注意:在中断程序中不能改写其他程序使用的存储器,在中断程序中可以调用一级子程序,累加器和逻辑堆栈在中断程序和被调用的子程序中是公用的,设计时应“越短越好”2010.3(一)全局中断允许、全局中断禁止指令

全局地允许所有被连接的中断事件

全局地禁止处理所有中断事件

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

2010.3(二)中断连接指令、中断分离指令●用来建立某个中断事件(EVNT)和某个中断程序(INT)之间的联系。●该中断事件发生时执行相关的中断程序中断连接指令(ATCH)2010.3中断事件号2010.3续2010.3中断事件中断程序▲多个中断事件可调用同一个中断程序▲一个中断事件不能同时与多个中断程序建立连接,否则,系统默认执行这些中断程序中的最后一个。2010.3中断分离指令(DTCH)截断某中断事件和中断程序之间的联系单独禁止某中断事件2010.3

(三)中断返回指令

有条件中断返回指令(CRETI),根据控制的条件从中断程序中返回到主程序中断程序的入口2010.3中断程序中不能使用:全局中断禁止指令DISI全局中断允许指令ENI高速计数器指令HDEF顺序控制继电器指令LSCR有条件结束指令END。2010.3(四)

中断的分类

通讯口中断

I/O中断

时基中断

2010.31.通信口中断利用接受和发送中断来简化程序对通信的控制2010.32.I/O中断2010.3

3.时基中断:

定时中断定时器中断2010.3定时中断按指定的周期时间循环执行当定时中断设定的周期时间到,定时中断事件把控制权交给相应的中断程序。定时中断一旦被允许,就会按指定的时间间隔反复执行被连接的中程序2010.3定时中断的周期时间定时中断0/1的周期时间SMB34/35改变周期时间:修改SMB34/35中的值,必须重新建立中断程序与定时中断事件的连接。周期时间:1~255ms周期增量:1ms2010.3定时中断的应用常用定时中断以固定的时间间隔去控制模拟量的采集和执行PID回路程序。2010.3定时器中断使用1ms分辨率的定时器T32和T96▼当中断被允许,定时器的当前值等于设定值时,在CPU的1ms定时刷新中,执行被链接的中断程序▼2010.3(五)中断优先级

通讯(最高)I/O中断(中等)时基中断(最低)2010.3中断指令举例例:用定时中断0,每100ms将VB0加1,VB0到100时关闭定时中断,并将Q0.0置1,设计主程序和中断程序2010.3九、PID回路指令

用PLC实现模拟量闭环控制系统PLCc(t)M(t)Sp(n)e(n)M(n)pv(n)pv(t)2010.3(一)PID算法

PID控制器调节回路输出。为使系统达到稳定状态,应让偏差(e)趋于零。

偏差(e)=给定值(SP)-过程变量(PV)PID控制器的输出量M(t):比例项积分项初始值微分项随时间t连续变化的模拟量PID回路的增益2010.3将连续函数离散化Mn——在第n采样时刻PID回路输出的计算值;en——在第n次采样时刻的偏差值;en-1——在第n-1采样时刻的偏差值(偏差前值);KI——积分项的系数;KD——微分项的系数;2010.3计算中,只需保留积分项前值(MX),即:从第一个采样周期到当前采样周期的所有误差的累积值2010.3比例项、积分项、微分项比例项MPn=KC·(SPn-PVn­) 积分项MIn=KC·TS/TI·(SPn-PVn)+MX 微分项

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

9个参数KIKD2010.3进行PID运算的9个参数:过程变量当前值

PVn给定值

SPn增益

KC采样时间

TS积分时间

TI微分时间

TD积分项前值

MX过程变量前值

PVn-1

输出值

Mn2010.3(二)PID回路指令

PID回路指令运用回路表中的输入信息和组态信息,进行PID运算,编程极其简便。(组态编程,即填表式编程)

回路号0-7回路表的起始地址限用VB区域2010.3进行PID运算的前提条件在程序中最多可以用8条PID指令不可重复使用同一个回路号逻辑堆栈栈顶值必须为112010.3

回路表格式

VB10036个字节

9个参数*****2010.3周期地进行PID运算★以一定的采样频率进行PID运算★PID指令必须编入定时发生的中断程序中★在主程序中由定时器控制PID指令的执行频率

2010.3(三)控制方式

当允许输入端(EN)检测到一个正跳变信号,PID回路就从手动方式无扰动地切换到自动方式。自动手动2010.3(四)回路输入输出变量的数值转换

回路输入变量的转换和标准化

回路输出变量的数据转换

2010.31.回路输入变量的转换和标准化

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

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

INT→REAL

XORD AC0,AC0,清空累加器MOVW AIW0,AC0,把待变换的AIW0的模拟量(INT)存入累加器。LDW>= AC0,0 如果模拟量为正JMP

温馨提示

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

评论

0/150

提交评论