技成培训网 技成学习APP 技成工具箱 技成企业服务

欢迎回到技成培训网

技成培训网

电工题库宝典

技成电工课堂

PLC练习题

技成PLC课堂

变频器故障查询

技成PLC学吧

伺服驱动故障查询

技成PLC网校

当前位置:技成首页 > 文章中心 > 技成百科 > 帮忙看一下程序S7300

帮忙看一下程序S7300

刘玉蓉 发布于2014-11-07 17:36 151 0 标签:

L     DBNO
  T     #final_ETR_db_num_int   //此时FB中的变量
另一段:   LAR1  P##pointer_to_final_ETR //  将此指针送到AR1中
  AD    DW#16#FFFFFF//这段并么给ACCU1赋值,ACCU1的值仍然保持在上一段给的DBN0
   L     W#16#1002//放入ACCU1,上一段与操作的结果进入ACCU2了吗?
   T     LW [AR1,P#0.0]//这个只将ACCU1的值给AR1中地址吗?
      L     #NumberOfBytes
      T     LW [AR1,P#2.0]
      L     #final_ETR_db_num_int
      T     LW [AR1,P#4.0]
      L     DW#16#84000000
      T     LD [AR1,P#6.0]
问题:段中的DBN0是什么意思?我只见过DBD,DBX,DBW
AD与操作是谁跟谁与?

问题补充:
整个是在构建POINTER,请问什么事POINTER?

佳答案

程序中在引用局部变量是,如果在块的变量声明表中有这个符号名,STEP7 会自动在局部变量名之前加”#“;如果有访问与局部变量名重名的全局变量(在符号表内声明),则必须使用双引号,否则编辑器会自动在符号前加上”#“号,作为局部变量用;所以段中的DBNO前没有”#“号,应该是共享数据块编号的意思(Data No)
AD 是将累加器1中的值(实际上是DBNO)与双字DW#16#FFFFFF进行”与“操作,由于该双字每位全为”1“,实际上累加器1(ACCU1)中值没有变化,仍然是DBNO;
你的这段程序是利用装入指令L(将功能块FB中暂态变量的数值传送到累加器1)和传送指令T(再将累加器1中的数值通过寄存器间接寻址传送到本地数据(L)。通过地址寄存器,可以对各存储区的存储器内容实行寄存器间接寻址。地址寄存器(AR1)的内容加上偏移量形成地址指针(POINTER),该指针指向数值所在的存储单元。地址寄存器及偏移量必须写在方括号[ ]内。寄存器间接寻址的语句不改变地址寄存器中的数值。用寄存器指针访问一个字节、字或双字时,必须保证地址指针中的位地址编号为0。
如 T     LD [AR1,P#6.0] // 是将累加器1(AR1)加偏移量(指针值P#6.0=2#0000 0000 0000 0000 0000 0000 0011 0 000指明的本地数据(L)双字LD。
注:本地数据(又称本地数据寄存器)用来存储逻辑块(OB、FB、FC)中所使用的临时数据,一般用作中间暂存器。由于这些数据实际存放在本地数据堆栈)又称L堆栈中,因此逻辑块执行结束时,数据自然丢失。

若有收获,就点个赞吧!

文章来源于网络及文献如有侵权请联系站长
分享到:

微信扫一扫分享

阅读与本文标签相同的文章

相关推荐

最新文章 热门文章
最新课程 免费课程
PLC资料下载 电工电气资料下载
应用新秀
变频器故障代码查询APP
伺服故障代码查询APP
技成
手机APP
热门标签