电子开发网

电子开发网电子设计 | 电子开发网Rss 2.0 会员中心 会员注册
搜索: 您现在的位置: 电子开发网 >> 电子开发 >> 梯形图实例 >> 正文

西门子PLC S7-200SMART间接寻址使用技巧  指针用法

作者:佚名    文章来源:本站原创    点击数:    更新时间:2023/7/18

西门子S7-200SMART PLC来说,寻址可分为直接寻址和间接寻址,直接寻址就是直接对数据进行赋值,那么间接寻址主要是用于什么地方?直接寻址与间接寻址它们之间有何区别?下面就带大家来学习间接寻址使用。

一、直接寻址与间接寻址区别

直接寻址就是直接对数据进行赋值,间接寻址主要用于需要在程序中修改地址的场合,特别是处理数据内容比较多的情况,使用间接寻址编程灵活,节省程序空间。

方式不同:

1、直接寻址:在指令格式的地址的字段中直接指出操作数在内存的地址。

2、间接寻址:指令地址字段的形式地址D不是操作数的真正地址,而是操作数地址的指示器,或者说是D单元的内容才是操作数的有效地址。

特点不同:

1、直接寻址:操作数的地址直接给出而不需要经过某种变换,在指令中直接给出参与运算的操作数及运算结果所存放的主存地址,即在指令中直接给出有效地址。

2、间接寻址:需要以寄存器符号的形式来表示,且在寄存器名称前面加上间接寻址符号“*”。

二、间接寻址说明

(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)建立指针偏移时,是按照偏移数量进行累计,而不是和指针指向的起始地址进行累计。

Tags:间接寻址,smart,西门子PLC  
责任编辑:admin
请文明参与讨论,禁止漫骂攻击,不要恶意评论、违禁词语。 昵称:
1分 2分 3分 4分 5分

还可以输入 200 个字
[ 查看全部 ] 网友评论
推荐文章
最新推荐
关于我们 - 联系我们 - 广告服务 - 友情链接 - 网站地图 - 版权声明 - 在线帮助 - 文章列表
返回顶部
刷新页面
下到页底
晶体管查询