这个FC里面的TAR1 TAR2 LAR1 LAR2 这样使用有什么意义?

已锁定

威师爷

  • 帖子

    5108
  • 精华

    47
  • 被关注

    255

论坛等级:至圣

注册时间:2013-09-18

普通 普通 如何晋级?

这个FC里面的TAR1 TAR2 LAR1 LAR2 这样使用有什么意义?

3074

6

2019-04-06 13:21:30

大家好!

对一个老外编写的FC块有疑问,疑问如下:

在该FC的TEMP区域定义了两个临时变量   BufferAR1,  BufferAR1  这两个变量在程序开始的地方NW1 

进行了如下红色字体的操作 TAR1/2 在程序段4进行了LAR1/2的操作 ,那么这里有一个疑问,TEMP数据地址没有先赋值就使用这样是什么情况? 完整的程序代码如下 请各位看一看 这个BufferAR1 BufferAR2在程序中的使用目的是什么?

备注:我在该FC对 BufferAR1 BufferAR2 进行了//注释掉,也就是不使用这两条指令,进行了仿真,好像也可以达到同样的效果,请大家说说吧!!






VAR_INPUT
  Data_DB : BLOCK_DB ; //Area_Selection_DB
  Number_Of_Buttons : INT ; //Number of buttons on screen - Loop counter
  Job : INT ; //1=FeedP,2=MixP,3=MixD,4=RecastP,5=RecastD,6=StackP,7=StackD
  Check_Prohibited_areas : BOOL ; //"1" means check prohibited areas
END_VAR
VAR_IN_OUT
  Set_Button : BOOL ; //Set-button from panel
END_VAR
VAR_TEMP
  Loop_counter1 : INT ; 
  Loop_counter2 : INT ; 
  Loop_counter3 : INT ; 
  Loop_counter4 : INT ; 
  Job_area_temp : INT ; 
  Prohibited_area_temp : INT ; 
  BufferAR1 : DWORD ; //在这里定义了临时数据区
  BufferAR2 : DWORD ; //在这里定义了临时数据区

END_VAR
BEGIN
NETWORK  1 
TITLE =Reset old selection


      AN    #Set_Button;
      JC    end;

      TAR1  #BufferAR1; //第一次在这里使用了TAR1  
      TAR2  #BufferAR2; //第一次在这里使用了TAR2

      L     #Job;
      L     1;
      -I    ;
      T     #Job_area_temp;

      L     #Job;
      L     1;
      -I    ;
      T     #Prohibited_area_temp;

NETWORK  2
TITLE =Set new selection to DB


      L     P#0.0;
      LAR1  ;
      L     #Job_area_temp;
      +D    ;
      LAR1  ;

      L     P#0.0;
      LAR2  ;
      L     7;
      +D    ;
      LAR2  ;
//Search 1 from button pointer and if 1 then transfer to job pointer
      L     #Number_Of_Buttons;
loo2: T     #Loop_counter2;
      OPN   #Data_DB;
      A     DBX [AR2,P#0.0];
      JCN   job;
      S     DBX [AR1,P#0.0];

job:  NOP   0;
      L     P#2.0;
      +AR1  ;
      L     P#2.0;
      +AR2  ;

      L     #Loop_counter2;
      LOOP  loo2;
      NOP   0;

NETWORK   3
TITLE =Check prohibited area

      AN    #Check_Prohibited_areas;
      JC    bln; //jump End of the network
      L     P#0.0; //introduce a pointer 1
      LAR1  ;
      L     #Job_area_temp;
      +D    ;
      LAR1  ;

      L     P#DBX 1.0; //introduce a pointer 2
      LAR2  ;
      L     #Prohibited_area_temp;
      +D    ;
      LAR2  ;
//Search 1 from button pointer and if 1 then transfer to job pointer
      L     #Number_Of_Buttons;
loo4: T     #Loop_counter4;
      A     DBX [AR2,P#0.0];
      JCN   job1;
      R     DBX [AR1,P#0.0];
job1: NOP   0;
      L     P#2.0;
      +AR1  ;

      L     P#2.0;
      +AR2  ;

      L     #Loop_counter4;
      LOOP  loo4;
      NOP   0;

bln:  NOP   0;

NETWORK   4
TITLE =Clear buttons

      OPN   #Data_DB;
      L     P#0.0; //introduce a pointer 1
      LAR1  ;
      L     7;
      +D    ;
      LAR1  ;
      L     #Number_Of_Buttons;
loo3: T     #Loop_counter3;
      R     DBX [AR1,P#0.0]; //reset pointer 1
      L     P#2.0;
      +AR1  ;


      L     #Loop_counter3;
      LOOP  loo3;
      LAR1  #BufferAR1; //第二次在这里使用了LAR1 

      LAR2  #BufferAR2;//第二次在这里使用了LAR2

end:  NOP   0;
      R     #Set_Button;

END_FUNCTION


这个FC里面的TAR1 TAR2 LAR1 LAR2 这样使用有什么意义? 已锁定
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-300/400

共有54763条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

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

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

  • 分享

  • 只看
    楼主

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