ImageVerifierCode 换一换
格式:PPT , 页数:72 ,大小:568KB ,
资源ID:8520144      下载积分:10 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.docduoduo.com/d-8520144.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录   微博登录 

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(PLC第三章可编程序控制器程序设计基础.ppt)为本站会员(精品资料)主动上传,道客多多仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知道客多多(发送邮件至docduoduo@163.com或直接QQ联系客服),我们立即给予删除!

PLC第三章可编程序控制器程序设计基础.ppt

1、2019/7/1,1,PLC编程及应用S7-200,安徽理工大学电气工程系,2019/7/1,2,后一页,返回,第3章 可编程序控制器程序设计基础,3.1 可编程序控制器的编程语言与程序结构,3.2 存储器的数据类型与寻址方式,3.3 位逻辑指令,3.4 定时器与计数器指令,2019/7/1,3,3.1 可编程序控制器的编程语言与程序结构,311 可编程序控制器编程语言的国际标准,312 SIMATIC指令集与IECll31-3指令集,313 可编程序控制器的程序结构,返回,2019/7/1,4,311 可编程序控制器编程语言的国际标准,IEC(国际电工委员会)是为电子技术的所有领域制订全球标

2、准的世界性组织。IEC于1994年5月公布了可编程序控制器标准(IEC1131),该标准鼓励不同的可编程序控制器制造商提供在外观和操作上相似的指令。它由以下5部分组成:通用信息,设备与测试要求,编程语言,用户指南和通信。其中的第三部分(IEC11313)是可编程序控制器的编程语言标准IEC1131-3.标准使用户在使用新的可编程序控制器时,可以减少重新培训的时间;对于厂家,使用标准将减少产品开发的时间,可以投入更多的精力去满足用户的特殊要求。,返回,2019/7/1,5,目前已有越来越多的生产可编程序控制器的厂家提供符合IEC11313标准的产品,有的厂家推出的在个人计算机上运行的“软件PLC

3、”软件包也是按IEC1131-3标准设计的。IEC1131-3详细地说明了句法、语义和下述5种编程语言(见图3-1)的表达方式:(1)顺序功能图(Sequential Function Chart)(2)梯形图(Ladder Diagram)(3)功能块图(Function Block Diagram)(4)指令表(Instruction List)。(5)结构文本(Structured Text)。标准中有两种图形语言梯形图(LD)和功能块图(FBD),还有两种文字语言指令表(STL)和结构文本(ST),可以认为顺序功能图(SFC)是一种结构块控制程序流程图。,2019/7/1,6,1) 顺

4、序功能图(SFC),这是一种位于其他编程语言之上的图形语言,用来编制顺序控制程序,在第4章中将作详细的介绍。顺序功能图提供了一种组织程序的图形方法,在顺序功能图中可以用别的语言嵌套编程。步、转换和动作是顺序功能图中的三种主要元件。可以用顺序功能图来描述系统的功能,根据它可以很容易地画出梯形图程序。,顺序功能图,2019/7/1,7,2) 梯形图(LAD),梯形图由触点、线圈和用方框表示的功能块组成。触点代表逻辑输入条件,如外部的开关、按钮和内部条件等。线圈通常代表逻辑输出结果,用来控制外部的指示灯、交流接触器和内部的输出条件等。功能块用来表示定时器、计数器或者数学运算等附加指令。,在分析梯形图

5、中的逻辑关系时,为了借用继电器电路图的分析方法,可以想像左右两侧垂直母线之间有一个左正右负的直流电源电压(S7-200的梯形图中省略了右侧的垂直母线),当图中的I01与I02的触点接通,或M03与I02的触点接通时,有一个假想的“能流”(Power Flow)流过Q11的线圈。利用能流这一概念,可以帮助我们更好地理解和分析梯形图,能流只能从左向右流动。,梯形图,2019/7/1,8,触点和线圈等组成的独立电路称为网络(Network),用编程软件生成的梯形图和语句表程序中有网络编号,允许以网络为单位,给梯形图加注释。本书为节约篇幅,有时删去了网络号。在网络中,程序的逻辑运算按从左到右的方向执行

