worker02
级别: 略有小成
精华主题: 0
发帖数量: 114 个
工控威望: 292 点
下载积分: 718 分
在线时间: 279(小时)
注册时间: 2008-08-01
最后登录: 2024-11-01
查看worker02的 主题 / 回贴
楼主  发表于: 46天前
图片:
为什么不能重复计时。问题出在那里。就只能第一次计5S。
worker02
级别: 略有小成
精华主题: 0
发帖数量: 114 个
工控威望: 292 点
下载积分: 718 分
在线时间: 279(小时)
注册时间: 2008-08-01
最后登录: 2024-11-01
查看worker02的 主题 / 回贴
1楼  发表于: 46天前
数据类型TON不是延时计时器功能吗?条件断后不是重新计时吗?
worker02
级别: 略有小成
精华主题: 0
发帖数量: 114 个
工控威望: 292 点
下载积分: 718 分
在线时间: 279(小时)
注册时间: 2008-08-01
最后登录: 2024-11-01
查看worker02的 主题 / 回贴
2楼  发表于: 46天前
已经可以了!
[ 此帖被worker02在2024-09-29 16:29重新编辑 ]
worker02
级别: 略有小成
精华主题: 0
发帖数量: 114 个
工控威望: 292 点
下载积分: 718 分
在线时间: 279(小时)
注册时间: 2008-08-01
最后登录: 2024-11-01
查看worker02的 主题 / 回贴
3楼  发表于: 46天前
图片:
IF ldp (1,Int6_重置) THEN
     亮点起始位[Temp_Counts]:=0;  Temp_Counts:=0;  当前点亮编号:=0; T_ON:=0;
  END_IF;

  IF (Int0_功能块使能) AND (Temp_Dtb) THEN
        
         Int2_开始:=TRUE;       Temp_Dtb:=FALSE;
      
  END_IF;
  Temp_LDP:=(T_ON) AND(NOT Temp_LDPS);
                        Temp_LDPS:=T_ON;            
IF Temp_LDP THEN
            
             Int2_开始:=FALSE;  T_ON:=FALSE; Temp_Dtb:=TRUE;

END_IF;

IF  (Int0_功能块使能)AND(NOT Int3_停止)THEN
          
          Timer_T (IN:=Int2_开始,PT:=Int7_间隔时间,Q:=T_ON,ET:=Out_当前点亮时间) ;

END_IF;    

IF( 当前点亮编号=0)OR(当前点亮编号=Int1_灯数长度) THEN
    
     Temp_Counts:=0;

END_IF;

IF (Int0_功能块使能)AND(当前点亮编号=Int1_灯数长度) AND (LDP(1,T_ON)) THEN
    
    亮点起始位[当前点亮编号-1]:=0; 当前点亮编号:=0;
  
END_IF;

IF (Int0_功能块使能)AND (LDP(1,Int5_更改确认))AND(Int4_随机点灯号>0 AND Int4_随机点灯号<=Int1_灯数长度) THEN
      
        Temp_Data:=Int4_随机点灯号;
      
END_IF;
(*//////////////////////////////////////////////////点亮开始 ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////*)

IF (Int0_功能块使能)AND(Int1_灯数长度>0) AND(NOT Int3_停止)AND (LDP(1,T_ON))AND(当前点亮编号<Int1_灯数长度) AND(NOT Int6_重置) THEN
    
        IF (Temp_Counts=0) AND(  当前点亮编号=0) AND  (Temp_data=0)THEN  
        
            亮点起始位[Temp_Counts]:=1;    当前点亮编号:=Temp_Counts+1;

                
        ELSE
              
              IF( Temp_Data=0) THEN
                  
                  Temp_Counts:=Temp_Counts+1;    亮点起始位[Temp_Counts]:=1;      亮点起始位[Temp_Counts-1]:=0;   当前点亮编号:=Temp_Counts+1;
                      
              ELSE
                    
                   亮点起始位[Temp_Counts]:=0;    Temp_Counts:=Temp_Data-1;        亮点起始位[Temp_Counts]:=1;         当前点亮编号:=Temp_Counts+1;
                              
                   Temp_Data:=0;
                            
                           END_IF;                
                                  
        END_IF;    
                      
END_IF;