快使用Ctrl+D收藏本站!如果本站的文章以及資源有幫助到您,希望您能贊助本站服務器費用,感謝您的支持!本站開放注冊,現邀請您一起分享技術心得!您可以-注冊-

第三章:3.1變量的表示與聲明

CoDeSys Julius_wen 426℃ 0評論

3.1.1什么是變量

天天炫斗洛漓 www.wfrrl.icu 我們的PLC(可編程邏輯控制器)其實可以把PLC理解成廣義上的計算機,計算機可以做很多的事情,前提是人們得用計算機熟悉的語言告訴計算該做什么該怎么做。計算機熟悉的語言就是編程語言了,在真正的計算機上什么C語言啊,C++啊,Java啊,Python啊,C#啊等等都是計算機編程語言。相比于PLC編程,我們也要使用PLC熟悉的編程語言。而基于codesys開發的PLC支持PLCOpen規定的6種編程語言。此篇教程,我們主要講ST編程。

我們在寫程序完成我們想要的功能的過程中,就需要使用各種數據作為信息的承載體。而有些數據在程序使用之前就已經預先設定好了,在整個程序的運行過程中沒有變化。這些量被稱為常量constant。而有些量在程序運行當中數值可能會實時變化,可能被改變和賦值,這些量被稱為變量。有請我們本章主角閃亮登場~變量

變量顧名思義就是一種在程序執行過程中,不斷變化的量。不斷變化其實也很好理解,就是指這個變量存儲的數據值,在程序執行過程中根據程序流程在實時刷新變化。變量也分為很多很多種。像基本數據類型的變量,像功能塊變量,像結構體變量,像數組變量等等。

變量是什么東東搞清楚了,咱們下一章簡單講講變量的標識符

3.1.2 變量標識符

上一章節我們為大家介紹了變量的概念。那么變量又該怎么表示呢?這里就需要引入變量標識符的概念了。

其實也很好理解,我們日常生活中會有各種各樣的名字,而這些名字就是我們人類社會中每一個變量個體的標識符。比如對于每個人類個體而言,我們都有自己的名字,對于我們養的寵物而言它們可能也有自己的名字。我們購買很多商品的時候,這些商品大都擁有自己的ID條碼,這些條碼ID就可以認為是這些“變量”的名字。

其實這些名字,就是這些變量的標識符,用來給人們區分的。下面用一個例子來大家簡單講一下。

下面是ST語言的關鍵字,用于表示當前段代碼是什么類型的。比如下面這段代碼,代表的就是YJ_BeepAlarm是一個功能塊,在這個功能塊中輸入變量區有哪些變量參數輸入進來,給當前功能塊程序使用。

下面這段代碼,就是上述說的輸入變量區中的輸入變量。這些輸入變量擁有自己的名字,同時知道自己的類型。

比如“ib_報警啟動”,“ib_報警停止”,”if_報警周期”,“if_報警占比”,“id_報警次數”這些都是變量的名字。而跟在它們后面的就是表示這個變量是什么類型的。就好比人類社會中,有“小米”、“小明”,“杰克”等名字,但是他到底人呢還是寵物呢亦或是手機品牌的名字呢,都是需要我們進行分類進行限定的。

在程序編程中,我們也需要做這些限制,也就是我們每一個變量名字(標識符)后面,都有自己的數據類型。關于數據類型的分類,我們將在3.4章節為大家介紹。

在codesys編程中,codesys平臺是支持中文編程的,具體設置方法請參考1.4章節。使用中文編程在大多數編程語言中,并不支持。所以codesys在中國本地化方面,是很人性化的。我們可以使用codesys用中文編程。

這里插一句題外話,我相信隨著中國國力的提升,我相信未來支持中文編程的語言會越來越多的……

3.1.3變量聲明的格式

&
ensp;???本章節內容參考codesysV3基礎用戶手冊。

