回复:关于ANY类型参数用法的一道题

虎虎哥仗剑走天涯

  • 帖子

    49
  • 精华

    0
  • 被关注

    18

论坛等级:侠客

注册时间:2013-08-02

普通 普通 如何晋级?

发布于 2016-11-14 15:42:58

13楼

OB1程序:

 L     P##Total

      LAR1  

      L     B#16#10

      T     B [AR1,P#0.0]

      L     B#16#5

      T     B [AR1,P#1.0]

      L     20

      T     W [AR1,P#2.0]

      L     B#16#1

      T     W [AR1,P#4.0]

      L     B#16#0

      T     D [AR1,P#6.0]


      L     P##Odd

      LAR1  

      L     B#16#10

      T     B [AR1,P#0.0]

      L     B#16#5

      T     B [AR1,P#1.0]

      L     20

      T     W [AR1,P#2.0]

      L     B#16#2

      T     W [AR1,P#4.0]

      L     B#16#0

      T     D [AR1,P#6.0]


      L     P##Even

      LAR1  

      L     B#16#10

      T     B [AR1,P#0.0]

      L     B#16#5

      T     B [AR1,P#1.0]

      L     20

      T     W [AR1,P#2.0]

      L     B#16#3

      T     W [AR1,P#4.0]

      L     B#16#0

      T     D [AR1,P#6.0]


      CALL  FC     1

       Total:=#Total

       Odd  :=#Odd

       Even :=#Even

定义3个Any指针


FC1:

 L     P##Total

      LAR1  

      L     B [AR1,P#1.0]

      T     #Total_DB_Type

      L     W [AR1,P#2.0]

      T     #Total_DB_Quantity

      L     W [AR1,P#4.0]

      T     #Total_DB_Number

      L     D [AR1,P#6.0]

      T     #Total_DB_StartAddress


      L     P##Odd

      LAR1  

      L     B [AR1,P#1.0]

      T     #Odd_DB_Type

      L     W [AR1,P#2.0]

      T     #Odd_DB_Quantity

      L     W [AR1,P#4.0]

      T     #Odd_DB_Number

      L     D [AR1,P#6.0]

      T     #Odd_DB_StartAddress


      L     P##Even

      LAR1  

      L     B [AR1,P#1.0]

      T     #Even_DB_Type

      L     W [AR1,P#2.0]

      T     #Even_DB_Quantity

      L     W [AR1,P#4.0]

      T     #Even_DB_Number

      L     D [AR1,P#6.0]

      T     #Even_DB_StartAddress

解析3个Any指针

      L     #Total_DB_StartAddress

      LAR1  

      L     #Odd_DB_StartAddress

      LAR2  

      L     #Total_DB_Quantity

Nex1: T     #CycleCount

      OPN   DB [#Total_DB_Number]

      L     DBW [AR1,P#0.0]

      L     2

      /I    

      T     LD    30

      A(    

      L     #Remainder

      L     0

      ==I   

      )     

      JC    M001

      L     DBW [AR1,P#0.0]

      OPN   DB [#Odd_DB_Number]

      T     DBW [AR2,P#0.0]

      +AR2  P#2.0

M001: NOP   0

      +AR1  P#2.0

      L     #CycleCount

      LOOP  Nex1

//提取奇数

 L     #Total_DB_StartAddress

      LAR1  

      L     #Even_DB_StartAddress

      LAR2  

      L     #Total_DB_Quantity

Nex2: T     #CycleCount

      OPN   DB [#Total_DB_Number]

      L     DBW [AR1,P#0.0]

      L     2

      /I    

      T     LD    30

      A(    

      L     #Remainder

      L     0

      ==I   

      )     

      JCN   M002

      L     DBW [AR1,P#0.0]

      OPN   DB [#Even_DB_Number]

      T     DBW [AR2,P#0.0]

      +AR2  P#2.0

M002: NOP   0

      +AR1  P#2.0

      L     #CycleCount

      LOOP  Nex2

//提取偶数




测试:

      L     1

      T     MW     0

      L     0

      T     MD    10


      OPN   DB     1

      L     20

Next: T     MD    20


      L     MW     0

      T     DBW [MD 10]


      L     MW     0

      L     1

      +I    

      T     MW     0


      L     MD    10

      L     2

      SLW   3

      +I    

      T     MD    10

      L     MD    20

      LOOP  Next

在DB1中填写1-20 20个整数

  

DB2中是提取的奇数

DB3中是提取的偶数


评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-300/400

共有54622条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

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

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

  • 分享

  • 只看
    楼主

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