6、,与能流的方向一致。各网络按从上到下的顺序执行,执行完所有的网络后,返回最上面的网络重新执行。使用编程软件可以直接生成和编辑梯形图,并将它下载到可编程序控制器。,梯形图,2019/7/1,9,3) 功能块图(FBD),这是一种类似于数字逻辑门电路的编程语言,有数字电路基础的人很容易掌握。该编程语言用类似与门、或门的方框来表示逻辑运算关系,方框的左侧为逻辑运算的输入变量,右侧为输出变量,输入、输出端的小圆圈表示“非”运算,方框被“导线”连接在一起,信号自左向右流动。图中的控制逻辑与前图中的相同。西门子公司的“LOGO1”系列微型可编程序控制器使用功能块图语言,除此之外,国内很少有人使用功能块图语

7、言。,功能块图与语句表,2019/7/1,10,4) 语句表(STL),S7系列可编程序控制器将指令表称为语句表(Statement List)。可编程序控制器的指令是一种与微机的汇编语言中的指令相似的助记符表达式,由指令组成的程序叫做指令表程序或语句表程序。语句表比较适合熟悉可编程序控制器和逻辑程序设计的经验丰富的程序员,语句表可以实现某些不能用梯形图或功能块图实现的功能。S7-200CPU在执行程序时要用到逻辑堆栈,梯形图和功能块图编辑器自动地插入处理栈操作所需要的指令。在语句表中,必须由编程人员加入这些堆栈处理指令。,2019/7/1,11,5) 结构文本(ST),结构文本(ST)是为I

8、EC1131-3标准创建的一种专用的高级编程语言。与梯形图相比,它能实现复杂的数学运算,编写的程序非常简洁和紧凑。,2019/7/1,12,6) 编程语言的相互转换和选用,在S7-200的编程软件中,用户可以选用梯形图、功能块图和语句表这三种编程语言。语句表不使用网络,但是可以用Network网络这个关键词对程序分段,这样的程序可以转换为梯形图。语句表程序较难阅读,其中的逻辑关系很难一眼看出,所以在设计复杂的开关量控制程序时一般使用梯形图语言。语句表可以处理某些不能用梯形图处理的问题,梯形图编写的程序一定能转换为语句表。梯形图程序中输入信号与输出信号之间的逻辑关系一目了然,易于理解,与继电器电

9、路图的表达方式极为相似,设计开关量控制程序时建议选用梯形图语言。语句表输入方便快捷,梯形图中功能块对应的语句只占一行的位置,还可以为每一条语句加上注释,便于复杂程序的阅读。在设计通信、数学运算等高级应用程序时建议使用语句表语言。,2019/7/1,13,312 SIMATIC指令集与IEC1131-3指令集,供S7-200使用的STEP 7MicroWIN 32编程软件提供两种指令集:SIMATIC指令集与IEC1131-3指令集,前者由西门子公司提供,它的某些指令不是IEC1131-3中的标准指令。通常SIMATIC指令的执行时间短,可使用梯形图、功能块图和语句表语言,而IEC1131-3指

10、令集只提供前两种语言。IEC1131-3指令集的指令较少,其中的某些“块”指令可接受多种数据格式。例如 SIMATIC指令集中的加法指令被分为ADDI(整数加)、ADDDI(双字整数加)与ADDR(实数加)等,IEC1131-3的加法指令ADD则未作区分,而是通过检验数据格式,由CPU自动选择正确的指令。IEC1131-3指令通过检查参数中的数据格式错误,还可以减少程序设计中的错误。在IEC1131-3指令编辑器中,有些是SIMATIC指令集中的指令,它们作为IEC1131-3指令集的非标准扩展,在编程软件的帮助文件中的指令树内用红色的“+”号标记。,返回,2019/7/1,14,313 可编

11、程序控制器的程序结构,S7-200CPU的控制程序由主程序、子程序和中断程序组成。,1) 主程序,主程序是程序的主体,每一个项目都必须并且只能有一个主程序。在主程序中可以调用子程序和中断程序。主程序通过指令控制整个应用程序的执行,每次CPU扫描都要执行一次主程序。STEP7-MicroWIN 32的程序编辑器窗口下部的标签用来选择不同的程序。因为程序已被分开,各程序结束时不需要加入无条件结束指令,如END、RET或RETI等。,返回,2019/7/1,15,2) 子程序,子程序是一个可选的指令的集合,仅在被其它程序调用时执行。同一地方被多次调用,使用子程序可以简化程序代码和减少扫描时间。设计得

