6ES7340-1BH02-0AE0 SIMATIC S7-300,CP 340 通信處理器 帶有 20mA 接口(TTY) 包括項目組態包 在 CD 上 |
6ES7340-1BH02-0AE0
SIEMENS西門子
*,質量保證,保修一年
專業銷售及維修西門子各類工控自動化配件;
:S7-200CN、S7-200SMART、S7-300、S7-400、 S7-1200、S7-1500、ET200、LOGO邏西門子可編程控制器輯控制模塊
西門子HMI人機界面:觸摸屏
西門子變頻器:MM420、MM430、MM440、G110、G120、6SE70
西門子工業以太網:通訊網卡、通訊電纜、通訊接頭、總線連接器 工控機、交換機、自動化軟件等系型號齊全,快速報價,買我們的產品無憂所值,我們的產品都承諾質保一年,讓您買的省心舒心,用的放心!
跟我一起玩200 smart PLC
關于數據的排序
之前,看到過論壇上的大俠們做過一些關于數據的排序程序段子,讓我記憶猶新的是阿鳴老師發帖的那個“冒泡法”程序。其中心思想是利用指針的地址偏移及循環指令特性,將一組準備好了的數據逐個循環輪詢一次,每一個數據都進行一次比較,如果大于了怎么樣,小于了又怎么樣的處理。前幾天論壇上又見到類似的問題,由季俠熱心地回復了編程思路,不知道那位網友是否已經做出了該數據排序的程序。
今天晚上閑來無事,想起了那個問題,打算再做一次。因為這個程序差不多已經成為比較經典的程序段子,編程思路與前面的前輩們比起來顯得不成熟的多了,難免的一些失誤,或者不足之處望包涵。
假設,有10個數據(估計做這樣的程序都是以10個數據來比較排序的,可能是出于常人的習慣思維),數據地址假設是VW100開始的,具體數據如下表所示:
編程思路:
1) 初始化所需要調用的數據區數據,這步對于多次調用該程序段非常重要。
2) 定義數據排序起始指針地址,&VB100取指針的起始地址。
3) 利用循環指令,做9個數據的循環,因為是10個數據比較9次循環就完全可以將全部的數據比較完成逐個進行數據的比較。
4) 一次,循環中先將2個數據比較,如果比較數據的結果VW100大于VW102,則,交換數據存儲地址的數據,反之,不交換數據。
5) 無論怎樣均指針下移一個字的地址區后,循環返回到循環起始,再取小的數據與第三個數據進行比較,比較結果仍然按第3步方式進行排序。
6) 同樣的方式,直到循環9次,循環指令9次數到達后,跳出循環指令,并將比較結果單獨存放到的地址VW200中。
如果編輯的程序運行結果VW200的數據地址中是48,說明程序是按編程思路是可行的,當然如果把這個程序稍加修改,也可以做成自己的數據排序庫文件,以方便今后遇見類似的程序復制調用之需要,或者稍加修改后,將比較結果的大數據存放在VW200中,編程思路就是這樣的過程。
為了方便比較數據,特在軟件系統塊中編輯了表中的數據,圖示:
在主程序中編輯數據排序程序:為壓縮頁面將程序轉換為STL語言方式顯示
為檢測程序的比較運行結果,新建一個“狀態圖表”將程序編譯、保存、下載到cpu,啟動M0.0 = 1,監控這些數據的變化規律,圖示:
程序運行的結果VW200 = 48符合當初的控制要求,當然結果取指針的首地址VW100也是可以的。
實際上,類似的程序很方便做比較大數或者小數,區別僅僅是將取指針數據的比較的指令稍加變換,圖示:
重新編譯、保存程序,并將修改后的程序下載到cpu,驗證結果,圖示:
驗證結果VW200 = 120仍然符合比較大數據的需要。反過來看,如果需要比較更多的數據,僅僅只需要將所需要的數據錄入后,通過按比較數據的個數減1的方式啟用循環指令,類似的“冒泡法”比較編程適用于一串連續的數據區比較結果,所謂的“冒泡法”實際就是循環指令的循環。該程序適宜于那些風機、泵類運行時間數據的比較,來判斷所需要啟動風機、泵的其中一個優先啟動條件。
注:
如果需要將此類型的程序做成自己的庫文件形式或多次調用,則在調用該程序段前必須*行數據區的初始化操作,然后錄入新的數據再進行比較,以免引起數據處理時的結果錯亂。比如,利用M0.0的上升沿初始化數據區,下降沿進行數據的比較等方式。
- 上一篇:6ES7340-1AH02-0AE0
- 下一篇:6ES7340-1CH02-0AE0