对S7-200SMART PLC来说,寻址可分为直接寻址和间接寻址,直接寻址就是直接对数据进行赋值,那么间接寻址主要是用于什么地方?直接寻址与间接寻址它们之间有何区别?下面就带大家来学习间接寻址使用。
一、直接寻址与间接寻址区别
直接寻址就是直接对数据进行赋值,间接寻址主要用于需要在程序中修改地址的场合,特别是处理数据内容比较多的情况,使用间接寻址编程灵活,节省程序空间。
二、间接寻址说明
(1)间接寻址使用指针访问存储器中的数据,
(2)指针是包含另一个存储单元地址的双字存储单元。只能将V存储单元、L存储
单元或累加器寄存器(AC1、AC2、AC3)用作指针。
(3)要创建指针,必须使用“移动双字”指令,将间接寻址的存储单元地址移至指针位置。指针只能对以下存储区进行间接访问:I、Q、V、M、S、AI、AQ、SM、T(仅限当前值)和C(仅限当前值)﹔不能对单个的位地址、HC、L存储区和累加器进行间接寻址。
三、间接寻址使用方法
使用间接寻址的方式存取数据主要分为以下三个步骤来实现:
(1)建立指针
使用间接寻址之前,应创建一个指针。指针以双字的形式存储要访问的存储器的地址,只能用V存储器、L存储器或者累加器AC作为指针。建立指针时,用双字传送指令MOVD将需要间接寻址的存储器起始地址送到指针中。指针的输入数应该以“&”符号开头来表明存储区的地址,注意不是其内容将移动到指令的输出操作数中。
(2)指针偏移
通过加减乘除运算指令使指针偏移,比如将VD100加上4,则此时VD100指向VB4。
(3)读取指针
操作数前加“*”号,表示指令中的操作数是一个指针。
将指针指向的地址存储的数据调取处出来,通过*VD100提取数据(*是取值符),见下图,就是把VB4的值传送给VB200。
四、取值符说明
“*+指针”使用在字节的位置,访问的是指针指向地址开始的字节变量。
“*+指针”使用在字的位置,访问的是指针指向地址开始的字变量。
“*+指针”使用在双字的位置,访问的是指针指向地址开始的双字变量。
五、间接寻址案例
案例:通过指针的方式,当按下I0.1按钮时:
把VB4的值复制到VB200。
把VW10的值复制到VW300。
把VD20的值复制到VD400。
(1)建立指针
(2)将指针通过ADD_DI(加整数指令)进行加4,从而指针指向VB4,后再将VB4通过MOV_B(字节传送指令)把VB4传送给VB200。
(3)将指针通过ADD_DI(加整数指令)进行加6,从而指针指向VB10,后再将VW10通过MOV_W(字节传送指令)把VW10传送给VW300。
(4)将指针通过ADD_DI(加整数指令)进行加10,从而指针指向VB20,后再将VD20通过MOV_DW(字节传送指令)把VD20传送给VD400。
六、演示效果
通过状态图表分别把VB4、VW10、VD20写入数值
按下I0.1按钮,通过状态图表监控VB200、VW300、VD400的值是否是VB4、VW10、VD20传送过去的值。
七、间接寻址使用注意事项
(1)间接寻址指针表示大小为:32位=双字
(2)建立指针偏移时,是按照偏移数量进行累计,而不是和指针指向的起始地址进行累计。
来源:技成培训网,作者:技成-徐陈爽,未经授权不得转载!
私信回复:西门子案例,领【777个西门子案例程序】~