• <big id="yf5mt"><em id="yf5mt"></em></big>

    <pre id="yf5mt"></pre>
    1. <strike id="yf5mt"></strike>
    2. <center id="yf5mt"><em id="yf5mt"></em></center><code id="yf5mt"></code>
    3. <object id="yf5mt"><video id="yf5mt"></video></object>
      <pre id="yf5mt"><em id="yf5mt"></em></pre>
    4. <object id="yf5mt"><nobr id="yf5mt"><sub id="yf5mt"></sub></nobr></object>
    5. <code id="yf5mt"></code><pre id="yf5mt"><em id="yf5mt"></em></pre><object id="yf5mt"></object>
      <code id="yf5mt"></code>

      電工學習網

       找回密碼
       立即注冊
      查看: 143|回復: 0
      打印 上一主題 下一主題

      編寫PLC程序從做Excel表開始

      [復制鏈接]
      跳轉到指定樓層
      樓主
      發表于 2020-5-20 20:40:36 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
      第一次接觸plc,是在海天公司給一臺雙色注塑機增加一個轉軸功能,這個功能注塑機電腦上沒有,所以外加了一個PLC,記得當時用的是三菱FX,這是我接觸的第一個PLC,當時因為供應商提供了PLC、伺服電機、減速機等一套產品,所以程序也就讓供應商寫了。
      到了倍福之后,由于整個辦事處就我一個人,處于什么都干的狀態,所以除了銷售工作,也做技術支持。記得第一個項目是上海的同事寫的代碼,同事來現場一次,后面的維護我接過來。所幸TwinCAT2這軟件比較簡單,一來二去自己就上手了。
      后來慢慢地也給客戶寫一點DEMO,用來給客戶解釋為啥IEC61131-3是一個簡單的東西,不像想象的那么難,不要一想到ST語言就想到高級語言,等等諸如此類的問題。寫著寫著,也有了一些心得。
      在聊聊這些心得之前,先說點題外話。 我做過兩件和工作不太相關的學習,一次是讀研究生時,一個培訓班來學校推銷ISO內審員的培訓,當時因為好奇去報了名,花了幾百塊錢聽了一堆ISO的知識,記得講課的是一位老干部。另一次是剛上班時,去報了一個計算機高級程序員的考試,看了幾個月書,離及格線差了那么一大點(不是一小點)。但 這兩個事情,對我的影響比較大 ,ISO的學習,讓我理解了凡事要有流程,流程要有標準,標準要有數據,數據要可追溯,這為后來理解工業4.0打下了基礎,而高級程序員的考試,讓我學到不少IT的知識,尤其是軟件工程方面的知識,對于構建一個大的程序,還是有幫助的。
      下面的心得,和這兩件事情,有比較大的關系,說穿了,就是 多做紙面工作 。
      在寫代碼之前,我會先建個EXCEL表格,大約有這么幾項(這里我虛擬了一個立體車庫的項目,因為每天到辦公室都會和立體車庫打交道):
      1、IO表,輸入輸出的模塊型號,模塊的位置,每個模塊上每個點的定義,以及外面接的是什么元器件。對于一些電氣CAD軟件,會自動生成這個表,但我們還是建議用EXCEL做一份,以便存檔。

      2、變量表,一部分變量是有地址的,比如需要和上面提到的IO表進行對應,比如Modbus通訊。Modbus通訊需要定義變量地址,而IO對應的不需要在程序中指定,只要在系統配置中和硬件進行連接。另一部分變量是沒有地址的,但也不能隨便定義,要有一定的規則,以便閱讀。 編寫PLC程序從做Excel表開始
      3、結構體(Structure),結構體的設計,可以放在變量表之前,為了提高效率,我們會設計一些結構體來做數據類型,比如一個氣缸,就可以設計一個結構體來表述,這個結構體會包含氣缸的方向,磁性開關狀態,以及兩個方向的超時報警時間。在使用到氣缸時,就可以用這個結構體類型來直接定義氣缸,而無需去定義每個氣缸設計的變量。
      編寫PLC程序從做Excel表開始


      必要的話,可以設計枚舉變量,用來表述機器的狀態。

      4、POU名稱(Program Organization Unit程序組織單元)。POU有三種類型:程序(Program)、功能塊(Function Block)、函數(Function)。在規劃階段,程序和功能塊的構建是很重要的,功能塊會降低很多重復工作,從而避免一些普遍性的錯誤(當然,錯了也就都錯了),程序的調用、狀態的切換是否清晰可控,則決定了整個項目是否足夠強壯,并可持久改進及維護。
      編寫PLC程序從做Excel表開始
      5、工藝說明,包括各個工作步驟、步驟的銜接、條件的轉換等。這個步驟,可以在EXCEL中做,也可以用word、PPT,但相比之下,EXCEL可能是個更好的選擇,因為EXCEL的紙面是沒有限制大小的,而word和PPT很容易遇到編輯范圍太小的問題。
      編寫PLC程序從做Excel表開始
      當然,也可以在紙張上來畫。我個人建議每個項目備一個A4的本子,和EXCEL配合使用。
      做完這個表格之后,我習慣將變量表直接復制到TwinCAT中,因為 在EXCEL中,很多重復工作可以直接選中表格單元進行拖拉復制 ,比如注釋的“(* ”和“*)”,以及末尾的“;”,都是直接復制單元格的,而對于一些帶序號的變量,如X0-X7,順序復制即可,這會在大幅度減少工作量的同時,降低變量編寫出錯機率。
      在程序編寫過程中,除了用于for循環的累加數,以及用來調試時的一些標志之外,如果要增加有實際意義的變量名,必須先在EXCEL里增加,再復制到程序中。這有點強迫癥,但事實證明,這個有用。
      接下去就是建立各個POU,對于功能塊,要寫好輸入變量和輸出變量,而函數只需要有參數即可。寫完了每個POU,記得在每個POU的主體敲個";",這樣,即使我們一句代碼也不寫,也是可以編譯通過的。如果這時候編譯不通過,可以看看是不是哪里有手誤了,因為這時候能錯的地方都是系統保留字,或者是忘記敲";",注釋的括號少了之類。
      編寫PLC程序從做Excel表開始
      接下來是不是寫代碼?不是的,是先寫注釋,而且是全面注釋,即在各個功能塊中,先寫好注釋。在TwinCAT中,一個程序塊只需要一個“;”,即可編譯通過,我們上面已經敲好了";",所以不用擔心沒有代碼會造成程序不能編譯。
      編寫PLC程序從做Excel表開始
      我們回到前面第4點,如果流程圖已經畫好,那我們就把流程圖搬到編程環境中,還是按照從大到小的原則,我們先把步驟編好,具體每一步里面做什么,可能遠不如步驟之間怎么切換銜接來得重要。所以,在這個過程中,我們還可以用注釋來替代代碼,但別忘了在各種for、case中加上“;”。
      最后一步,讓我們在所有注釋的地方,把代碼寫上。然后,編譯一下。
      如果有人可以把PackML的文檔看一遍,會發現里面就有關于狀態切換的圖表,如果有興趣,可以去找下PackML的文檔。
      編寫PLC程序從做Excel表開始
      如果你用的是TwinCAT或者Codesys的環境,我建議在寫EXCEL表格和畫流程圖的時候,順帶把人機界面的草圖也畫了, 我覺得集成人機界面的開發環境就是自動化工程師的大救星 。人機界面和PLC在同一個環境內,意味著可以隨時看到工程師想看到的內容,比如在調試時,需要看多個變量,那建在人機界面上會方便很多,不需要在程序中在線觀察。

      人機界面和PLC的集成,除了大大提高自動化工程師的幸福感之外,也會極大激發自動化工程師的創作欲望。比如有些DEMO,我會將邏輯動作的條件和輸出狀態都放在畫面中,這樣可以很清楚看到一個邏輯動作沒有執行的原因,比如某幾個動作有先后,那做個定時器或者多個定時器,將這些定時器的輸出放在同一個畫面,就可以明察秋毫了。
      寫完了程序,機器也動了,我們再來做一張表,就是修改記錄,在這張表里,我們寫下,某年某月某日,為了什么原因,我們改了哪個程序,怎么改的,修改后我們怎么測試的,測試的效果如何。
      而修改的程序,不建議直接在原程序上改,可以建一個新的POU,也可以在POU里寫一個新的action,在對應的調用處改掉調用名字即可。這樣,即使新的程序出了問題,也很容易改回(RollBack)到原來的程序。而新的代碼中,記得在頭部寫好注釋。

      回復

      使用道具 舉報

      |電工學習網 ( )

      GMT+8, 2020-6-2 09:04

      Powered by © 2011-2020 wap.2007662.com 版權所有 免責聲明 不良信息舉報

      技術驅動未來! 電工學習網—專業電工基礎知識電工技術學習網站。

      欄目導航: 工控家園 | 三菱plc | 西門子plc | 歐姆龍plc | plc視頻教程

      快速回復 返回頂部 返回列表