第6章_PLC的功能指令
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2. 停止指令 STOP,停止指令。使能输入有效时,该指令使主机 CPU的工作方式由RUN切换到STOP方式,从而立即终 止用户程序的执行。如果正在执行中断程序,则立即停 止并忽略其他正在等待的中断,返回主程序,在结束处, 完成工作方式的转换。 STOP指令在梯形图中以线圈形式编程。指令不含操作 数。 LD 指令格式:STOP (无操作数)
2、尽量节wk.baidu.com输入输出逻辑。
3、使用中断程序。
应用实例2:某单向旋转机械上连接了一个A/B两相正交脉冲增量旋转编码器,计数 脉冲的个数就代表了旋转轴的位置。编码器旋转一圈产生10个A/B相脉冲和一个复 位脉冲(C相),需要载第8个脉冲所代表的位置接通电机,其余位置断开电机。
O O STOP SM5.0 SM4.3 I0.3 //检查 I/O 错误 //运行时刻检查编程 //外部切换开关 //条件满足,由 RUN // 切换到 STOP 方式 // // LD END I0.5 //外部停止控制 //停止程序执行 // //
LD WDR
M0.4
//用触点重新触发 //看门狗定时器
6.4.6 读写实时时钟指令 读实时时钟指令 TODR从实时钟读取当前时间和日期,并把它们装入以 T 为起始地址的8字节缓冲区,依次存放年、月、日、时、分、秒、0和星期, 1 为星期日,2~7为星期1~6。写实时时钟指令TODW将起始地址为T的 8字节 缓冲区中的时间和日期写入实时钟。
图6-18 时钟指令 【例6-5】出现事故时,I0.0的上升沿产生中断,使输出Q1.0立即置位,同 时将事故发生的日期和时间保存在VB10~VB17中。 //主程序 OB1 LD SM0.1 // 第一次扫描时 ATCH 0, 0 // 指定在I0.0的上升沿执行0号中断程序 ENI // 允许全局中断
6.2 程序控制类指令 1.条件结束指令与停止指令 (1). 结束指令 结束指令有两条:END和MEND。两条指令在梯形图中以线圈形式编程。 END,条件结束指令。使能输入有效时,终止用户主程序。 MEND,无条件结束指令。无条件终止用户程序的执行,返回主程序 的第一条指令。 指令格式:END(无操作数)
网络1 LD MOVD FOR 网络2 LD ITD +D +D 网络3 NEXT
SM0.0 0, #RESULT #COUNT, 1, #NUMB
// 清结果单元 // 循环开始
SM0.0 *#POINT, #TMP1 // 将待累加的整数转换为双整数 #TMP1, #RESULT // 双整数累加 2, #POINT // 指针值加2,指向下一个字
在STL指令中,没有ENO,与之对应的是AENO指令,访问ENO位用于产生 与功能块ENO相同的效果。
图6-1 EN与ENO LD I2.4 SQRT VD0, VD4 AENO MOVB VB8, QB2 VD0为负数时无能流流出。删除AENO后两个方框变为并联。
6.1.3 梯形图中的网络与指令 一个网络中只能有一块独立电路。 输入语句表指令时必须使用英文的标点符号。 条件输入指令、无条件执行指令、
2、创建子程序
分裂条
3、调用子程序
演示子程序的调用
图6-5 在主程序中调用子程序
LD CALL I0.4 模拟量计算, AIW2, VW20, +2356, VD40
子程序中的定时
【例6-2】 设计求V存储区连续的若干个字的累加和的子程序。下面是名 为“求和”的子程序的局部变量表和STL程序代码。子程序中的*#POINT是 地址指针POINT指定的地址中字变量的值。
2.循环指令 由 FOR和NEXT指令构成程序的循环体。FOR指令标记循环的开始,NEXT指令 为循环体的结束指令。 使能输入EN有效,循环体开始执行,执行到NEXT指令时返回,每执行一次循环 体,当前值计数器INDX增1,达到终止值FINAL时,循环结束。使能输入无效时,循 环体程序不执行。每次使能输入有效,指令自动将各参数复位。
演示仿真
6.4.3 移位与循环指令,处理对象为无符号数
1.右移位和左移位指令
使用循环移位指令实现霓虹灯控制。 要求:一组霓虹灯由8个LED灯组成,当程序初始化后1、 3LED灯亮,按下左循环按钮后每隔2S向左循环移位使指示 灯分别显亮,按下右循环按钮后每隔2S向右循环移位使指示 灯分别显亮。
6.4.4 数据转换指令
三台电机分时启动控制应用 控制要求:按下起动按钮后3台电机每隔2S分别依次 起动;按下停止按钮,3台电机每隔2S依次停止。 使用比较指令
6.4.2 数据传送指令(重点) 1.字节、字、双字和实数的传送 (单一传送) 作用:将IN的内容拷贝到OUT中,IN和OUT的数据类型应相同,可分别为字, 字节,双字,实数 MOV_B MOV_W MOV_D MOV_R
启动循环时,将初始值INIT传送到INDX中
【例6-1】在I0.0 = 1的上升沿,求VW100~VW108中5个字的累加和。 网络1 LD I0.0 EU MOVB 0, AC0 // 清累加器0 MOVD &VB100, AC1 // 累加器1(存储区指针)指向VB100 FOR VW0, 1, 5 // 循环开始 网络2 LD SM0.0 +I *AC1, AC0 // 字累加 +D 2, AC1 // 指针AC1的值加2,指向下一个变量存储器字 网络3 I2 .1 4 J MP NEXT // 循环结束 … 网络4 4 LD I0.0 LB L EU MOVD AC0, VD10 // 保存运算结果 图6-3 跳转与标号指令 .
控制系统要求:有两组指示灯(分别为红色和绿色),分别有旋钮SF1和SF2控制启 动。当SF1闭合时,三只红色指示灯按HR3->HR2->HR1的顺序和2s的时间间隔循环 亮灭;当SF2闭合时,三只绿色指示灯按HG3->HG2->HG1的顺序和2s的时间间隔循 环亮灭。 要求: 1、使用高精度定时。
2.字节立即读指令(单一 传送) MOV_BIR读取1个字节的物理 输入 字节立即写指令MOV_BIW写1 个字节的物理输出。
3.字节、字、双字的块传送指令(块传送) 作用:将从IN开始的连续N个字节数据拷贝到从OUT开始的数据块 N的有效范围是1~255 “BMB VB20, VB100, 4” 4.字节交换指令 注意:字节、字、双字传送指令对应的IN和OUT 地址应是B、W、D;N对应的N个数据块。 BMW VW 100,VW200,8
霓虹灯控制系统设计:有一霓虹灯由8组LED指示灯构成,当按下启动按钮
后霓虹灯 开始工作,首先亮的是1\3组灯,然后每隔2S依次向右点亮
2\4,3\5,4\6,5\7,6\8灯组;当按下反向按钮时,首先点亮的是6\8灯组,然后
每隔2S依次向左点亮5\7,4\6,3\5,2\4,1\3灯组。
利用定时器0实现2S的高精度定时。
6.4.5 表功能指令 1.填表指令
TL值为数据表的最大长度,EC为为实际的数据项,当EC>TL时候SM1.4=1.
0003
1234
数据2 数据3
VW210? VW212? SM1.4?
命令参数CMD = 1~4,分别代表“=”、“<>”(不等于)、“<”和 “>”。
图6-16 先入先出指令举例
// 循环结束
图6-7 在OB1中调用子程序
6.4 数据处理指令
6.4.1 比较指令
1秒脉冲发生器
图6-8 比较触点指令
图6-9 自复位接通延时定时器
综合实例:下图所示为包括两台传送带的系统,按下启动按钮同时启动,按下停止
按钮同时停止。在两台传送带之间有一个临时仓库区。传送带1 将包裹运送至仓库区。 传送带1 靠近仓库区一端安装的光电传感器确定已有多少包裹运送至仓库区。传送带2 将临时库区中的包裹运送至装货场,在这里货物由卡运送至顾客。传送带2 靠近仓库区 一端安装的光电传感器确定已有多少包裹从仓库区运送至装货场。含 5 个指示灯的显 示面板表示临时仓库区的占用程度,指示灯同时只能亮一个。每次启动系统仓库区初始 值置为0。 要求:按照图示及上述要求设计梯形图;用可调的脉冲发生器1(输出高电平间隔 为0.5S,方波宽度为0.2S)代替光电传感器1效果,用可调的脉冲发生器2(输出高电平 间隔为1S,方波宽度为0.2S)代替光电传感器2效果进行仿真。
//中断程序0(INT_0) LD SM0.0 SI Q1.0, 1 TODR VB10
// 该位总是为ON // 使Q1.0立即置位 // 读实时时钟
【例6-6】用实时时钟指令控制路灯的定时接通和断开,20:00 开灯,06 : 00关灯,下面是语句表程序。 LD SM0.0 TODR VB0 // 读实时时钟,小时值在VB3 LDB>= VB3, 16#20 //如果在 20点~0点(日期、时间值用BCD码表示) OB< VB3, 16#06 // 或0点~6点 = Q0.0 // 点亮路灯
1. 跳转指令 (1)跳转指令 JMP,跳转指令。使能输入有效时,使程序流程跳到同一程序中的指定 标号n处执行。 (2)标号指令 LBL,标号指令。标记程序段,作为跳转指令执行时跳转到的目的位置。 操作数n为0~255的字型数据。跳转与标号指令必须在同意程序中。
演示如何在主、子及中断程序中添加局部变量和全局变量(程序块、符号 表),解释局部变量的地址分配、如何新增变量。