信捷PLC XD/XL系列C语言功能块的应用
信捷PLC XD/XL系列C語言函數的應用
前言
本篇文章主要提及信捷PLC在編寫,調用C語言功能塊時的一些問題:
現在開始接觸國產PLC發現對比起他的’摸板‘三菱的PLC,信捷較為人性化的一點是他加入了C語言功能塊的支持,其實現在PLC開始支持浮點運算,他的浮點運算能力不是那么容易發揮出來(當然我的個人能力不足是很大的一個原因)。所以這次接觸到信捷覺的功能塊確實是個好東西,而且使用的也是較為基礎的C語言。
一、信捷的C語言功能塊
XD/XL 系列支持用戶在信捷 PLC 編輯工具軟件中利用 C 語言編寫功能塊,在需要的地方進行調用,
其最大的優點是支持幾乎所有的 C 語言函數(相對于 XC 系列,XD/XL 系列還支持全局變量 ),增強了程序的保密性,同時由于可進行多處調用和不同文件的調用,大大提高了編程人員的效率。
其中讓C語言功能塊真正變得簡單的部分是XD/XL 系列還支持全局變量,之前的XC系列不支持全局變量,數據調用起來其實不是很方便,特別是HD與D寄存器之間的數據調用。
二、C語言功能塊的新建,編寫
1.新建C語言功能塊
在信捷PLC編程工具軟件中左邊工程欄中找到函數功能庫,可以在默認庫中直接新建源文件也可以自己新建一個庫接著再新建源文件;
新建過程中要注意:用戶自定義函數名稱,由數字,英文,下劃線組成,首字符不能為數字,名稱長度需<=9個字符。用拼音起名字要注意一下
圖二中的映射參數對應的梯形圖中的軟原件,一般我都會只將其映射成D和M,后面會解釋原因。
2.C語言函數的編寫
在這個界面我們就是正式功能塊的編寫,首先默認只會將圖中所示的HD,D,HM,M映射,如果還想調用X,Y這類寄存器,可以通過修改宏定義完成,具體參考XD/XL系列可編程控制器用戶手冊[基本指令篇] 280頁。
下面我們主要來提一下怎么調用PLC中寄存器的數據。
一般我們用功能塊都是做運算時候才用(反正我就是,邏輯類的東西一般都在梯形圖中完成,數據一般交由功能塊處理)。映射的D或HD可以直接用形參中的W來使用,可以看到圖二中的參數類型為有符號數的16位整數型指針,所以我們通過數組的方式調用。
W[0] = 1; W[10] = W[11] + W[12];DW[10] = DW[12] +DW[14];需要注意,在W前直接加上D為調用雙字;W前加F為浮點運算;但是不建議這樣用。
記得我們開頭說過,XD/XL 系列還支持全局變量,我個人更傾向于通過手動給每一種類型數據定義指針,統一后編程過程流暢很多。
3.指針的定義
通過在函數前定義指針
INT8U; //8位無符號整數 INT8S; //8位有符號整數 INT16U //16位無符號整數 INT16S //16位有符號整數 INT32U //32位無符號整數 INT32S //32位有符號整數 FP32; //單精度浮點 FP64; //雙精度浮點 #define FD_H*(FP32*)&HD //將FD_H定義為HD的浮點指針#define FD_D*(FP32*)&D //將FD_D定義為D的浮點指針然后在函數塊中調用對應的數據。
例:
WD[814] = DW[808] / 21.220677 - FD_D[810]; WD[816] = DW[806] / 100 - FD_D[812];統一每個功能塊中的指針定義,實現不同的C語言功能塊之間的數據調用近似無感。
三、C語言功能塊調用
在梯形圖中,調用要與之前在新建源文件時候軟原件的類型要一致。
當我們自定義指之后,我建議都將其映射為D0與M0,寫起來方便。
以上僅為個人使用習慣,有空閑時間寫下來,如有高見歡迎提出
總結
以上是生活随笔為你收集整理的信捷PLC XD/XL系列C语言功能块的应用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Linux 和 Windows 平台不同
- 下一篇: 内置天线需要的空间