本來想好的題目是《跟我學做PLC》,但是轉念一想,做為一個離開工控行業七八年的二手程序猿,自己的行業知識已經過期很久了,所以還是改為《揭秘PLC》更合適些。
想當年大四的時候學分不夠,所以選修了PLC這門課程,雖然沒正兒八經聽過幾節課,但是實驗課程卻甚是有趣,引起了我們幾個小伙伴的好奇心,總想趁老師不在偷偷拆開看看,到底里面是一個PC還是一個專用的芯片,可惜一直沒有得手。不過后來倒是在微機原理實驗室里從一堆廢電腦里拆出一個Voodoo(好家伙,淘寶現在居然能賣15w)
畢業后一不小心進入了工控行業,開始研發DCS/PLC產品,接觸到了這類產品的相關技術,終于明白PLC里面并沒有專用的芯片,其核心部件就是MCU或者MPU/CPU,小型的用MCU,中大型的用MPU/CPU,用PC做的PLC有個專用的名字:Soft-PLC。之前朋友圈里有不少人在分享文章:“PLC, DCS, MCU有什么區別,能不能替換等等”,這里揭開第一個秘密:PLC其實就是拿MCU做的,它們本質上是沒有區別的。
既然PLC是用MCU/MPU做的,那具體區別在哪兒呢?上學時看過很多文章和書籍,回想起來總感覺它們總在外面蹭蹭,極少能真正進去,讀者往往得到似是而非的東西。今天我們就好好的刨一刨Codesys,爭取能往祖墳上刨(受到License的限制,本文只會展示Codesys已公開內容,并以Codesys V2.3版本為例)。
1. 什么是CodesysCodesys是一個PLC開發套件,將它的RTS組件運行在MCU/MPU端,并配合Codesys PC端就可以輕松設計出一款PLC。之前在公眾號上看到哪位大哥在講國內工業軟件的短板,拉出Codesys來,說它是PLC界的安卓,國內的匯川、合信、和利時、英威騰、臺達,國外的倍福、施耐德、力士樂都在用,可安卓開源的啊,誰見過入門費20W¥的安卓?
相信有不少朋友開始嘀咕了,這家伙就沒有競爭對手了么?有,但確實不多,而且規模也都不大,不然怎么說Codesys是行業安卓呢。下面列了幾個玩家(包括開源項目):
VendorSoftwareDescription
3SCodesyshttps://www.codesys.com/
KW-Software(Phoenix收購)MultiProg原先是Codesys最大競爭對手,后被Phoenix收購,改名PLCnext
infoteamOpenPCShttp://infoteam.com.cn/
RockwellISaGRAFhttps://www.rockwellautomation.com/
logicalslogi.CADhttps://www.logicals.com/en/
ide4plcide4plchttps://ide4plc.wordpress.com/
BeremizBeremizhttp://www.beremiz.org/
1.1 Codesys的構成Codesys由3部分組成:
PC端的Codesys軟件:給電氣攻城獅提供的編程IDE(編輯器+編譯器+調試器),相當于MCU攻城獅的Keil,IAR。這個IDE是可以免費下載。
PLC端的Runtimer system:給PLC Vendor提供的軟件套件,要花錢買的,可以運行在不同的芯片平臺。后面簡稱RTS(也有其他廠商叫RTE)。
Target配置工具:PC端IDE和PLC端Runtimer之間的橋梁,通過編寫一些配置文件來生成一個目標文件,目標文件含有PLC端的各種信息。
1.2 Codesys for PCCodesys V2.3這個軟件發布的比較早,和它的黃金搭檔應該是WinXP或者Win7,如果裝在Win10系統上可能會出現藍屏,但這并不影響我們對它進行分析,如果安裝的時候一路next,軟件會被安裝在如下路徑:C:Program Files (x86)3S SoftwareCODESYS V2.3
雙擊Codesys.exe打開軟件會看到歡迎的提示
點擊新建一個項目會提示Target選擇窗口,因為我這里啥也沒裝,所以沒有任何的Target可以選擇,點擊OK進入POU設置頁面
上圖左邊需要設置POU的類型:程序或者功能塊。程序就相當于Keil,IAR里的程序,功能塊相當于Keil,IAR里的LIB
右邊選擇POU的語言,Codesys支持6種語言:IL, LD, FBD, SFC, ST, CFC,這六種語言都follow IEC 61131-3的標準,這六種語言就不展開了,感興趣的小伙伴自己百度,ST語言的語法類似于C語言,只要在編輯器輸入;就相當于nop指令,一個空函數就完成了。
不過這還不能編譯通過,因為還沒有設置Target,Codesys編譯器還不知道PLC有多少資源,RAM多大,什么Core它都不知道,所以我們需要安裝一個Target,這個一般都是由PLC廠商提供,有些廠商為了用戶方便,將Codesys PC端進行了二次打包,這樣安裝好后就有默認的Target了,而且歡迎logo也可以替換為自己的,具體做法我只展示一次,亮點已經標注了
3S自帶了幾個Target需要安裝一下即可,雙擊InstallTarget.exe,然后選擇Open目標文件的路徑,安裝需要的Target
1.3 Codesys and Target安裝好Target后,我們可以來C:Target目錄查看相關的內容,里面最重要的兩個文件.trg,.CFG,其中trg是通過工具生成的,PLC vendor會根據所選擇的MCU平臺來定義該文件,比如用什么處理器,編譯器,N, M, I, Q, R各個區地址和大小。CFG文件定義了該PLC通道定義
NameDescription
*.trg定義Target相關參數設置
PCBASEDIO*.CFG定義PLC的通道參數
Trg文件對應如下配置:
CFG文件對應通道數據,可以添加子模塊,比如CAN,CP5613等:
CFG文件內容示例:
1.4 編譯成功設定好Target后,就可以成功編譯拉
今兒就寫到這兒吧,下一篇專門講講RTS吧未完待續
責任編輯:haq
-
mcu
+關注
關注
146文章
17171瀏覽量
351525 -
plc
+關注
關注
5012文章
13314瀏覽量
463850 -
PC
+關注
關注
9文章
2086瀏覽量
154301
原文標題:揭秘PLC背后的故事1
文章出處:【微信號:TopSemic,微信公眾號:TopSemic嵌入式】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論