plc與C語(yǔ)言有什么關(guān)系
PLC為可編程邏輯控制器(Programmable Logic Controller)的首字母縮寫(xiě)。是一種面向工業(yè)控制的微型計(jì)算機(jī)系統(tǒng)。
PLC的硬件系統(tǒng)必須有控制器(單片機(jī)、CPU、FPGA等)、執(zhí)行器(繼電器、光耦輸入等)、主板(電路板),三者缺一不可。由于現(xiàn)在的8位單片機(jī)片內(nèi)存儲(chǔ)容量最大可達(dá)64kB的程序存儲(chǔ)器或4kB的數(shù)據(jù)存儲(chǔ)器,32位單片機(jī)也有512kB的程序存儲(chǔ)器和128kB的數(shù)據(jù)存儲(chǔ)器,所以功能簡(jiǎn)單的PLC不需要片外存儲(chǔ)器(內(nèi)存芯片、內(nèi)存條)也可以運(yùn)行。而功能較強(qiáng)的PLC則需要片外存儲(chǔ)器、輔助存儲(chǔ)器(硬盤(pán)、SD卡)等附加設(shè)備。
PLC的軟件系統(tǒng)分為三個(gè)部分:
1、PLC主機(jī)上運(yùn)行的下位機(jī)程序。用于控制輸出、檢測(cè)輸入以及與上位機(jī)進(jìn)行通訊。該程序是梯形圖轉(zhuǎn)C語(yǔ)言或匯編語(yǔ)言,再編譯后燒寫(xiě)到PLC的程序存儲(chǔ)器內(nèi)的。雖然編譯的過(guò)程要經(jīng)過(guò)C語(yǔ)言或匯編語(yǔ)言,但是PLC廠家一般不允許用戶直接使用C語(yǔ)言或匯編語(yǔ)言編寫(xiě)PLC主機(jī)的下位機(jī)程序。
2、PLC編程軟件。用于向下位機(jī)寫(xiě)入用戶的控制方法。它將用戶的梯形圖轉(zhuǎn)換成C語(yǔ)言程序或匯編語(yǔ)言程序,編譯后燒寫(xiě)到PLC的程序存儲(chǔ)器中。編程軟件本身可以由C語(yǔ)言、C++語(yǔ)言等高級(jí)語(yǔ)言開(kāi)發(fā)。具體使用的開(kāi)發(fā)語(yǔ)言需要向相應(yīng)的PLC廠家了解。
3、上位機(jī)軟件。用于宏觀上協(xié)調(diào)控制PLC的運(yùn)行狀態(tài),代替PLC進(jìn)行復(fù)雜的計(jì)算,存儲(chǔ)設(shè)備的運(yùn)行記錄,并以可視化方式向管理員反饋系統(tǒng)信息。常見(jiàn)的上位機(jī)軟件為“組態(tài)軟件”,它是由PLC廠家或軟件公司開(kāi)發(fā)的上位機(jī)控制平臺(tái)。用戶可以使用指定的腳本語(yǔ)言進(jìn)行二次開(kāi)發(fā)。如“組態(tài)王”軟件就指定使用BASIC語(yǔ)言進(jìn)行二次開(kāi)發(fā)。如果不使用組態(tài)軟件,用戶也可以使用匯編、C語(yǔ)言、C++、JAVA、BASIC等各種編程語(yǔ)言,在它們各自的編譯器上編寫(xiě)代碼,開(kāi)發(fā)自己的上位機(jī)軟件。
C語(yǔ)言是一種面向過(guò)程的通用計(jì)算機(jī)編程語(yǔ)言,作為編程語(yǔ)言用戶數(shù)量排行榜上穩(wěn)坐前4的編程語(yǔ)言,廣泛應(yīng)用于工業(yè)控制(*PLC驅(qū)動(dòng)、*嵌入式系統(tǒng)、上位機(jī)軟件)、游戲開(kāi)發(fā)(▲DirectX、▲PhysicX、大型游戲開(kāi)發(fā))、操作系統(tǒng)開(kāi)發(fā)(*Windows核心、*Linux核心、*Android核心)、驅(qū)動(dòng)程序開(kāi)發(fā)(*USB驅(qū)動(dòng)、*串口驅(qū)動(dòng)、*網(wǎng)卡驅(qū)動(dòng)、*硬盤(pán)驅(qū)動(dòng))、軟件平臺(tái)搭建(JAVA虛擬機(jī)、Oracle數(shù)據(jù)庫(kù))、大型應(yīng)用軟件開(kāi)發(fā)(OFFICE、VM WorkStation、CAD、PhotoShop、SolidWorks、Matlab)之中。
上述例子中,凡左邊帶“*”的例子,如果不使用C語(yǔ)言,就只能選擇匯編語(yǔ)言,沒(méi)有其它選擇的余地,凡左邊帶“▲”的例子,必須經(jīng)過(guò)C語(yǔ)言進(jìn)行過(guò)渡才能使用其它語(yǔ)言,左邊不帶標(biāo)志的,可以使用C語(yǔ)言以外的語(yǔ)言,但使用C語(yǔ)言將大大簡(jiǎn)化軟件的開(kāi)發(fā)(主要是軟件性能很容易提升)。另外,C語(yǔ)言之所以叫“C”語(yǔ)言,是因?yàn)樗抢^“B語(yǔ)言”之后出現(xiàn)的編程語(yǔ)言,這個(gè)C代表的只是一個(gè)順序。
對(duì)比之后可知,PLC是一個(gè)工業(yè)控制系統(tǒng),包含軟硬件的概念。C語(yǔ)言是構(gòu)建工業(yè)控制系統(tǒng)及其它軟件的工具之一。它們之間是房屋與符號(hào)的關(guān)系。PLC是房屋,C語(yǔ)言是符號(hào)。符號(hào)連同其它圖素在紙上繪成藍(lán)圖、再將各種材料按藍(lán)圖進(jìn)行組裝就成了房屋??墒墙ǔ傻姆课萆蠀s看不到符號(hào)的存在,而符號(hào)不止可以用來(lái)設(shè)計(jì)房屋,還可以做更多更偉大的事情。
plc可以用c語(yǔ)言編程嗎
PLC有自己的編程語(yǔ)言,不能用c語(yǔ)言編程的。每個(gè)廠家有各自的編程軟件,幾個(gè)大公司的視窗版編程軟件如 三菱公司的GPP For Windows編程軟件,HMI人機(jī)界面畫(huà)面設(shè)計(jì)軟件,MELSEC-MEDOC編程軟件。
世界出名的PLC生產(chǎn)廠家還有,美國(guó)通用電氣公司,美國(guó)艾倫-布拉德利公司,日本三菱公司,日本富士電機(jī)公司,日本歐姆龍公司,德國(guó)西門(mén)子公司,的過(guò)通用電氣公司,法國(guó)TE公司,不同廠家的產(chǎn)品在使用上相差甚遠(yuǎn),甚至同一廠家不同系列產(chǎn)品在編程語(yǔ)言和編程方法上也有較大差異的!
plc的C語(yǔ)言編程詳解
本章重點(diǎn)介紹C語(yǔ)言編輯功能塊的特點(diǎn)、、編輯、指令調(diào)用、函數(shù)的存儲(chǔ)、應(yīng)用要點(diǎn)等,并附有常用函數(shù)列表。
1、功能概述
XCP新增功能,支持用戶在XCP Pro編程軟件中利用C語(yǔ)言編寫(xiě)功能塊,在需要的地方進(jìn)行調(diào)用,其最大的優(yōu)點(diǎn)是支持幾乎所有的C語(yǔ)言函數(shù),增強(qiáng)了程序的保密性,同時(shí)由于可進(jìn)行多處調(diào)用和不同文件的調(diào)用,大大提高了編程人員的效率。
2、指令形式
適用于XC系列PLC V3.0C及以上版本,XC1、XC3、XC5都支持。
名稱(chēng)由數(shù)字,英文,下劃線組成,首字符不能為數(shù)字,名稱(chēng)長(zhǎng)度需《=9個(gè)字符。 ?
名稱(chēng)不能與PLC內(nèi)置指令名稱(chēng)沖突,如LD,ADD,SUB,PLSR等。 ?
名稱(chēng)不能與當(dāng)前PLC已經(jīng)存在的函數(shù)功能塊同名。
3、操作步驟
1、打開(kāi)PLC編輯軟件,在左側(cè)的“工程”工具欄內(nèi)選擇“函數(shù)功能塊”,右擊選擇“添加新函數(shù)功能塊”。
2、出現(xiàn)如下對(duì)話框,填寫(xiě)所要編輯函數(shù)的信息。
3、在新建完成后,會(huì)出現(xiàn)下面的編輯畫(huà)面。
參數(shù)傳遞方式: 在梯形圖調(diào)用時(shí),傳入的D和M,即為W和B的起始地址。如上圖 D0,M0開(kāi)始,則W[0]為D0,W[10]為D10,B[0]為M0, B[10]為M10。如梯形圖中使用的參數(shù)為D100,M100,則W[0]為D100,B[0]為M100。因此,字與位元件的首地址由用戶在PLC程序中設(shè)定。
參數(shù)W: 表示字軟元件,使用時(shí)按數(shù)組使用,如W[0]=1;W[1]=W[2]+W[3];在程序中可按照標(biāo)準(zhǔn)C規(guī)范使用。
參數(shù)B: 表示位軟元件,使用時(shí)也按數(shù)組使用,支持位置1和位清零,如B[0]=1;B[1]=0; 以及賦值,如B[0]=B[1]。
雙字運(yùn)算: 在W前加個(gè)D,如DW[10]=100000,表示給W[10]W[11]合成的雙字賦值。
浮點(diǎn)運(yùn)算: 支持在函數(shù)中定義浮點(diǎn)變量,以及進(jìn)行浮點(diǎn)運(yùn)算。
函數(shù)庫(kù):用戶功能塊可以直接使用函數(shù)庫(kù)中定義的函數(shù)和常量,函數(shù)庫(kù)中包含的函數(shù)和常量見(jiàn)后附部分。 ?
支持的其他數(shù)據(jù)類(lèi)型:
預(yù)定義的宏:
四、函數(shù)的導(dǎo)入、導(dǎo)出
1、導(dǎo)出
(1)功能:將函數(shù)導(dǎo)出為文件,供其他PLC程序?qū)胗谩?/p>
(2)導(dǎo)出方式
a)可編輯:將源代碼也導(dǎo)出,并保存為文件.再次導(dǎo)入后,可再次編輯
b)不可編輯:源代碼不導(dǎo)出.再次導(dǎo)入后只可使用,無(wú)法編輯
2、導(dǎo)入
功能:導(dǎo)入已存在的函數(shù)功能塊文件,供該P(yáng)LC程序使用。
選中函數(shù)功能塊,右鍵點(diǎn)擊菜單“從硬盤(pán)導(dǎo)入函數(shù)功能塊文件”,選擇相應(yīng)文件,按確定即可。
五、功能塊的編輯
例:將PLC中寄存器D0,D1相加,然后將值賦給D2;
(1)首先在“工程”工具欄里,新建一個(gè)函數(shù)功能塊,在這里我們把它命名為ADD_2,并且
編輯C語(yǔ)言程序。
(2)編輯完之后,點(diǎn)擊編譯;
根據(jù)編譯信息列表內(nèi)所顯示的信息,我們可以查找修改C語(yǔ)言程序里的語(yǔ)法漏洞。在這里比較容易的發(fā)現(xiàn)程序中W[2]=W[0]+W[1]的后面缺少符號(hào)“;”。
當(dāng)我們將程序修改后,再次進(jìn)行編譯。從列表信息里可以確認(rèn),在程序里面并沒(méi)有語(yǔ)法錯(cuò)誤。
(3)然后再編寫(xiě)PLC程序,分別賦值十進(jìn)制數(shù)10,20到寄存器D0,D1中,并調(diào)用函數(shù)功能塊ADD_2。如下所示:
(4)然后將程序下載到PLC當(dāng)中,運(yùn)行PLC,并置位M0。
(5)我們可以通過(guò)工具欄上的自由監(jiān)控觀察到D2的值變成了30,說(shuō)明賦值成功了。
六、程序舉例
功能:利用函數(shù)功能塊計(jì)算出CRC校驗(yàn)值。 ?
CRC校驗(yàn)運(yùn)算規(guī)則如下:
(1)令16-bit寄存器(CRC寄存器)=FFFFH。
(2)將第一個(gè)8-bit byte 的訊息與低位元16-bit CRC寄存器異或(Exclusive OR)內(nèi)。
(3)右移一位CRC寄存器,將0填入高位元處。
(4)檢查右移的值,如果是0,就將第三步的新值存入CRC寄存器內(nèi),如果為非0,那么
將CRC寄存器的值與A001H異或,將結(jié)果存入CRC寄存器內(nèi)。 (5)重復(fù)(3)到(4),將8-bit全部運(yùn)算完成。 (6)重復(fù)(2)到(5),取下一個(gè)8-bit的訊息指令,直到所有訊息指令運(yùn)算完成。最后,
得到的CRC寄存器的值,即是CRC的校驗(yàn)碼。值得注意的是CRC的校驗(yàn)碼必須交換放
置與訊息指令的檢查碼中。
編輯C語(yǔ)言功能塊程序,如下:
編寫(xiě)PLC梯形圖程序,D0:校驗(yàn)數(shù)據(jù)的字節(jié)個(gè)數(shù),D1~D5:校驗(yàn)數(shù)據(jù)的內(nèi)容。如下:
下載到PLC里,然后運(yùn)行,使M0置 ON,通過(guò)自由監(jiān)控就會(huì)發(fā)現(xiàn)寄存器D6 ,D7內(nèi)分別存入了CRC校驗(yàn)值的高位與底位。
七、應(yīng)用要點(diǎn)
使用函數(shù)功能塊的PLC程序,上傳后.該函數(shù)功能塊無(wú)法上傳,將出現(xiàn)一個(gè)未知指令錯(cuò)誤。
一個(gè)函數(shù)功能塊文件內(nèi)部,可以寫(xiě)多個(gè)子函數(shù),進(jìn)行相互調(diào)用。
多個(gè)函數(shù)功能塊文件彼此獨(dú)立,不能相互調(diào)用各自擁有的函數(shù)。 ?
函數(shù)功能塊文件可以調(diào)用浮點(diǎn),算術(shù)等C語(yǔ)言庫(kù)函數(shù),如sin,cos,tan
八、附函數(shù)表
-
plc
+關(guān)注
關(guān)注
5006文章
13107瀏覽量
461444 -
C語(yǔ)言
+關(guān)注
關(guān)注
180文章
7594瀏覽量
135850
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論