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