PLC基礎篇之常量與變數

程序設計的本質是對各類數據進行讀寫操作。數據有其特有屬性,根據屬性的不同,可以分為不同的數據類型。前面的文章我們介紹了PLC的基本數據類型,知道了「位」、「整型」、「字」、「雙字」等基本數據類型的概念。數據類型屬於抽象概念,在編程時,我們並不能直接操作數據類型,而是要操作數據的實例。

實例是數據類型的具體表現,包括兩種:「常量」與「變數」。今天這篇文章就跟大家聊聊在STEP7編程中用到的常量與變數。

「常量」,英文名稱「constant」,是指在程序的運行過程中其值不能被改變的量。常量存放在只讀存儲區,任何試圖修改常量值的代碼都將引發錯誤。

常量可以有不同的數據類型,可以是「位元組」、「字」或者「雙字」。比如:B#16#10表示以「位元組」形式存放的常量(佔用一個位元組),其值為十六進位的「10」;W#16#10表示以「字」形式存放的常量(佔用兩個位元組),其值為十六進位的「10」;DW#16#10表示以「雙字」形式存放的常量(佔用四個位元組),其值為十六進位的「10」;

上面的例子可以看出,雖然常量存放的值都為「0x10」,但是由於聲明的數據類型不同,所以它佔用的內存的資源也不同。知道了這個道理,在以後的程序設計中,就可以根據具體的需要,採用不同數據類型的常量,以便能節省內存資源,提高程序的運行效率。

常量可以表示二進位數據,用前綴「2#」表示,比如「2#1010」表示二進位的「1010」。在進行按位「與」的操作中,二進位的常量使用起來會很方便。

常量可以聲明成整數類型,在SAMITIC STEP7平台下用「L#」表示,比如「L#10」,表示十進位的「10」;「L#」也可以表示負數,比如「L#-5」,表示十進位的「-5」。「L#」聲明的常量佔用四個位元組,總計32位。

S7-1200/1500系列PLC支持更多的數據類型,其中整型數據被細分成有符號短整型(SINT),無符號短整型(USINT),有符號整型(INT),無符號整型(UINT),有符號雙整型(DINT),無符號雙整型(UDINT),有符號長整型(LINT),無符號長整型(ULINT)。在S7-1200/1500下的整型常數,只需要在數據類型的後面加上「#」即可,比如:「SINT#10」或者「INT#567」等。

常數可以聲明成實數(浮點數),在SAMITIC STEP7平台下不需要特殊的前綴,只需要在書寫是加上小數點即可,比如「10.0」,編輯器會自動使用科學計數法表示該數值,如下圖:

在博途(Portal)平台下,可以使用「REAL#」表示實數常數。

在STEP7中,常量還可以表示時間,用「S5T#」表示。S5格式的時間常量佔用2個位元組,其格式為S5T#D_H_M_S_MS。其中「D」表示「天」,「H」表示小時,「M」表示「分鐘」,「S」表示「秒」,「MS」表示「毫秒」。比如:S5T#1M5S表示1分鐘零五秒,時間常量一般和定時器(Timer)配合使用。

接下來說說變數。

「變數」,英文名稱「variable」,是在程序的運行過程中值可以被修改的量。變數也可以定義成不同的數據類型,與定義常量不同的是,定義變數時需要明確其存儲區域。

西門子S7系列PLC的存儲區域包括:輸入過程映像區(I),輸出過程映像區(Q),位存儲區(M),定時器區(T)和計數器區(C)。比如M0.1表示以「位」的方式來操作「位存儲區」的第0個位元組的第1位,MB0表示「位存儲區」的第0個位元組「」,MW0表示「位存儲區」的第0個「字」;MD0表示「位存儲區」的第0個「雙字」。

這種以存儲區的編號來表示變數的方式稱為變數的絕對地址表示。絕對地址不能直觀地表示實際物理信號意義,程序的可讀性較差。為了增加程序的可讀性,S7系列PLC還支持使用符號名稱來表示變數,比如可以給M0.1起個符號名「Switch_Open」,這樣就知道該變數與開關的打開狀態有關。

常量與變數的概念就先介紹到這裡,更多關於變數的深入內容,將在以後的文章中陸續介紹。

官網方正智芯(founder chip)提供本文PDF版本下載:


推薦閱讀:

什麼情況下Profibus網路要使用RS485中繼器(Repeater)?
讀懂編碼器的工作原理及增量型編碼器
PLC-導火線:工控PLC蠕蟲的實現
DataLogic掃碼槍的配置及如何連接PLC串口模塊?(內附圖紙)

TAG:电气工程 | 电气自动化 | 可编程逻辑控制器PLC |