您现在所在的是:

西门子SIEMENS

回帖:2个,阅读:603 [上一页] [1] [下一页]
* 帖子主题:

这段程序什么意思

621
lankanglun
文章数:3
年度积分:50
历史总积分:621
注册时间:2014/8/25
发站内信
发表于:2014/8/25 18:37:42
#0楼
     OPN   "DI"
     CALL  "BLKMOV"
      SRCBLK :=P#I 0.0 BYTE 12
      RET_VAL:="SFC20_RET_1"
      DSTBLK :=P#DBX 0.0 BYTE 12
     OPN   "AI"
     L     P#256.0
     LAR1  
     L     P#0.0
     LAR2  
     L     64
C1:   T     "AI_Cycle1_No"
     L     PIW [AR1,P#0.0]
     T     DBW [AR2,P#0.0]
     +AR1  P#2.0
     +AR2  P#2.0
     L     "AI_Cycle1_No"
     LOOP  C1
37605
cvlsam 版主
文章数:12429
年度积分:216
历史总积分:37605
注册时间:2001/12/22
发站内信
2018论坛贡献奖
2017论坛贡献奖
2016论坛贡献奖
2015论坛贡献奖
2013论坛贡献奖
2012论坛贡献奖
2011论坛贡献奖
2011国庆活动
2010论坛杰出贡献奖
发表于:2014/8/25 19:57:02
#1楼

     OPN   "DI"
     CALL  "BLKMOV"                  //调用SFC20块复制,将IB0~IB11的数据依次送入DBB0~DBB11
      SRCBLK :=P#I 0.0 BYTE 12
      RET_VAL:="SFC20_RET_1"
      DSTBLK :=P#DBX 0.0 BYTE 12
     OPN   "AI"                      //开启符号名为AI的数据块
     L     P#256.0
     LAR1                           //模拟量模块通道的首地址装入地址寄存器1
     L     P#0.0
     LAR2                           //目标地址装入地址寄存器2
     L     64                       //装入循环次数64次
C1:   T     "AI_Cycle1_No"
     L     PIW [AR1,P#0.0]
     T     DBW [AR2,P#0.0]         //将地址寄存器1指向的地址中存储的数据复制到地址寄存器2中指向的地址
     +AR1  P#2.0
     +AR2  P#2.0                  //分别移动地址寄存器对应的指向
     L     "AI_Cycle1_No"
     LOOP  C1                    //循环变量-1,如果循环变量不为0,那么就继续循环。


如果你有看过C语言中字符串复制的原理,那么上述内容一看就明白了,通过2个指针复制。
源指针指向于要复制的数据,目标指针指向与复制后存储的区域,然后分别移动这两个指针。

Good Luck~
640
dt01a
文章数:16
年度积分:50
历史总积分:640
注册时间:2014/8/26
发站内信
发表于:2014/8/26 21:41:21
#2楼
回复 #1楼 cvlsam
高手啊。一般人看不懂

关于我们 | 联系我们 | 广告服务 | 本站动态 | 友情链接 | 法律声明 | 非法和不良信息举报

工控网客服热线:0755-86369299
版权所有 工控网 Copyright©2025 Gkong.com, All Rights Reserved

62.4004