pc8mcu
級別: 探索解密
精華主題: 0
發(fā)帖數(shù)量: 50 個
工控威望: 149 點
下載積分: 840 分
在線時間: 18(小時)
注冊時間: 2014-11-13
最后登錄: 2020-04-12
查看pc8mcu的 主題 / 回貼
樓主  發(fā)表于: 2015-11-10 21:32
TON_1(IN:= NOT TON_1.Q ,PT:= TIME#1S ); (*定義一個1S定時器*)

IF TON_1.Q  THEN (*定時時間到,D0++,D0大于10,那么清零*)
    D0 := D0 + 1;
    IF  D0>10 THEN
        D0 := 0;
    END_IF;
  
    IF D0 := 2 THEN
         Y0:=FALSE;
   END_IF;

   IF D0:=8 THEN
       Y0:=TRUE;
  END_IF;

END_IF;

以上ST語句編譯通過,但定時器似乎不起左右,因為在2,7控制Y0口不起作用,,麻煩幫看一下,在下先謝謝了,!
pc8mcu
級別: 探索解密
精華主題: 0
發(fā)帖數(shù)量: 50 個
工控威望: 149 點
下載積分: 840 分
在線時間: 18(小時)
注冊時間: 2014-11-13
最后登錄: 2020-04-12
查看pc8mcu的 主題 / 回貼
1樓  發(fā)表于: 2015-11-11 08:39
沒錯,樓上將多情況跳轉(zhuǎn)用  CASE  ,這有點像C, C++

還是講清楚上問題,用的是GW-Work2 環(huán)境選的是 FX2  ST結(jié)構(gòu)化語言
   剛開始TON_1()系統(tǒng)出錯,后來在左邊原件FB-模塊中選TON 彈出對話框,進(jìn)行注冊O(shè)K即可用上
可用上面語句了,,但定時器不起作用,啥原因,請教了
pc8mcu
級別: 探索解密
精華主題: 0
發(fā)帖數(shù)量: 50 個
工控威望: 149 點
下載積分: 840 分
在線時間: 18(小時)
注冊時間: 2014-11-13
最后登錄: 2020-04-12
查看pc8mcu的 主題 / 回貼
2樓  發(fā)表于: 2015-11-11 08:59
TON_1(IN:= NOT TON_1.Q ,PT:= TIME#1S ); (*定義一個1S定時器*)

D0 := 0;
IF TON_1.Q  THEN (*定時時間到,D0++,D0大于10,那么清零*)
    D0 := 1 - D0 ;
    
    CASE D0 OF
    1:
         Y0:=TRUE;    
   0:
         Y0:=FALSE;    
    END_CASE;
      
END_IF;

太謝謝了,我試上一段語句,意思想讓Y0 在1S 內(nèi)交替亮,滅,  程序執(zhí)行了,亮就不見滅,,我想是不是系統(tǒng)執(zhí)行了一次定時就退出了,,,謝謝 對我 ST語言的知道,,,,謝謝"
cvlsam"老兄
pc8mcu
級別: 探索解密
精華主題: 0
發(fā)帖數(shù)量: 50 個
工控威望: 149 點
下載積分: 840 分
在線時間: 18(小時)
注冊時間: 2014-11-13
最后登錄: 2020-04-12
查看pc8mcu的 主題 / 回貼
3樓  發(fā)表于: 2015-11-11 09:31
TON_1(IN:= NOT TON_1.Q ,PT:= TIME#5S ); (*定義一個1S定時器*)

IF TON_1.Q  THEN (*定時時間到,D0++,D0大于10,那么清零*)  
         Y0:=TRUE;    
END_IF;

TON_2(IN:= NOT TON_2.Q ,PT:= TIME#5S ); (*定義一個1S定時器*)

IF TON_2.Q  THEN (*定時時間到,D0++,D0大于10,那么清零*)  
         Y1:=TRUE;    
END_IF;

又試驗上面一段ST代碼,,可以運行,,本來我的意思是想程序是順序執(zhí)行的, Y0 先亮,,Y1后亮實際情況是,Y0,Y1同時定時亮。更說明定時器用完就完了,不能循環(huán)使用,如何才能循環(huán)定時呢?謝謝
pc8mcu
級別: 探索解密
精華主題: 0
發(fā)帖數(shù)量: 50 個
工控威望: 149 點
下載積分: 840 分
在線時間: 18(小時)
注冊時間: 2014-11-13
最后登錄: 2020-04-12
查看pc8mcu的 主題 / 回貼
4樓  發(fā)表于: 2015-11-11 09:38
TON_1(IN:= NOT TON_1.Q ,PT:= TIME#1S ); (*定義一個1S定時器*)

IF TON_1.Q  THEN (*定時時間到,D0++,D0大于10,那么清零*)
    D0 := D0 + 1;                          // ---------經(jīng)過反復(fù)實驗-
    IF  D0>10 THEN                   //-----------
        D0 := 0;                              //-----------
    END_IF;                                 //----------該段無法時間,因為這段代碼只運行一次,,不能循環(huán)????
END_IF;
pc8mcu
級別: 探索解密
精華主題: 0
發(fā)帖數(shù)量: 50 個
工控威望: 149 點
下載積分: 840 分
在線時間: 18(小時)
注冊時間: 2014-11-13
最后登錄: 2020-04-12
查看pc8mcu的 主題 / 回貼
5樓  發(fā)表于: 2015-11-11 10:07
TON_1(IN:= NOT TON_1.Q ,PT:= TIME#1S ); (*定義一個1S定時器*)
D0:=0;

IF TON_1.Q  THEN (*定時時間到,D0++,D0大于10,那么清零*)  
         D0:= D0+1;
         IF D0>4  THEN
                D0:=0;
         END_IF;

         CASE D0 OF
          1:
               Y0:=TRUE;    
          2:
                Y0:=FALSE;    
          END_CASE;
        
END_IF;
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
TON_1(IN:= NOT TON_1.Q ,PT:= TIME#1S ); (*定義一個1S定時器*)

IF TON_1.Q  THEN (*定時時間到,D0++,D0大于10,那么清零*)  
         Y0:=TRUE;    
END_IF;

TON_2(IN:= NOT TON_2.Q ,PT:= TIME#2S ); (*定義一個1S定時器*)

IF TON_2.Q  THEN (*定時時間到,D0++,D0大于10,那么清零*)  
         Y0:=FALSE;    
END_IF;

=================================================================
上段不能實現(xiàn)Y0 隔1 秒亮, 滅一次,  而 下面一段實現(xiàn)了 Y0 反復(fù)的亮滅 ,實現(xiàn)了循環(huán),,能看一下原因,講一下原理嗎??謝謝
pc8mcu
級別: 探索解密
精華主題: 0
發(fā)帖數(shù)量: 50 個
工控威望: 149 點
下載積分: 840 分
在線時間: 18(小時)
注冊時間: 2014-11-13
最后登錄: 2020-04-12
查看pc8mcu的 主題 / 回貼
6樓  發(fā)表于: 2015-11-11 10:13
原因找到了,謝謝