12、好的子程序容易移植到别的项目中去。,3) 中断程序,中断程序是指令的一个可选集合,中断程序不是被主程序调用,它们在中断事件发生时由可编程序控制器的操作系统调用。中断程序用来处理预先规定的中断事件,因为不能预知何时会出现中断事件,所以不允许中断程序改写可能在其他程序中使用的存储器。,2019/7/1,16,32 存储器的数据类型与寻址方式,321 数据在存储器中存取的方式,322 不同存储区的寻址,323 直接寻址与间接寻址,324 绝对地址与符号地址,返回,2019/7/1,17,321 数据在存储器中存取的方式,1)位、字节、字和双字,二进制数的1位(bit)只有0和1两种不同的取值,可用来

13、表示开关量(或称数字量)的两中不同的状态,如触点的断开和接通,线圈的通电和断电等。如果该位为1,则表示梯形图中对应的编程元件的线圈“通电”,其常开触点接通,常闭触点断开,以后称该编程元件为1状态,或对称该编程元件ON(接通)。如果该位为0,对应的编程元件的线圈和触点的状态与上述的相反,称该编程元件为0状态,或称该编程元件OFF(断开)。位数据的数据类型为BOOL(布尔)型。,返回,2019/7/1,18,8位二进制数组成1个字节(见图 ),其中的第0位为最低位:LSB:、第7位为最高位( MSB)。两个字节组成1个字(Word)。两个字组成1个双字(见图)一般用二进制补码表示有符号数,其最高位

14、为符号位,最高位为0时为正数,为1时为负数,最大的16位正数为 7FFFH表示十六进制数。字节、字和双字的取值范围见表。,图 字、字节和双字对同一地址存取操作的比较a)VB100 b)VWl00 c)VDl00,2019/7/1,19,数据的位数与取值范围,2019/7/1,20,2) 数据的存取方式,位存储单元的地址由字节地址和位地址组成,如I3.2,其中的区域标识符“I表示输入(Input),字节地址为3,位地址为2(见图)。这种存取方式称为“字节位”寻址方式。输入字节IB3(B是Byte的缩写)由I3.0I3.7这8位组成。,位数据的存放,2019/7/1,21,相邻的两个字节组成一个字

15、,VWl00表示由VBl00和VBl01组成的1个字(见图),VWl00中的V为区域标识符,W表示字(Word),100为起始字节的地址。 VDl00表示由VBl00-VBl03组成的双字,V为区域标示符,D表示存取双字(Double Word),100为起始字节的地址。,图 字、字节和双字对同一地址存取操作的比较a)VB100 b)VWl00 c)VDl00,2019/7/1,22,322 不同存储区的寻址,1) 输入映像寄存器(I)寻址,输入映像寄存器的标识符为I(I0.0-I15.7),在每个扫描周期的开始,CPU对输入点进行采样,并将采样值存于输入映像寄存器中。输入映像寄存器是可编程序

16、控制器接收外部输入的开关量信号的窗口。可编程序控制器通过光耦合器,将外部信号的状态读入并存储在输入映像寄存器中,外部输入电路接通时对应的映像寄存器为ON(1状态)。输入端可以外接常开触点或常闭触点,也可以接多个触点组成的串并联电路。在梯形图中,可以多次使用输入位的常开触点和常闭触点。I、Q、V、M、S、SM、L均可按位、字节、字和双字来存取。,返回,2019/7/1,23,2) 输出映像寄存器(Q)寻址,输出映像寄存器的标识符为Q(Q0.0Q15.7),在扫描周期的末尾,CPU将输出映像寄存器的数据传送给输出模块,再由后者驱动外部负载。如果梯形图中Q0.0的线圈“通电”,继电器型输出模块中对应

17、的硬件继电器的常开触点闭合,使接在标号为0.0的端子的外部负载工作。输出模块中的每一个硬件继电器仅有一对常开触点,但是在梯形图中,每一个输出位的常开触点和常闭触点都可以多次使用。,2019/7/1,24,3) 变量存储器(V)寻址,在程序执行的过程中存放中间结果,或用来保存与工序或任务有关的其他数据。,4) 位存储器(M)区寻址,内部存储器标志位(M0.0M31.7)用来保存控制继电器的中间操作状态或其他控制信息。虽然名为“位存储器区”,表示按位存取,但是也可以按字节、字或双字来存取。,5) 特殊存储器(SM)标志位寻址,特殊存储器用于CPU与用户之间交换信息,例如SM00一直为“1”状态,S

