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

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