文档库 最新最全的文档下载
当前位置:文档库 › 欧姆龙PLC间接寻址的灵活应用

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

欧姆龙PLC间接寻址的灵活应用
欧姆龙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(如果是小数时,前面务必带符号)。

图9:PLC内D630至D729中的值

内存剖析:D620为程序产生的32位浮点数,D630至D729为从D620当中按照每秒的变化值保存的数据。PLC数据监视切换至科学计数法的形式显示。

曲线分析:在PLC内存区域,将图9中的数据复制到EXCEL中,从而可以绘制出一段PLC内数据按时间变化的曲线,即代表D620里的数据以1秒为单位变化的趋势图。

图10:即D620内的数据以1秒为单位,变化的曲线图

归纳总结:从以上4个间接寻址的常用例程中可以发现,在PLC中使用间接寻址时,可以大大提高程序的可读性及减少梯形图的体积,当然也可以封装成功能块,多次调用。

例1:可用于数据产生器,或调试用;

例2:可稍作修改应用于其它连续运算操作中,或者对指定地址区域中,去寻找满足要求的数据;

例3:对连续地址中数据的比较,对当前批量地址与目标批量值进行比较,寻找不一致的地方;

例4:连续采集数据,可用于对一些模拟量的数据进行采集,比如真空度、温度、温度、流量等进行按时间单位进行采集,同时可将数据导出其它平台作分析处理用。将数据图形化提供了便捷。

附录:欧姆龙PLC间接寻址的用法

在地址前加前缀"* "表示为BCD间接寻址;

在地址前加前缀"@ "表示为二进制间接寻址。

相关文档