技术论坛

大家帮忙看看这一段程序是何用意?

作者 主题
至圣

经验值: 37445
发帖数: 5132
精华帖: 47
主题:【探讨】大家帮忙看看这一段程序是何用意?


只看楼主 楼主 2017-02-10 21:24:59

 

 L     P##P_Sync_P                 //Read parameter DB to the temporary memory
      LAR1 
      L     W [AR1,P#0.0]
      T     #V_Temp1
      L     D [AR1,P#2.0]
      T     #V_Temp2
      L     D [AR1,P#6.0]
      LAR1  P##V_DB_Address_Pointer//这里面是什么指针??
      T     D [AR1,P#6.0]
      L     #V_Temp2
      T     D [AR1,P#2.0]
      L     #V_Temp1
      T     W [AR1,P#0.0]

      CALL  "BLKMOV"                    //Save parameter DB content to the temporary memory
       SRCBLK :=#V_DB_Address_Pointer
       RET_VAL:=#V_SFC_RetVal
       DSTBLK :=#V_Sync_P

      L     P##P_Sync_V               
      LAR1 
      L     W [AR1,P#0.0]
      T     #V_Temp1
      L     D [AR1,P#2.0]
      T     #V_Temp2
      L     D [AR1,P#6.0]
      LAR1  P##V_DB_Address_Pointer
      T     D [AR1,P#6.0]
      L     #V_Temp2
      T     D [AR1,P#2.0]
      L     #V_Temp1
      T     W [AR1,P#0.0]

      CALL  "BLKMOV"                    //Save variable DB content to the temporary memory
       SRCBLK :=#V_DB_Address_Pointer
       RET_VAL:=#V_SFC_RetVal
       DSTBLK :=#V_Sync_V


工业起重机防摇摆 QQ:404136820 AntiSwayControl
以下网友喜欢您的帖子:

  
重要声明:

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

帖子链接:https://www.ad.siemens.com.cn/club/bbs/post.aspx?a_id=1369708&b_id=4&s_id=0&num=36

至圣

经验值: 37445
发帖数: 5132
精华帖: 47
回复:大家帮忙看看这一段程序是何用意?


只看楼主 楼主 1楼 2017-02-10 23:13:13

 我非常不理解红色字体注解部分的 LAR1  P##V_DB_Address_Pointer//这里面是什么指针??

是什么意思? 为什么要这样使用?#V_DB_Address_Pointer是一个ANY,但是没有任何地方给他赋值


工业起重机防摇摆 QQ:404136820 AntiSwayControl
以下网友喜欢您的帖子:

  
至圣

经验值: 69025
发帖数: 12257
精华帖: 59
回复:大家帮忙看看这一段程序是何用意?


只看楼主 2楼 2017-02-11 07:23:16

直接引用这个any地址啊

比如any 的地址 是p#db100.dbx0.0 byte 10

那lar1 p#any 之后ar1里面就是db100.dbx0.0

模拟测试一下就知道了啊


Q群:https://jq.qq.com/?k=9BDuEgf6
以下网友喜欢您的帖子:

  
至圣

经验值: 37445
发帖数: 5132
精华帖: 47
回复:大家帮忙看看这一段程序是何用意?


只看楼主 楼主 3楼 2017-02-11 08:38:57
以下是引用RENHQ在2017-02-11 07:23:16的发言 >2楼

直接引用这个any地址啊

比如any 的地址 是p#db100.dbx0.0 byte 10

那lar1 p#any 之后ar1里面就是db100.dbx0.0

模拟测试一下就知道了啊

如何确定这个any的地址?我奇怪的是这个any只是在temp区定议了一下,没有任何地方赋值,这个any如果确定是引用了什么地址指针?


工业起重机防摇摆 QQ:404136820 AntiSwayControl
以下网友喜欢您的帖子:

  
至圣

经验值: 37445
发帖数: 5132
精华帖: 47
回复:大家帮忙看看这一段程序是何用意?


只看楼主 楼主 4楼 2017-02-11 09:12:05

 希望各位大神指教!!



  L     P##P_Sync_P    //这里是p#DB351.DBX140.0 BYTE 32             //Read parameter DB to the temporary memory
      LAR1 
      L     W [AR1,P#0.0]
      T     #V_Temp1
      L     D [AR1,P#2.0]
      T     #V_Temp2
      L     D [AR1,P#6.0]
      LAR1  P##V_DB_Address_Pointer//这里是应该是什么?        

      T     D [AR1,P#6.0]
      L     #V_Temp2
      T     D [AR1,P#2.0]
      L     #V_Temp1
      T     W [AR1,P#0.0]

      CALL  "BLKMOV"                    //Save parameter DB content to the temporary memory
       SRCBLK :=#V_DB_Address_Pointer
       RET_VAL:=#V_SFC_RetVal
       DSTBLK :=#V_Sync_P


      L     P##P_Sync_V  //这里是p#DB351.DBX174.0 BYTE 58  //Read variable DB to the temporary memory
      LAR1 
      L     W [AR1,P#0.0]
      T     #V_Temp1
      L     D [AR1,P#2.0]
      T     #V_Temp2
      L     D [AR1,P#6.0]
      LAR1  P##V_DB_Address_Pointer//这里是应该是什么?      

      T     D [AR1,P#6.0]
      L     #V_Temp2
      T     D [AR1,P#2.0]
      L     #V_Temp1
      T     W [AR1,P#0.0]

      CALL  "BLKMOV"                    //Save variable DB content to the temporary memory
       SRCBLK :=#V_DB_Address_Pointer
       RET_VAL:=#V_SFC_RetVal
       DSTBLK :=#V_Sync_V



://逻辑代码

:逻辑代码

:逻辑代码

:

  CALL  "BLKMOV"                    //Write variables from the temporay memory back to the variable DB
       SRCBLK :=#V_Sync_V
       RET_VAL:=#V_SFC_RetVal
       DSTBLK :=#V_DB_Address_Pointer//这里是应该是什么?      

      SET  
      SAVE                              //RLO = 1

      BE   



@RENHQ
















工业起重机防摇摆 QQ:404136820 AntiSwayControl
以下网友喜欢您的帖子:

  
至圣

经验值: 69025
发帖数: 12257
精华帖: 59
回复:大家帮忙看看这一段程序是何用意?


只看楼主 5楼 2017-02-11 09:49:28
以下是引用威师爷在2017-02-11 08:38:57的发言 >

如何确定这个any的地址?我奇怪的是这个any只是在temp区定议了一下,没有任何地方赋值,这个any如果确定是引用了什么地址指针?

也没看明白

还得结合程序上下来看吧

你这是这个里面完整的程序吗?

形参怎么定义的?,全部的,I O IO temp....


Q群:https://jq.qq.com/?k=9BDuEgf6
以下网友喜欢您的帖子:

  
至圣

经验值: 37445
发帖数: 5132
精华帖: 47
回复:大家帮忙看看这一段程序是何用意?


只看楼主 楼主 6楼 2017-02-11 10:04:23
以下是引用RENHQ在2017-02-11 09:49:28的发言 >5楼

也没看明白

还得结合程序上下来看吧

你这是这个里面完整的程序吗?

形参怎么定义的?,全部的,I O IO temp....

以下是引用威师爷在2017-02-11 08:38:57的发言 >:如何确定这个any的地...

引用详细内容:

如何确定这个any的地址?我奇怪的是这个any只是在temp区定议了一下,没有任何地方赋值,这个any如果确定是引用了什么地址指针?

可以理解为是全部的程序了,中间的逻辑代码部分我看的明白,是与这个ANY没有任何关系的

下面是这个FC的调用实参,INPUT有两个参数是 ANY  P#DB351的那两个,其他的就没有了


 

下面图片是INPUT的接口参数

 

下面图片是TEMP定义

 



工业起重机防摇摆 QQ:404136820 AntiSwayControl
以下网友喜欢您的帖子:

  
至圣

经验值: 37445
发帖数: 5132
精华帖: 47
回复:大家帮忙看看这一段程序是何用意?


只看楼主 楼主 7楼 2017-02-11 10:06:57
以下是引用RENHQ在2017-02-11 09:49:28的发言 >5楼

也没看明白

还得结合程序上下来看吧

你这是这个里面完整的程序吗?

形参怎么定义的?,全部的,I O IO temp....

以下是引用威师爷在2017-02-11 08:38:57的发言 >:如何确定这个any的地...

引用详细内容:

如何确定这个any的地址?我奇怪的是这个any只是在temp区定议了一下,没有任何地方赋值,这个any如果确定是引用了什么地址指针?

LAR1  P##V_DB_Address_Pointer//这里是不是应该就是P#DB351.DBX??


这个P##V_DB_Address_Pointer、、ANY是不是直接引用了L     P##P_Sync_P的ANY?


工业起重机防摇摆 QQ:404136820 AntiSwayControl
以下网友喜欢您的帖子:

  
至圣

经验值: 69025
发帖数: 12257
精华帖: 59
回复:大家帮忙看看这一段程序是何用意?


只看楼主 8楼 2017-02-11 10:37:45
以下是引用威师爷在2017-02-11 10:06:57的发言 >

LAR1  P##V_DB_Address_Pointer//这里是不是应该就是P#DB351.DBX??


这个P##V_DB_Address_Pointer、、ANY是不是直接引用了L     P##P_Sync_P的ANY?

      L     P##P_Sync_P    //这里是P_Sync_P 地址的指针,db351.dbx140.0

      LAR1  

      L     W [AR1,P#0.0]

      T     #V_Temp1    //V_Temp1  = db153.dbw140

      L     D [AR1,P#2.0]

      T     #V_Temp2     //V_Temp2  = db153.dbd142

      L     D [AR1,P#6.0]    //acc1 = db153.dbd146

      LAR1  P##V_DB_Address_Pointer //ar1 = 96.0        

      T     D [AR1,P#6.0] //db351.dbd146,送到LD102里面

      L     #V_Temp2

      T     D [AR1,P#2.0]    //ld98 = db153.dbw142

      L     #V_Temp1

      T     W [AR1,P#0.0]    //lw96 = db153.dbw140

      CALL  "BLKMOV"                    //Save parameter DB content to the temporary memory

       SRCBLK :=#V_DB_Address_Pointer

       RET_VAL:=#V_SFC_RetVal

       DSTBLK :=#V_Sync_P



"BLKMOV" 这个我没怎么用过,具体看不出来啥意思...你看看这样理解对不对



Q群:https://jq.qq.com/?k=9BDuEgf6
以下网友喜欢您的帖子:

  
至圣

经验值: 37445
发帖数: 5132
精华帖: 47
回复:大家帮忙看看这一段程序是何用意?


只看楼主 楼主 9楼 2017-02-11 10:53:53
以下是引用RENHQ在2017-02-11 10:37:45的发言 >8楼

      L     P##P_Sync_P    //这里是P_Sync_P 地址的指针,db351.dbx140.0

      LAR1  

      L     W [AR1,P#0.0]

      T     #V_Temp1    //V_Temp1  = db153.dbw140

      L     D [AR1,P#2.0]

      T     #V_Temp2     //V_Temp2  = db153.dbd142

      L     D [AR1,P#6.0]    //acc1 = db153.dbd146

      LAR1  P##V_DB_Address_Pointer //ar1 = 96.0        

      T     D [AR1,P#6.0] //db351.dbd146,送到LD102里面

      L     #V_Temp2

      T     D [AR1,P#2.0]    //ld98 = db153.dbw142

      L     #V_Temp1

      T     W [AR1,P#0.0]    //lw96 = db153.dbw140

      CALL  "BLKMOV"                    //Save parameter DB content to the temporary memory

       SRCBLK :=#V_DB_Address_Pointer

       RET_VAL:=#V_SFC_RetVal

       DSTBLK :=#V_Sync_P



"BLKMOV" 这个我没怎么用过,具体看不出来啥意思...你看看这样理解对不对


以下是引用威师爷在2017-02-11 10:06:57的发言 >:LAR1  P##V_D...

引用详细内容:

LAR1  P##V_DB_Address_Pointer//这里是不是应该就是P#DB351.DBX??


这个P##V_DB_Address_Pointer、、ANY是不是直接引用了L     P##P_Sync_P的ANY?

DB153?应该是DB351吧?


工业起重机防摇摆 QQ:404136820 AntiSwayControl
以下网友喜欢您的帖子:

  
至圣

经验值: 37445
发帖数: 5132
精华帖: 47
回复:大家帮忙看看这一段程序是何用意?


只看楼主 楼主 10楼 2017-02-11 10:55:57

BLKMOV是SFC20


工业起重机防摇摆 QQ:404136820 AntiSwayControl
以下网友喜欢您的帖子:

  
至圣

经验值: 69025
发帖数: 12257
精华帖: 59
回复:大家帮忙看看这一段程序是何用意?


只看楼主 11楼 2017-02-11 11:10:16
以下是引用威师爷在2017-02-11 10:53:53的发言 >

DB153?应该是DB351吧?

嗯嗯,以疏忽输入错误,然后其他都是复制的

我知道这个块,就是说没用过这个功能,不研究了这段程序的详细作用了...


Q群:https://jq.qq.com/?k=9BDuEgf6
以下网友喜欢您的帖子:

  
至圣

经验值: 37445
发帖数: 5132
精华帖: 47
回复:大家帮忙看看这一段程序是何用意?


只看楼主 楼主 12楼 2017-02-11 12:51:34
以下是引用RENHQ在2017-02-11 11:10:16的发言 >11楼

嗯嗯,以疏忽输入错误,然后其他都是复制的

我知道这个块,就是说没用过这个功能,不研究了这段程序的详细作用了...

以下是引用威师爷在2017-02-11 10:53:53的发言 >:DB153?应该是DB3...

引用详细内容:

DB153?应该是DB351吧?

这个程序是芬兰人写的,只是偶然看到了,搞不明白是什么意思,我感觉这个程序只是一个障眼法,感觉这一段程序在这个FC里面根本就起不到什么作用,如果是96.0就解释不通了,




工业起重机防摇摆 QQ:404136820 AntiSwayControl
以下网友喜欢您的帖子:

  
至圣

经验值: 37445
发帖数: 5132
精华帖: 47
回复:大家帮忙看看这一段程序是何用意?


只看楼主 楼主 13楼 2017-02-11 14:17:22

 希望各位大神指教!!



  L     P##P_Sync_P    //这里是p#DB351.DBX140.0 BYTE 32             //Read parameter DB to the temporary memory
      LAR1 
      L     W [AR1,P#0.0] //这里应该是 ANY指针的BYTE0  BYTE1 是数据类型BOOL  (是P##P_Sync_P指针的数据类型)
      T     #V_Temp1 
      L     D [AR1,P#2.0]//这里应该是 ANY指针的的数据长度与DB号  (是P##P_Sync_P指针的数据长度与DB号)      T     #V_Temp2
      L     D [AR1,P#6.0]
      LAR1  P##V_DB_Address_Pointer//那么这个时候 P##V_DB_Address_Pointer 应该是DB351.DBX140.0 BYTE 32    

      T     D [AR1,P#6.0] //把P##P_Sync_P指针的6-9BYTE复制到P##V_DB_Address_Pointer的6-9ANY BYTE是140.0

      L     #V_Temp2
      T     D [AR1,P#2.0]
      L     #V_Temp1
      T     W [AR1,P#0.0]

      CALL  "BLKMOV"                    //Save parameter DB content to the temporary memory
       SRCBLK :=#V_DB_Address_Pointer//这个时候:#V_DB_Address_Pointer应该是等同于P##P_Sync_P  是DB351.DBX140.0 BYTE 32   

       RET_VAL:=#V_SFC_RetVal
       DSTBLK :=#V_Sync_P //把DB351.DB140.0 BYTE 32 个BYTE复制到:=#V_Sync_P


      L     P##P_Sync_V  //这里是p#DB351.DBX174.0 BYTE 58  //Read variable DB to the temporary memory
      LAR1 
      L     W [AR1,P#0.0]
      T     #V_Temp1
      L     D [AR1,P#2.0]
      T     #V_Temp2
      L     D [AR1,P#6.0]
      LAR1  P##V_DB_Address_Pointer//  那么这个时候 P##V_DB_Address_Pointer 应该是DB351.DBX174.0 BYTE 58       

      T     D [AR1,P#6.0]
      L     #V_Temp2
      T     D [AR1,P#2.0]
      L     #V_Temp1
      T     W [AR1,P#0.0]

      CALL  "BLKMOV"                    //Save variable DB content to the temporary memory
       SRCBLK :=#V_DB_Address_Pointer//  那么这个时候 P##V_DB_Address_Pointer 应该是DB351.DBX174.0 BYTE 58       

       RET_VAL:=#V_SFC_RetVal
       DSTBLK :=#V_Sync_V//把DB351.DBX174.0 BYTE 58个BYTE复制到:=#V_Sync_V



://逻辑代码

:逻辑代码

:逻辑代码

:

  CALL  "BLKMOV"                    //Write variables from the temporay memory back to the variable DB
       SRCBLK :=#V_Sync_V//是一个58BYTE的数据结构
       RET_VAL:=#V_SFC_RetVal
       DSTBLK :=#V_DB_Address_Pointer//  把:#V_Sync_V 的58个BYTE结构复制到DB351.DBX174.0 BYTE 58里面

      SET  
      SAVE                              //RLO = 1

      BE   


 





各位老师帮忙看看是不是这个意思?希望大家踊跃讨论!!



 


工业起重机防摇摆 QQ:404136820 AntiSwayControl
以下网友喜欢您的帖子:

  
至圣

经验值: 37445
发帖数: 5132
精华帖: 47
回复:大家帮忙看看这一段程序是何用意?


只看楼主 楼主 14楼 2017-02-11 14:21:09

 这个问题好像参与讨论的人很少呀!


工业起重机防摇摆 QQ:404136820 AntiSwayControl
以下网友喜欢您的帖子:

  
侠圣

经验值: 3599
发帖数: 564
精华帖: 0
回复:大家帮忙看看这一段程序是何用意?


只看楼主 15楼 2017-02-11 16:48:36

v_sync_v和v_sync_p怎么在接口参数看不到?


学无止境
以下网友喜欢您的帖子:

  
至圣

经验值: 69025
发帖数: 12257
精华帖: 59
回复:大家帮忙看看这一段程序是何用意?


只看楼主 16楼 2017-02-11 19:55:04
以下是引用威师爷在2017-02-11 12:51:34的发言 >

这个程序是芬兰人写的,只是偶然看到了,搞不明白是什么意思,我感觉这个程序只是一个障眼法,感觉这一段程序在这个FC里面根本就起不到什么作用,如果是96.0就解释不通了,



看程序是比较费劲的

比编一个程序用的时间可能还得多

而且不了解工艺,看起来更麻烦


Q群:https://jq.qq.com/?k=9BDuEgf6
以下网友喜欢您的帖子:

  
至圣

经验值: 37445
发帖数: 5132
精华帖: 47
回复:大家帮忙看看这一段程序是何用意?


只看楼主 楼主 17楼 2017-02-11 19:55:49
以下是引用LJCLWYF在2017-02-11 16:48:36的发言 >15楼

v_sync_v和v_sync_p怎么在接口参数看不到?

v_sync_v和v_sync_p是在TEMP区定义的STRUCT 所以是在FC的本地区域定义的,不是INPUT参数


工业起重机防摇摆 QQ:404136820 AntiSwayControl
以下网友喜欢您的帖子:

  
至圣

经验值: 37445
发帖数: 5132
精华帖: 47
回复:大家帮忙看看这一段程序是何用意?


只看楼主 楼主 18楼 2017-02-11 20:00:53
以下是引用RENHQ在2017-02-11 19:55:04的发言 >16楼

看程序是比较费劲的

比编一个程序用的时间可能还得多

而且不了解工艺,看起来更麻烦

以下是引用威师爷在2017-02-11 12:51:34的发言 >:这个程序是芬兰人写...

引用详细内容:

这个程序是芬兰人写的,只是偶然看到了,搞不明白是什么意思,我感觉这个程序只是一个障眼法,感觉这一段程序在这个FC里面根本就起不到什么作用,如果是96.0就解释不通了,



我大概的理解为什么要这样使用了,这样使用的目的是把INPUT的ANY通过本地的ANY——P##V_DB_Address_Pointer中转一下才可以使用,因为在FC是不能直接把INPUT的ANY写入SFC20的ANY复制区域的所以使用了这个本地数据中转一下


工业起重机防摇摆 QQ:404136820 AntiSwayControl
以下网友喜欢您的帖子:

  
至圣

经验值: 37445
发帖数: 5132
精华帖: 47
回复:大家帮忙看看这一段程序是何用意?


只看楼主 楼主 19楼 2017-02-11 20:05:53

 这个程序应该与工艺没有什么关系,只是如何把ANY地址指针传递给另外一个ANY地址指针。今天看了一整天刚刚才有一点眉目。因为FC392调用了SFC20 ,由于实际参数是给FC392的SFC20不能直接使用FC392的ANY,所以要在FC392里面把INPUT 的ANY中转到FC392的 TEMP 本地数据区,然后SFC20再使用TEMP本地数据区的ANY,这样就等同于使用FC392的INPUT的ANY是一样的地址指针


工业起重机防摇摆 QQ:404136820 AntiSwayControl
以下网友喜欢您的帖子:

  
收起
大家帮忙看看这一段程序是何用意?
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。