西门子S7-300系列PLC基本指令西门子S7-300系列PLC基本指令6.1可编程控制器的指令结构和指令系统6.2位逻辑指令6.3定时器和计数器指令6.4数据处理功能指令6.5数据运算指令6.6控制指令思考题与习题S7-300PLC指令及编程软件•对于西门子公司的SIMATICS7系列PLC,常用的编程软件是STEP7,STEP7中有丰富的S7系列PLC的编程语言,通常使用的是梯形图(LAD)、语句表(STL)和顺控指令(GRAPH)等,另外,还有功能块图(FDB)、标准控制语言(SCL)、状态图(HiGraph)、连续功能图(CFC)和STEP7的C语言等。•梯形图具有直观、简单等优点,并且在STEP7中,梯形图可以转换成为语句表(STL)和功能块图(FDB)。•在编程的过程中,用户可以选择上面所示的某一种语言进行编程,也可以利用多种语言的优点来进行混合编程,使用户的程序开发、输入和调试等工作变得极为方便。逻辑取及线圈驱动指令–指令•LD(Load):取指令。•LDN(LoadNot):取反指令。•=(Out):线圈驱动指令。•NOT:取反指令。–用法逻辑取及线圈驱动指令–使用说明•LD、LDN指令不只是用于网络块逻辑计算开始时与母线相连的常开和常闭触点,在分支电路块的开始也要使用LD、LDN指令,与后面要讲的ALD、OLD指令配合完成块电路的编程。•并联的=指令可连续使用任意次。–什么是并联输出?•在同一程序中不要使用双线圈输出,即同一个元器件在同一程序中只使用一次=指令。–什么是双线圈输出?•LD、LDN、=指令的操作数为:I、Q、M、SM、T、C、V、S和L。T和C也作为输出线圈。触点串联指令–指令•A(And):与指令。用于单个常开触点的串联连接。•AN(AndNot):与反指令。用于单个常闭触点的串联连接。–用法触点串联指令–使用说明•A、AN是单个触点串联连接指令,可连续使用。但在用梯形图编程时会受到打印宽度和屏幕显示的限制,S7-300PLC的编程软件中规定的串联触点使用上限为11个。•对连续输出电路,可以反复使用=指令,但次序必须正确,不然就不能连续使用=指令编程了。–什么是连续输出电路?–下图所示的电路就不属于连续输出电路•A、AN指令的操作数为:I、Q、M、SM、T、C、V、S和L。触点并联指令–指令•O(OR):或指令。用于单个常开触点的并联连接。•ON(OrNot):或反指令。用于单个常闭触点的并联连接。–用法–使用说明•单个触点的O、ON指令可连续使用。•O、ON指令的操作数为:I、Q、M、SM、T、C、V、S和L。置位/复位指令–指令–用法置位/复位指令•对位元件来说一旦被置位,就保持在通电状态,除非对它复位;而一旦被复位就保持在断电状态,除非再对它置位。•S/R指令可以互换次序使用,但由于PLC采用扫描工作方式,所以写在后面的指令具有优先权。如在上图中,若I0.0和I0.1同时为1,则Q0.0、Q0.1肯定处于复位状态而为0。•如果对计数器和定时器复位,则计数器和定时器的当前值被清零。定时器和计数器的复位有其特殊性,可参考计数器和定时器的有关部分。•N的范围为1~255,N可为:VB、IB、QB、MB、SMB、SB、LB、AC、常数、*VD、*AC和*LD。一般情况下使用常数。•S/R指令的操作数为:I、Q、M、SM、T、C、V、S和L。RS触发器指令–指令•SR(SetDominantBistable):置位优先触发器指令。当置位信号(S1)和复位信号(R)都为真时,输出为真。•RS(ResetDominantBistable):复位优先触发器指令。当置位信号(S)和复位信号(R1)都为真时,输出为假。–用法•没有STL形式立即指令–什么是立即指令?有何用途?•对输入•对输出–指令立即指令–举例边沿脉冲指令–指令–举例OLD(OrLoad)串联电路块的并联连接指令(或块指令),用于串联电路块的并联连接。什么是串联电路块?两个以上触点串联形成的支路叫串联电路块。用法使用说明除在网络块逻辑运算的开始使用LD或LDN指令外,在块电路的开始也要使用LD和LDN指令。每完成一次块电路的并联时要写上OLD指令。OLD指令无操作数。ALD(AndLoad)并联电路块的串联连接指令(与块指令)。用于并联电路块的串联连接。什么是并联电路块?两条以上支路并联形成的电路叫并联电路块。用法使用说明在块电路开始时要使用LD和LDN指令。在每完成一次块电路的串联连接后要写上ALD指令。ALD指令无操作数。逻辑堆栈操作指令8.逻辑堆栈操作指令–指令2•LPS(LogicPush):逻辑入栈指令(分支电路开始指令)。•LRD(LogicRead):逻辑读栈指令。•LPP(LogicPop):逻辑出栈指令(分支电路结束指令)。9.逻辑堆栈操作指令–使用说明•由于受堆栈空间的限制(9层堆栈),LPS、LPP指令连续使用时应少于9次。•LPS和LPP指令必须成对使用,它们之间可以使用LRD指令。•LPS、LRD、LPP指令无操作数。LPS/LRD/LPP举例LPS/LRD/LPP举例LPS/LRD/LPP举例逻辑堆栈操作指令–指令3•装入堆栈指令LDS(LoadStack)–用法•LDSn(n为0~8的整数)–举例•LDS3–结果如右表所列逻辑堆栈操作指令–指令4•AENO•使用较少–举例比较指令–作用:比较指令是将两个数值或字符串按指定条件进行比较,条件成立时,触点就闭合。所以比较指令实际上也是一种位指令。–类型:•字节比较、整数比较、双字整数比较、实数比较和字符串比较。•数值比较指令的运算符有:=、=、、=、和等6种,字符串比较指令有=和两种。•对比较指令可进行LD、A和O编程。–比较指令属于“位指令”比较指令定时器及其使用–最常用的器件–几个基本概念•种类:TON,TONR,TOF•分辩率与定时时间的计算–单位时间的时间增量称为定时器的分辨率,即精度。S7-200PLC定时器有3个精度等级:1ms、10ms和100ms。–定时器定时时间T的计算:T=PT×S。式中:T为实际定时时间,PT为设定值,S为分辨率。–例如:TON指令使用T97(为10ms的定时器),设定值为100,则实际定时时间为:T=100×10=1000ms–定时器的设定值PT:数据类型为INT型。操作数可为:VW、IW、QW、MW、SW、SMW、LW、AIW、T、C、AC、*VD、*AC、*LD和常数,其中常数最为常用。定时器及其使用–定时器的编号•定时器的编号用定时器的名称和它的常数编号(最大为255)来表示,即T***。如:T40。•定时器的编号包含两方面的变量信息:定时器位和定时器当前值。•定时器位:与其他继电器的输出相似。当定时器的当前值达到设定值PT时,定时器的触点动作。•定时器当前值:存储定时器当前所累计的时间,它用16位符号整数来表示,最大计数值为32767。定时器及其使用–定时器的编号•编号表•TON和TOF使用相同范围的定时器编号,所以在同一个PLC程序中决不能把同一个定时器号同时用作TON和TOF。例如在程序中,不能既有接通延时(TON)定时器T32,又有断开延时(TOF)定时器T32。定时器及其使用–定时器的指令及使用•指令定时器的指令及使用接通延时定时器TON(On-DelayTimer)–接通延时定时器用于单一时间间隔的定时。–上电周期或首次扫描时,定时器位为OFF,当前值为0。–输入端接通时,定时器位为OFF,当前值从0开始计时,当前值达到设定值时,定时器位为ON,当前值仍连续计数到32767。–输入端断开,定时器自动复位,即定时器位为OFF,当前值为0。记忆接通延时定时器TONR(RetentiveOn-DelayTimer)–记忆接通延时定时器具有记忆功能,它用于对许多间隔的累计定时。–上电周期或首次扫描时,定时器位为掉电前的状态,当前值保持在掉电前的值。–当输入端接通时,当前值从上次的保持值继续计时,当累计当前值达到设定值时,定时器位ON,当前值可继续计数到32767。–TONR定时器只能用复位指令R对其进行复位操作。TONR复位后,定时器位为OFF,当前值为0。掌握好对TONR的复位及启动是使用好TONR指令的关键。断开延时定时器TOF•断开延时定时器TOF(Off-DelayTimer)–断开延时定时器用于断电后的单一间隔时间计时。–上电周期或首次扫描,定时器位为OFF,当前值为0。–输入端接通时,定时器位为ON,当前值为0。当输入端由接通到断开时,定时器开始计时。当达到设定值时定时器位为OFF,当前值等于设定值,停止计时。–输入端再次由OFF→ON时,TOF复位,这时TOF的位为ON,当前值为0。如果输入端再从ON→OFF,则TOF可实现再次启动。定时器及其使用–定时器的指令及使用•举例定时器的刷新方式和正确使用•1ms、10ms、100ms定时器的刷新方式是不同的,从而在使用方法上也有很大的不同。这和其他PLC是有很大区别的。•1ms定时器1ms定时器由系统每隔1ms刷新一次,与扫描周期及程序处理无关。它采用的是中断刷新方式。因此,当扫描周期大于1ms时,在一个周期中可能被多次刷新。其当前值在一个扫描周期内不一定保持一致。•10ms定时器10ms定时器由系统在每个扫描周期开始时自动刷新,由于是每个扫描周期只刷新一次,故在一个扫描周期内定时器位和定时器的当前值保持不变。•100ms定时器100ms定时器在定时器指令执行时被刷新,因此,如果100ms定时器被激活后,如果不是每个扫描周期都执行定时器指令或在一个扫描周期内多次执行定时器指令,都会造成计时失准,所以在后面讲到的跳转指令和循环指令段中使用定时器时,要格外小心。100ms定时器仅用在定时器指令在每个扫描周期执行一次的程序中。定时器及其使用–定时器的刷新方式和正确使用•举例时间间隔定时器•这是在最新版本的CPU中增加的有特殊功能的定时器,说是定时器,其实是2条指令。使用这2条指令可以记录某一信号的开通时刻以及开通延续的时间。PLC停电后,停止记录。•触发时间间隔(BITIM,BeginningIntervalTime)该指令用来读取PLC中内置的1毫秒计数器的当前值,并将该值存储于OUT。双字毫秒值的最大计时间隔为2的32次方,即49.7天。•计算时间间隔(CITIM,CalculateIntervalTime)该指令计算当前时间与IN所提供时间的时间差,并将该差值存储于OUT。双字毫秒值的最大计时间隔为2的32次方,即49.7天。•2条指令的有效操作数为:IN和OUT端均为双字。定时器及其使用–时间间隔定时器•举例计数器及其使用•种类:CTD,CTUD,CTD•编号–计数器的编号用计数器名称和数字(0~255)组成,即C***,如C6。–计数器的编号包含两方面的信息:计数器的位和计数器当前值。–计数器位:计数器位和继电器一样是一个开关量,表示计数器是否发生动作的状态。当计数器的当前值达到设定值时,该位被置位为ON。–计数器当前值:其值是一个存储单元,它用来存储计数器当前所累计的脉冲个数,用16位符号整数来表示,最大数值为32767。•计数器输入端和操作数–设定值输入:数据类型为INT型。–寻址范围:VW、IW、QW、MW、SW、SMW、LW、AIW、T、C、AC、*VD、*AC、*LD和常数。–一般情况下使用常数作为计数器的设定值。计数器及其使用–指令及其使用•指令计数器及其使用指令及其使用•CTU–首次扫描时,计数器位为OFF,当前值为0。–在计数脉冲输入端CU的每个上升沿,计数器计数1次,当前值增加一个单位。当前值达到设定值时,计数器位为ON,当前值可继续计数到32767后停止计数。–复位输入端有效或对计数器执行复位指令,计数器自动复位,即计数器位为OFF,当前值为0。–注意:在语句表中,CU、R的编程顺序不能错误。计数器及其使用–指令及其使用•CTU计数器及其使用–指令及其使用•CTUD–增减计数器有两个计数