變量聲明就是指定變量的名稱、類型和賦初始值,變量的聲明非常重要,未經聲明的變量是不能通過編譯的,所以也無法在程序中使用。用戶可以在程序組織單元(POU)、全局變量列表(GVL)和自動聲明對話框中進行變量的聲明。在CoDeSys 中變量聲明分為兩類,普通變量聲明和直接變量。

1) 普通變量聲明

最常用的變量聲明,不需要和硬件外設或通訊進行關聯的變量,僅供項目內部邏輯使用。普通聲明須符合以下規則:

< 標識符 > : < 數據類型 > {:=< 初值 >};
{}中為可選部分。
如nTest:BOOL;,nTest:BOOL:=TRUE;

2) 直接變量聲明

在CoDeSys 應用中,當需要和可編程邏輯控制器的I/O ??榻斜淞坑成浠蠔屯獠可璞附型繽ㄑ妒?,需要采用此聲明方法。

使用關鍵字AT 把變量直接聯結到確定地址,直接變量須符合以下規則:

AT<地址>:
< 標識符 > AT < 地址 > : < 數據類型 > {:=< 初始化值 >};
{}中為可選部分。

使用“%”開始,歲后是位置前綴符號和大小前綴符號,如果有分級,則用整數表示分級,并用小數點符號“.”表示,如%IX0.0,%QW0。直接變量聲明的具體格式如圖4.X 所示。

位置前綴的定義:
* I:表示輸入單元。
* Q:表示輸出單元。
* M:表示存儲區單元。
大小前綴的定義如表4-X 所示。

前綴符號 定義 約定數據類型
X 位(bit) BOOL
B 字節(BYTE) BYTE
W 字(WORD) WORD
D 雙字(DWORD) DWORD
L 長字(LWORD) LWORD
* 未特定位置的內部變量,系統自動分配。

【例4.X】在程序中定義了變量雙字型Var1,如需拿取該變量其中的一部分數據,將其轉換成布爾/字節/字類型的變量,其首地址為多少,該如何換算:
VAR
Var1 AT%ID48:DWORD;
END_VAR

%I 說明了該變量屬于輸入單元,具體的地址為%ID48。該地址對應的內存映射詳見表4-x 所示。字地址%IW96 和%IW97 兩個字組合后對應%ID48,因為48* 2(字節)后的字節首地址為96。同樣的道理,字節地址%IB192、%IB 193、%IB 194 和%IB 195 這四個字節變量組合后對應%ID48,因為48 * 4(字節) 后對應的字節首地址正好為192。表4.x 列出了CoDeSys V3.x 在尋址時,根據數據類型的大?。╔:bit,B:byte,W:word,D:dword)。

%IX 96.0 – 96.7 96.8 – 192.15 97.0 – 97.7 97.8 – 97.15
%IB 192 193 194 195
%IW 96 96 97 97
%ID 48 48 48 48

映射關系:
1) %MX12.0:是%MB12 的第一位。
2) %IW4:表示輸入字單元4(字節單元8 和9)。
3) %Q*:輸出在一個為特定的位置。
4) %IX1.3:表述輸入第1 字節單元的第三位。

這里介紹的計算方法只適用于CoDeSys V3.x 的,CoDeSys V2.x 的計算方法略有不同。

轉載請注明:天天炫斗洛漓 » 第三章:3.1變量的表示與聲明

贊賞作者

微信贊賞支付寶贊賞

喜歡 (1)or分享 (0)

如果您喜歡本站文章,感覺本站的資源對您有幫助,請狠狠點擊下面

每累計贊助40元,即可讓本站按最低配置運行一個月,感謝您的支持!

發表我的評論
取消評論

表情

Hi,您需要填寫昵稱和郵箱!

  • 昵稱 (必填)
  • 郵箱 (必填)
  • 網址
(2)個小伙伴在吐槽
  1. 寫的很好,支持一下
    異界沒有手機2019-05-10 06:55 回復
    • 感謝您的支持
      Julius_wen2019-05-10 13:44 回復