|
在現在工控行業的發展中,越來越多的設備控制都不局限于簡單的繼電器或者I/O控制,都趨向于集成功能化和高性能化的發展,更加智能。因此,對于數據處理以及復雜數學運算的要求越來越高。所以,目前市面上新出的PLC或者控制器都趨向于能做復雜數學運算大存儲量的方向發展,編程語言也趨向于支持多樣化,簡單化,向著高級語言方向發展。目前在國際IEC61131中支持的編程語言:語句表(IL),梯形圖(LD),功能塊(FBD),順序功能圖(SFC),結構文本(ST),還有一種極少支持的連續功能圖(CFC)目前不屬于該標準之內。 指針和數組都是在處理大的數據庫會用到,比如強大的配方(上萬種的),強大是數據交流,比如PLC之間或者與上位機之間的數據交換采集顯示等。而得益于ST的編程方式使得我們以前得用梯形圖編寫上百行或者千行的程序我們現在僅此幾行或者幾十行就搞定了。 指針是一個特殊的變量,它里面存儲的數值被解釋成為內存里的一個地址。要搞清一個指針需要搞清指針的四方面的內容:指針的類型,指針所指向的類型,指針的值或者叫指針所指向的內存區,還有指針本身所占據的內存區。 數組是在程序設計中,為了處理方便, 把具有相同類型的若干變量按有序的形式組織起來的一種形式。這些按序排列的同類數據元素的集合稱為數組。有分一維、二維、多維數組。 自定義數據類型就是用戶自定義數據類型名稱以及所屬歸類的數據,可以是單個單類型,也可以是多個多類型。 從上面的定義看指針和自定義數組都可以定義相應的數組在程序的去應用。 下面就基于施耐德SoMachine編程平臺采用ST的編程方式的相關應用。 例子1:指針數組在焊接機的應用: 首先自定義2個指針變量: pt:POINTER TO UINT; pt1:POINTER TO UINT; 在定義一個1500個數據的數組用來交換數據 ParaArray: ARRAY[1000..2500] OF UINT; 因為要和上位機進行數據交換所以必須映射到內部存儲區。 然后就是相關的讀取和存儲數據編程。 如下圖:

例子 2:大型數據配方在 PLC編程的應用(自定義數據數組應用) 首先建立一個自定義數據庫聲明文件(dut) 包含數據類型、名字。
建立對應的數組
// 總共的數據量(15組*32點)
user_date:ARRAY[1..480] OF my_dates; 下面就是對于數據的讀寫操作 該自定義數據數組總共處理15個配方每個配方四個(多的有八個)變量每個變量有32組參數選擇。 例子3:數組與數組之間處理 自己定義不同的數組但是數據量和類型一樣可以選擇映射到內部變量或者就純粹的自定義。 VAR_GLOBAL RETAIN ECO AT %MX1000.5: BOOL; GXO AT %MD1:ARRAY[1..102] OF REAL ; AXY:ARRAY[1..102] OF REAL; (*PO*) Table:ARRAY[1..102] OF REAL; PO:UINT; END_VAR 接下來就運用靈活的C語言對他們進行處理 由此可見這樣的編程模式和數據處理方法是不是讓我們耳目一新(對于PLC來說),如果再遇到這種強大的數據處理是不是感覺得心應手了呢。 C語言對于目前來看越來越被人接受,因此PLC行業其發展也逐步向其靠齊,因此搞工控的朋友們C語言還是挺重要的。到時候就知道多一門語言是那么的重要哦。 (水平有限,可能相關定義未解釋清楚,各位看官可以百度一下,謝謝!
|