官术网_书友最值得收藏!

2.3.4 全局數據塊與其他數據類型

1.生成全局數據塊

在項目“電動機控制”中,單擊項目樹PLC的“程序塊”文件夾中的“添加新塊”,在打開的對話框中(見圖2-13中的大圖),單擊“數據塊(DB)”按鈕,生成一個數據塊,可以修改其名稱或采用默認的名稱,其類型為默認的“全局DB”,生成數據塊編號的方式為默認的“自動”。如果用單選框選中“手動”,可以修改塊的編號。

圖2-13 添加數據塊與數據塊中的變量

單擊“確定”按鈕后自動生成數據塊。選中下面的復選框“新增并打開”,生成新的塊之后,將會自動打開它。右擊項目樹中新生成的“數據塊_1”,執行快捷菜單命令“屬性”,選中打開的對話框左邊窗口中的“屬性”(見圖2-14),如果勾選右邊窗口中的復選框“優化的塊訪問”,只能用符號地址訪問生成的塊中的變量,不能使用絕對地址。這種訪問方式可以提高存儲器的利用率。

圖2-14 設置數據塊的屬性

只有在未勾選復選框“優化的塊訪問”時,才能用絕對地址訪問數據塊中的變量,數據塊中才會顯示“偏移量”列中的偏移量。

右擊數據塊灰色的表頭所在的行,選中“顯示/隱藏”,通過勾選復選框,可以設置顯示或隱藏某個列。

2.字符串

數據類型String(字符串)是字符組成的一維數組,每個字節存放1個字符。第一個字節是字符串的最大字符長度,第二個字節是字符串當前有效字符的個數,字符從第3個字節開始存放,一個字符串最多254個字符。

數據類型WString(寬字符串)存儲多個數據類型為WChar的Unicode字符(長度為16位的寬字符,包括漢字)。第一個字是最大字符個數,默認的長度為254個寬字符,最多16382個WChar字符。第二個字是當前的寬字符個數。

可以在代碼塊的接口區和全局數據塊中創建字符串、數組和結構。

在“數據塊_1”的第2行的“名稱”列(見圖2-13中的小窗口)輸入字符串的名稱“故障信息”,單擊“數據類型”列中的按鈕,選中下拉式列表中的數據類型“String”。“String[30]”表示該字符串的最大字符個數為30,其起始值(初始字符)為‘OK’。

3.數組

數組(Array)是由固定數目的同一種數據類型元素組成的數據結構。允許使用除了Array之外的所有數據類型作為數組的元素,數組的維數最多為6維。圖2-15給出了一個名為“電流”的二維數組Array[1..2,1..3]of Byte的內部結構,它一共有6個字節型元素,第一維的下標1、2是電動機的編號,第二維的下標1~3是三相電流的序號。數組元素“電流[1,2]”是1號電動機第2相的電流。

圖2-15 二維數組的元素

在數據塊_1的第3行的“名稱”列輸入數組的名稱“功率”(見圖2-13中的小圖),單擊“數據類型”列中的按鈕,選中下拉式列表中的數據類型“Array[lo..hi]of type”。其中的“lo”(low)和“hi”(high)分別是數組元素的編號(下標)的下限值和上限值,它們用兩個小數點隔開,可以是任意的整數(-32768~32767),下限值應小于等于上限值。方括號中各維的參數用逗號隔開,type是數組元素的數據類型。

將“Array[lo..hi]of type”修改為“Array[0..23]of Int”(見圖2-13),其元素的數據類型為Int,元素的下標為0~23。在用戶程序中,可以用符號地址"數據塊_1".功率[2]或絕對地址DB1.DBW36訪問數組“功率”中下標為2的元素。

單擊圖2-13中“功率”左邊的按鈕,它變為,將會顯示數組的各個元素,可以監控它們的起始值和監控值。單擊“功率”左邊的按鈕,它變為,數組的元素被隱藏起來。

4.結構

結構(Struct)是由固定數目的多種數據類型的元素組成的數據類型。可以用數組和結構做結構的元素,結構可以嵌套8層。用戶可以把過程控制中有關的數據統一組織在一個結構中,作為一個數據單元來使用,而不是使用大量的單個的元素,為統一處理不同類型的數據或參數提供了方便。

在數據塊_1的第4行生成一個名為“電動機”的結構(見圖2-13),數據類型為Struct。在第5~8行生成結構的4個元素。單擊“電動機”左邊的按鈕,它變為,結構的元素被隱藏起來。單擊“電動機”左邊的按鈕,它變為,將會顯示結構的各個元素。

數組和結構的“偏移量”列是它們在數據塊中的起始絕對字節地址。可以看出數組“功率”占48B。

