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