找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 16184|回復(fù): 19
收起左側(cè)

分享一個通過梯形圖產(chǎn)生C語言代碼的工具

  [復(fù)制鏈接]
ID:480382 發(fā)表于 2019-2-25 14:45 | 顯示全部樓層 |閱讀模式
分享一個通過梯形圖產(chǎn)生C代碼的工具,適用于各種MCU,有拿單片機做PLC可以用一下。梯形圖導(dǎo)入后,將生成的.c.h文件包含進去,在MCU的主循環(huán)中把輸入輸出都映射好就可以工作。下面是應(yīng)用到STC90c516rd+的例子,附件包含代碼。注意:mcu至少有0.5K 的RAM才能運行這段代碼(89c52不行)。
51hei.png

單片機源程序如下:
  1. #include "stc89c5xrc.h"
  2. #include "plc.h"


  3. extern void PLC_TimerISR(void);
  4. void GetInput(void)
  5. {
  6.        // I0.0
  7.        P26 = 1;
  8.        PLC_BS(PLC_I[0], 0, !(P26));

  9.        // I0.1
  10.        P27 = 1;
  11.        PLC_BS(PLC_I[0], 1, !(P27));

  12.        // I1.0
  13.        P22 = 1;
  14.        PLC_BS(PLC_I[1], 0, !(P22));

  15.        // I1.1
  16.        P23 = 1;
  17.        PLC_BS(PLC_I[1], 1, !(P23));

  18.        // I1.2
  19.        P24 = 1;
  20.        PLC_BS(PLC_I[1], 2, !(P24));
  21. }

  22. void SetOutput(void)
  23. {
  24.        // Q0.0
  25.        if(PLC_Q[0] & PLC_BV(0))
  26.            P00 = 0;
  27.        else
  28.            P00 = 1;

  29.        // Q1.0
  30.        if(PLC_Q[1] & PLC_BV(0))
  31.        {
  32.            P02 = 0;
  33.            P03 = 0;
  34.            P04 = 0;
  35.        }
  36.        else
  37.        {
  38.            P02 = 1;
  39.            P03 = 1;
  40.            P04 = 1;
  41.        }

  42.        // Q1.1
  43.        if(PLC_Q[1] & PLC_BV(1))
  44.        {
  45.            P05 = 0;
  46.            P06 = 0;
  47.            P07 = 0;
  48.        }
  49.        else
  50.        {
  51.            P05 = 1;
  52.            P06 = 1;
  53.            P07 = 1;
  54.        }

  55.        // Q1.2
  56.        if(PLC_Q[1] & PLC_BV(2))
  57.             P01 = 0;
  58.        else
  59.             P01 = 1;        
  60. }

  61. void main(void)
  62. {
  63.     AUXR |= 0x80;        //定時器時鐘1T模式
  64.     TMOD &= 0xF0;        //設(shè)置定時器模式
  65.     TMOD |= 0x01;        //設(shè)置定時器模式
  66.     TL0 = 0x20;        //設(shè)置定時初值
  67.     TH0 = 0xD1;        //設(shè)置定時初值
  68.     TF0 = 0;        //清除TF0標志
  69.     TR0 = 1;        //定時器0開始計時
  70.     ET0 = 1;
  71.     EA = 1;

  72.     PLC_InitK();
  73.    while (1)
  74.    {
  75.        GetInput();
  76.        PLC_TimerScanCheck();
  77.        PLC_INT0(); // The PLC main loop!
  78.        SetOutput();
  79.    }
  80. }

  81. void ISR_TIMER0(void) interrupt 1  using 0
  82. {
  83.     TL0 = 0x20;        //設(shè)置定時初值
  84.     TH0 = 0xD1;        //設(shè)置定時初值
  85.        PLC_TimerISR();
  86. }

復(fù)制代碼
梯形圖to C語言編譯工具+示例代碼
0.png

下載地址:已刪除
由于本站不允許上傳exe文件,大家可以去百度搜索下載GUTTA Ladder To C軟件

評分

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

查看全部評分

回復(fù)

使用道具 舉報

ID:115923 發(fā)表于 2021-10-21 14:24 | 顯示全部樓層
免安裝  ,  這點不錯, ,

