登录
首页 PLC论坛 西门子SIEMENS
回帖 发帖
正文

主题:s7 300中 ,---(OPN)′打开数据块指令 在什么情况下使用?

点击:9205 回复:4

只要是对 数据块里的 数据进行 读写操作,都要先用这个指令打开数据块,然后在进行相应的读写操作吗?还是说,在某些特定操作时,才需要?望不吝赐教~~
13-06-09 11:14

引用 85966805 在 2013/6/9 11:14:06 发言【内容省略】

使用绝对地址寻址的情况下,无需使用OPN指令,例如:DB1.DBW0
使用相对地址寻址的情况下,需要使用OPN指令,例如OPN DB1
                                             L  DBW0
看不懂例子的话,可以去看看STL编程手册。
Good Luck~
13-06-09 11:35

引用 kachakacha 在 2013/6/9 11:35:00 发言【内容省略】

说的很详细,多谢了~
13-06-09 12:24
西门子对于寻址分为绝对寻址,相对寻址。绝对寻址入。 DB1.DBX1.0  DB1.DBB2. DB1.DBW4   是不需要用OPN指令的。比如使用相对寻址就要用OPN指令。因为西门子规定了DB1.DBW[AR1.P#0.0]这样是不允许的。只能先打开DB1,在对数据位,字节,字,双子进行操作。    OPN DB1, L DBW[AR1,P#0.0]可以同时打开一个共享数据块,一个背景数据块。举个例子吧,假如我从PIW272开始 一直到PIW286的数据读出写入DB1.的第0个字开始到14字的数据块里面。用32为指针加循环指令,就会使用OPN指令。
       LAR1 P#272.0   //装入指针272.0到地址寄存1
      LAR2 P#0.0     //装入指针0.0到地址寄存器2
      OPN DB1        //打开数据块对DB1作为共享数据块
      L 8            //载入循环次数8
FOR:   T MW100        //保存到MW100
      L PIW[AR1,P#0.0]    //载入PIW地址寄存器1,偏移0的地址,
      T DBW[AR2,P#0.0]    //载入PIW地址寄存器2,偏移0的地址,
       TAR1                //AR1 TO ACCU1
      L P#2.0       //偏移2个字节
      +D            //双字想加
      LAR1          //保存到AR1
      TAR2           //AR2 TO ACCU1
      L   P#2.0
      +D
      LAR2
      L MW100     // 载入循环次数到ACCU1
      LOOP FOR    //跳到标签FOR出循环,美循环一次对ACCU1减一,一直到0,跳出循环。
13-06-15 11:15
讲解的很详细,多谢~
13-06-17 16:33

工控新闻

更多新闻资讯