久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4899|回復: 1
打印 上一主題 下一主題
收起左側(cè)

簡單的交通燈:PLC-SCL語言程序

[復制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:420439 發(fā)表于 2020-7-15 12:06 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
本帖最后由 12131213 于 2020-7-15 12:32 編輯

       看了網(wǎng)上的交通燈程序似乎都沒有SCL版本的,就把自己 寫的SCL版本分享一下吧。
控制要求:
       首先,南北方向紅燈亮25秒,與此同時,東西方向綠燈先亮20秒,然后閃3秒,接著東西方向黃燈閃2秒;接下來,東西方向紅燈亮30秒,南北方向綠燈先亮25秒,然后,南北綠燈閃3秒,南北黃燈閃2秒。
程序設(shè)計思路:
       程序分為單定時器和雙定時器兩個版本,但思路是一樣的,都是根據(jù)在不同的時間點,控制不同的燈亮。因為總的時長為55秒,然后東西方向通行時間為25秒,南北方向通行時間為30秒,整個程序流程如下:


       然后簡單說一下單定時器和雙定時器的區(qū)別,他們的功能是一樣的,只不過雙定時器可以任意修改閃爍頻率,而單定時器版本的只能使用系統(tǒng)設(shè)定好的幾個頻率。因為單定時器版本用的是PLC自帶的系統(tǒng)時鐘,使用方法是打開”設(shè)備組態(tài)”,在“常規(guī)”里面找到“系統(tǒng)和時鐘存儲器”,勾選“時鐘存儲器位”就行了,然后就可以在PLC變量表里面看到相應(yīng)的變量了。圖片如下:


程序如下:
單定時器版本:
  1. //交通燈:單定時器版本
  2. IF "啟動" AND "停止" = 0 THEN
  3.     "數(shù)據(jù)塊_1".啟動值 := 1;
  4.     "數(shù)據(jù)塊_1".停止值 := 0;
  5. ELSIF "停止" THEN
  6.     "數(shù)據(jù)塊_1".啟動值 := 0;
  7.     "數(shù)據(jù)塊_1".停止值 := 1;
  8.     "東西紅" := 0;
  9.     "東西黃" := 0;
  10.     "東西綠" := 0;
  11.     "南北紅" := 0;
  12.     "南北黃" := 0;
  13.     "南北綠" := 0;
  14. END_IF;
  15. IF "數(shù)據(jù)塊_1".啟動值 THEN
  16.     "數(shù)據(jù)塊_1".定時器.IN := 1;
  17.     "數(shù)據(jù)塊_1".定時器.PT := T#55s;
  18.     "IEC_Timer_0_DB_2".TON(IN := "數(shù)據(jù)塊_1".定時器.IN,
  19.                            PT := "數(shù)據(jù)塊_1".定時器.PT,
  20.                            ET => "數(shù)據(jù)塊_1".定時器輸出時間);
  21.     IF "數(shù)據(jù)塊_1".定時器輸出時間>=T#0s AND "數(shù)據(jù)塊_1".定時器輸出時間<=T#20s THEN
  22.         "東西綠" := 1;
  23.         "南北紅" := 1;
  24.         ELSIF "數(shù)據(jù)塊_1".定時器輸出時間>T#20s AND  "數(shù)據(jù)塊_1".定時器輸出時間<=T#23s THEN
  25.             "東西綠" :="Clock_2Hz" ;
  26.         ELSIF "數(shù)據(jù)塊_1".定時器輸出時間>T#23s AND  "數(shù)據(jù)塊_1".定時器輸出時間<=T#25s THEN
  27.             "東西綠" := 0;
  28.             "東西黃" := "Clock_2Hz";
  29.     ELSIF "數(shù)據(jù)塊_1".定時器輸出時間>T#25s AND "數(shù)據(jù)塊_1".定時器輸出時間<=T#50s THEN
  30.         "東西紅" := 1;
  31.         "南北綠" := 1;
  32.         "東西黃" := 0;
  33.         "南北紅" := 0;
  34.     ELSIF "數(shù)據(jù)塊_1".定時器輸出時間>T#50s AND "數(shù)據(jù)塊_1".定時器輸出時間<=T#53s THEN
  35.         "南北綠" := "Clock_2Hz";
  36.     ELSIF "數(shù)據(jù)塊_1".定時器輸出時間>T#53s AND "數(shù)據(jù)塊_1".定時器輸出時間<=T#55s THEN
  37.         "南北黃" :="Clock_2Hz" ;
  38.         "南北綠" := 0;
  39.     END_IF;
  40.     IF "數(shù)據(jù)塊_1".定時器輸出時間 =T#55s THEN
  41.         RESET_TIMER("IEC_Timer_0_DB_2");
  42.         "東西紅" := 0;
  43.         "東西黃" := 0;
  44.         "東西綠" := 0;
  45.         "南北紅" := 0;
  46.         "南北黃" := 0;
  47.         "南北綠" := 0;
  48.     END_IF;
  49. END_IF;
復制代碼



雙定時器版本:
  1. //交通燈:兩個定時器版本
  2. IF "啟動" AND "停止" = 0 THEN
  3.     "數(shù)據(jù)塊_1".啟動值 := 1;
  4.     "數(shù)據(jù)塊_1".停止值 := 0;
  5. ELSIF "停止" THEN
  6.     "數(shù)據(jù)塊_1".啟動值 := 0;
  7.     "數(shù)據(jù)塊_1".停止值 := 1;
  8.     "東西紅" := 0;
  9.     "東西黃" := 0;
  10.     "東西綠" := 0;
  11.     "南北紅" := 0;
  12.     "南北黃" := 0;
  13.     "南北綠" := 0;
  14. END_IF;
  15. IF "數(shù)據(jù)塊_1".啟動值 THEN
  16.     "數(shù)據(jù)塊_1".定時器.IN := 1;
  17.     "數(shù)據(jù)塊_1".定時器.PT := T#55s;
  18.     "數(shù)據(jù)塊_1".定時器1.PT := T#0.5s;
  19.     //總定時;55s
  20.     "IEC_Timer_0_DB_2".TON(IN := "數(shù)據(jù)塊_1".定時器.IN,
  21.                            PT := "數(shù)據(jù)塊_1".定時器.PT,
  22.                            ET => "數(shù)據(jù)塊_1".定時器輸出時間);
  23.     //0~20s;南北紅燈,東西綠燈
  24.     IF "數(shù)據(jù)塊_1".定時器輸出時間>=T#0s AND "數(shù)據(jù)塊_1".定時器輸出時間<=T#20s THEN
  25.         "東西綠" := 1;
  26.         "南北紅" := 1;
  27.    //東西綠燈閃3s
  28.     ELSIF "數(shù)據(jù)塊_1".定時器輸出時間>T#20s AND "數(shù)據(jù)塊_1".定時器輸出時間<=T#23s THEN
  29.         "數(shù)據(jù)塊_1".定時器1.IN := 1;
  30.         "數(shù)據(jù)塊_1".定時器1.PT := T#500ms;
  31.         "IEC_Timer_0_DB".TON(IN := "數(shù)據(jù)塊_1".定時器1.IN,
  32.                              PT := "數(shù)據(jù)塊_1".定時器1.PT,
  33.                              Q => "數(shù)據(jù)塊_1".定時器輸出2);
  34.         IF "數(shù)據(jù)塊_1".定時器輸出2 THEN
  35.             "東西綠" := NOT "東西綠";
  36.             RESET_TIMER("IEC_Timer_0_DB");
  37.         END_IF;
  38.         //東西黃燈閃2s
  39.         ELSIF "數(shù)據(jù)塊_1".定時器輸出時間>T#23s AND"數(shù)據(jù)塊_1".定時器輸出時間<=T#25s THEN
  40.             "東西綠" := 0;
  41.             "數(shù)據(jù)塊_1".定時器1.IN := 1;
  42.             "數(shù)據(jù)塊_1".定時器1.PT := T#500ms;
  43.             "IEC_Timer_0_DB".TON(IN := "數(shù)據(jù)塊_1".定時器1.IN,
  44.                                  PT := "數(shù)據(jù)塊_1".定時器1.PT,
  45.                                  Q => "數(shù)據(jù)塊_1".定時器輸出2);
  46.             IF "數(shù)據(jù)塊_1".定時器輸出2 THEN
  47.                 "東西黃" := NOT "東西黃";
  48.                 RESET_TIMER("IEC_Timer_0_DB");
  49.             END_IF;
  50. //東西紅燈,南北綠燈亮25S
  51.     ELSIF "數(shù)據(jù)塊_1".定時器輸出時間>T#25s AND "數(shù)據(jù)塊_1".定時器輸出時間<=T#50s THEN
  52.         "東西紅" := 1;
  53.         "南北綠" := 1;
  54.         "東西黃" := 0;
  55.         "南北紅" := 0;
  56.      //南北綠燈閃3s   
  57.     ELSIF "數(shù)據(jù)塊_1".定時器輸出時間>T#50s AND "數(shù)據(jù)塊_1".定時器輸出時間<=T#53s THEN
  58.         "數(shù)據(jù)塊_1".定時器1.IN := 1;
  59.         "數(shù)據(jù)塊_1".定時器1.PT := T#500ms;
  60.         "IEC_Timer_0_DB".TON(IN := "數(shù)據(jù)塊_1".定時器1.IN,
  61.                              PT := "數(shù)據(jù)塊_1".定時器1.PT,
  62.                              Q => "數(shù)據(jù)塊_1".定時器輸出2);
  63.         IF "數(shù)據(jù)塊_1".定時器輸出2 THEN
  64.             "南北綠" := NOT "南北綠";
  65.             RESET_TIMER("IEC_Timer_0_DB");
  66.         END_IF;;
  67.      //南北黃閃2s   
  68.     ELSIF "數(shù)據(jù)塊_1".定時器輸出時間>T#53s AND  "數(shù)據(jù)塊_1".定時器輸出時間<=T#55s THEN
  69.         "南北綠" := 0;
  70.         "數(shù)據(jù)塊_1".定時器1.IN := 1;
  71.         "數(shù)據(jù)塊_1".定時器1.PT := T#500ms;
  72.         "IEC_Timer_0_DB".TON(IN := "數(shù)據(jù)塊_1".定時器1.IN,
  73.                              PT := "數(shù)據(jù)塊_1".定時器1.PT,
  74.                              Q => "數(shù)據(jù)塊_1".定時器輸出2);
  75.         IF "數(shù)據(jù)塊_1".定時器輸出2 THEN
  76.             "南北黃" := NOT "南北黃";
  77.             RESET_TIMER("IEC_Timer_0_DB");
  78.         END_IF;
  79.     END_IF;
  80.     //全部初始化
  81.     IF "數(shù)據(jù)塊_1".定時器輸出時間 >=T#55s THEN
  82.         RESET_TIMER("IEC_Timer_0_DB_2");
  83.         "東西紅" := 0;
  84.         "東西黃" := 0;
  85.         "東西綠" := 0;
  86.         "南北紅" := 0;
  87.         "南北黃" := 0;
  88.         "南北綠" := 0;
  89.     END_IF;
  90. END_IF;
復制代碼


順便把歸檔文件也上傳一下,有需要的自取。
交通燈.zip (611.46 KB, 下載次數(shù): 47)



評分

參與人數(shù) 1黑幣 +80 收起 理由
admin + 80 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復

使用道具 舉報

沙發(fā)
ID:613064 發(fā)表于 2020-7-30 17:06 | 只看該作者
為啥我開不開
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产伦精品一区二区三区视频金莲 | 亚洲国产成人精品在线 | 一二区成人影院电影网 | 色播久久久 | 成人免费在线 | 日本特黄a级高清免费大片 特黄色一级毛片 | 天堂av免费观看 | 91精品久久久久久久久中文字幕 | 国产 日韩 欧美 在线 | av大全在线观看 | 成人小视频在线观看 | 亚洲精品一区二区三区中文字幕 | 欧美专区在线 | 中文字幕一区二区在线观看 | 综合色播 | 日韩中文字幕视频在线 | 国产高清视频在线播放 | 亚洲第一天堂 | 国产区在线观看 | 黄篇网址| 国产精品久久久爽爽爽麻豆色哟哟 | 天天射网站 | 97影院在线午夜 | 99re在线视频观看 | 99精品国产在热久久 | 国产精品免费一区二区 | 久久国色 | 亚洲综合色视频在线观看 | 亚洲精品在线视频 | 日韩国产在线 | 成人在线观看免费 | 精品国产乱码久久久久久牛牛 | 久久久久国产精品午夜一区 | 日韩av成人 | 国产午夜精品久久 | 欧美日韩精品久久久免费观看 | 欧美日韩在线免费 | 成人在线播放网站 | 国户精品久久久久久久久久久不卡 | 久久久亚洲一区 | 久久人人国产 |