PLC编程及应用第4版ppt课件

上传人:钟*** 文档编号:5843091 上传时间:2020-02-09 格式:PPT 页数:49 大小:1.08MB
返回 下载 相关 举报
PLC编程及应用第4版ppt课件_第1页
第1页 / 共49页
PLC编程及应用第4版ppt课件_第2页
第2页 / 共49页
PLC编程及应用第4版ppt课件_第3页
第3页 / 共49页
点击查看更多>>
资源描述
第4章S7 200的功能指令 4 1功能指令概述4 1 1怎样学习功能指令功能指令分为较常用的指令 与数据的基本操作有关的指令 与PLC的高级应用有关的指令和用得较少的指令 初学功能指令时 首先可以按指令的分类浏览所有的指令 初学者没有必要花大量的时间去熟悉功能指令使用中的细节 应重点了解指令的基本功能和有关的基本概念 应通过读程序 编程序和调试程序来学习功能指令 4 1 2S7 200的指令规约 1 使能输入与使能输出使能输入端EN有能流流入方框指令时 指令才能被执行 EN输入端有能流且指令执行时无错误 则使能输出ENO将能流传递给下一个方框指令或线圈 语句表用AENO指令来产生与方框指令的ENO相同的效果 删除AENO指令后 方框指令将由串联变为并联 1 2 梯形图中的指令条件输入指令必须通过触点电路连接到左侧母线上 不需要条件的指令必须直接连接在左侧母线上 3 能流指示器必须解决开路问题 网络才能成功编译 ENO端的可选能流指示器表示可将其他梯形图元件附加到该位置 它不影响编译 2 4 2数据处理指令4 2 1比较指令与数据传送指令1 字节 整数 双整数和实数比较指令比较触点中间的B I D R S分别表示无符号字节 有符号整数 有符号双整数 有符号实数和字符串比较 满足比较关系式给出的条件时 比较指令对应的触点接通 字符串比较指令的比较条件 x 只有 和 整数和双整数比较指令比较两个有符号数 IN1在触点的上面 IN2在触点下面 3 例4 1 用接通延时定时器和比较指令组成占空比可调的脉冲发生器 M0 2和T33组成脉冲发生器 T33的当前值按锯齿波变化 比较指令用来产生脉冲宽度可调的方波 Q0 0为OFF的时间取决于比较指令第2个操作数的值 2 字符串比较指令字符串比较指令比较ASCII码字符串相等或不相等 常数字符串应是比较触点上面的参数 或比较指令中的第一个参数 4 3 字节 字 双字和实数的传送传送指令助记符中最后的B W DW 或D 和R分别表示操作数为字节 字 双字和实数 4 字节 字 双字的块传送指令块传送指令将起始地址为IN的N个连续的存储单元中的数据 传送到从地址OUT开始的N个存储单元 字节变量N 1 255 5 5 字节立即读写指令字节立即读取指令MOV BIR读取IN指定的一个字节的物理输入 但是并不更新对应的过程映像输入寄存器 字节立即写入指令MOV BIW将一个字节的数值写入OUT指定的物理输出 同时更新对应的过程映像输出字节 6 字节交换指令字节交换指令SWAP用来交换输入字IN的高字节与低字节 应采用脉冲执行方式 6 4 2 2移位与循环移位指令移位位数N的数据类型为BYTE 1 右移位和左移位指令移位指令将输入IN中的数各位的值向右或向左移动N位后 送给输出OUT指定的地址 移位指令对移出位自动补0 有符号的字和双字的符号位也被移位 如果移位次数非0 溢出 标志位SM1 1保存最后一次被移出的位的值 7 2 循环右移位和循环左移位指令循环移位指令将输入IN中各位的值向右或向左循环移动N位后 送给输出OUT指定的地址 被移出来的位将返回到另一端空出来的位置 移出的最后一位的数值存放在溢出标志位SM1 1 如果移动的位数N大于允许值 执行循环移位之前先对N进行求模运算 例如字循环移位时 将N除以16后取余数 得到的有效移位次数为0 15 如果为0则不移位 符号位也被移位 8 3 移位寄存器指令下图中的14位移位寄存器由V30 0 V31 5组成 在I0 3的上升沿 I0 4的值从移位寄存器的最低位V30 0移入 寄存器中的各位左移一位 最高位V31 5的值被移到溢出标志位SM1 1 N为 14时 I0 4的值从最高位V31 5移入 寄存器中的各位右移一位 从最低位V30 0移到溢出标志位SM1 1 9 4 2 3数据转换指令1 标准转换指令除了解码 编码指令之外的10条指令属于标准转换指令 输入参数IN指定的数据转换后保存到输出参数OUT指定的地址 BCD码与整数相互转换的指令中 整数的有效范围为0 9999 如果转换后的数值超出输出的允许范围 溢出标志位SM1 1被置为ON 2 段码指令七段显示器的D0 D6段分别对应于段码指令输出字节的第0位 第6位 某段应亮时输出字节中对应的位为1 反之为0 段码指令很少使用 10 3 计算程序中的数据转换下图将101英寸转换为以mm为单位的双整数值 11 4 解码指令与编码指令解码指令DECO根据输入字节IN的最低4位表示的位号 将输出字OUT对应的位置为1 输出字的其他位均为0 16 0010 2 0000000000010000 编码指令ENCO将输入字IN中的最低有效位 为1的位 的位编号写入输出字节OUT的最低4位 16 0014 0000000000010100 存储器填充指令FILL用输入参数IN指定的字值填充从地址OUT开始的N个连续的字 12 4 2 5实时时钟指令1 用编程软件读取与设置实时时钟的日期和时间用菜单命令 PLC 实时时钟 打开 CPU时钟操作对话框 可以读取PC PLC的时钟 修改和下载日期时间 2 读取实时时钟指令READ RTC从CPU的实时时钟读取当前日期和时间 8字节时间缓冲区依次存放年的低2位 月 日 时 分 秒 0和星期的代码 星期日为1 日期和时间的数据类型为字节型BCD码 3 设置实时时钟指令SET RTC将8字节时间日期值写入CPU的实时时钟 13 例4 2 用实时时钟定时控制设备 LDSM0 0TODRVB70 小时分钟值在VW73LDW VW73 VW78 VW78中是起始时 分值AW VW73 VW80 VW80中是结束时 分值 Q0 2 在设置的时间范围内 Q0 2为1状态 14 4 3数学运算指令4 3 1整数运算指令1 四则运算指令梯形图IN1 IN2 OUT IN1 IN2 OUT IN1 IN2 OUT IN1 IN2 OUT语句表IN1 OUT OUT OUT IN1 OUT IN1 OUT OUT OUT IN1 OUT指令影响SM1 0 零标志 SM1 1 溢出标志 SM1 2 负数标志 和SM1 3 除数为0 MUL将两个16位整数相乘 产生一个32位乘积 DIV指令将两个16位整数相除 运算结果的高16位为余数 低16位为商 15 例4 3 设计程序 用模拟电位器设置定时器T37的预设值为5 20s SMB28中电位器的位置对应的数字N为0 255 时间设定值为150 N 255 50 用累加器来存放操作数和运算的中间结果比较方便 2 递增与递减指令梯形图中IN 1 OUT 语句表中OUT 1 OUT 16 4 3 2浮点数函数运算指令1 三角函数指令输入值是以弧度为单位的浮点数 角度值乘以 180转换为弧度值 2 自然对数和自然指数指令3 平方根指令将正实数开平方 17 4 3 3逻辑运算指令1 取反指令取反指令将二进制数逐位取反 各位由0变为1 由1变为0 18 2 逻辑运算指令字节 字 双字 与 运算时 如果两个操作数的同一位均为1 运算结果的对应位为1 否则为0 或 运算时如果两个操作数的同一位均为0 运算结果的对应位为0 否则为1 异或 ExclusiveOr 运算时如果两个操作数的同一位不同 运算结果的对应位为1 否则为0 19 3 逻辑运算指令应用举例用字节逻辑 或 运算将QB0的第2 4位置为1 其余各位保持不变 QB0的某一位与1作 或 运算 运算结果为1 与0作 或 运算 运算结果不变 16 1C的第2 4位为1 IW2的低12位用来读取3位拨码开关的BCD码 IW2的高4位另作他用 16 0FFF的最高4位二进制数为0 低12位为1 与IW2作 与 运算后 VW2的低12位与IW2的低12位的值相同 VW2的高4位为0 20 4 4程序控制指令4 4 1跳转指令1 跳转与标号指令JMP线圈通电时 跳转条件满足 跳转指令使程序流程跳转到对应的标号处 JMP与LBL指令的操作数n为常数0 255 只能在同一个程序块中跳转 I0 4的常开触点断开时 跳转条件不满足 顺序执行下面的网络 I0 4的常开触点接通时 跳转到标号LBL0处 不执行第二个网络 21 2 跳转指令对定时器的影响在各定时器正在定时时跳转 100ms定时器停止定时 当前值保持不变 10ms和1ms定时器继续定时 定时时间到时跳转区外的触点也会动作 停止跳转时100ms定时器继续定时 3 跳转对功能指令的影响未跳转时INC B指令使VB0每秒加1 跳转条件满足时VB0的值保持不变 图4 27跳转与定时器 22 例4 6 用跳转指令实现图4 28中的流程图的要求 23 4 4 2循环指令1 单重循环驱动FOR指令的逻辑条件满足时 反复执行FOR与NEXT之间的指令 执行到NEXT指令时 INDX的值加1 如果INDX的值小于等于结束值FINAL 返回去执行FOR与NEXT之间的指令 如果INDX的值大于结束值 循环终止 例4 7 在I0 5的上升沿 求VB10 VB13这4个字节的异或值 用VB14保存 首先将VB14清0 并设置地址指针AC1的初始值 第一次循环将指针AC1所指的VB10与VB14异或 然后将指针值加1 指针指向VB11 为下一次循环的异或运算做好准备 VB10 VB13同一位中1的个数为奇数时 VB14对应位的值为1 反之为0 24 2 多重循环循环最多可以嵌套8层 在I0 1的上升沿 执行10次外层循环 如果I0 2为ON 每执行一次外层循环 将执行8次内层循环 执行完后 VW6的值增加80 25 4 4 3其他指令1 条件结束指令与条件停止指令条件结束指令END的逻辑条件满足时终止当前的扫描周期 条件停止指令STOP使CPU从RUN模式切换到STOP模式 2 监控定时器复位指令T32等组成一个脉冲发生器 从I0 3的上升沿开始 M0 2输出一个宽度等于T32预设值的脉冲 在脉冲期间反复执行JMP指令 因此扫描时间略大于T32的预设值 扫描周期超过500ms时 CPU自动切换到STOP模式 可用WDR指令重新触发监控定时器 以扩展允许使用的扫描时间 3 诊断LED指令很少使用 26 4 5局部变量与子程序4 5 1局部变量1 局部变量与全局变量每个程序组织单元 POU 均有由64字节局部 L 存储器组成的局部变量 局部变量只在它被创建的POU中有效 全局符号在各POU中均有效 局部变量有以下优点 1 尽量使用局部变量的子程序易于移植到别的项目 2 同一级POU的局部变量使用公用的存储区 3 局部变量用来在子程序和调用它的程序之间传递输入参数和输出参数 2 查看局部变量表可上下拖动分裂条 打开和关闭局部变量表 3 局部变量的类型临时变量 TEMP 是暂时保存在局部数据区中的变量 主程序或中断程序只有TEMP变量 IN 输入参数 用来将调用它的POU提供的数据值传入子程序 OUT 输出参数 用来将子程序的执行结果返回给调用它的POU 27 IN OUT 输入 输出参数 的初始值由调用它的POU传送给子程序 并用同一参数将子程序的执行结果返回给调用它的POU 每个子程序最多可以使用16个输入 输出参数 4 在局部变量表中增加和删除变量子程序中变量名称前面的 表示局部变量 是软件自动添加的 5 局部变量的地址分配由编程软件自动分配局部变量的地址 6 局部变量数据类型检查局部变量表中指定的数据类型应与调用它的POU的变量的数据类型匹配 4 5 2子程序的编写与调用1 子程序的作用子程序将程序分成容易管理的小块 使程序结构简单清晰 易于查错和维护 可以多次调用同一个子程序 使用子程序可以减少扫描时间 2 子程序的创建执行 编辑 菜单中的命令 插入 子程序 28 3 子程序举例子程序的重命名 生成局部变量 编写程序 4 子程序的调用 将指令树中的子程序 拖 到程序编辑器中需要的位置 29 如果用语句表编程 子程序调用指令的格式为CALL子程序名称 参数1 参数2 参数nn 1 16 在语句表中调用带参数的子程序时 输入参数在最前面 其次是输入 输出参数 最后是输出参数 梯形图中从上到下的同类参数 在语句表中按从左到右的顺序排列 在调用子程序时 CPU保存当前的逻辑堆栈 将栈顶值置为1 堆栈中的其他值清零 控制转移至被调用的子程序 该子程序执行完后 CPU将堆栈恢复为调用时保存的数值 并将控制权交还给调用子程序的POU 子程序在同一个周期内被多次调用时 子程序内部不能使用上升沿 下降沿 定时器和计数器指令 如果在使用子程序调用指令后修改了该子程序中的局部变量表 调用指令将变为无效 必须删除无效调用 重新调用修改后的子程序 30 子程序调用最多可以嵌套8级 中断程序中调用的子程序不能再调用别的子程序 5 用地址指针作输入参数的子程序 例4 8 对VB10开始的4B数据作异或运算 31 6 子程序中的定时器停止调用子程序时 如果子程序中的定时器正在定时 100ms定时器将停止定时 当前值保持不变 重新调用时继续定时 1ms 10ms定时器继续定时 定时时间到时 其常开触点可以在子程序之外起作用 7 子程序的有条件返回子程序中的RET线圈通电时 子程序被终止执行 返回调用它的程序 32 8 有保持功能的电路的处理如果参数 电机 的数据类型为输出 OUT 两次调用子程序SBR 0 因为保存参数 电机 L0 2 的存储器是共用的 接通I0 0外接的小开关 Q0 0和Q0 1同时变为ON 将输出参数 电机 的变量类型改为IN OUT 参数 电机 返回的运算结果分别用Q0 0和Q0 1保存 解决了上述问题 33 4 6中断程序与中断指令4 6 1中断的基本概念与中断事件在中断事件发生时由操作系统立即调用中断程序 中断程序是用户编写的 中断程序不能再被中断 中断程序越短越好 中断事件号见表4 12 4 6 2中断指令1 中断允许指令与中断禁止指令中断允许指令ENI允许处理所有被连接的中断事件 禁止中断指令DISI禁止处理所有中断事件 进入RUN模式时自动禁止中断 34 2 中断连接指令与中断分离指令中断连接指令ATCH建立中断事件EVNT与对应的中断程序INT的联系 中断事件由中断事件号指定 中断程序由中断程序号指定 中断分离指令DTCH断开中断事件与中断程序之间的联系 3 中断程序的执行CPU自动调用中断程序需要满足下列条件 1 执行了全局中断允许指令ENI 2 执行了中断事件对应的ATCH指令 3 出现对应的中断事件 4 中断优先级与中断队列溢出中断优先级分组 通信 最高优先级 I O中断和定时中断 在优先级范围内 CPU按照先来先服务的原则处理中断 4 6 3中断程序举例1 通信端口中断在自由端口模式 接收消息完成 发送消息完成和接收一个字符均可以产生中断事件 2 I O中断I O中断包括I0 0 I0 3的上升沿 下降沿中断 高速计数器的当前值等于设定值 计数方向改变和计数器外部复位中断 35 例4 9 在I0 0的上升沿通过中断使Q0 0立即置位 在I0 1的下降沿通过中断使Q0 0立即复位 主程序OB1LDSM0 1 第一次扫描时ATCHINT 0 0 I0 0上升沿时执行0号中断程序ATCHINT 1 3 I0 1下降沿时执行1号中断程序ENI 允许全局中断LDSM5 0 如果检测到I O错误DTCH0 禁用I0 0的上升沿中断DTCH3 禁用I0 1的下降沿中断 中断程序0 INT 0 LDSM0 0 该位总是为ONSIQ0 0 1 使Q0 0立即置位TODRVB10 读实时时钟 中断程序1 INT 1 LDSM0 0 该位总是为ONRIQ0 0 1 使Q0 0立即复位TODRVB20 读实时时钟 36 3 定时中断定时中断0 1的周期为1 255ms 分别写入SMB34和SMB35 每当定时时间到时 执行相应的定时中断程序 例4 10 用定时中断0实现周期为2s的高精度定时 主程序OB1LDSM0 1 第一次扫描时MOVB0 VB10 将中断次数计数器清0MOVB250 SMB34 设置定时中断0的中断时间间隔为250msATCHINT 0 10 指定产生定时中断0时执行0号中断程序ENI 允许全局中断 中断程序INT 0 每隔250ms中断一次LDSM0 0 该位总是为ONINCBVB10 中断次数计数器加1LDB 8 VB10 如果中断了8次 2s MOVB0 VB10 将中断次数计数器清0INCBQB0 每2s将QB0加1 37 4 定时器T32 T96中断 例4 11 使用T32中断控制8位节日彩灯 每2 5s左移一位 1ms定时器T32定时时间的中断事件号为21 最长定时时间为32 767s 主程序OB1LDSM0 1 第一次扫描时MOVB16 F QB0 设置彩灯的初始状态 最低4位的灯被点亮ATCHINT 0 21 指定T32定时时间到时执行中断程序INT 0ENI 允许全局中断LDNM0 0 T32和M0 0组成脉冲发生器TONT32 2500 T32的预设值为2500msLDT32 M0 0 中断程序INT 0LDSM0 0RLBQB0 1 彩灯左移1位 38 4 7高速计数器与高速脉冲输出指令4 7 1高速计数器的工作模式与外部输入信号1 增量式编码器高速计数器一般与增量式编码器配合使用 单通道增量式编码器只产生一个脉冲序列 双通道A B相型编码器提供转速和转轴旋转方向的信息 三通道增量式编码器的Z相零位脉冲用作系统清零信号 或作为坐标的原点 2 绝对式编码器绝对式编码器输出多位二进制数 反映了运动物体所处的绝对位置 3 高速计数器的工作模式高速计数器HSC0 HSC5有13种工作模式 1 无外部方向控制信号的单相加 减计数器 模式0 2 2 带外部方向控制信号的单相加 减计数器 模式3 5 3 有加 减计数时钟脉冲输入的双相计数器 模式6 8 4 A B相正交计数器 模式9 11 两路计数脉冲的相位互差90 根据有无复位输入和启动输入 上述4类工作模式又可以各分为3种 模式12用HSC0 HSC3计Q0 0 Q0 1输出的高速脉冲 39 图4 421倍速A B相正交计数器A B相正交计数器可以选择1倍速模式和4倍速模式 1倍速模式在时钟脉冲的每一个周期计1次数 4倍速模式在两个时钟脉冲的上升沿和下降沿都要计数 40 4 高速计数器的外部输入信号见表4 16 4 7 2高速计数器的程序设计1 高速计数器指令HDEF指令定义高速计数器的工作模式 HSC指令用来激活高速计数器 例4 12 要求高速计数器HSC0用模式0的计数来周期性地控制Q0 1和Q0 2 计数脉冲的周期为1ms 41 第1页选中配置 HC0 计数模式为默认的模式0 第2页采用默认的计数器初始化子程序的符号名HSC INIT 设置计数器的预设值PV为3000 当前值CV为默认的0 初始计数方向为加计数 第3页 中断 设置当前值等于预设值时产生中断 使用默认的中断程序符号名COUNT EQ 本例设置为3步 第4页 第1步 自动选中 连接此事件到一个新的中断程序 采用默认的新的中断程序的名称HSC0 STEP1 设置 新PV 为6000 不更新计数当前值和计数方向 单击上面的 下一步 按钮 第5页 第2步 自动选中 连接此事件到一个新的中断程序 采用默认的新的INT的名称HSC0 STEP2 设置新的计数方向为减计数 更新计数当前值为3500 新的预设值为0 单击上面的 下一步 按钮 第6页 第3步 选中 连接此事件到一个新的中断程序 设置新INT的名称为COUNT EQ 预设值更新为3000 不更新计数当前值 新的计数方向为加计数 实际上是开始下一周期的计数操作 单击下面的 下一步 按钮 第7页 组件 显示将要自动生成的初始化计数器子程序HSC INIT和3个中断程序 程序中对Q0 1和Q0 2置位和复位的指令是人工添加的 主程序在I0 1的上升沿时调用HSC INIT 42 43 44 4 7 3高速脉冲输出与开环位置控制1 PWM发生器占空比是脉冲宽度与脉冲周期之比 脉冲列 PTO 功能提供周期与脉冲数目可以由用户控制的占空比为50 的方波脉冲输出 脉冲宽度调制 PWM 功能提供连续的 周期与脉冲宽度可以由用户控制的输出 CPU用Q0 0和Q0 1输出脉冲 CPU224XP的最高脉冲频率为100kHz 用脉冲输出向导生成PWM指令PWMx RUN 时间基准为 s 输入参数RUN为ON时输出脉冲 45 4 8数据块应用与字符串指令4 8 1数据块概述1 在数据块中对地址和数据赋值数据块用来给V存储器的字节 字和双字地址赋初始值 数据块的第一行必须包含明确的地址 包括符号地址 以后的行可以不包含明确的地址 在单地址值后面键入多个数据或键入只包含数据的行时 由编辑器进行地址赋值 2 错误处理输入错误的地址和数据 地址在数据值之后 数值超出允许范围 使用非法语法或无效值 使用了符号地址或中文的标点符号时 错误行的左边出现红色的叉 出错的地址或数据的下面用波浪线标示 用输出窗口显示编译错误 46 4 8 2字符 字符串与数据的转换指令1 字符和字符串的表示方法字符串常量的第一个字节是字符串的长度 即字符个数 在符号表和程序编辑器中 字节 字和双字的ASCII字符用英语的单引号表示 例如 A AB 和 AB12 ASCII常量字符串用英语的双引号表示 例如 ABCDE 数据块用英语的单引号定义字符常量 可以将VB地址分配给任意个字符的常量 将VW和VD地址分别分配给2个和4个字符的常量 用英语的双引号定义最多254个字符的字符串 只能将V或VB地址用于字符串分配 程序编辑器中用英语的单引号表示1个 2个 4个ASCII字符常量 用英语的双引号定义最多126个字符的字符串 有效的地址为VB 47 4 8 3字符串指令1 复制 连接字符串和求字符串长度指令求字符串长度指令SLEN返回输入参数IN指定的字符串的长度值 字符串复制指令SCPY将参数IN指定的字符串复制到OUT指定的字符串 字符串连接指令SCAT将参数IN指定的字符串附加到OUT指定的字符串后面 例4 14 字符串指令应用举例 LDI0 3SCPY HELLO VB70 将字符串 HELLO 复制到VB70开始的存储区SCAT WORLD VB70 将字符串 WORLD 附到VB70开始的字符串的后面SLENVB70 VB82 求VB70开始的字符串的长度 48 2 从字符串中复制子字符串指令执行完例4 14中的程序后 SSTR CPY指令将IN指定的字符串 HELLOWORLD 中的第7个字符开始的5个字符 WORLD 复制到VB83开始的新字符串中 3 字符串搜索指令STR FIND指令在IN1指定的字符串 HELLOWORLD 中 搜索字符串 WORLD 用地址VB89保存字符 WORLD 的首个字符W在字符串IN1中的位置 VB89的初始值为1表示从第一个字符开始搜索 如果没有找到 OUT被清零 49
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


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


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

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


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