原帖:
求燈的流程控制程序
在FX2N上的Y0-Y23上接有20個信號燈,X1上接有一個開關,控制要求如下:
在程序初始化后
當X1為ON時信號燈依次點亮至全亮(從1#開始至20#時間間隙為2S),
當X1為OFF時,信號燈依次由全亮至全滅.(從1#開始至20#時間間隙為2S),
在燈的點亮過程中(也就是X1為ON,時)轉入在燈的滅過程中(也就是X1為OFF時)信號燈也同樣按程序工作,
說明一下:例當X1為ON時,燈依次點亮至10#燈(時間間隙為2S);這時將X1設為OFF,燈依次從1#滅至5#(時間間隙為2S);這時將X1設為ON燈依次從11#亮至20#再至5#(時間間隙為2S);不知我說清沒有.
總之在X1的信號變換后,,燈亮滅遵循先亮先滅的原則,每個燈的點亮的時間平衡并循環.
為了讓控制要求更明確,在此我做一點補充:三菱論壇的那位朋友的原帖中對控制要求舉了一個例子,如上紅字部分所示,更明確的講就是X1可以在循環過程的任意時刻ON,也可在循環過程的任意時刻OFF,比方說初始上電,X1若為ON,燈開始從第1#燈亮起,此后每隔2s依次點亮其他的燈,若亮到第m#燈后,且在第(m+1)#燈還未亮時,X1為OFF,此時啟動滅燈程序,從第最先亮的第1#燈開始滅,然后依次每間隔2s滅一只,若滅到第n#燈,且在第(n+1)#燈還未滅時,x1又轉為ON,再次啟動亮燈程序,從哪里開始亮呢?從第(m+1)#燈開始亮,然后繼續,當X1又為OFF時,再次啟動滅燈程序,從哪里開始滅呢?從第(n+1)#燈開始滅。。。。。還有一點要注意,就是x1在狀態發生變化后,總是立即點亮或熄滅一只燈,然后才遵循每隔2s的次序
可以想象在一張圓桌上均勻地設置20只燈,受一開關X1任意控制,每當x1為ON時,開始從上一輪亮燈斷點處啟動亮燈程序,在x1沒有OFF之前,系統有一種點亮所有燈的企圖;每當x1為OFF時,從上一輪滅燈斷點處開始啟動滅燈程序,在x1沒有ON之前,系統有一種熄滅所有燈的企圖。而且系統可以力求讓每只燈點亮或熄滅在時間上保持一個大致的平衡,不至于經常只亮哪幾只。
以上為本人的編程思路,歡迎大家觀看!
同時請網站管理YMMFA和論壇斑竹sjm213以及求助帖的那位朋友指正!
程序在下,有點稍長,不過指令簡單易懂。
[ 此帖被qinshengyue在2009-06-24 07:37重新編輯 ]