定義一個共享數據塊DB1 在DB1中定義一個數組 用程序 訪問數據里面的某一個成員或者地址連續的成員


提綱 : 定義一個共享數據塊 DB1 在DB1 中定義數組

用SFC21 實現 實現全部數組元素的賦一樣的值

實現 給數組中的某一個元素賦值

實現 對數組中的全部元素賦值

實現將數組中的某個 或者 某一串 元素讀取出來,放在程序中的某一個變量 或者 某些連續數組的元素中

 

 

 

訓練前 需要掌握的知識點

在書本72 實訓十六 中

L P#10.0 //表示將32位內部 指針值轉載到累加器。

 

P#10.0 表示 10.0 是一個指針常量 。

P# "#"號后面緊跟的是 指針變量里面的值。

P#DB1.DBX0.0 INT 1 INT 表示 X 是 字 Word (字)

 

例如 在數據塊DB1 中定義了 數組變量

P# DB1.DBX0.0 INT 1

DB1.DBX0.0 INT 1 實際就是 DB1數據塊里面定義的數組Press[1]

 

在上圖1 中的輸入以后 就變為 P# DB1.DBX0.0 INT 1

 

 

 

知識點2

P#DB1.DBX0.0 INT 4

表示的是 DBW0~DBW6

實際上就 DBW0 DBW2 DBW4 DBW 6

 

知識點3

 

BLKMOV 的輸入參數 SRCBLK 和輸出參數 DSTBLK 的數據類型必須 一致。

輸入是字節類型, 輸出也必須是字節類型

輸入是字類型, 輸出也必須是字類型

 

 

練習1

將MW2 里面的值 寫入數組 DB1.Press 里面的全部數組元素

例如MW2 是1 執行以后 DB1.Press[1]=1

DB1.Press[2]=1

DB1.Press[3]=1

……

DB1.Press[100]=1

 

 

練習 2 寫入數組中的某一個元素 (重要)

寫入第1個元素

注意:此時的 P#DB1.DBX7.0 INT 1

表示的是 DB1.DBW7 INT 表示尋址的是字 WORD 1 表示 只尋址一個字

 

DBW7=DB1.Byte[7]+DB1.Byte[8]

假設我把 MW2設為30 對應於十六進制的0X001E

也就是說 byte[7]是 0X00 BYTE[8]對應的是0X1E

 

仿真

可以知道 地址為8.0 的高字節 寫入的是0X1E 所以Press[5]是0X1E00=十進制7680

地址為6.0的低字節 寫入的是0X00

 

假設MW2寫入十進制 對應16進制012C

則Prress [4] 為 0X0001 對應十進制 1

Press[5]對應OX2C00 對應十進制 11264

 

如果剛好P#DB1.DBX4.0 int 1

DBW4=BYTE4 +BYTE 5 與 DB1.DBW4 重合 等於 Press[3 ]

仿真 MW2 寫入520

 

注意:程序在修好了以后 必須先保存 再下載 才生效。

 

練習3

寫入數組中的某幾個連續的元素

例如 連續寫進press[6 press[7 press[8 press[9 ess[10

5個整形

 

執行完以后 只有preSS [6] 被成功賦值。

 

如果需要賦予 5個值日 。 則輸入必須是統一類型的5個數據 改正程序為

輸入的參數 改正為 P#2.0 INT 4 表示的是 MW2 MW4 MW6 MW 8

 

執行結果

 

在共享數據塊DB1 查詢值的變化

 

 

 

 

 

 

 

 

練習 4 將DB1數據塊中的DBW4 DB1.DBW4 復制到MW10 中去

 

百度網盤 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM