西门子200SMART之简接寻址学习,指针与间接寻址,冒泡排序 | 您所在的位置:网站首页 › plc间接寻址与指针的关系 › 西门子200SMART之简接寻址学习,指针与间接寻址,冒泡排序 |
在PLC里面有两种寻址方式,一种是直接寻址,另一种是间接寻址。间接寻址是指用指针来访问存储区的数据。指针以双字的形式存储其它存储区的地址,只能将V存储单元、L存储单元或累加寄存器(AC1、AC2、AC3)用作指针。
创建指针时,必须使用“移动双字”指令,将间接寻址的存储单元地址移至指针位置。;用“&”符号加上要访问的存储区地址可建立一个指针,当指令中的操作数是指针时,应该在操作数前加上“*”号。 1.建立指针
建立指针记得加“&”;将VB100的地址存放到VD1000内。 2.指针偏移
按字节寻址,就+1; 按字寻址,就+2; 按双字或浮点数寻址,就+4; 3.取指针4.程序监控 1)按下M0.0,执行字节偏移,此时在VB101输入“10”,VB3000的数据即为“10”,然后复位M0.0。2)按下M0.1,执行字偏移,此时在VW102输入“50”,VW4000的数据即为“50”,然后复位M0.1。3)按下M0.2,执行双字偏移,此时在VD104输入“80”,VD5000的数据即为“80”,然后复位M0.2。 程序实例(干货) 实例1:通过指针间接寻址改变定时器的3种不同定时时间。
实例2:通过指针间接寻址找一组数据的最值(大和小)和平均值。主程序
子程序
程序的监控图就不贴出来了,其实重点就在子程序的第二段,每循环一次,就做一次比较,如果比较条件满足,就将大值和小值暂存到LD10和LD14中,直到循环到最后一次,此时最大值和最小值已经找出来了,平均值就是将每循环一次的值进行累加,然后再除以数据个数,这里我就不展开仔细的分析了,可以参考一下最后一个案例,冒泡排序执行原理。 实例3:通过指针间接寻址改变5个计数器的计数值。
案例4,冒泡排序,从小排到大。 主程序,排8组数据。
子程序
冒泡排序算法解析: 八组数据:分别是20.0;365.0;7.0;7.0;210.5;7.6;15.6;22.8。 1.首先将要排列的数据个数-2(8-2),然后存放到LW10中;再将这个值附给外循环的FINAL。 2.第一个外循环的执行的次数即为0~6(7次)。 3.INDX:假定 INIT 值为 0,FINAL 值为 6,则 FOR 指令和 NEXT 指令之间的指令将执行 7 次,INDX 值递增:0,1, 2, 3, 4.5.6。 第一次外循环(执行7次内循环) 第一次内循环 20.0;365.0;7.0;7.0;210.5;7.6;15.6;22.8;(20.0 |
CopyRight 2018-2019 实验室设备网 版权所有 |