18、M01仅在执行用户程序的第一个扫描周期为“1”状态。SM04和SM05分别提供周期为1min和1s的时钟脉冲。SM10、SM11和SM12分别是零标志、溢出标志和负数标志。各特殊存储器的功能见附录E。,2019/7/1,25,6) 局部存储器(L)区寻址,S7-200有64个字节的局部存储器,其中60个可以作为暂时存储器,或给子程序传递参数。如果用梯形图编程,编程软件保留这些局部存储器的后4个字节。如果用语句表编程,可以使用所有的64个字节,但是建议不要使用最后4个字节。各POU(Program Organizational Unit,程序组织单元,即主程序、子程序和中断程序)有自己的局部变量

19、表,局部变量在它被创建的POU中有效。变量存储器(V)是全局存储器,可以被所有的POU存取。S7-200给主程序和中断程序各分配64字节局部存储器,给每一级子程序嵌套分配64字节局部存储器,各程序不能访问别的程序的局部存储器。因为局部变量使用临时的存储区,子程序每次被调用时,应保证它使用的局部变量被初始化。,2019/7/1,26,7) 定时器存储器(T)区寻址,定时器相当于继电器系统中的时间继电器。S7-200有三种定时器,它们的时基增量分别为1ms、l0ms和l00ms,定时器的当前值寄存器是16位有符号整数,用于存储定时器累计的时基增量值(132 767)。定时器的当前值大于等于设定值时

20、,定时器位被置为1,梯形图中对应的定时器的常开触点闭合,常闭触点断开。用定时器地址(T和定时器号,如T5)来存取当前值和定时器位,带位操作数的指令存取定时器位,带字操作数的指令存取当前值。,2019/7/1,27,8) 计数器存储器(C)区寻址,计数器用来累计其计数输入端脉冲电平由低到高的次数,CPU提供加计数器、减计数器和加减计数器。计数器的当前值为16位有符号整数,用来存放累计的脉冲数(132 767)。当计数器的当前值大于等于设定值时,计数器位被置为1。用计数器地址(C和计数器号,如C20)来存取当前值和计数器位,带位操作数的指令存取计数器位,带字操作数的指令存取当前值。,2019/7/

21、1,28,9) 顺序控制继电器(SCR)寻址,顺序控制继电器(SCR)位用于组织机器的顺序操作,SCR提供控制程序的逻辑分段,详细的使用方法见53节。,10) 模拟量输入(AI)寻址,S7-200将现实世界连续变化的模拟量(如温度、压力、电流、电压等)用AD转换器转换为1个字长(16位)的数字量,用区域标识符AI、数据长度(W)和字节的起始地址来表示模拟量输入的地址。因为模拟量输入是一个字长,应从偶数字节地址开始存放(如AIW2、AIW4、AIW6等),模拟量输入值为只读数据。,2019/7/1,29,11) 模拟量输出(AQ)寻址,S7-200将1个字长的数字用DA转换器转换为现实世界的模拟

22、量,用区域标识符AQ、数据长度(W)和字节的起始地址来表示存储模拟量输出的地址。因为模拟量输出是一个字长,应从偶数字节地址开始存放(如AQW2、AQW4、AQW6等),用户不能读取模拟量输出值。,12) 累加器(AC)寻址,累加器是可以像存储器那样使用的读写单元,例如可以用它向子程序传递参数,或从子程序返回参数,以及用来存放计算的中间值。CPU提供了4个32位累加器(AC0AC3),可以按字节、字和双字来存取累加器中的数据。按字节、字只能存取累加器的低8位或低16位,双字存取全部的32位,存取的数据长度由所用的指令决定。如在指令MOV_W AC2,VW100 中,AC2按字(W)存取。,201

23、9/7/1,30,13) 高速计数器(HC)寻址,高速计数器用来累计比CPU的扫描速率更快的事件,其当前值和设定值为32位有符号整数,当前值为只读数据。高速计数器的地址由区域标示符HC和高速计数器号组成,如HC2。,14) 常数的表示方法与范围,常数值可以是字节、字或双字,CPU以二进制方式存储常数,常数也可以用十进制、十六进制、ASCII码或浮点数形式来表示,表是常数的例子。,2019/7/1,31,323 直接寻址与间接寻址,1) 直接寻址,直接寻址给出了存储器的区域、长度和位置,例如VW790指V存储区中的字,地址为790。可以用字节(B)、字(W)或双字(DW)方式存取V、I、Q、M、

