TIA16_交通燈程序.zip
(611.46 KB, 售價: 5 E幣)
2020-12-2 12:35 上傳
點擊文件名下載附件
售價: 5 E幣 [記錄]
[ 購買]
控制要求: 首先,南北方向紅燈亮25秒,與此同時,東西方向綠燈先亮20秒,然后閃3秒,接著東西方向黃燈閃2秒;接下來,東西方向紅燈亮30秒,南北方向綠燈先亮25秒,然后,南北綠燈閃3秒,南北黃燈閃2秒。 程序設計思路: 程序分為單定時器和雙定時器兩個版本,但思路是一樣的,都是根據在不同的時間點,控制不同的燈亮。因為總的時長為55秒,然后東西方向通行時間為25秒,南北方向通行時間為30秒,整個程序流程如下:
123117yhulml23n4tu4254.png (27.54 KB)
下載附件
2020-12-2 12:31 上傳
然后簡單說一下單定時器和雙定時器的區別,他們的功能是一樣的,只不過雙定時器可以任意修改閃爍頻率,而單定時器版本的只能使用系統設定好的幾個頻率。因為單定時器版本用的是PLC自帶的系統時鐘,使用方法是打開”設備組態”,在“常規”里面找到“系統和時鐘存儲器”,勾選“時鐘存儲器位”就行了,然后就可以在PLC變量表里面看到相應的變量了。圖片如下:
123214ojuzta07b7zbd5au.png (159.75 KB)
下載附件
2020-12-2 12:31 上傳
123215exdkxvmdk8kf7gnk.png (161.07 KB)
下載附件
2020-12-2 12:31 上傳
程序如下: 單定時器版本: - //交通燈:單定時器版本
- IF "啟動" AND "停止" = 0 THEN
- "數據塊_1".啟動值 := 1;
- "數據塊_1".停止值 := 0;
- ELSIF "停止" THEN
- "數據塊_1".啟動值 := 0;
- "數據塊_1".停止值 := 1;
- "東西紅" := 0;
- "東西黃" := 0;
- "東西綠" := 0;
- "南北紅" := 0;
- "南北黃" := 0;
- "南北綠" := 0;
- END_IF;
- IF "數據塊_1".啟動值 THEN
- "數據塊_1".定時器.IN := 1;
- "數據塊_1".定時器.PT := T#55s;
- "IEC_Timer_0_DB_2".TON(IN := "數據塊_1".定時器.IN,
- PT := "數據塊_1".定時器.PT,
- ET => "數據塊_1".定時器輸出時間);
- IF "數據塊_1".定時器輸出時間>=T#0s AND "數據塊_1".定時器輸出時間<=T#20s THEN
- "東西綠" := 1;
- "南北紅" := 1;
- ELSIF "數據塊_1".定時器輸出時間>T#20s AND "數據塊_1".定時器輸出時間<=T#23s THEN
- "東西綠" :="Clock_2Hz" ;
- ELSIF "數據塊_1".定時器輸出時間>T#23s AND "數據塊_1".定時器輸出時間<=T#25s THEN
- "東西綠" := 0;
- "東西黃" := "Clock_2Hz";
- ELSIF "數據塊_1".定時器輸出時間>T#25s AND "數據塊_1".定時器輸出時間<=T#50s THEN
- "東西紅" := 1;
- "南北綠" := 1;
- "東西黃" := 0;
- "南北紅" := 0;
- ELSIF "數據塊_1".定時器輸出時間>T#50s AND "數據塊_1".定時器輸出時間<=T#53s THEN
- "南北綠" := "Clock_2Hz";
- ELSIF "數據塊_1".定時器輸出時間>T#53s AND "數據塊_1".定時器輸出時間<=T#55s THEN
- "南北黃" :="Clock_2Hz" ;
- "南北綠" := 0;
- END_IF;
- IF "數據塊_1".定時器輸出時間 =T#55s THEN
- RESET_TIMER("IEC_Timer_0_DB_2");
- "東西紅" := 0;
- "東西黃" := 0;
- "東西綠" := 0;
- "南北紅" := 0;
- "南北黃" := 0;
- "南北綠" := 0;
- END_IF;
- END_IF;
復制代碼 雙定時器版本:- //交通燈:兩個定時器版本
- IF "啟動" AND "停止" = 0 THEN
- "數據塊_1".啟動值 := 1;
- "數據塊_1".停止值 := 0;
- ELSIF "停止" THEN
- "數據塊_1".啟動值 := 0;
- "數據塊_1".停止值 := 1;
- "東西紅" := 0;
- "東西黃" := 0;
- "東西綠" := 0;
- "南北紅" := 0;
- "南北黃" := 0;
- "南北綠" := 0;
- END_IF;
- IF "數據塊_1".啟動值 THEN
- "數據塊_1".定時器.IN := 1;
- "數據塊_1".定時器.PT := T#55s;
- "數據塊_1".定時器1.PT := T#0.5s;
- //總定時;55s
- "IEC_Timer_0_DB_2".TON(IN := "數據塊_1".定時器.IN,
- PT := "數據塊_1".定時器.PT,
- ET => "數據塊_1".定時器輸出時間);
- //0~20s;南北紅燈,東西綠燈
- IF "數據塊_1".定時器輸出時間>=T#0s AND "數據塊_1".定時器輸出時間<=T#20s THEN
- "東西綠" := 1;
- "南北紅" := 1;
- //東西綠燈閃3s
- ELSIF "數據塊_1".定時器輸出時間>T#20s AND "數據塊_1".定時器輸出時間<=T#23s THEN
- "數據塊_1".定時器1.IN := 1;
- "數據塊_1".定時器1.PT := T#500ms;
- "IEC_Timer_0_DB".TON(IN := "數據塊_1".定時器1.IN,
- PT := "數據塊_1".定時器1.PT,
- Q => "數據塊_1".定時器輸出2);
- IF "數據塊_1".定時器輸出2 THEN
- "東西綠" := NOT "東西綠";
- RESET_TIMER("IEC_Timer_0_DB");
- END_IF;
- //東西黃燈閃2s
- ELSIF "數據塊_1".定時器輸出時間>T#23s AND"數據塊_1".定時器輸出時間<=T#25s THEN
- "東西綠" := 0;
- "數據塊_1".定時器1.IN := 1;
- "數據塊_1".定時器1.PT := T#500ms;
- "IEC_Timer_0_DB".TON(IN := "數據塊_1".定時器1.IN,
- PT := "數據塊_1".定時器1.PT,
- Q => "數據塊_1".定時器輸出2);
- IF "數據塊_1".定時器輸出2 THEN
- "東西黃" := NOT "東西黃";
- RESET_TIMER("IEC_Timer_0_DB");
- END_IF;
- //東西紅燈,南北綠燈亮25S
- ELSIF "數據塊_1".定時器輸出時間>T#25s AND "數據塊_1".定時器輸出時間<=T#50s THEN
- "東西紅" := 1;
- "南北綠" := 1;
- "東西黃" := 0;
- "南北紅" := 0;
- //南北綠燈閃3s
- ELSIF "數據塊_1".定時器輸出時間>T#50s AND "數據塊_1".定時器輸出時間<=T#53s THEN
- "數據塊_1".定時器1.IN := 1;
- "數據塊_1".定時器1.PT := T#500ms;
- "IEC_Timer_0_DB".TON(IN := "數據塊_1".定時器1.IN,
- PT := "數據塊_1".定時器1.PT,
- Q => "數據塊_1".定時器輸出2);
- IF "數據塊_1".定時器輸出2 THEN
- "南北綠" := NOT "南北綠";
- RESET_TIMER("IEC_Timer_0_DB");
- END_IF;;
- //南北黃閃2s
- ELSIF "數據塊_1".定時器輸出時間>T#53s AND "數據塊_1".定時器輸出時間<=T#55s THEN
- "南北綠" := 0;
- "數據塊_1".定時器1.IN := 1;
- "數據塊_1".定時器1.PT := T#500ms;
- "IEC_Timer_0_DB".TON(IN := "數據塊_1".定時器1.IN,
- PT := "數據塊_1".定時器1.PT,
- Q => "數據塊_1".定時器輸出2);
- IF "數據塊_1".定時器輸出2 THEN
- "南北黃" := NOT "南北黃";
- RESET_TIMER("IEC_Timer_0_DB");
- END_IF;
- END_IF;
- //全部初始化
- IF "數據塊_1".定時器輸出時間 >=T#55s THEN
- RESET_TIMER("IEC_Timer_0_DB_2");
- "東西紅" := 0;
- "東西黃" := 0;
- "東西綠" := 0;
- "南北紅" := 0;
- "南北黃" := 0;
- "南北綠" := 0;
- END_IF;
- END_IF;
復制代碼
【必讀】版權免責聲明
1、本主題所有言論和內容純屬會員個人意見,與本論壇立場無關。2、本站對所發內容真實性、客觀性、可用性不做任何保證也不負任何責任,網友之間僅出于學習目的進行交流。3、對提供的數字內容不擁有任何權利,其版權歸原著者擁有。請勿將該數字內容進行商業交易、轉載等行為,該內容只為學習所提供,使用后發生的一切問題與本站無關。 4、本網站不保證本站提供的下載資源的準確性、安全性和完整性;同時本網站也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的損失或傷害。 5、本網站所有軟件和資料均為網友推薦收集整理而來,僅供學習用途使用,請務必下載后兩小時內刪除,禁止商用。6、如有侵犯你版權的,請及時聯系我們(電子郵箱1370723259@qq.com)指出,本站將立即改正。
|