S7-200 PLC的指令系统ppt课件

上传人:钟*** 文档编号:5843082 上传时间:2020-02-09 格式:PPT 页数:146 大小:2.81MB
返回 下载 相关 举报
S7-200 PLC的指令系统ppt课件_第1页
第1页 / 共146页
S7-200 PLC的指令系统ppt课件_第2页
第2页 / 共146页
S7-200 PLC的指令系统ppt课件_第3页
第3页 / 共146页
点击查看更多>>
资源描述
第5章S7 200PLC的指令系统 1 第5章S7 200PLC的指令系统 学习目标 熟练掌握梯形图和语句表的编程方法 掌握基本指令和功能指令中的常用指令 了解和会用其他指令 通过对本章的学习 做到可以根据需要编制出结构较复杂的控制程序 2 第5章S7 200PLC的指令系统 教学内容 5 1S7 200PLC编程基础5 2S7 200PLC的基本指令及编程方法5 3S7 200PLC的功能指令及编程方法 3 5 2S7 200PLC的基本指令及编程方法 S7 200PLC的基本指令多属于逻辑指令 用于开关量的逻辑控制 本节着重介绍梯形图指令和语句表指令 并讨论基本指令的功能及编程方法 编程时 应注意各操作数的数据类型及数值范围 对每个操作指令来说 只能对某些指定数据类型进行操作 即便允许使用某种操作数据类型 也不是所有此类数据类型的单元都可以访问和使用 否则CPU对非法操作数将生成编译错误代码 有关S7 200CPU模块操作数的范围如表5 5所示 返回 操作数的数据类型 如 位操作指令只能对位变量处理 bit型 操作数的数值范围 如 累加器 只能访问有权访问的字或字节单元 4 5 2 1基本逻辑指令 基本逻辑指令 在语句表语言中是指对位存储单元的简单逻辑运算 在梯形图中是指对触点的简单连接和对标准线圈的输出 S7 200PLC使用一个逻辑堆栈来分析控制逻辑 用语句表编程时 对位存储单元数据的存取 逻辑运算都是在堆栈中进行的 所以选择语句表编程时 进行位运算要考虑主机内部存储结构 用梯形图和功能框图时 程序员不必考虑主机的这一逻辑 这两种编程工具自动地插入必要的指令来处理各种堆栈逻辑操作 LAD编程的方便之处 返回 梯形图中的并联连接 对应 语句表中的或逻辑运算梯形图中的串联连接 对应 语句表中的与逻辑运算梯形图中的线圈输出 对应 语句表中的 号 5 5 2 1基本逻辑指令 逻辑堆栈结构 由九个堆栈存储器位串联组成 堆栈存取特点 后进先出 进栈时 数据由堆栈顶部压入 堆栈中原来所存的数据被串行下移一格 如果原来STACK8中存有数据 则这数据被推出堆栈而自动丢失 出栈时 数据从栈顶部被取出 所有数据串行上移一格 STACK8中随机地装入一个数值 表5 6S7 200的主机逻辑堆栈结构 栈顶 堆叠 栈顶是数据进出堆栈的必由之路 6 5 2 1基本逻辑指令 栈顶的累加器作用 栈顶STACK0在此逻辑堆栈的位运算中兼有累加器的作用 存放第一操作数 对于简单逻辑指令 通常是进栈操作和一些最简单的位运算 这些运算是栈顶与第二个堆栈的内容进行与 或 非等逻辑运算 对于复杂逻辑指令 可以在堆栈中的其他数据位直接进行运算 结果经栈顶弹出 基本逻辑指令包括 标准触点指令 正负跳变指令 置位和复位指令等 主要是与位相关的输入输出及触点的简单连接 7 1 标准触点指令 1 标准触点指令1 LDbit 装入常开触点 LoaD 2 LDNbit 装入常闭触点 LoaDNot 3 Abit 与常开触点 And 4 ANbit 与常闭触点 AndNot 5 Obit 或常闭触点 Or 6 ONbit 或常闭触点 OrNot 7 NOT 触点取非 Not 8 bit 输出指令 标准触点指令 在逻辑堆栈中对存储器位 bit 进行操作 8 5 2 1基本逻辑指令 LDI0 0 装入常开触点 网络的起始点 OI0 1 或常开触点 并联常开触点 AI0 2 与常开触点 串联常开触点 Q0 0 输出触点 如果本梯级中将I0 1的触点改 为Q0 0的常开触点 则成为电 机起动停止控制环节的梯形图LDNI0 0 装入常闭触点 网络的起始点 ONI0 1 或常闭触点 并联常闭触点 ANI0 2 与常闭触点 串联常闭触点 Q0 1 输出触点LDI0 0 OI0 1 AI0 2 NOT 取非 即输出反相 使用反逻辑 Q0 3 标准触点LAD和STL例 梯形图中的并联连接 对应 语句表中的或逻辑运算梯形图中的串联连接 对应 语句表中的与逻辑运算梯形图中的线圈输出 对应 语句表中的 号 9 5 2 1基本逻辑指令 LDI0 0 OI0 1 AI0 2 Q0 0 LDNI0 0 ONI0 1 ANI0 2 Q0 1 LDI0 0 OI0 1 AI0 2 NOT Q0 3 图5 10标准触点FBD例 在功能图中 常闭触点的装入或串并联 用指令模块的对应输入端加圆圈来表示 10 5 2 1基本逻辑指令 LD LDN A AN O ON指令的执行对逻辑堆栈的影响 指令LDI0 1 假设I0 1 1 执行情况如表所示 如果是LDN指令 则将操作数取反后再装入栈顶 其他操作相同 原值S0串行下移一个单元 其余以此类推 原S8自动丢失 11 5 2 1基本逻辑指令 指令AI0 2 假设I0 2 0 执行情况如表5 8所示 如果是AN指令 则将操作数取反后再和栈顶值相与 结果放回栈顶 即 1 1 1 S0 除S0值外 其他各值不变 12 5 2 1基本逻辑指令 1 标准触点指令由于堆栈存储单元数的限制 所以梯形图中 最多一次串联或并联的触点数有一定限制 语句表中 A O AN ON指令最多可以连用有限次 功能框图中 AND和OR指令模块中输入的个数也有限制标准触点指令中如果有操作数 则为BOOL型 操作数的编址范围可以是 I Q M SM T C S V L 返回 13 5 2 1基本逻辑指令 程序执行的时序图如图5 11所示 图5 11时序图 由于取非指令NOT缘故 Q0 0与Q0 3反相 LDI0 0 OI0 1 AI0 2 Q0 0 LDNI0 0 ONI0 1 ANI0 2 Q0 1 LDI0 0 OI0 1 AI0 2 NOT Q0 3 14 5 2 1基本逻辑指令 2 负跳变指令 ED 负跳变触点检测到脉冲的每一次负跳变后 产生一个扫描周期宽度的微分脉冲 指令格式 ED 无操作数 图5 12正 负跳变触点指令编程 一个扫描周期长度 正跳变触点检测到脉冲的每一次正跳变后 产生一个扫描周期宽度的微分脉冲 指令格式 EU 无操作数 1 正跳变指令 EU 2 正负跳变指令 用于检测脉冲的正或负跳变 上升或下降沿 并产生一个扫描周期宽度脉冲 触发内部继电器线圈 15 5 2 1基本逻辑指令 3 置位和复位指令置位即置1 复位即置0 置位和复位指令可以将位存储区的某一位开始的一个或多个 最多可达255个 同类存储器位置1或置0 这两条指令在使用时需指明三点 操作性质 开始位和位的数量 各操作数类型及范围如表5 9所示 表5 9置位和复位指令操作数类型及范围 16 5 2 1基本逻辑指令 1 置位指令 S 将位存储区的指定位 bit 开始的N个同类存储器位置位 指令格式 Sbit N 例 SQ0 0 1 2 复位指令 R 将位存储区的指定位 bit 开始的N个同类存储器位复位 指令格式 Rbit N 例 RQ0 2 3 返回 17 5 2 1基本逻辑指令 在语句表 STL 中 当栈顶值为1时 才能执行置位指令S或复位指令R 置位后即使栈顶值变为0 仍保持置位 复位后即使栈顶值变为0 仍保持复位 可见这两条指令均有 记忆 功能 置位和复位指令应用编程序举例 电动机启动 停止控制 图5 13置位 复位指令 18 5 2 2立即操作指令 立即指令允许对输入和输出点进行快速和直接存取 当用立即指令读取输入点的状态时 相应的输入映像寄存器中的值并未发生更新 用立即指令访问输出点时 访问的同时 相应的输出寄存器的内容也被刷新 只有输入继电器I和输出继电器Q可以使用立即指令 返回 1 LDI LDNI AI ANI OI和ONI立即触点指令 2 I 立即输出指令 3 SI 立即置位指令 4 RI 立即复位指令 在每个标准触点指令的后面加 I 19 表5 10立即置位和立即复位指令的操作数类型及范围 20 5 2 2立即操作指令 应用举例 LDI0 0 装入常开触点 Q0 0 输出触点 非立即 IQ0 1 立即输出触点SIQ0 2 1 从Q0 2开始的1个触点被立即置1LDII0 0 立即输入触点指令 Q0 3 输出触点 非立即 图5 14立即指令程序 21 5 2 2立即操作指令 Q0 3在上一周期n立即指令执行时置1 I0 0在上一扫描周期n某时跳变 Q0 0在本周期n 1输出刷新时置1 Q0 1与Q0 2在本周期n 1立即指令执行时置1 LDI0 0 Q0 0 IQ0 1SIQ0 2 1LDII0 0 Q0 3 立即指令时序图 一般输入 输出指令 只有等到输入扫描 输出刷新时才得到执行 立即操作指令 是该程序语句执行的那一刻立即得到执行 22 5 2 3复杂逻辑指令 基本逻辑指令涉及可编程元件的触点和线圈的简单连接 不能表达在梯形图中触点的复杂连接结构 复杂逻辑指令主要用来描述对触点进行的复杂连接 同时 它们对逻辑堆栈也可以实现非常复杂的操作 简单连接 复杂连接 23 5 2 3复杂逻辑指令 1 栈装载与指令ALD2 栈装载或指令OLD3 逻辑推入栈指令LPS4 逻辑弹出栈指令LPP5 逻辑读栈指令LRD6 装入堆栈指令LDSN 返回 这些指令中除LDS外 其余指令都无操作数 24 5 2 3复杂逻辑指令 1 栈装载与指令 与块 ALD 在梯形图中 用于将并联电路块进行串联连接 在语句表中 执行ALD指令 将堆栈中的第一级和第二级的值进行逻辑 与 操作 结果置于栈顶 堆栈第一级 并将堆栈中的第三级至第九级的值依次上弹一级 25 5 2 3复杂逻辑指令 2 栈装载或指令OLD 在梯形图中 用于将串联电路块进行并联连接 在语句表中 执行OLD指令 将堆栈中的第一级和第二级的值进行逻辑 或 操作 结果置于栈顶 堆栈第一级 并将堆栈中其余各级的内容依次上弹一级 26 5 2 3复杂逻辑指令 栈装载与指令ALD和栈装载或指令OLD的操作过程如图5 16所示 图中 x 表示不确定值 图5 16栈装载与指令和栈装载或指令的操作过程 27 图5 17LPS LRD LPP LDS指令的操作过程 这里n 3 LPS与LPP必须配对使用 LPS 亦称 分支或主控指令 用于复制栈顶的值并将这个值推入栈顶 原堆栈中各级栈值依次下压一级 在梯形图中的分支结构中 用于生成一条新的母线 左侧为主控逻辑块时 第一个完整的从逻辑行从此处开始 LPP 亦称 分支结束或主控复位指令 将栈顶值弹出 原堆栈中各级栈值依次上弹一级 堆栈第二级的值成为新的栈顶值 在梯形图中的分支结构中 用于将LPS指令生成的一条新母线进行恢复 LRD 把堆栈中第二级的值复制到栈顶 堆栈没有推入栈或弹出栈操作 在梯形图中的分支结构中 当左侧为主控逻辑块时 开始第二个和后边更多的从逻辑块 应注意 LPS后第一个和最后一个从逻辑块不用本指令 LDS 复制栈中的第n级的值到栈顶 原栈中各级栈值依次下压一级 栈底值丢失 28 5 2 3复杂逻辑指令 应用举例 LDI0 0 装入常开触点OI2 2 或常开触点LDI0 1 被串的块开始LDI2 0 被并路开始AI2 1 与常开触点OLD 栈装载或 并路结束ALD 栈装载与 串路结束 Q5 0 输出触点LDI0 0 装入常开触点LPS 逻辑推入栈 主控触点AI0 5 与常开触点 Q7 0 输出触点LRD 逻辑读栈 新母线LDI2 1 装入常开触点OI1 3 或常开触点ALD 栈装载与 Q6 0 输出触点LPP 逻辑弹出栈 母线复原LDI3 1 装入常开出触点OI2 0 或常开触点ALD 栈装载与 Q1 3 输出触点 图5 18复杂逻辑指令的应用 返回 LPS后第一和最后一个从逻辑块不用LRD指令 29 5 2 4取非触点指令和空操作指令 1 取非触点指令NOT 用来改变能流的状态 能流到达取非触点时 能流就停止 能流未到达取非触点时 能流就通过 在语句表中 取非触点指令对堆栈的栈顶作取反操作 改变栈顶值 栈顶值由0变为1 或者由1变为0 取非触点指令无操作数 图5 19取非触点指令编程 返回 30 5 2 4取非触点指令和空操作指令 2 空操作指令 NOP 空操做指令 使能输入有效时 执行空操作指令 空操做指令不影响用户程序的执行 操作数N是标号 是一个0 225的常数 LDI0 0 使能输入NOP30 空操作指令 标号为30 图5 20空操作指令编程 31 5 2 5定时器和计数器指令 1 定时器指令 系统提供3种定时指令 TON 通电延时 TONR 有记忆通电延时 和TOF 断电延时 S7 200定时器的分辨率 时间增量 时间单位 分辨率 有3个等级 1ms 10ms和100ms 分辨率等级和定时器号关系如表5 11所示 返回 32 5 2 5定时器和计数器指令 表5 11定时器号和分辨率 定时时间的计算 T PT S T为实际定时时间 PT为预设值 S为分辨率等级 例如 TON指令用定时器T33 预设值为125 则实际定时时间T 125 10 1250ms 33 5 2 5定时器和计数器指令 定时器指令操作数有3个 编号 预设值和使能输入 1 编号 用定时器的名称和它的常数编号 最大255 来表示 即 Txxx 如 T4 含义 T4编号 还包含两方面的变量信息 定时器位和定时器当前值 定时器位 定时器位与时间继电器的输出相似 当定时器的当前值达到预设值PT时 该位被置为 1 定时器当前值 存储定时器当前所累计的时间 它用16位有符号整数来表示 故最大计数值为32767 2 预设值PT 数据类型为INT型 寻址范围可以是VW IW QW MW SW SMW LW AIW T C AC VD AC LD和常数 3 使能输入 只对LAD和FBD BOOL型 可以是I Q M SM T C V S L和能流 可以用复位指令来对3种定时器复位 复位指令的执行结果是 使定时器位变为OFF 定时器当前值变为0 34 5 2 5定时器和计数器指令 1 接通延时定时器指令 TON 该指令用于单一间隔定时 上电周期或首次扫描 定时器位OFF 定时器当前值为0 载入预设值 使能输入接通时 定时器位为OFF 当前值从0开始计数时间 当前值达到预设值时 定时器位为ON 当前值连续计数到32767 使能输入断开 定时器自动复位 即定时器位OFF 当前值为0 填 计定时器号 如 T35 填 预设值 如 100 指令格式 TONTxxx PT例 TONT35 4 返回 IN 4 4 T35当前值 T35定时器位 最大值 35 5 2 5定时器和计数器指令 2 有记忆接通延时定时器指令 该指令用于对许多间隔的累计定时 上电周期或首次扫描 定时器位OFF 当前值保持 使能输入接通时 定时器位为OFF 当前值从0开始累计计数时间 使能输入断开 定时器位和当前值保持最后状态 使能输入再次接通时 当前值从上次的保持值继续计数 当累计当前值达到预设值时 定时器位ON 当前值连续计数到32767 填 计定时器号 如 T2 填 预设值 如 10 TONR定时器只能用复位指令进行复位操作 使当前值清零 指令格式 TONRTxxx PT例 TONRT2 10 IN 4 10 T2当前值 T2位 最大值 36 5 2 5定时器和计数器指令 3 断开延时定时器指令 该指令用于断开后的单一间隔定时 上电周期或首次扫描 定时器当前值为0 定时器位OFF 载入预置值PT 使能输入接通时 当前值为0 定时器位为ON 当使能输入由接通到断开时 定时器开始计数 当前值达到预设值时 定时器位OFF 当前值等于预设值 停止计数 TOF复位后 如果使能输入再有从ON到OFF的负跳变 则可实现再次启动 填 计定时器号 如 T36 填 预设值 如 3 指令格式 TOFTxxx PT例 TOFT36 3 IN 3 T36当前值 T36位 最大值 37 5 2 5定时器和计数器指令 LDI0 0 使能输入TONT35 4 通电延时定时器 延时时间为40msLDI0 0 使能输入TONRT2 10 有记忆通电延时定时器 延时时间为100msLDI0 0 使能输入TOFT36 3 断电延时定时器 延时时间为30ms 4 应用举例 图5 21定时器特性 T35为通电延时定时器 T2为有记忆通电延时定时器 T36为断电延时定时器 38 5 2 5定时器和计数器指令 上述梯形图程序中输入输出执行时序关系如图5 22所示 图5 22定时器时序 返回 使能输入接通时 定时器位为ON 当前值为0 预启动 TONT35 4 TONRT2 10 TOFT36 3 使能输入 39 5 2 5定时器和计数器指令 5 应用定时器指令应注意的几个问题 不能把一个定时器号同时用作断开延时定时器 TOF 和接通延时定时器 TON 使用复位 R 指令对定时器复位后 定时器位为 0 定时器当前值为 0 有记忆接通延时定时器 TONR 只能通过复位指令进行复位 对于断开延时定时器 TOF 需要输入端有一个负跳变 由on到off 的输入信号启动计时 40 5 2 5定时器和计数器指令 1 1ms分辨率定时器1ms分辨率定时器启动后 定时器对1ms的时间间隔 时基信号 进行计时 定时器当前值每隔1ms刷新一次 在一个扫描周期中要刷新多次 而不和扫描周期同步 2 10ms分辨率定时器10ms分辨率定时器启动后 定时器对10ms的时间间隔进行计时 程序执行时 在每次扫描周期开始对10ms定时器刷新 在一个扫描周期内定时器当前值保持不变 3 100ms分辨率定时器100ms分辨率定时器启动后 定时器对100ms的时间间隔进行计时 只有在定时器指令执行时 100ms定时器的当前值才被刷新 不同精度的定时器 它们当前值的刷新周期是不同的 具体情况如下 41 5 2 5定时器和计数器指令 举例说明 在图5 23a中 T32定时器1ms更新一次 当定时器当前值100在图示A处刷新 Q0 0可以接通一个扫描周期 若在其他位置刷新 Q0 0则用永远不会接通 而在A处刷新的概率是很小的 若改为图5 23b 就可保证当定时器当前值达到设定值时 Q0 0会接通一个扫描周期 图5 23a同样不适合10ms分辨率定时器 图5 231ms定时器编程 42 5 2 5定时器和计数器指令 在子程序和中断程序中不易使用100ms定时器 子程序和中断程序不是每个扫描周期都执行的 那么在子程序和中断程序中的100ms定时器的当前值就不能及时刷新 造成时基脉冲丢失 致使计时失准 在主程序中 不能重复使用同一个100ms的定时器号 否则该定时器指令在一个扫描周期中多次被执行 定时器的当前值在一个扫描周期中多次被刷新 这样 定时器就会多计了时基脉冲 也造成计时失准 因而 100ms定时器只能用于每个扫描周期内同一定时器指令执行一次 且仅执行一次的场合 100ms定时器的编程例子如图5 24a所示 a b 图5 24100ms定时器的应用 返回 与图5 23a相比较 该定时器确保在此处刷新当前值 43 5 2 5定时器和计数器指令 2 计数器指令 计数器用来累计输入脉冲的次数 计数器也是由集成电路构成 是应用非常广泛的编程元件 经常用来对产品进行计数 计数器与定时器的结构和使用基本相似 编程时输入它的预设值PV 计数的次数 计数器累计它的脉冲输入端电位上升沿 正跳变 个数 当计数器达到预设值PV时 发出中断请求信号 以便PLC作出相应的处理 计数器指令有3种 增计数CTU 增减计数CTUD和减计数CTD 指令操作数有4方面 编号 预设值 脉冲输入和复位输入 44 5 2 5定时器和计数器指令 1 编号 用计数器名称和它的常数编号 最大255 来表示 即Cxxx 如 C6 C6不仅仅是计数器的编号 它还包含两方面的变量信息 计数器位和计数器当前值 计数器位 表示计数器是否发生动作的状态 当计数器的当前值达到预设值PV时 该位被置为 1 计数器当前值 存储计数器当前所累计的脉冲个数 它用16位符号整数 INT 来表示 故最大计数值为32767 2 预设值PV 数据类型为INT型 寻址范围可以是VW IW QW MW SW SMW LW AIW T C AC VD AC LD和常数 3 脉冲输入 BOOL型 可以是I Q M SM T C V S L和能流 4 复位输入 与脉冲输入同类型和范围 45 5 2 5定时器和计数器指令 1 增计数器指令 CTU 首次扫描 定时器位OFF 当前值为0 在增计数器的计数输入端 CU 脉冲输入的每个上升沿 计数器加1 当前值增加1个单位 当前值达到预设值时 计数器位ON 当前值继续计数到32767停止计数 复位输入有效或执行复位指令 计数器自动复位 即计数器位OFF 当前值为0 格式 CTUCxxx PV例 CTUC20 3 填 计数器器号 如 C30 填 预设值 如 3 脉冲输入 复位输入 46 5 2 5定时器和计数器指令 应用举例 LDI0 0 计数脉冲信号输入端LDI0 1 复位信号输入端CTUC20 3 增计数 计数设定值为3个脉冲LDC20 装入计数器触点 Q0 0 输出触点 图5 25增计数程序及时序 复位与计数脉冲同时有效时 优先执行复位 47 5 2 5定时器和计数器指令 2 增减计数器指令 该指令有两个脉冲输入端 CU输入端用于递增计数 CD输入端用于递减计数 首次扫描 定时器位OFF 当前值为0 CU输入的每个上升沿 计数器当前值增加1个单位 CD输入的每个上升沿 都使计数器当前值减小1个单位 当前值达到预设值时 计数器位ON 增减计数器计数到32767 最大值 后 下一个CU输入的上升沿将使当前值跳变为最小值 32768 反之 当前值达到最小值 32768 时 下一个CD输入的上升沿将使当前值跳变为最大值 32767 复位输入有效或执行复位指令 计数器自动复位 即计数器位OFF 当前值为0 格式 CTUDx PV例 CTUDC30 5 返回 48 5 2 5定时器和计数器指令 LDI0 0 增计数输入端LDI0 1 减计数输入端LDI0 2 复位端CTUDC30 5 增减计数 设定脉冲数为5LDC30 装入计数器触点 Q0 0 输出触点 应用举例 图5 26增减计数程序及时序 当前值大于 或小于 设定值后 仍然随计数脉冲而变化 而计数器位保持 49 5 2 5定时器和计数器指令 3 减计数器指令 CTD 首次扫描 定时器位OFF 当前值为预设值PV 计数器检测到CD输入的每个上升沿时 计数器当前值减小1个单位 当前值减到0时 计数器位ON 复位输入有效或执行复位指令 计数器自动复位 即计数器位OFF 当前值复位为预设值 而不是0 指令格式 CTDCxxx PV例 CTDC40 4 50 5 2 5定时器和计数器指令 应用举例 LDI0 0 减计数脉冲输入端LDI0 1 复位输入端CTDC40 4 减计数器 设定计数脉冲 数为4LDC40 装入计数器触点 Q0 0 输出触点 图5 27减计数程序及时序 当前值减到0后 计数脉冲对当前值和位都不起作用 0 4 4 2 2 3 3 4 4 1 51 5 2 5定时器和计数器指令 4 应用举例 用计数器和定时器配合增加延时时间 如图5 28所示 通过分析可知以下程序中实际延时时间为100ms 30000 10 30000s 图5 28计数器应用例 LDI0 0 启动通电延时ANM0 0 重新启动延时TONT50 30000 延时时间设定为3000sLDT50 延时时间到 M0 0 关定时器 产生一脉冲LDM0 0 每隔3000s输入一脉冲LDNI0 0 复位输入CTUC20 10 增计数 累计脉冲总数 52 5 2 5定时器和计数器指令 5 应用计数器指令应注意的问题 可以用复位指令来对3种计数器复位 复位指令的执行结果是 使计数器位变为OFF 计数器当前值变为0 CTD变为预设值PV 在一个程序中 同一个计数器编号只能使用一次 脉冲输入和复位输入同时有效时 优先执行复位操作 53 5 2 6顺序控制继电器指令 S7 200CPU含有256个顺序控制继电器 SCR 用于顺序控制 S7 200包含顺序控制指令 可以模仿控制进程的步骤 对程序逻辑分段 可以将程序分成单个流程的顺序步骤 也可同时激活多个流程 可以使单个流程有条件地分成多支单个流程 也可以使多个流程有条件地重新汇集成单个流程 从而对一个复杂的工程可以十分方便地编制控制程序 系统提供3个顺序控制指令 顺序控制开始指令 LSCR 顺序控制转移指令 SCRT 和顺序控制结束指令 SCRE 返回 54 5 2 6顺序控制继电器指令 1 顺序继电器指令 1 段开始指令 LSCR 2 段结束指令 SCRE 3 段转移指令 SCRT 定义一个顺序控制继电器段的开始 操作数为顺序控制继电器位Sx y Sx y作为本段的段标志位 当Sx y位为1时 允许该SCR段工作 该指令用来实现本段与另一段之间的切换 操作数为顺序控制继电器位Sx y Sx y是下一个SCR段的标志位 当使能输入有效时 一方面对Sx y置位 以便让下一个SCR段开始工作 另一方面同时对本SCR段的标志位复位 以便本段停止工作 一个SCR段必须用该指令来结束 返回 55 5 2 6顺序控制继电器指令 2 使用顺序继电器指令的限制 只能使用顺序控制继电器位作为段标志位 一个顺序控制继电器位Sx y在程序中只能使用一次 在一个SCR段中不能出现跳入 跳出或段内跳转等程序结构 即在段中不能使用JMP和LBL指令 同样 在一个SCR段中不允许出现循环程序结构和条件结束 即禁止使用FOR NEXT和END指令 指令格式 LSCRbit 段开始指令 bit为本段标志位 SCRTbit 段转移指令 bit为下段标志位 SCRE 段结束指令 无操作数 56 5 2 6顺序控制继电器指令 3 顺序结构4 程序实例 根据舞台灯光效果的要求 控制红 绿 黄三色灯 要求 红灯先亮 2s后绿灯亮 再过3s后黄灯亮 待红 绿 黄灯全亮3min后 全部熄灭 程序如图5 29所示 说明 每一个SCR程序段中均包含三个要素 1 输出对象 在这一步序中应完成的动作 2 转移条件 满足转移条件后 实现SCR段的转移 3 转移目标 转移到下一个步序 一个SCR段必须用该指令来结束 57 5 2 6顺序控制继电器指令 LDI0 1ANQ0 0ANQ0 1ANQ0 2 在初始状态下起动 置SS0 1 1 S0 1 1LSCRS0 1 S0 1 1 激活第一SCR程序段 进入第一步序LDSM0 0SQ0 0 1 红灯亮 并保持TONT37 20 启动2s定时器LDT37 2s后程序转移到第二SCR段 SCRTS0 2 S0 2 1 S0 1 0 SCRE 第一SCR段结束LSCRS0 2 S0 2 1 激活第二SCR程序段 进入第二步序LDSM0 0SQ1 1 绿灯亮 并保持TONT38 30 启动3s定时器 LDI0 1 58 5 2 6顺序控制继电器指令 LDT38 3s后程序转移到第三SCR段 SCRTS0 3 S0 3 1 S0 2 0 SCRE 第二SCR段结束LSCRS0 3 S0 3 1 激活第三SCR程序段 进入第三步序LDSM0 0SQ0 2 1 黄灯亮 并保持TONT39 1800 启动3min定时器LDT39 3min后程序转移到第四SCR段 SCRTS0 4 S0 4 1 S0 3 0 SCRE 第三SCR段结束LSCRS0 4 S0 4 1 激活第四SCR程序段 进入第四步序LDSM0 0RS0 1 4RQ0 0 3 红 绿 黄灯全灭SCRE 第四SCR段结束 图5 29SCR指令编程 返回 59 5 2 7移位寄存器指令 移位指令都是对无符号数进行的处理 执行时只考虑要移位的存储单元的每一位数字状态 而不管数据的值的大小 本类指令在一个数字量输出点对应多个相对固定状态的情况下有广泛的应用 返回 60 5 2 7移位寄存器指令 1 左移和右移 左移和右移根据所移位的数的长度分别又可分为字节型 字型 双字型 移位特点 移位数据存储单元的移出端与SM1 1 溢出 相连 所以最后被移出的位被放到SM1 1位存储单元 移位时 移出位进入SM1 1 另一端自动补0 SM1 1始终存放最后一次被移出的位 移位次数与移位数据的长度有关 如果所需移位次数大于移位数据的位数 则超出的次数无效 如果移位操作使数据变为0 则零存储器位 SM1 0 自动置位 移位指令影响的特殊存储器位 SM1 0 零 SM1 1 溢出 使能流输出ENO断开的出错条件 SM4 3 运行时间 0006 间接寻址 移位次数N为字节型数据 61 5 2 7移位寄存器指令 1 字节左移和字节右移指令 SLB SRB 使能输入有效时 把字节输入数据IN左移或右移N位后 再将结果输出到OUT所指的字节存储单元 在语句表中 IN与OUT使用同一个单元 最大实际可移位次数为8 指令格式 SLBOUT N 字节左移 SRBOUT N 字节右移 例 SLBMB0 2SRBLB0 3 62 5 2 7移位寄存器指令 以第一条指令为例 指令执行情况如表5 12所示 表5 12左移指令SLB执行结果 2 字左移和字右移指令 SLW SRW 指令模块与字节移位比较 只有名称变为SHLW和SHRW 最大实际可移位次数为16 指令格式 SLWOUT N 字左移 SRWOUT N 字右移 例 SLWMW0 2SRWLW0 3 返回 63 5 2 7移位寄存器指令 以第二条指令为例 指令执行情况如表5 13所示 表5 13右移指令SRW执行结果 64 5 2 7移位寄存器指令 指令格式 SLDOUT N 双字左移 SRDOUT N 双字右移 例 SLDMD0 2SRDLD0 3 3 双字左移和双字右移指令 SLD SRD 指令模块与字节移位比较 只有名称变为SHLDW和SHRDW 其他部分完全相同 最大实际可移位次数为32 65 5 2 7移位寄存器指令 2 循环左移 循环右移 循环移位特点 移位数据存储单元的移出端与另一端相连 同时又与SM1 1 溢出 相连 所以最后被移出的位被移到另一端的同时 也被放到SM1 1位存储单元 移位次数与移位数据的长度有关 如果移位次数设定值大于移位数据的位数 则执行循环移位之前 系统先对设定值取以数据长度为底的模 用小于数据长度的结果作为实际循环移位的次数 如字左移时 若移位次数设定为36 则先对36取以16为底的模 得到小于16的结果4 故指令实际循环移位4次 如果移位操作使数据变为0 则零存储器位 SM1 0 自动置位 移位指令影响的特殊存储器位 SM1 0 零 SM1 1 溢出 使能流输出ENO断开的出错条件 SM4 3 运行时间 0006 间接寻址 移位次数N为字节型数据 返回 66 5 2 7移位寄存器指令 1 字节循环左移和字节循环右移指令 RLB RRB 使能输入有效时 把字节型输入数据IN循环左移或循环右移N位后 再将结果输出到OUT所指的字节存储单元 在语句表中 IN与OUT使用同一个单元 实际移位次数为设定值取以8为底的模所得的结果 指令格式 RLBOUT N 字节循环左移 RRBOUT N 字节循环右移 例 RLBMB0 2RRBLB0 3 67 5 2 7移位寄存器指令 2 字循环左移和字循环右移指令 RLW RRW 指令模块与字节循环移位只有名称变为ROLW和RORW 其他部分完全相同 使能输入有效时 把字型输入数据IN循环左移或循环右移N位后 再将结果输出到OUT所指的字存储单元 在语句表中 IN与OUT使用同一个单元 实际移位次数为设定值取以16为底的模所得的结果 指令格式 RLWOUT N 字循环左移 RRWOUT N 字循环右移 例 RLWMD0 2RRWLD0 3 68 5 2 7移位寄存器指令 3 双字循环左移和双字循环右移指令 RLD RRD 指令模块与字节循环移位只有名称变为ROLDW和RORDW 其他部分完全相同 使能输入有效时 把双字型输入数据IN循环左移或循环右移N位后 再将结果输出到OUT所指的双字存储单元 在语句表中 IN与OUT使用同一个单元 实际移位次数为设定值取以32为底的模所得的结果 指令格式 RLDOUT N 双字循环左移 RRDOUT N 双字循环右移 例 RLDMD0 2RRDLD0 3 返回 69 5 2 7移位寄存器指令 以指令RRWLW0 3为例 指令执行情况如表5 14所示 表5 14指令RRW执行结果 70 5 2 7移位寄存器指令 3 寄存器移位 SHRB 寄存器移位指令 该指令在梯形图中有3个数据输入端 DATA为数值输入 将该位的值移入移位寄存器 SBIT为移位寄存器的最低位端 N指定移位寄存器的长度 每次使能输入有效时 整个移位寄存器移动1位 移位特点 移位寄存器长度在指令中指定 没有字节型 字型 双字型之分 可指定的最大长度为64位 可正也可负 移位数据存储单元的移出端与SM1 1 溢出 相连 所以最后被移出的位被放到SM1 1位存储单元 71 5 2 7移位寄存器指令 移位时 移出位进入SM1 1 另一端自动补以DATA移入位的值 正向移位时长度N为正值 移位是从最低字节的最低位SBIT移入 从最高字节的最高位MSB b移出 反向移位时 长度N为负值 移位是从最高字节的最高位移入 从最低字节的最低位SBIT移出 最高位的计算方法 N的绝对值 1 SBIT的位号 8 相除结果中 余数即是最高位的位号 商与SBIT的字节号之和即是最高位的字节号 例如 如果SBIT是V22 5 N是8 那么MSB b是V23 4 具体计算如下 MSB b V22 8 1 5 8 V22 12 8 V22 1 余数为4 V23 4 返回 72 5 2 7移位寄存器指令 指令格式 SHRBDATA SBIT N例 SHRBI0 5 V20 0 5以本条指令为例 指令执行情况如表5 15所示 表5 15指令SHRB执行结果 73 5 2 8比较操作指令 比较指令是一种比较判断 用于比较两个符号数或无符号数 在梯形图中以带参数和运算符号的触点的形式编程 当这两数比较式的结果为真时 该触点闭合 在功能框图中以指令模块的形式编程 当比较式结果为真时 输出接通 在语句表中使用LD指令进行编程时 当比较式为真时 主机将栈顶置1 使用A O指令进行编程时 当比较式为真时 则在栈顶执行A O操作 并将结果放入栈顶 比较指令的类型有 字节比较 整数比较 双字整数比较和实数比较 比较运算符有 表示不等于 返回 74 5 2 8比较操作指令 1 字节比较 字节比较用于比较两个字节型整数值IN1和IN2的大小 字节比较是无符号的 比较式可以是LDB AB或OB后直接加比较运算符构成 如 LDB AB OB 等 整数IN1和IN2的寻址范围 VB IB QB MB SB SMB LB VD AC LD和常数 指令格式例 LDB VB10 VB12ABMB0 MB1OB AC1 116 75 5 2 8比较操作指令 2 整数比较 整数比较用于比较两个一字长整数值IN1和IN2的大小 整数比较是有符号的 整数范围为16 8000和16 7FFF之间 比较式可以是LDW AW或OW后直接加比较运算符构成 如 LDW AW OW 等 整数IN1和IN2的寻址范围 VW IW QW MW SW SMW LW AIW T C AC VD AC LD和常数 指令格式例 LDW VW10 VW12AWMW0 MW4OW AC2 1160 76 5 2 8比较操作指令 3 双字整数比较 双字整数比较用于比较两个双字长整数值IN1和IN2的大小 双字整数比较是有符号的 双字整数范围为16 80000000和16 7FFFFFFF之间 比较式可以是LDD AD或OD后直接加比较运算符构成 如 LDD AD OD 等 双字整数IN1和IN2的寻址范围 VD ID QD MD SD SMD LD HC AC VD AC LD和常数 指令格式例 LDD VD10 VD14ADMD0 MD8OD AC0 1160000 返回 77 5 2 8比较操作指令 4 实数比较 实数比较用于比较两个双字长实数值IN1和IN2的大小 实数比较是有符号的 负实数范围为 1 175495E 38和 3 402823E 38 正实数范围为 1 175495E 38和 3 402823E 38 比较式可以是LDR AR或OR后直接加比较运算符构成 如 LDR AR OR 等 整数IN1和IN2的寻址范围 VD ID QD MD SD SMD LD AC VD AC LD和常数 指令格式例 LDR VD10 VD18ARMD0 MD12OR AC1 1160 478 78 5 2 8比较操作指令 5 应用举例 一自动仓库存放某种货物 最多6000箱 需对所存的货物进出计数 货物多于1000箱 灯L1亮 货物多于5000箱 灯L2亮 其中 L1和L2分别受Q0 0和Q0 1控制 数值1000和5000分别存储在VW20和VW30字存储单元中 本控制系统的程序如图5 30所示 程序执行时序如图5 31所示 79 5 2 8比较操作指令 LDI0 0 增计数出入端LDI0 1 减计数出入端LDI0 2 复位出入端CTUDC30 10000 增减计数 设定脉冲数为10000LDW C30 VW20 比较计数器 当前值是否大于等 于VW20中的值 1000 Q0 0 输出触点LDW C30 VW30 比较计数器 当前值是否大于等 于VW30中的值 5000 Q0 1 输出触点 图5 30程序举例 返回 80 时序图 图5 31时序图 81 5 3S7 200PLC的功能指令及编程方法 PLC实际上就是工业控制计算机 它具有计算机控制系统的功能 例如算术逻辑运算 程序流控制 通信等等极为强大的功能 这些功能通常是通过功能指令的形式来实现的 功能指令 FunctionInstruction 又称为应用指令 它是指令系统中应用于复杂控制的指令 功能指令包括 数据处理指令 算术逻辑运算指令 表功能指令 转换指令 中断指令 高速处理指令等等 这些功能指令实际上是厂商为满足各种客户的特殊需要而开发的通用子程序 返回 82 5 3 1数学运算指令 1 加法运算指令加法指令是对有符号数进行相加操作 包括 整数加法 双整数加法和实数加法 加法指令影响的特殊存储器位 SM1 0 零 SM1 1 溢出 SM1 2 负 使能流输出ENO断开的出错条件 0006 间接寻址 SM1 1 溢出 SM4 3 运行时间 1 整数加法指令 I 使能输入有效时 将两个单字长 16位 的符号整数IN1和IN2相加 产生一个16位整数结果OUT 返回 83 5 3 1数学运算指令 在LAD和FBD中 以指令模块形式编程 执行结果 IN1 IN2 OUT 在STL中 通常将IN2与OUT共用一个地址单元 执行结果 IN1 OUT OUT 指令格式 IIN1 OUT 程序实例 LDI0 1 使能输入端MOVWVW0 VW4 VW0 VW4 IVW2 VW4 VW2 VW4 VW4 LAD中IN2和OUT可用同一单元 图5 33整数加法例b 84 5 3 1数学运算指令 2 双整数加法指令 D 3 实数加法指令 R 使能输入有效时 将两个双字长 32位 的符号整数IN1和IN2相加 产生一个32位整数结果OUT 指令格式 DIN1 OUT 使能输入有效时 将两个双字长 32位 的实数IN1和IN2相加 产生一个32位实数结果OUT 指令格式 RIN1 OUT 85 5 3 1数学运算指令 2 减法运算指令减法指令是对有符号数进行相减操作 包括 整数减法 双整数减法和实数减法 这三种减法指令与所对应的加法指令除运算法则不同之外 其他方面基本相同 减法指令影响的特殊存储器位 SM1 0 零 SM1 1 溢出 SM1 2 负 使能流输出ENO断开的出错条件 0006 间接寻址 SM1 1 溢出 SM4 3 运行时间 整数减法 双整数减法 实数减法 86 5 3 1数学运算指令 程序实例 指令格式 IIN2 OUT 整数减法 OUT IN2 OUT DIN2 OUT 双整数减法 RIN2 OUT 实数减法 LDI0 0 使能输入端 IVW2 VW0 整数减法 VW0 VW2 VW0 表5 16操作数执行前后的结果 87 5 3 1数学运算指令 3 乘法运算指令乘法运算指令是对有符号数进行相乘运算 包括 整数乘法 完全整数乘法 双整数乘法和实数乘法 乘法指令影响的特殊存储器位 SM1 0 零 SM1 1 溢出 SM1 2 负 SM1 3 除数为0 使能流输出ENO断开的出错条件 0006 间接寻址 SM1 1 溢出 SM1 3 除数为0 SM4 3 运行时间 1 整数乘法指令 I 使能输入有效时 将两个单字长 16位 的符号整数IN1和IN2相乘 产生一个16位整数结果OUT 指令格式 IIN1 OUT 返回 88 5 3 1数学运算指令 程序实例 2 完全整数乘法指令 MUL LDI0 0 使能输入端 IVW0 VW2 整数乘法 VW0 VW2 VW2 使能输入有效时 将两个单字长 16位 的符号整数IN1和IN2相乘 产生一个32位双整数结果OUT 指令格式 IIN1 OUT 32位OUT的低位字 16位 被用作乘数 89 5 3 1数学运算指令 3 双整数乘法指令 D程序实例 IN2与OUT不是公用一个地址单元时 使能输入有效时 将两个双字长 32位 的符号整数IN1和IN2相乘 产生一个32位整数结果OUT 指令格式 DIN1 OUT LDI0 0 使能输入端MOVDVD0 VD6 VD0 VD6 DVD2 VD6 双整数乘法 图5 36双整数乘法例 90 5 3 1数学运算指令 使能输入有效时 将两个双字长 32位 的符号整数IN1和IN2相乘 产生一个32位整数结果OUT 指令格式 RIN1 OUT 4 实数乘法指令 R4 除法运算指令除法运算指令是对有符号数进行相除操作 包括 整数除法 完全整数除法 双整数除法和实数除法 这四种除法指令与所对应的乘法指令除运算法则不同之外 其他方面基本相同 除法指令影响的特殊存储器位 SM1 0 零 SM1 1 溢出 SM1 2 负 SM1 3 除数为0 91 5 3 1数学运算指令 使能流输出ENO断开的出错条件 0006 间接寻址 SM1 1 溢出 SM1 3 除数为0 SM4 3 运行时间 指令格式 IIN2 OUT 整数除法 OUT IN2 OUT DIVIN2 OUT 整数完全除法 DIN2 OUT 双整数除法 RIN2 OUT 实数除法 返回 92 5 3 1数学运算指令 程序实例 在整数除法中 两个16位的整数相除 产生一个16位的整数商 不保留余数 双整数除法也同样过程 只是位数变为32位 在整数完全除法中 两个16位的符号整数相除 产生一个32位结果 其中 低16位为商 高16位为余数 32位结果的低16位运算前期被兼用存放被除数 LDI0 0 使能输入端MOVW 12345 VW12 12345 VW12MOVW 100 VW20 100 VW20LDI0 1 使能输入端DIVVW20 VD10 VW12 VW20 VD10 图5 37整数完全除法例 指令执行结果 VW10 45 为余数 VW12 123 为商 VD10 45123 93 5 3 1数学运算指令 5 增减指令增 减指令 又称自增和自减 是对无符号或有符号整数进行自动增加或减少一个单位的操作 数据长度可以是字节 字或双字 使能流输出ENO断开的出错条件 0006 间接寻址 SM1 1 溢出 SM4 3 运行时间 在LAD和FBD中 以指令模块形式编程 执行结果 IN 1 OUT和IN 1 OUT 在STL中 执行结果 OUT 1 OUT和OUT 1 OUT 94 5 3 1数学运算指令 1 字节增和字节减指令 INCB DECB 2 字增和字减指令 INCW DECW 3 双字增和双字减指令 INCD DECD 使能输入有效时 把一双字长的有符号输入数IN加1或减1 得到一个双字长的有符号输出结果OUT 指令格式 INCDOUT DECDOUT 使能输入有效时 把一字节长的无符号输入数IN加1或减1 得到一个字节的无符号输出结果OUT 指令格式 INCBOUT DECBOUT 使能输入有效时 把一字长的有符号输入数IN加1或减1 得到一个字长的有符号输出结果OUT 指令格式 INCWOUT DECWOUT 95 5 3 1数学运算指令 6 数学函数指令数学函数指令包括平方根 自然对数 指数 三角函数等几个常用的函数指令 运算输入输出数据都为实数 结果如果大于32位二进制表示的范围 则产生溢出 1 平方根指令 SQRT 把一个双字长 32位 的实数IN开方 得到32位的实数结果OUT 指令格式 SQRTIN OUT 返回 96 5 3 1数学运算指令 2 自然对数指令 LN 3 指数指令 EXP 把一个双字长 32位 的实数IN取以e为底的指数 得到32位的实数结果OUT 指令格式 EXPIN OUT 把一个双字长 32位 的实数IN取自然对数 得到32位的实数结果OUT 指令格式 LNIN OUT 97 5 3 1数学运算指令 4 三角函数指令 SIN COS TAN程序实例 求65 的正切值 即正弦 余弦 正切指令 将把一个双字长 32位 的实数弧度值IN分别取正弦 余弦 正切 各得到32位的实数结果OUT 指令格式 SININ OUT COSIN OUT TANIN OUT 98 5 3 1数学运算指令 LDI0 0 使能输入端MOVR3 14159 AC0 3 14159 AC0 R180 0 AC0 3 14159 180 0 AC0 R65 0 AC0 65 0 AC0 AC0TANAC0 AC1 TAN AC0 AC1 计算结果为TAN 65 2 1445 AC1 AC1 2 1445 图5 38求三角函数例 返回 99 5 3 2逻辑运算指令 逻辑运算是对无符号数进行的逻辑处理 主要包括逻辑与 逻辑或 逻辑异或和取反等运算指令 按操作数长度可分为字节 字和双字逻辑运算 IN1 IN2 OUT操作数的数据类型分别为 B W DW 逻辑运算指令影响的特殊存储器位 SM1 0 零 使能流输出ENO断开的出错条件 0006 间接寻址 SM4 3 运行时间 返回 100 5 3 2逻辑运算指令 1 逻辑与运算指令 ANDB 字节逻辑与指令 使能输入有效时 把两个字节的逻辑数按位求与 得到一个字节长的逻辑输出结果OUT ANDW 字逻辑与指令 使能输入有效时 把两个字的逻辑数按位求与 得到一个字长的逻辑输出结果OUT ANDD 双字逻辑与指令 使能输入有效时 把两个双字的逻辑数按位求与 得到一个双字长的逻辑输出结果OUT 指令格式 ANDBIN1 OUT ANDWIN1 OUT ANDDIN1 OUT 101 5 3 2逻辑运算指令 2 逻辑或运算指令 ORB 字节逻辑或指令 使能输入有效时 把两个字节的逻辑数按位求或 得到一个字节长的逻辑输出结果OUT ORW 字逻辑或指令 使能输入有效时 把两个字的逻辑数按位求或 得到一个字长的逻辑输出结果OUT ORD 双字逻辑或指令 使能输入有效时 把两个双字的逻辑数按位求或 得到一个双字长的逻辑输出结果OUT 指令格式 ORBIN1 OUT ORWIN1 OUT ORDIN1 OUT 102 5 3 2逻辑运算指令 3 逻辑异或运算指令 XORB 字节逻辑异或指令 使能输入有效时 把两个字节的逻辑数按位求异或 得到一个字节长的逻辑输出结果OUT XORW 字逻辑异或指令 使能输入有效时 把两个字的逻辑数按位求异或 得到一个字长的逻辑输出结果OUT XORD 双字逻辑异或指令 使能输入有效时 把两个双字的逻辑数按位求异或 得到一个双字长的逻辑输出结果OUT 指令格式 XORBIN1 OUT XORWIN1 OUT XORDIN1 OUT 103 5 3
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 大学资料


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!