回复:一段指针程序的分析,请帮助!

愿我能

西门子1847工业学习平台

  • 帖子

    3008
  • 精华

    7
  • 被关注

    283

论坛等级:至圣

注册时间:2009-11-06

黄金 黄金 如何晋级?

发布于 2016-11-03 21:47:31

3楼

展开查看
以下是引用矿泉水2099在2016-11-03 15:12:10的发言 >楼主

该程序来自于现场正在使用设备的备份程序,是德国员工编写的,今天设备出问题了,滑撬载码体读写错误,为了找原因被这个子程序绕了一圈,不知道自己理解的可正确?



调用块子程序如下:

      ON    #FREI_DAT_KOP               // Daten Kopierung DBQU -> DBZI Freigabe

      O     #DAT_KOP_OK                 // Kopierung DBQU -> DBZI beendet

      JC    END2


      LAR1  P##MOBY_DAT_QUELLE          // ZEIGER AUF MOBY DATEN QUELLE 

      L     B#16#10                     // SYNTAX-ID IN DEN ANY POINTER EINTRAGEN

      T     LB [AR1,P#0.0]

      L     B#16#2                      // BEREICHSTYP BYTE EINTRAGEN

      T     LB [AR1,P#1.0]

      L     #Laenge_daten_zu_uebertr    // VARIABLE ANZAHL BYTE

      T     LW [AR1,P#2.0]

      L     #DB_Quelle_Nummer           // ADRESSE QUELLE_DB LADEN

      T     LW [AR1,P#4.0]

      L     P#DBX 0.0

      L     #Zeiger_DBB_Quell_DB        // ANFANG BEREICH LESEFACH IM QUELLE_DB

      SLD   3

      +D    

      T     LD [AR1,P#6.0]              // ZEIGER AUF QUELLE (LESEFACH)


      LAR1  P##MOBY_DAT_ZIEL            // ZEIGER AUF MOBY DATEN ZIEL

      L     B#16#10                     // SYNTAX-ID IN DEN ANY POINTER EINTRAGEN

      T     LB [AR1,P#0.0]

      L     B#16#2                      // BEREICHSTYP BYTE EINTRAGEN

      T     LB [AR1,P#1.0]

      L     #Laenge_daten_zu_uebertr    // VARIABLE ANZAHL BYTE

      T     LW [AR1,P#2.0]

      L     #DB_Ziel_Nummer             // ADRESSE ZIEL_DB SCHREIBEN

      T     LW [AR1,P#4.0]

      L     P#DBX 0.0

      L     #Zeiger_DBB_Ziel_DB         // ANFANG BEREICH SCHREIBFACH IM ZIEL_DB

      SLD   3

      +D    

      T     LD [AR1,P#6.0]              // ZEIGER AUF ZIEL (SCHREIBFACH)


      CALL  "BLKMOV"

       SRCBLK :=#MOBY_DAT_QUELLE        // MOBY DATEN QUELLE

       RET_VAL:=#RET_VALUE

       DSTBLK :=#MOBY_DAT_ZIEL          // ZEIGER AUF MOBY DATEN ZIEL


      A     #FREI_DAT_KOP               // Daten Kopierung DBQU -> DBZI Freigabe 

      S     #DAT_KOP_OK                 // Kopierung DBQU -> DBZI beendet


END2: NOP   0

      AN    #FREI_DAT_KOP               // Daten Kopierung DBQU -> DBZI Freigabe 

      R     #DAT_KOP_OK                 // Kopierung DBQU -> DBZI beendet




#MOBY_DAT_QUELLE和#MOBY_DAT_ZIEL是any指针, "BLKMOV"是系统块sfc20,我想问:若#Laenge_daten_zu_uebertr是60,那么程序若条件满足时是不是复制数据块中的60个字节到另外一个区域呢?








楼主仿真一下不就知道了吗?

评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-300/400

共有54775条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

快扫描右侧二维码晒一晒吧!

再发帖或跟帖交流2条,就能晋升VIP啦!开启更多专属权限!

  • 分享

  • 只看
    楼主

top
X 图片
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。