1.65k likes | 1.81k Views
可编程序控制器. 主讲:张波. 第四章 S7-200 编程语言及指令系统. 4.1 编程语言与指令操作数范围 4.2 基本指令 4.3 程序控制指令 4.4 数学运算指令 4.5 数据操作指令 4.6 PID 指令 4.7 其他操作指令. 4.1 编程语言与指令操作数范围. 4.1.1 编程语言 梯形图 (LAD) 语句表 (STL) 功能块图 (FBD) 1 、梯形图(图形语言) 适用:开关量和逻辑控制
E N D
可编程序控制器 主讲:张波
第四章 S7-200编程语言及指令系统 • 4.1 编程语言与指令操作数范围 • 4.2 基本指令 • 4.3 程序控制指令 • 4.4 数学运算指令 • 4.5 数据操作指令 • 4.6 PID指令 • 4.7 其他操作指令
4.1 编程语言与指令操作数范围 4.1.1 编程语言 • 梯形图 (LAD) • 语句表 (STL) • 功能块图(FBD) 1、梯形图(图形语言) 适用:开关量和逻辑控制 设计思想:让CPU模仿电源的电流通过一系列逻辑控制 条件,并根据结构产生逻辑输出。逻辑控制条件按其控制功能分解成多个“梯级”,构成梯形图。 执行程序时,从左到右,从上到下逐级执行,执行到程序结尾,再从上至下反复循环。
A B (M) C (Q) D T33 IN TON PT 100 • 梯形图组成: • 左右两条垂直线:左母线、右母线。 • 常开触点、常闭触点:代表逻辑“输入”条件,如:开关、按钮、内部软元件等。 • 输出线圈:代表逻辑“输出”结果,如:电机启动器、电磁阀、软元件、继电器。 • 方框:代表附加指令,如:定时器、计数器、数学运算指令等。 • 梯形图编程就是用软继电器线圈的吸、放和触点的通、断实现各种实际控制系统。 左母线 右母线 • 注:-通常括号(输出驱动线圈)右边的部分在梯形图中不画 出。 • 触点在水平线上若是互相串联,则相当于逻辑与(AND) • 若相邻的水平线用一条垂直线连接起来形成并联,相当于逻辑或(OR)
能流:假想在梯形图中有“电流”流动,这个“电流”称为“能流”。能流:假想在梯形图中有“电流”流动,这个“电流”称为“能流”。 • “能流”只能单方向流动,不可逆。即从上至下、从左到右。 • 梯形图左边的母线即为“能流”源,并能沿着“梯级”线从左到右驱动最右边的输出线圈。如果这个“能流”能畅通无阻地到达最右边,则输出线圈被驱动;否则,输出线圈不被驱动。
2. 语句表 语句表是由各种指令组成的语言程序。使用NETWORK对程序分段。可以实现某些不能用梯形图或功能块图实现的功能。 (1)指令 • 指令是构成语句表的元素,由一个或几个容易记忆的字符来表示。 • 每一条指令带上必要的符号和参数就形成一个语句,可完成一特点功能。 • 程序执行时,按从上到下的顺序逐条执行。
(2)梯形图转换成语句表规则 • 梯形图中的线圈、触点、方块等符号,在语句表中有具体的指令与其对应。 • 利用PLC基本指令对梯形图编程时,务必按从上到下、从左到右的原则进行。 • 为了减少程序步骤,要优化编程顺序,其原则是串联多的电路放在上面,并联多的电路尽量靠近左母线。 • 对于不符合编程要求的梯形图控制电路必须重新编排,以便于正确使用PLC指令进行语句表编程。 I0.0 I0.1 M0.0 ( ) I0.2 Q0.0 ( ) I0.3 NETWORK1 LD I0.0 A I0.1 = M0.0 NETWORK2 LD I0.2 ON I0.3 = Q0.0
T33 I2.1 IN Ton AND PT V50.0 100 3、功能块图 • 采用半导体逻辑电路方块图。 • 每一种功能使用一个运算方块,其运算功能由方块内的符号表示。 • 功能块图编辑器没有梯形图中的线圈和触点,但有与之等价的指令。 4、指令操作数范围(P65表4.1)
c 4.1.3 梯形图设计规则 • 梯形图没有实际的电流流动,被假设的“能流”实际是控制系统的信号流,它只能单方向流动,不能产生反流。即梯形图必须符合从上至下、从左到右的执行原则,否则不能直接编程。 • 梯形图中的触点应画在水平线上,不能画在垂直线上。 错误 正确
不包含触点的分支应放在垂直方向上,不能放在水平方向上,以便识别触点的组合和对输出线圈的控制路径。不包含触点的分支应放在垂直方向上,不能放在水平方向上,以便识别触点的组合和对输出线圈的控制路径。 错误 正确
梯形图每一“梯级”都是从左边母线开始,输出线圈接在右边母线上,所有触点不能画在输出线圈的右边。输出线圈不能直接连接在左母线上,若必须的话,则可通过插入常闭触点将线圈连于左母线上。梯形图每一“梯级”都是从左边母线开始,输出线圈接在右边母线上,所有触点不能画在输出线圈的右边。输出线圈不能直接连接在左母线上,若必须的话,则可通过插入常闭触点将线圈连于左母线上。 错误 正确
若几个并联回路串联,应将触点最多的回路放在梯形图的最左面;若几个串联回路并联,应将触点最多的回路放在梯形图的最上面。若几个并联回路串联,应将触点最多的回路放在梯形图的最左面;若几个串联回路并联,应将触点最多的回路放在梯形图的最上面。 正确 错误
4.2 基本指令4.2.1 逻辑位标准操作指令 1、逻辑取、线圈驱动指令LD、LDN和= • LD指令用于常开触点逻辑运算开始。 • LDN指令用于常闭触点逻辑运算开始。 • “=”(OUT)线圈驱动指令,使该线圈所代表的软元件的触点闭合或断开。 网络1 LD I0.0 = Q0.0 网络2 LDN I0.1 = M0.0 = Q0.0
几点说明 • LD、LDN用于将左母线与触点相连;也可以与其他指令配合,用于其他分支回路的开始。 • “=”指令用于驱动输出继电器、辅助继电器、特殊功能寄存器、定时器及计数器等,但不能用于驱动输入继电器。 • 并联的“=”指令可以连续使用任意次。 • LD、LDN的操作数为I、Q、M、SM、T、C、V、S、L • “=”的操作数为Q、M、SM、T、C、V、S、L
2、逻辑与操作指令A、AN • 在梯形图中,如果有串联触点,要用逻辑与指令对其编程。 • 若串联的触点是常开触点,则使用与指令A; • 若串联的触点是常闭触点,则使用与非指令AN。
几点说明 • A、AN指令是单个触点串联连接指令,可连续使用。 • 若串联一个由多触点并联的回路,则不能用A、AN指令,需采用逻辑块与指令ALD。 • 并联的“=”指令可以连续使用任意次。 • A、AN指令的操作数为I、Q、M、SM、T、C、V、S、L
3、逻辑或操作指令O、ON • 在梯形图中,如果有单个触点并联,要用逻辑或指令对其编程。 • 若并联的触点是常开触点,则使用或指令O; • 若并联的触点是常闭触点,则使用或非指令ON。
几点说明 • O、ON指令是单个触点并联连接指令,一般紧跟在LD、LDN等指令后。即对其前面LD、LDN指令所指定的触点再并联一个触点,并联的次数可以是无限次。 • 若并联两个以上触点的串联回路,则不能用O、ON指令,需采用逻辑块或指令OLD。 • O、ON指令的操作数为I、Q、M、SM、T、C、V、S、L
4、块操作指令ALD、OLD • 有两个或两个以上串联触点的控制电路称为串联电路块。 • 有两个或两个以上并联触点的控制电路称为并联电路块。 • 在梯形图中,若有两个以上的并联块触点串联,则用块与指令ALD。 • 若有两个以上的串联块触点并联,则用块或指令OLD
几点说明 • 几个串、并联支路进行并联或串联连接时,其支路的起点以LD、LDN开始,支路终点用OLD、ALD指令。 • 如需将多个支路并联或串联,则从第二条支路开始,在每一条支路后面加OLD指令或ALD支路。 • 对串、并联支路的个数没有限制。 • OLD、ALD支路均无操作数。
5、置位指令S和复位指令R 执行S、R指令时,从bit或out指定的地址参数开始的N个点都被置位或复位。N可以是1~255。当用复位指令时,如果bit或out指定的是T位或C位,则定时器或计数器被复位的同时当前值将被清零。被置位的位一旦为1后,在执行复位指令前不会改变为0,即置位指令具有锁存功能。
6、脉冲生成指令EU、ED • 用于检测开关量状态的变化以及配合功能指令完成一些逻辑控制。 • 当对应EU指令前的逻辑运算结果有一个上升沿跳变时,EU指令让能流接通一个扫描周期,即产生一个宽度为一个扫描周期的脉冲,驱动其后面的输出线圈。 • 当对应ED指令前的逻辑运算结果有一个下降沿跳变时,ED指令让能流接通一个扫描周期,即产生一个宽度为一个扫描周期的脉冲,驱动其后面的输出线圈。 • 对应的梯形图EU、ED P N EU上升沿跳变 ED下降沿跳变
I0.0 一个扫描周期 M0.0 I0.1 一个扫描周期 M0.1 Q0.0
7、逻辑取反NOT和空操作NOP指令 • NOT指令是逻辑取反指令,它可改变能流状态,能流达到取反触点时则停止,能流未达到取反触点时则通过。 • NOT指令无操作数。 • NOP为空操作指令,它的使用对程序不产生任何影响,用于调试及修改程序,也可用于短暂的延时。 • NOP指令的操作数N是一个0-255的常数,表示要进行的空操作的次数。
8、逻辑堆栈指令 • S7-200系列PLC中有一个9层的堆栈,用于处理所有逻辑操作,称为逻辑堆栈。 • 有6条逻辑操作指令要用到逻辑堆栈。 在语句表(STL)中,常开触点由LD(装载)、A(与)及O(或)指令描述,LD将位bit值装入栈顶,A、O分别将位bit值与、或栈顶值,运算结果仍存入栈顶。在语句表中,常闭触点由LDN(非装载)、AN(非与)、和ON(非或)指令描述,LDN将位bit值取反后再装入栈顶,AN、ON先将位bit值取反,再分别与、或栈顶值,其运算结果仍存入栈顶。 • ALD和OLD指令操作时利用堆栈作为中间结果的暂存区。
ALD指令对堆栈中的第一层和第二层的值进行逻辑与操作,结果放入栈顶。执行完后堆栈深度减1。ALD指令对堆栈中的第一层和第二层的值进行逻辑与操作,结果放入栈顶。执行完后堆栈深度减1。 操作数:无 OLD指令对堆栈中的第一层和第二层的值进行逻辑或操作,结果放入栈顶。执行完后堆栈深度减1。 操作数:无
LPS指令复制栈顶的值并将这个值推入栈,栈底的值被推出并丢失。LPS指令复制栈顶的值并将这个值推入栈,栈底的值被推出并丢失。 操作数:无 LRD指令复制堆栈中的第二个值到栈顶,堆栈没有推入或弹出栈操作,但旧的栈顶值被新的复制值取代。 操作数:无 栈顶值复制指令 第2级栈顶值复制指令
LPP指令弹出栈顶的值,堆栈的第二个值成为新的栈顶值,其他堆栈值依次被向上推移一级。该指令使原堆栈顶值弹出后丢失,最底层成为不确定值。LPP指令弹出栈顶的值,堆栈的第二个值成为新的栈顶值,其他堆栈值依次被向上推移一级。该指令使原堆栈顶值弹出后丢失,最底层成为不确定值。 操作数:无 LDS指令复制堆栈中的第n个值到栈顶,原有的堆栈值依次被向下推移一级,原堆栈底层值被压出而丢失。 操作数:n(1~8的立即数) 栈顶弹出指令 n级堆栈值复制指令
4.2.2 逻辑位立即操作指令 (1)立即触点指令 • 在每个标准触点指令的后面加“I”。指令执行时,立即读取物理输入点的值,但是不刷新对应映像寄存器的值。 • 这类指令包括:LDI、LDNI、AI、ANI、OI和ONI。下面以LDI指令为例。 • 用法: LDI bit • 例: LDI I0.2 • 注意:bit只能是I类型。 • LDI指令把物理输入点的值立即装入栈顶。 • AI和OI指令分别将物理输入点的值与堆栈顶值进行与和或,运算结果仍放于栈顶。 • LDNI指令把物理输入点的值取反后立即装入栈顶。 • ANI和ONI指令分别将物理输入点的值取反与堆栈顶值进行与和或,运算结果仍放于栈顶。
(2)=I,立即输出指令 • 用立即指令访问输出点时,把栈顶值立即复制到指令所指出的物理输出点,同时,相应的输出映像寄存器的内容也被刷新。 • 用法: =I bit • 例: =I Q0.2 • 注意:bit只能是Q类型。 (3)SI,立即置位指令 • 用立即置位指令访问输出点时,从指令所指出的位(bit)开始的N个(最多为128个)物理输出点被立即置位,同时,相应的输出映像寄存器的内容也被刷新。 • 用法: SI bit, N • 例: SI Q0.0, 2 • 注意:bit只能是Q类型。
(4)RI,立即复位指令 用立即复位指令访问输出点时,从指令所指出的位开始的N个(最多为128个)物理输出点被立即复位,同时,相应的输出映像寄存器的内容也被刷新。 用法: RI bit, N 例: RI Q0.0, 1
4.2.3 定时器指令 • S7-200系列PLC内部有256个定时器。 • 按功能分为3类:接通延时定时器TON、断开延时定时器TOF和有记忆接通延时定时器TONR 。 • 按定时器的分辨率分为3个等级:1ms、10ms和100ms。 • 每个定时器由一个16位寄存器和1个状态位(反映其触点状态)构成。 定时器编号和分辨率
TXXX:定时器编号 • PT(INT)预置常数:VW、IW、QW、MW、SMW、LW、AIW、AC、T、C • IN(BOOL)使能输入:I、Q、M、SM、T、C、V、S、L
1、定时器工作工程 • 接通延时定时器 • TON,接通延时定时器指令。用于单次时间定时。上电时或首次扫描,该定时器的状态位T和寄存器内容被清0。 • 当使能输入接通时,定时器状态位为OFF,当前值从0开始计时,当前值达到预设值时,定时器状态位为ON,继续计时,一直计到最大值32767。 • 当使能输入断开,定时器自动复位,即定时器状态位为OFF,当前值为0。 指令格式: TON Txxx,PT 例: TON T120,8
I0.0 T33当前值 =PT(100) =PT(100) T33状态位 Q0.0
有记忆接通延时定时器 • TONR,有记忆接通延时定时器指令。用于多次时间间隔累计定时。上电时或首次扫描,定时器状态位被清零,寄存器内容保持为上次停机时的值。 • 当使能输入接通时,定时器状态位为OFF,当前值从上次数值基础上开始计时。当前值大于等于预设值时,状态位被置为1,当前值连续计到32767。 • TONR定时器只能用复位指令进行复位操作。 • 指令格式:TONR Txxx,PT 例: TONR T20,63
I0.0 最大值=32767 =PT(200) T3当前值 =PT(100) I0.1 T3状态位 Q0.0
断开延时定时器 • TOF,断开延时定时器指令。上电时或首次扫描,定时器状态位为OFF,当前值为0。 • 当使能输入接通时,定时器状态位立即接通被置为ON,并将当前值清0。 • 当使能输入由接通到断开时,定时器开始计时,当前值达到预设值时,定时器状态位被清零,当前值等于预设值,停止计时。 • TOF复位后,如果使能输入再有从ON到OFF的负跳变,则可实现再次启动。 • 指令格式:TOF Txxx,PT • 例: TOF T35,6
I0.0 100 100 T33当前值 T33状态位 Q0.0
2、定时器的分辨率 • 定时原理:对内部时基脉冲进行计数。 • S7-200PLC提供给定时器的时基脉冲有1ms、10ms、100ms三种。 • 定时器的分辨率为1ms、10ms、100ms。 • 定时器的分辨率不同,刷新方法也不同。 1ms分辨率 系统每隔1ms刷新一次,状态位和当前值在一个扫描周期内可能被多次刷新。 10ms分辨率 在每次扫描周期的开始时自动刷新,状态位和当前值在一个周期内只改变一次 100ms分辨率 只有定时器指令执行过程中被启动后才能在每个扫描周期开始时被刷新。
1ms定时器的使用方法在修改之前,只有当该定时器的当前值更新发生在常闭触点T32执行以后及常开触点T32执行以前Q0.0才能被置位一个扫描周期,其他情况不能置位。1ms定时器的使用方法在修改之前,只有当该定时器的当前值更新发生在常闭触点T32执行以后及常开触点T32执行以前Q0.0才能被置位一个扫描周期,其他情况不能置位。
10ms定时器的使用方法在修改以前,Q0.0将不会被置位,因为定时位T33只能在每次扫描开始被置位。往后,执行定时指令时,定时器将被复位。当常开触点T33被执行,因为T33为OFF,所以Q0.0也为OFF,即Q0.0永不会被置位。10ms定时器的使用方法在修改以前,Q0.0将不会被置位,因为定时位T33只能在每次扫描开始被置位。往后,执行定时指令时,定时器将被复位。当常开触点T33被执行,因为T33为OFF,所以Q0.0也为OFF,即Q0.0永不会被置位。
100ms定时器的使用方法在修改前,只有当定时器当前值达到预置值时,Q0.0会被置位一个扫描周期。用常闭触点Q0.0代替常闭触点T32作为定时器的允许计时输入,这就保证当定时器达到预置时,Q0.0会置位一个扫描周期。100ms定时器的使用方法在修改前,只有当定时器当前值达到预置值时,Q0.0会被置位一个扫描周期。用常闭触点Q0.0代替常闭触点T32作为定时器的允许计时输入,这就保证当定时器达到预置时,Q0.0会置位一个扫描周期。
4.2.4 计数器指令 • S7-200PLC内部有256个计数器C0-C255。 • 按计数方式不同分为加计数(CTU)、减计数(CTD)、加/减计数(CTUD)。 • 每个计数器有16位寄存器和一个状态位(反映其触点状态)即C位构成。 • 计数范围为0-32767。
Cxxx(WORD):计数器编号。 • CU(加计数输入端)、CD (减计数输入端) 、LD(装载复位端)、R(复位输入端)(BOOL)使能输入。 • PV(INT)预设常值:VW、IW、QW、MW、SMW、LW、AIW、AC、T、C、常数、SW、*VD、*AC、*LD。
加计数器 • CTU,加计数器指令。首次扫描,定时器状态位为0,当前值为0。脉冲输入的每个上升沿,计数器计数1次,当前值增加1个单位,当前值达到预设值时,计数器状态位为1,当前值继续计数到32767停止计数。复位输入有效或执行复位指令,计数器自动复位,即计数器状态位和当前值清零。 • 指令格式:CTU Cxxx,PV • 例: CTU C20,3