應(yīng)用領(lǐng)域 | 電子 |
---|
6AG1232-4HD32-4XB0
SIPLUS S7-1200 SM 1232 4AQ 帶防腐蝕涂層 根據(jù) 6ES7232-4HD32-0XB0 . SIMATIC S7-1200,模擬輸出, SM 1232,4 AO, +/-10V,14 位分辨率, 或 0-20mA,13 位分辨率
![]() |
參考價 | ¥11 |
訂貨量 | 1 件 |
更新時間:2023-07-17 13:12:26瀏覽次數(shù):435
聯(lián)系我們時請說明是化工儀器網(wǎng)上看到的信息,謝謝!
西門子1200寬溫型擴(kuò)展模塊6AG12324HD324XB0
![]() | 6AG1232-4HD32-4XB0 SIPLUS S7-1200 SM 1232 4AQ 帶防腐蝕涂層 根據(jù) 6ES7232-4HD32-0XB0 . SIMATIC S7-1200,模擬輸出, SM 1232,4 AO, +/-10V,14 位分辨率, 或 0-20mA,13 位分辨率 |
SIEMENS西門子
*,質(zhì)量保證,保修一年
專業(yè)銷售及維修西門子各類工控自動化配件;
:S7-200CN、S7-200SMART、S7-300、S7-400、 S7-1200、S7-1500、ET200、LOGO邏西門子可編程控制器輯控制模塊
西門子HMI人機(jī)界面:觸摸屏
西門子變頻器:MM420、MM430、MM440、G110、G120、6SE70
西門子工業(yè)以太網(wǎng):通訊網(wǎng)卡、通訊電纜、通訊接頭、總線連接器 工控機(jī)、交換機(jī)、自動化軟件等系型號齊全,快速報價,買我們的產(chǎn)品無憂所值,我們的產(chǎn)品都承諾質(zhì)保一年,讓您買的省心舒心,用的放心!
數(shù)據(jù)結(jié)構(gòu) 算法 效率
一、問題背景
為了讓您更好的理解此貼,請先移駕看帖子
【萬泉河】我現(xiàn)在告訴你們不用M和T的程序好在哪里
中Zane版在44樓提出的問題,
本帖要說的就是IO地址沖突檢測,也就是IO地址一性檢測中,“空間換時間”策略的應(yīng)用。
二、由來
在帖子[舊事]--初踏征途雖然實現(xiàn)了地址沖突檢測的功能,但由于對數(shù)據(jù)組織的倉促,以至于在做地址雷同查找操作時(查找歷史數(shù)據(jù)中是否已經(jīng)存在當(dāng)前的設(shè)定值),使用了遍歷存儲單元的方法,因此查找效率低下,當(dāng)IO點的規(guī)模越大,需要進(jìn)行的比較操作的次數(shù)越多。
當(dāng)時手頭有別的事情要做,也就沒有再深究。
原來的數(shù)據(jù)規(guī)劃如圖所示
數(shù)據(jù)塊DB中存儲了所有有有效的歷史數(shù)據(jù),每一批歷史數(shù)據(jù)由兩部分組成,A區(qū)(輸入I地址)數(shù)據(jù)(包含4個DWORD數(shù)據(jù))和B區(qū)(輸出O地址)數(shù)據(jù)(3個DWORD數(shù)據(jù)),第個DWORD包括IO地址的字節(jié)號WORD和位號WORD,圖示共有三批歷史數(shù)據(jù)、一批當(dāng)前數(shù)據(jù),
算法:分別把當(dāng)前批數(shù)據(jù)中的A區(qū)數(shù)據(jù)中的每個數(shù)據(jù)與每批歷史數(shù)據(jù)中A區(qū)中的每個數(shù)據(jù)做比較,當(dāng)前批數(shù)據(jù)中的B區(qū)數(shù)據(jù)中的每個數(shù)據(jù)與每批歷史數(shù)據(jù)中B區(qū)中的每個數(shù)據(jù)也做比較,如果數(shù)值相同,則使能輸出標(biāo)志Same。
上個周末看《算法(第4版》
3.4節(jié)的“散列表”(Hash Table),突然想起來可以把數(shù)據(jù)再重新組織一下,提高查找效率,于是有了此帖。
三、改進(jìn)
現(xiàn)將數(shù)據(jù)重新組織如下,IO地址格式為Byte.Bit,每個Byte有8個Bit,這里使用一個包含8個數(shù)據(jù)類型為INT元素的數(shù)據(jù)代表一個尋址字節(jié)Byte,在博途平臺下的PLC數(shù)據(jù)類型中我們新建一個名為BitsTable的數(shù)據(jù)類型,它包含一個數(shù)組,有8個INT類型的元素,我們將其默認(rèn)值設(shè)為“-1”(表示初始狀態(tài))而不是“0”;
另外我們在全局?jǐn)?shù)據(jù)塊DB中,建立一個包含元素類型為“BitsTable"的數(shù)組,并將其命名為”AddressTable",或者為“BytesTable"則更容易理解,
至此,我們建立了一個可以形象為如下圖所示的表格
四、算法描述
至此,我們再處理IO地址沖突檢測就方便多了,當(dāng)設(shè)定值Buffer中ByteSet和BitSet在合法范圍內(nèi)時,如ByteSet=0,BitSet=3時,我們只需要直接使用數(shù)組的索引首先找到AddressTable[0],再找到其中的元素BitsTable[3],即將對應(yīng)的ByteSet、BitSet值代入并判斷表達(dá)式”AddressTable[ByteSet].BitsTable[BitSet] = -1“是否成立(當(dāng)值為”-1“時表示此地址I0.3(以輸入I為例)未被使用,然后執(zhí)行如下語句:
AddressTable[ByteSet].BitsTable[BitSet] = BitSet; // set value of BitSet to BitsTable[BitSet]
ByteSet := -1;
BitSet := -1;
將BitSet值寫入對應(yīng)的數(shù)組元素,并將地址設(shè)定Buffer中的ByteSet和BitSet初始為”-1“,為下次地址輸入作準(zhǔn)備,如果再次輸入ByteSet=0,BitSet=3時,
IF AddressTable[ByteSet].BitsTable[BitSet] = -1 THEN
#AddressAlreadyExists := TRUE; //output "AddressAlreadyExists" bit
算法簡圖如下:
功能塊FB的接口如圖,
塊內(nèi)做了兩個輔助功能,ResetChannel和ResetAllChannel,用來將”-1“賦值給BitsTable[]中的單個元素,和所有元素,對接口進(jìn)行修改后,還可以復(fù)位某個AddressTable[k],或者連續(xù)幾個
AddressTable[k] -- AddressTable[k+n],有興趣可自行更改。
西門子1200寬溫型擴(kuò)展模塊6AG12324HD324XB0