请教关于计数器,定时器设定值的相关问题

计数器,定时器设定值设置方法有三种:1常数直接设置2寄存器间接设定3用指针(*VD,*LD,*AC)间接设定。我想请教指针间接设定的用法,哪些地方要用到这个?请举例

最佳答案

用指针对S7--200存储区间接寻址:
 间接寻址是指用指针来访问存储区数据。指针以双字的形式存储其它存储区的地址。只能用V存储
 器、L存储器或者累加器寄存器(AC1、AC2、AC3)作为指针。要建立一个指针,必须以双字的形
 式,将需要间接寻址的存储器地址移动到指针中。指针也可以作为参数传递到子程序中。
 S7--200允许指针访问以下存储区: I、Q、V、M、S、AI、AQ、SMT(仅限于当前值)和C(仅限
 于当前值)。您无法用间接寻址的方式访问单独的位,也不能访问HC或者L存储区。
 要使用间接寻址,您应该用“&”符号加上要访问的存储区地址来建立一个指针。指令的输入操作数
 应该以“&”符号开头来表明是存储区的地址,而不是其内容将移动到指令的输出操作数(指针)
 中。
 当指令中的操作数是指针时,应该在操作数前面加上“*”号。如图4--11所示,输入*AC1指定AC1
 是一个指针,MOVW指令决定了指针指向的是一个字长的数据。在本例中,存储在VB200和VB201
 中的数值被移动到累加器AC0中。
 按照所访问的数据长度使用不同的指令:当访问字节时,使用增加指令使指针值加1;当访问字或
 者计数器、定时器的当前值时,用加法或者增加指令使指针值加2;当访问双字时,使用加法或者
 增加指令使指针值加4。
 本例中用LD10作为VB0的地址指针。然后可以利用VD1004中存储的地址偏移量来改变指针值。经过改变后,LD10指向
 V区中的另外一个地址(VB0+偏移量)。然后将LD10指向的V区地址中存储的数值复制到VB1900中。通过改变
 VD1004中的数值,您可以访问V存储器中的任意单元
 Network1 /如何利用偏移量访问
 //V存储器中的任意单元:
 //
 //1. 将V区的起始地址装载到指针中。
 //2. 将偏移量加到指针上。
 //3. 将V存储器中的数值复制到
 //VB1900中。
 //
 LD SM0.0
 MOVD &VB0, LD10
 +D VD1004, LD10
 MOVB *LD10, VB1900

 用指针访问数据表的例子程序
 本例中用LD14作为指向一个配方表的指针,配方表的起始地址为VB100。在本例中VW1008用来存储一个指定的配方在
 表中的索引号。如果每条配方的长度为50个字节,则用这个索引号乘以50就可以得到这条配方起始地址的偏移量。用指
 针加上偏移量,您就可以访问表中的每一条配方。在本例中,配方被复制到从VB1500开始的50个字节中。
 Network1 //如何从配方表中传递一条配方:
 // -- 每条配方的长度为50个字节。
 // -- 索引值(VW1008)指定装载哪一条配方。
 //
 //1. 建立一个指针指向配方表的起始地址。
 //2. 将配方的索引值转换为双字。
 //3. 乘以每条配方的长度算出偏移量。
 //4. 将偏移量加到指针上。
 //5. 将配方传递至VB1500到VB1549中。
 LD SM0.0
 MOVD &VB100, LD14
 ITD VW1008, LD18
 *D +50, LD18
 +D LD18, LD14
 BMB *LD14, VB1500, 50

提问者对于答案的评价:
OK

原创文章,作者:ximenziask,如若转载,请注明出处:https://www.zhaoplc.com/plc356796.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2021年7月5日
下一篇 2021年7月5日

相关推荐

发表回复

登录后才能评论