24、S和SM存储器区。例如VBl00表示以字节方式存取,VWl00表示存取VBl00、VB101组成的字,VDl00表示存取VBl00VBl03组成的双字。取代继电器控制的数字量(开关量)控制系统一般只用直接寻址。,返回,2019/7/1,32,2) 建立间接寻址的指针,S7-200CPU允许使用指针对下述存储区域进行间接寻址:I,Q,V,M,S,T(仅当前值)和C(仅当前值)。但不能对独立的位(Bit)或模拟量进行间接寻址。使用间接寻址之前,应创建一个指向该位置的指针。指针为双字值,用来存放另一个存储器的地址,只能用V、L或累加器AC1、AC2和AC3作指针。为了生成指针,必须用双字传送指令(M

25、OVD)将某个位置的地址移入另一位置或累加器作为指针。指令的输入操作数开始处使用&符号,表示某一存储器位置的地址,而不是存储器里的值。指令的输出操作数是指针的地址,例如:,MOVD &VB200,AC1 MOVD &C3,VD6 MOVD &MB4,LD8,2019/7/1,33,3) 用指针采存取数据,用指针来存取数据时,操作数前加“*”号,表示该操作数为一个指针。图中的* AC1表示AC1是一个指针,*AC1是MOVW指令确定的一个字长的数据。此例中,存于V200和V201的数据被传送到累加器AC0的低16位。,图 使用指针的间接寻址,2019/7/1,34,4) 修改指针,连续存取指针所

26、指的数据时,因为指针是32位的数据,应使用双字指令来修改指针值,如双字加法(ADDD)或双字加1(INCD)指令。修改时记住需要调整的存储器地址的字节数:存取字节时,指针值加1,存取字时,指针值加2;存取双字时;指针值加4。,2019/7/1,35,324 绝对地址与符号地址,可以用数字和字母组成的符号来代替存储器的地址,符号地址便于记忆,使程序更容易理解。程序编译后下载到可编程序控制器时,所有的符号地址被转换为绝对地址。,程序编辑器中的地址显示举例:I0.0:绝对地址,由内存区和地址组成(SIMATIC程序编辑器用)。 I0.0:绝对地址,百分比符号放在绝对地址之前(IEC程序编辑器用)。

27、#INPUT1:符号地址,“#”号放在局部变量之前(SIMATIC或IEC程序编辑器用) “INPUT1”:全局符号名(SIMATIC或IEC程序编辑器用)。 ? .?或?:红色问号,表示一未定义的地址,在程序编译之前必须定义。,2019/7/1,36,33 位逻辑指令,3 3 1 触点指令,3 3 2 输出指令,33 3 其他指令,返回,2019/7/1,37,1) 标准触点指令,常开触点对应的存储器地址位为1状态时,该触点闭合。在语句表中,分别用LD(Load,装载)、A(And,与)和O(Or,或)指令来表示开始、串联和并联的常开触点(见表)。,标准触点指令,331 触点指令,返回,20

28、19/7/1,38,2) 堆栈的基本概念,S7-200有1个9位的堆栈,栈顶用来存储逻辑运算的结果,下面的8位用来存储中间运算结果(见图3-10)。堆栈中的数据一般按“先进后出”的原则存取。执行LD指令时,将指令指定的位地址中的二进制数据装载入栈顶。执行A(与)指令时,将指令指定的位地址中的二进制数和栈顶中的二进制数相“与”,结果存入栈顶。执行O指令时,将指令指定的位地址中的二进制数和栈顶中的二进制数相“或”,结果存入栈顶。执行常闭触点对应的LDN,AN和ON指令时,取出指令指定的位地址中的二进制数据后,将它取反(0变为1,1变为0),然后再做对应的装载、与、或操作。,与堆栈 有关的指令,20

29、19/7/1,39,常闭触点对应的存储器地址位为0状态时,该触点闭合。在语句表中,分别用LDN(Load Not)、AN(And Not)和ON(0r Not)来表示开始、串联和并联的常闭触点(见表3-3)。触点符号中间的“”表示常闭,触点指令中变量的数据类型为BOOL型。下图是触点与输出指令的例子。,LD I0.0 AN I0.1 O I0.2 A I0.3 ON C5 = Q0.3 = Q1.4 AN I3.4 = Q2.6,触点与输出指令的例子,2019/7/1,40,3) OLD(Or Load )指令,触点的串并联指令只能将单个触点与别的触点电路串并联。要想将下图中由I32和/T16

