西門子plc s7-1200的直接和間接尋址功能(2)
下面小編為大家介紹西門子plc s7-1200的直接和間接尋址功能讀取和寫入數組中元素值的指令,字段讀取和字段寫入。同時,簡要分析了該程序的設計。接下來,使用Field Read來實現此功能。在程序設計過程中,您可能需要使用循環跳轉指令。 示例:假設您需要從一組數據中找到最大值,并記錄最大值是該數據集中的第一個數據。
步驟1:添加一個全局DB塊,并在DB塊中創建一個名為data 1的變量。數據類型是一個變量數組,用于存儲要查找的最大數據。同時,創建一些相應的變量,如下所示。
步驟2:初始化相應的內存,并將存儲的最大值的內存值設置為最小,這些程序如下:
步驟3:寫入判斷數據的比較是否完成。當執行次數等于設定次數時,表示完成,并且可以跳過最大值搜索的程序,讓程序跳轉到上一次執行,該程序如下所示:
該程序僅供參考,我希望將來每個人都可以使用此功能。
介紹了讀取和寫入數組中元素值的指令,字段讀取和字段寫入。同時,簡要分析了該程序的設計。接下來,使用Field Read來實現此功能。在程序設計過程中,您可能需要使用循環跳轉指令。
例子說明:假設您需要從一組數據中找到最大值,并記錄此最大值是此數據集中的第一個數據。
步驟1:添加一個全局DB塊,并在DB塊中創建一個名為data_1#的變量,該數據類型是一個變量數組,用于存儲需要找到的最大數據, 如下所示 。
步驟2:初始化相應的內存,并將存儲最大值的內存值設置為最小值,程序如下:
步驟3:寫入判斷數據的比較是否完成。當執行次數等于設定次數時,表示完成,并且可以跳過最大值搜索的程序。讓程序跳轉到上一次執行。該程序如下所示:
步驟4:在讀取數組中寫入元素的值,并將其與存儲最大值的內存中的值進行比較,以確定數據中是否存儲該值記憶是最大的。如果值不是數據交換的最大值,則同時記錄位置,然后將INDEX的值加1,并記錄執行次數并與設定的次數進行比較。如果未達到設定的次數,則在通過“字段讀取”命令轉換之前繼續跳轉。讀取數據并繼續比較。
該程序僅供參考,我希望將來每個人都可以使用此功能。
在上一節中,我使用梯形圖編寫了一個取最大值的程序。但是,在s7-1200西門子plc中,也支持SCL編程。使用SCL編程將為一些復雜的數據處理帶來極大的便利。仍然使用前面的示例作為示例來說明如何使用SCL編寫程序實現。舉例說明: 假設您需要從一組數據中找到最大值,并記錄此最大值是此數據集中的第一個數據。 使用SCL編程來完成這個例子,這里我們需要使用兩個語句 (1)有條件判斷的陳述 IF(條件)THEN(執行聲明) 萬一; 解析:如果滿足條件,則執行THEN之后的語句。 示例:IF“DATA_A”< 100 HEN “DATA_A”:=“DATA_A”+1; 萬一; 如果DATA_A的值小于100,則DATA_A的值等于其自身加1。 (2)循環執行聲明 FOR(執行變量):=(起始值)TO(結束值)BY(自增量)DO(后面要執行的語句); END_FOR; 解析:從執行循環到執行,每個循環一次,“執行變量”的值根據“自增量”改變,直到執行“結束值”,循環執行停止。 示例:FOR“count”:=0 TO 4 BY 1 DO “數據[COUNT]”=10; END_FOR; 將值10填入值Data中Data [0]到Data [4]的五個元素中,在第一個循環中填入10到Data [0],在第二個循環中填入10。數據[1],反過來。 在理解了這兩個語句之后,我們可以設計一個程序,在這里我們可以將它構建為功能塊(FB)以供將來使用。
步驟1:添加全局db塊并在全局db塊中創建稱為數據的數組。您可以根據需要設置元素的數量,如下圖所示,數組的數目設置為5。
步驟2:添加FB塊并選擇編程語言作為SCL編程語言。然后在FB接口中定義相應的變量如下:
步驟4:在OB1中調用功能塊。由于使用了FB,因此需要在調用時分配相應的后臺DB,如下圖所示:
總結:以上內容就是小編為大家介紹的西門子plc s7-1200的直接和間接尋址功能,如果您有這方面的任何需求,歡迎大家咨詢容感電氣,我們將給您最真誠的服務。
標題:西門子plc s7-1200的直接和間接尋址功能(2) 地址:http://m.511997.cn/hangye/2878.html