国产aaaa级全身裸体精油片_337p人体粉嫩久久久红粉影视_一区中文字幕在线观看_国产亚洲精品一区二区_欧美裸体男粗大1609_午夜亚洲激情电影av_黄色小说入口_日本精品久久久久中文字幕_少妇思春三a级_亚洲视频自拍偷拍

首頁 > 化工知識 > 西門子SCL編程入門教程連載(11)-POKE指令

西門子SCL編程入門教程連載(11)-POKE指令

時間:2020-09-25 來源:方正智芯 瀏覽:

上一篇文章我們介紹了PEEK指令,它是用來讀取數(shù)據(jù)的指令。除了數(shù)據(jù)的讀取,SCL還提供了數(shù)據(jù)寫入的指令——POKE。今天這篇文章,我們來學習下POKE指令的用法。

POKE指令用來將某一個存儲區(qū)地址的數(shù)據(jù)寫入到另一個存儲區(qū)地址,無須指定數(shù)據(jù)類型。
可以在【基本指令(Basic instructions)】-【移動操作(move operations)】-【讀寫內(nèi)存(Read/Write memory)】中找到該指令,如下圖:

將POKE指令添加到程序塊中的初始狀態(tài)如下:

可以看到,POKE指令有四個參數(shù):area ,dbNumber,byteOffset和value,各參數(shù)的含義如下:
1、area:字節(jié)型數(shù)據(jù)(Byte),用來指定訪問存儲區(qū)的類型。其取值包括如下內(nèi)容:16#81表示輸入緩存區(qū)(I)、16#82表示輸出緩存區(qū)(Q)、16#83表示位存儲區(qū)(M)、16#84表示數(shù)據(jù)塊(DB)、16#1表示外設輸入(PI)。其中,16#84只能訪問“標準的”數(shù)據(jù)塊;16#1對外設的讀取,只能在S7-1500系列PLC中使用。
2、dbNumber:雙整型數(shù)據(jù)(DINT),用來指定數(shù)據(jù)塊的編號,僅在訪問數(shù)據(jù)塊時使用;訪問其它存儲區(qū)時設置為0;
3、byteOffse:雙整型數(shù)據(jù)(DINT),用來指定寫入數(shù)據(jù)的地址偏移量;
4、value:可以為字節(jié)型、整型、雙整型數(shù)據(jù),用來表示要寫入的數(shù)據(jù)值及類型。必須為變量,不能為常量。POKE指令根據(jù)value的數(shù)據(jù)類型來決定寫入多少個字節(jié)。
舉個例子:
使用POKE指令將位存儲區(qū)MB100的值寫入到輸出緩存區(qū)QB10,SCL代碼如下:

如果是操作整型或字類型的數(shù)據(jù),只需要改變value的數(shù)據(jù)類型。例如下面的代碼將MW102的值寫入到輸出緩存區(qū)QW12:

同樣的道理,下面的代碼將MD90的值寫入到DB5.DBD10中:

如果要操作布爾型數(shù)據(jù),則需要使用POKE_BOOL指令。從指令列表中添加該指令的初始狀態(tài)如下:

該指令有五個參數(shù):area ,dbNumber,byteOffset,bitOffset和value。其中:
1、area,dbNumber,byteOffset與POKE指令相同;
2、bitOffset:整型數(shù)據(jù)(INT),用來指定要寫入的位的偏移;
3、value:要寫入的地址或布爾數(shù)據(jù)常數(shù);
舉個例子:將M0.0的值寫入到Q1.5,可以使用下面的代碼:

除了POKE和POKE_BOOL,SCL語言還提供POKE_BLK用來進行較大數(shù)據(jù)的移動與拷貝。名稱中的“BLK“為Block的縮寫,即數(shù)據(jù)塊的意思。
從指令列表中添加POKE_BLK的初始狀態(tài)如下:

可以看到,該指令有7個參數(shù),其中:
1、area_src:字節(jié)型數(shù)據(jù)(Byte),用來指定源數(shù)據(jù)存儲區(qū)。其取值包括如下內(nèi)容:16#81表示輸入緩存區(qū)(I)、16#82表示輸出緩存區(qū)(Q)、16#83表示位存儲區(qū)(M)、16#84表示數(shù)據(jù)塊(DB);
2、dbNumber_src:雙整型數(shù)據(jù)(DINT),用來指定源數(shù)據(jù)塊的編號,僅在訪問數(shù)據(jù)塊時使用,訪問其它存儲區(qū)時設置為0;
3、byteOffset_src:雙整型數(shù)據(jù)(DINT),用來指定源數(shù)據(jù)存儲區(qū)中寫入數(shù)據(jù)的地址偏移量;
4、area_dest:字節(jié)型數(shù)據(jù)(Byte),用來指定目標數(shù)據(jù)存儲區(qū)。其取值包括如下內(nèi)容:16#81表示輸入緩存區(qū)(I)、16#82表示輸出緩存區(qū)(Q)、16#83表示位存儲區(qū)(M)、16#84表示數(shù)據(jù)塊(DB);
5、dbNumber_dest:雙整型數(shù)據(jù)(DINT),用來指定目標數(shù)據(jù)塊的編號,僅在訪問數(shù)據(jù)塊時使用,訪問其它存儲區(qū)時設置為0;
6、byteOffset_dest:雙整型數(shù)據(jù)(DINT),用來指定目標數(shù)據(jù)存儲區(qū)中寫入數(shù)據(jù)的地址偏移量;
7、count:雙整型數(shù)據(jù)(DINT),用來指定需要拷貝的字節(jié)數(shù);
舉個例子:
將DB100.DBB0開始的20個字節(jié)拷貝到DB102.DBB40開始的20個字節(jié),代碼如下:

好了,關于POKE指令就先介紹到這里。

版權(quán):如無特殊注明,文章轉(zhuǎn)載自網(wǎng)絡,侵權(quán)請聯(lián)系cnmhg168#163.com刪除!文件均為網(wǎng)友上傳,僅供研究和學習使用,務必24小時內(nèi)刪除。
相關推薦