30、的触点组成的串联电路与它上面的电路并联,首先需要完成两个串联电路块内部的“与”逻辑运算(即触点的串联),这两个电路块都是用LD或LDN指令表示电路块的起始触点。前两条指令执行完后,“与”运算的结果“与”运算的结果S0=/I1.4 . I0.3存放在栈顶,第3、4条指令执行完后,“与”运算的结果S1 =I3.2 . /T16压入栈顶,原来在栈顶的S0被推到堆栈的第2层,第2层的数据被推到第3层栈底的数据丢失。,RETURN,2019/7/1,41,OLD指令用逻辑“或”操作对堆栈第1层和第2层的数据相“或”,即将两个串联电路块并联,并将运算结果S2=S0+S1存入堆栈的顶部。第3第9层的数据依次

31、向上移动一位(x表示不确定的值)。OLD指令不需要地址,它相当于需并联的两块电路右端的一段垂直连线。,执行前,执行后,S2=S0+S1,OLD(栈顶值或),2019/7/1,42,执行前,执行后,S4=S2 . S3,ALD(栈顶值与),4) ALD(And Load )指令,图3-9中OLD后面的两条指令将两个触点并联,运算结果S3=/C24+/I1.2压入栈顶,栈中原来的数据依次向下一层推移,栈底值被推出丢失。ALD指令用逻辑“与”操作对堆栈第1层和第2层的数据相“与”,即将两个电路块串联,并将运算结果S4=S2S3存入堆栈的顶部(见图,图中x表示不确定的值)。将电路块串并联时,每增加一

32、个用LD或LDN指令开始的电路块的运算结果,堆栈中增加一个数据,堆栈深度加1,每执行一条ALD或OLD指令,堆栈深度减1,2019/7/1,43,5) 其它堆栈操作指令,入栈(LPS,Logic Push)指令复制栈顶的值并将其压入堆栈的下一层,栈中原来的数据依次向下一层推移,栈底值被推出丢失(见图)。,入栈前,入栈后,LPS(入栈),堆栈操作,2019/7/1,44,读栈前,读栈后,LRD(读栈),堆栈操作,读栈(LRD,Logic Read)指令将堆栈中第2层的数据复制到栈顶,29层的数据不变,但原栈顶值消失。,2019/7/1,45,出栈(LPP,Logic Pop)指令使栈中各层的数据

33、向上移动一层,第2层的数据成为堆栈新的栈顶值,原来栈顶的数据从栈内消失。,出栈前,出栈后,LPP(出栈),堆栈操作,2019/7/1,46,执行前,执行后,LDS3(装载堆栈),堆栈操作,装载堆栈(LDS n,Load Stack,n:18)指令复制堆栈内第n层的值到栈顶,栈中原来的数据依次向下一层推移,栈底值被推出丢失。,2019/7/1,47,堆栈指令的使用,LD I0.2 A I0.0 LPS AN I0.1 = Q2.1 LRD A I0.5 = M3.7 LPP AN I0.4 = Q0.3,与堆栈 有关的指令,2019/7/1,48,LDNI I0.5 OI I0.1 AI I1.

34、4 = Q0.3 LDI I0.4 ONI I0.2 ANI I0.0 ANI I0.0 =I Q3.4,立即触点与输出指令,6) 立即触点,立即(Immediate)触点指令只能用于输入I,执行立即触点指令时,立即读入物理输入点的值,根据该值决定触点的接通断开状态,但是并不更新该物理输入点对应的映像寄存器。在语句表中,分别用LDI、AI、OI来表示开始、串联和并联的常开立即触点,用LDNI、ANI、ONI来表示开始、串联和并联的常闭立即触点。触点符号中间的“I ”和“I”表示立即常开和立即常闭。下图是立即触点与输出指令的例子。,2019/7/1,49,立即触点指令,2019/7/1,50,1

35、) 输出,输出指令(=)与线圈相对应,驱动线圈的触点电路接通时,线圈流过“能流”,指定位对应的映像寄存器为1,反之则为0。输出指令将栈顶值复制到对应的映像寄存器。输出类指令应放在梯形图的最右边,变量为BOOL型。,3 3 2 输出指令,返回,2019/7/1,51,2) 立即输出,立即输出指令(=I)只能用于输出量(Q),执行该指令时,将栈顶值立即写入指定的物理输出位和对应的输出映像寄存器。线圈符号中的“I”用来表示立即输出。,LDNI I0.5 OI I0.1 AI I1.4 = Q0.3 LDI I0.4 ONI I0.2 ANI I0.0 ANI I0.0 =I Q3.4,立即触点与输出

36、指令,2019/7/1,52,执行S(Set,置位或置1)与R(Reset,复位或置0)指令时,从指定的位地址开始的N个点的映像寄存器都被置位(变为1)或复位(变为0),N=1255,图中N=1。如果图中I0.1的常开触点接通,Q0.3变为1并保持该状态,即使I0.1的常开触点断开,它也仍然保持1状态。当I0.3的常开触点闭合时,Q0.3变为0,并保持该状态,即使I0.3的常开触点断开,它也仍然保持0状态。 如果被指定复位的是定时器位(T)或计数器位(C),将清除定时器/计数器的当前值。,LD I0.1 S Q0.3,1 LD I0.3 R Q0.3,1 LD I0.4 SI Q0.5,1 L

37、D I0.5 RI Q0.5,1,3) 置位与复位,I0.1 I0.3 Q0.3,2019/7/1,53,返回,后一页,前一页,4) 立即置位与立即复位,执行SI(Set Immediate,立即置位)或RI(Reset Immediate,立即复位)指令时,从指定位地址开始的N个连续的物理输出点将被立即置位或复位,N=1128。线圈中的I表示立即。该指令只能用于输出量(Q),新值被同时写入对应的物理输出点和输出映像寄存器。使S、R、SI和RI指令ENO(使能输出)=0的错误条件:SM43(运行时间),0006(间接寻址),0091(操作数超出范围)。,输出类指令,2019/7/1,54,1)

38、 取反(NOT),取反触点指令将它左边电路的逻辑运算结果取反(见图),运算结果若为1则变为0,为0则变为1,该指令没有操作数。能流到达该触点时即停止,若能流未到达该触点,该触点给右侧供给能流。NOT指令将堆栈顶部的值从0改为1,或从1该为0。,LD I0.3 EU = M1.5 LD I0.3 ED =I M3.2 LD I0.7 NOT = M0.3,333 其他指令,返回,2019/7/1,55,2) 跳变触点,正跳变触点检测到一次正跳变(触点的输入信号由0变为1)时,或负跳变触点检测到一次负跳变(触点的输入信号由1变为0)时,触点接通一个扫描周期。正负跳变指令的助记符分别为EU(Edge

39、 Up,上升沿)和ED(Edge Down,下降沿),它们没有操作数,触点符号中间的(“P”和“N”分别表示正跳变(Positive Transition)和负跳变(Negative Transition)(见图)。,LD I0.3 EU = M1.5 LD I0.3 ED =I M3.2 LD I0.7 NOT = M0.3,2019/7/1,56,3) 空操作指令,空操作指令(NOP N)不影响程序的执行,操作数N=0255。,其它指令,2019/7/1,57,3.4 定时器与计数器指令,341 通电延时定时器指令,342 断电延时定时器指令,343 保持型通电延时定时器,344 定时器当

40、前值刷新的方法,345 计数器指令,返回,2019/7/1,58,341 通电延时定时器指令,定时器、计数器的当前值、设定值均为16位有符号整数(INT),允许的最大值为32 767。,返回,通电延时定时器(TON)输入端(IN)的输入电路接通时开始定时。当前值大于等于PT(Preset Time,预置时间)端指定的设定值时(PT=132767),定时器位变为ON,梯形图中对应定时器的常开触点闭合,常闭触点断开。达到设定值后,当前值仍继续计数,直到最大值32767。,2019/7/1,59,输入电路断开时,定时器被复位,当前值被清零,常开触点断开。第一次扫描时定时器位OFF,当前值为0。定时器

41、有1ms、10ms和100ms三种分辨率,分辨率取决于定时器号(见表)。定时器的设定时间等于设定值与分辨率的乘积,图中的T33为l00ms定时器,设定时间为l00ms3=0.3s 定时器和计数器的设定值的数据类型均为INT型,除了常数外,还可以用VW、IW等作它们的设定值。,定时器特性,返回,2019/7/1,60,342 断电延时定时器指令,断电延时定时器(TOF)用来在IN输入电路断开后延时一段时间,再使定时器位OFF。它用输入从ON到OFF的负跳变启动定时。,断电延时定时器,返回,2019/7/1,61,接在定时器IN输入端的输入电路接通时定时器位变为ON,当前值被清零。输入电路断开后,

