欧姆龙PLC间接寻址的灵活应用

欧姆龙PLC间接寻址的灵活应用
在PLC控制系统中,需要经常对连续多个数据进行某项操作,比如产生一系统数据或者一系统数据执行连续运算或比较以及按时间来对数据进行存储等。在小型PLC中无变址寄存器情况下,以间接寻址的方法将大大减少程序开销的容量,以及提高程序的可读性。现以欧姆龙PLC来实现以上四项操作,其它系列PLC类似。(因在执行平方根与除法运算的例程稍显复杂,故只有此例增加地址注释,其它程序段较小,故没有增加注释)。
一:对PLC连续D区产生一组连续的数据。
可调步进衰减器图1:对D1000开始的地址连续存储1-100的数据
程序剖析:先初始化要应用的间接寻址寄存器D600,再选择需要产生的连续数据个数,本例使用FOR指令来连续循环执行操作,使用++B从而产生源数据,再使用MOV指令,将产生的源数据送至D600中指定的
地址中去,注意*D600前的*号,同时间接寻址地址D600执行++B操作,为下一个循环指明直接地址婴童车
作准备。当循环指定次数&100到达后,将自动跳出FOR循环,将执行NEXT之后的程序。当下次扫描
周期到达时,程序将又从初始化间接寻址开始执行。
图2:监视PLC内的D1000开始地址内的数据
数据剖析:进入PLC中的D区值进行监视D1000开始地址中,将会发现D1000至D1099分别存储为1-100的数据。如果需要修改初始值时,可以在初始化时将D601输入相应的值即可,当然如果要产生200个数
据,修改FOR后的数据由&100修改为&200即可。
二:对连续通道的数据执行算术运算(寻执行平方根后为整数的数及寻被指定数整除的数)。
图3:D5000存储来自于D1000执行的平方根后为整数的数,D4000存储来自于D1000内被3整除的数程序剖析:平方根ROOT指令源数据为32位,然而本次的源数据却是16位数据,同时因ROOT指令对平方根的余数不进行保留,故无法直接得到小数部分,也即无法精准得出执行平方根后是否为整数,故需将底
16位置0(间接地将数据乘以#10000),即每次在执行ROOT之前需将底16位使用"MOV #0 *D606"
来清零,同时使用MOVD指令来提取出D608中的底8位即就是执行平方根后的小数部分值,当D608真空挤砖机
为零时表示执行平方根操作后无小数产生,即将源地址中的数据送至新目标地址中去,这样就实现了
寻指定区域内整数平方根的数据。能被3整除的数据,那余数必定为0,利用这点即可得出能被3
整除的数,并提取存储至D4000。
图4:PLC 内D4000开始地址存储来自于D1000内能被3整除的数据
数据剖析:从D4000开始存储的数都是从D1000中开始到D1200中共200个地址中能被3整除的数。
比如:54÷3 = 18; 102÷3 = 34; 129÷3 = 43; 198÷3 = 66。即以上表中得出的数据除以3不会有
小数。
图5:PLC 内D5000开始地址存储来自于D1000内数据执行的平方根操作
数据剖析:从D5000开始存储的数都是从D1000中开始到D1200中共200个地址当中执行完平方根指令后数据
为整数的数。
比如:√12 = 1;√42 = 2;√1212 = 11;√1962
晒东西= 14 。即他们执行平方根后的数据无小数产生。
指令剖析:
FOR---NEXT :用于循环操作,循环次数由FOR 后的数据决定,循环的区域从FOR 到NEXT 之间包含的
所有指令,都参与到循环。本例用于循环扫描次数来产生数据及中间数据操作运算。
++B :      BCD 码自加加指令,用于自增加。本例用于间接寻址自增加。
/B :        BCD 除法运算。本例目的是为了得到余数,让余数来作分支判断。
ROOT :    平方根指令。本例让底16位置0,高16位参与平方根操作,再结果处提取底8位的值
即为小数值,让此小数值来判断执行完平方根后是否为整理,让小数来作分支判断。
MOVD :    数字传送。将16位数据分割为4个4位数据,按照控制字的要求,传输指定的位个数。
本例目的为了将D608中的底8位传输到D609中的底8位,其它位不改变。
三:对连续通道的数据执行比较操作(寻指定连续地址中数据不一致的操作)。
图6:对连续通道内的数据执行比较操作,并将比较不一致的地址指出
程序剖析:先初始化间接寻址地址值,选择执行次数(20次),使用间接寻址读取出D1100与D1120开始的连续20个字中数据不一致的地址位置,将不一样的地址值送至D1140中。注意程序中使用了BREAK
指令,即表示在条件满足时,将退出FOR指令。
指令剖析:BREAK:用于FOR---NEXT中作中断循环指令。在循环体中BREAK条件一当满足时,将退出FOR---NEXT循环。
图7:PLC内D1100开始的地址值
内存剖析:因D1117内的数据#ABCD与D1137内的数据#BACD不一样,所以程序将记录不一样的地址D1117存储于D1140中。
四:按指定时间读取指定地址中的数据并送至指定的连续地址中(常用于对数据的记录、导出、分析)。本例最后此数据导出至EXCEL绘制出曲线图,从而分析数据的变化,将数据图形化显示。
投票箱制作图8:先制作一串动态变化的32位浮点数,再将此值以时间单位送至目标地址
程序剖析:先制作一串动态变化的32位浮点数,再将此32位数据以1秒为单位送至D630开始字中,同时下一秒将32位浮点数据送至D622中,直到存到D729为止,之后又重新存储至D630中,这样即可采样100秒
内,32位浮点数的变化情况。
指令剖析:++:二进制自加加。本例产生数据用。
FLT:16位转浮点数。本例转换为浮点数用。
/F:浮点数除法。本例产生浮点数用。注意本例中除数为+1.0(如果是小数时,前面务必带符号)。
DNA变性与杂交
图9:PLC内D630至D729中的值

本文发布于:2024-09-24 11:22:50,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/2/216151.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:数据   执行   地址   本例   循环
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议