先打開 PLC編程軟件,   
可以導(dǎo)入 三菱的PWM格式梯形圖程序
也可以 自己編輯梯形圖程序
然后 點菜單的PLC里面 全部編譯, 如果沒有出錯, 會有下圖 出現(xiàn),  

按照 順序 1, 2, 3,4 步驟,
1.  檢查編譯有沒有錯,  
2.  找到轉(zhuǎn)換的C窗口
3.  點擊 下面的source欄
4.  找到 PLC_INT0   ,  開始從這里開始到結(jié)束 拷貝.

然后打開 實例代碼, 文件夾里的 plc.uvproj  --- 這個要安裝Keil uv4軟件
實例代碼缺少  stc89c5xrc.h  我已經(jīng)補全了, 在文件夾里.
然后在  PLC.c的里面, 找到最后的一個函數(shù) void PLC_INT0(void)
把剛才拷貝的替換換掉 這里面的內(nèi)容.
編譯一下, 下載到MCU 即可 .
51hei截圖20211020145257578.jpg
stc89c5xrc.h文件:
http://www.torrancerestoration.com/bbs/dpj-90949-1.html
http://www.torrancerestoration.com/bbs/dpj-36974-1.html


回復(fù)

使用道具 舉報

ID:527324 發(fā)表于 2019-5-5 00:23 來自觸屏版 | 顯示全部樓層
正好需要
回復(fù)

使用道具 舉報

ID:525375 發(fā)表于 2019-5-6 09:48 | 顯示全部樓層
百度了半天終于找到了
回復(fù)

使用道具 舉報

ID:557411 發(fā)表于 2020-3-10 00:29 | 顯示全部樓層
正好需要
回復(fù)

使用道具 舉報

ID:410680 發(fā)表于 2020-3-10 22:07 | 顯示全部樓層
看看跟我用的一樣不一樣?
回復(fù)

使用道具 舉報

ID:381698 發(fā)表于 2020-5-2 13:39 | 顯示全部樓層
很好的工具,留個腳!
回復(fù)

使用道具 舉報

ID:733688 發(fā)表于 2020-5-6 08:02 | 顯示全部樓層

很好的工具,留個腳。
回復(fù)

使用道具 舉報

ID:856762 發(fā)表于 2020-12-8 14:23 | 顯示全部樓層
不錯確實不錯太好了
回復(fù)

使用道具 舉報

ID:64872 發(fā)表于 2020-12-17 20:44 | 顯示全部樓層
以前下載過,不錯,
回復(fù)

使用道具 舉報

ID:89386 發(fā)表于 2021-1-31 16:08 | 顯示全部樓層
怎么看C文件和H 文件在哪里?
回復(fù)

使用道具 舉報

ID:585365 發(fā)表于 2021-9-25 18:02 | 顯示全部樓層
學(xué)習(xí)下怎么用
回復(fù)

使用道具 舉報

ID:585365 發(fā)表于 2021-9-25 18:08 | 顯示全部樓層
有教程可以介紹下嗎?最好有相關(guān)的學(xué)習(xí)教程。謝謝
回復(fù)

使用道具 舉報

ID:34149 發(fā)表于 2021-9-29 23:09 | 顯示全部樓層
PLC.h經(jīng)典
回復(fù)

使用道具 舉報

ID:191408 發(fā)表于 2021-10-21 22:00 | 顯示全部樓層
下載下來研究一下看
回復(fù)

使用道具 舉報

ID:333678 發(fā)表于 2021-10-22 00:51 來自觸屏版 | 顯示全部樓層
很好的工具,多謝分享。
回復(fù)

使用道具 舉報

ID:1025924 發(fā)表于 2022-5-12 11:14 | 顯示全部樓層
很好的工具,留個腳印
回復(fù)

使用道具 舉報

ID:1110015 發(fā)表于 2024-1-24 12:58 | 顯示全部樓層
下載鏈接在哪里呀
回復(fù)

使用道具 舉報

ID:228452 發(fā)表于 2024-1-25 03:43 | 顯示全部樓層
"Since this site does not allow the upload of exe files"

can you upload everything as   File.RAR

People from Europe can't download from Baidu

     Thank you
回復(fù)

使用道具 舉報

ID:4913 發(fā)表于 2024-6-19 18:01 | 顯示全部樓層
還能分享一下軟件嗎?
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表