42、开始定时,当前值从0开始增大,当前值等于设定值时,输出位变为OFF,当前值保持不变,直到输入电路接通(见图)TOF与TON不能共享相同的定时器号,例如3.4.2断电延时定时器指令不能同时使用TON T32和TOF T32。 可用复位(R)指令复位定时器。复位指令使定时器位变为OFF,定时器当前值被清零。在第一个扫描周期,TON和TOF被自动复位,定时器位OFF,当前值为0。,2019/7/1,62,343 保持型通电延时定时器,保持型通电延时定时器(Retentive On-Delay Timer,TONR)的输入电路接通时,开始定时。当前值大于等于PT端指定的设定值时,定时器位变为ON。达到

43、设定值后,当前值仍继续计数,直到最大值32767 .,输入电路断开时,当前值保持不变。可用TONR来累计输入电路接通的若干个时间间隔。复位指令(R)用来清除它的当前值,同时使定时器位OFF。图中的时间间隔100ms时,10ms定时器T2的定时器位变为ON。在第一个扫描周期,定时器位为OFF。可以在系统块中设置TONR的当前值有断电保持功能。,返回,2019/7/1,63,344 定时器当前值刷新的方法,1) 1 ms定时器,1ms定时器对启动后的1ms时间间隔计数。定时器指令执行期间每隔1ms对定时器位和当前值刷新一次,这一过程不与扫描周期同步。因为可能在1ms内的任意时刻启动定时器,设定值必

44、须比最小要求的定时间隔大一个时间基准。例如对1ms定时器,为了保证时间间隔至少为56ms,设定值应为57。10ms、l00ms定时器也有类似的问题,可用相同的原则处理,即设定值等于要求的最小时间间隔对应的值加1。,返回,2019/7/1,64,2) 10ms定时器,10ms定时器对启动后的10ms时间间隔计数。执行定时器指令时开始定时,在每一扫描周期开始时刷新定时器,将一个扫描周期内增加的10ms时间间隔的个数加到当前值。定时器的当前值和定时器位在一个扫描周期内其余的时间保持不变。,2019/7/1,65,3) 100ms定时器,100ms定时器对启动后的100ms时间间隔计数。它在每一扫描周

45、期开始时刷新定时器,将一个扫描周期内增加的100ms时间间隔的个数加到当前值。只有在执行定时器指令时,才对100ms定时器的当前值刷新。因此,如果启动了100ms定时器但是没有在每一扫描周期执行定时器指令,将会丢失时间。,由于定时器内部刷新机制的原因,图a 中的梯形图必须改为图b。图b中的1ms定时器T32的常开触点每300ms闭合一次。10ms定时器也应作类似的处理, 100ms定时器可采用类似于图a的电路。,2019/7/1,66,2019/7/1,67,345 计数器指令,1) 加计数器CTU,当复位输入(R)电路断开,加计数(Count Up)脉冲输入(CU)电路由断开变为接通(即CU

46、信号的上升沿),计数器的当前值加1,直至计数最大值32 767。当前值大于等于设定值(PV)时,该计数器位被置1。当复位输入(R)ON时,计数器被复位,计数器位变为OFF,当前值被清零(见图)。在语句表中,栈顶值是复位输入(R),加计数输入值(CU)放在栈顶下面一层。,图 加计数器,返回,2019/7/1,68,2) 减计数器CTD,在减计数(Count Down)脉冲输入CD的上升沿(从OFF到ON),从设定值开始,计数器的当前值减1,减至0时,停止计数,计数器位被置1。装载输入(LD)为ON时,计数器位被复位,并把设定值装入当前值(见图)。在语句表中,栈顶值是装载输入LD,减计数输入CD放

47、在栈顶下面一层。,图 减计数器,2019/7/1,69,3) 加减计数器CTUD,在加计数脉冲输入(CU)的上升沿,计数器的当前值加1,在减计数脉冲输入(CD)的上升沿,计数器的当前值减1,当前值大于等于设定值(PV)时,计数器位被置位。复位输入(R)ON,或对计数器执行复位(R)指令时,计数器被复位(见图3-22)。当前值为最大值32767时,下一个CU输入的上升沿使当前值变为最小值32768。当前值为32768时,下一个的上升沿使当前值变为最大值32767。在语句表中,栈顶值是复位输入R,加计数输入CU放在堆栈的第2层,减计数输入, 堆栈的第3层。 计数器的编号范围为C0C255。不同类型的计数器不能共用同一计数器号 .,2019/7/1,70,加减计数器,2019/7/1,71,定时器与计数器指令,2019/7/1,72,3.5 习题3. 5. 9. 11. 13.,

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报