下面是用符號地址表示結構中元素的例子:"數據塊_1".電動機.電流。

單擊數據塊編輯器的工具欄上的按鈕(見圖2-13),在選中的變量的下面增加一個空白行,單擊工具欄上的按鈕,在選中的變量的上面增加一個空白行。單擊擴展模式按鈕,可以顯示或隱藏結構和數組的元素。

選中項目樹中的PLC_1,將PLC的組態數據和用戶程序下載到CPU,將CPU切換到RUN模式。打開數據塊_1以后,單擊工具欄上的按鈕,啟動監控功能,出現“監視值”列,可以看到數據塊_1中的字符串和數組、結構的元素的當前值。

5.Variant指針

Variant數據類型可以指向各種數據類型或參數類型的變量。Variant指針可以指向結構和結構中的單個元素,它不會占用任何存儲器的空間。

下面是使用符號地址的Variant數據類型的例子:MyDB.Struct1.pressure1,MyDB、Struct1和pressure1分別是用小數點分隔的數據塊、結構和結構中元素的符號地址。

下面是使用絕對地址的Variant數據類型的例子:P#DB5.DBX10.0 INT 12和%MW10,前者用來表示一個地址區,其起始地址為DB5.DBW10,一共12個連續的Int(整數)變量。

6.PLC數據類型

PLC數據類型用來定義可以在程序中多次使用的數據結構。打開項目樹的“PLC數據類型”文件夾,雙擊“添加新數據類型”,可以創建PLC數據類型。定義好以后可以在用戶程序中作為數據類型使用。

PLC數據類型可以用作代碼塊接口或數據塊中的數據類型,或用于創建具有相同數據結構的全局數據塊的模板。例如,為混合顏色的配方創建PLC數據類型后,用戶可以將該PLC數據類型分配給多個數據塊。通過調節各數據塊中的變量,就可以創建特定顏色的配方。

7.使用符號方式訪問非結構數據類型變量的“片段”

可以用符號方式按位、按字節、按字訪問PLC變量表和數據塊中某個符號地址變量的一部分。雙字大小的變量可以按位0~31、字節0~3或字0、1訪問(見圖2-16),字大小的變量可以按位0~15、字節0或1、字0訪問。字節大小的變量則可以按位0~7或字節0訪問。

例如在PLC變量表中,“狀態”是一個聲明為DWord數據類型的變量,"狀態".x11是“狀態”的第11位,"狀態".b2是“狀態”的第2號字節,"狀態".w0是“狀態”的第0號字。

圖2-16 雙字中的字、字節和位

8.訪問帶有一個AT覆蓋的變量

通過關鍵字“AT”,可以將一個已聲明的變量覆蓋為其他類型的變量,比如通過Bool型數組訪問Word變量的各個位。使用AT覆蓋訪問變頻器的控制字和狀態字的各位非常方便。

在FC或FB的塊接口參數區組態覆蓋變量。生成名為“函數塊1”的函數塊FB1,右擊項目樹中的“函數塊1”,選中快捷菜單中的“屬性”,在“屬性”選項卡取消“優化的塊訪問”屬性(去掉復選框中的對勾)。

打開函數塊1的接口區,輸入想要用新的數據類型覆蓋的輸入參數“狀態字”,其數據類型為Word(見圖2-17)。在“狀態字”下面的空行中輸入變量名稱“狀態位”,雙擊“數據類型”列表中的“AT”,在“名稱”列的變量名稱“狀態位”的右邊出現“AT‘狀態字’”。

再次單擊“數據類型”列,并聲明變量“狀態位”的數據類型為數組Array[0..15]of Bool。單擊“狀態位”左邊的按鈕,它變為,顯示出數組“狀態位”的各個元素,例如“狀態位[0]”。至此覆蓋變量的聲明已經完成,可以在程序中使用數組“狀態位”的各個元素,即Word變量“狀態字”的各位。

圖2-17 在塊的接口區聲明AT覆蓋變量

主站蜘蛛池模板: 香河县| 西吉县| 独山县| 尼玛县| 海兴县| 海淀区| 南澳县| 安溪县| 镇江市| 河池市| 钟山县| 宜黄县| 文成县| 乾安县| 大埔县| 合肥市| 昭苏县| 济阳县| 墨玉县| 商水县| 高安市| 江北区| 苗栗县| 衢州市| 万州区| 大城县| 海盐县| 德清县| 漳州市| 宜丰县| 东海县| 鄂州市| 仲巴县| 普宁市| 喀喇| 东丽区| 枣庄市| 宁德市| 苍南县| 尚义县| 瓦房店市|