最近做項(xiàng)目,使用IO-Link器件讀取從站數(shù)據(jù)時(shí),使用從雙字中提取字、字節(jié)和位的知識(shí),作為私人,以前沒有仔細(xì)注意過這個(gè)細(xì)節(jié),所以查了一下資料
以下主要從資料查詢、準(zhǔn)備步驟、步驟驗(yàn)證進(jìn)行記錄。
一、資料查詢:
在網(wǎng)上搜索西門子數(shù)據(jù)類型的相關(guān)資料,相信有一大堆。 最常見的是如下圖所示,說(shuō)明兩個(gè)字符和字節(jié)的關(guān)系。
根據(jù)這個(gè)資料,進(jìn)行實(shí)驗(yàn)驗(yàn)證;
二、程序的準(zhǔn)備
資料大部分用m塊介紹雙字和字節(jié)等的關(guān)系,但實(shí)際上由于DB塊的數(shù)據(jù)很多,在這次的實(shí)驗(yàn)中為了比較m塊和DB塊的內(nèi)容容易觀察,準(zhǔn)備如下。
1、新建數(shù)據(jù)庫(kù)塊,創(chuàng)建必要的變量:
2、為了便于比較,創(chuàng)建m區(qū)變量。 這里取MD24,將其分解為字、字節(jié)、位,以便于觀察。
3、FC程序的編制:主要將雙字分解為字、雙字,將雙字發(fā)送到單詞、單詞中。 為了容易設(shè)定雙字的位,特意用數(shù)組向雙字的位各發(fā)送1位。
三、程序驗(yàn)證:
省略程序下載和模擬等操作步驟。 因?yàn)槟莻€(gè)不是重點(diǎn),所以直接出示測(cè)試結(jié)果。 如果從數(shù)組中分別設(shè)定不同的位,就相當(dāng)于分別設(shè)定雙字中的位,可以分別觀察結(jié)果。 現(xiàn)在,如果取代表性的2個(gè)比特,即第0個(gè)和第16個(gè)比特1,則結(jié)果如下2個(gè)圖所示。
如果通過測(cè)試,就會(huì)明白以下法則。
西門子兩個(gè)字的中位排列是從右向左排列的。 這和平時(shí)寫字的順序正好相反,但我想也可以從進(jìn)制的位數(shù)開始記憶。 例如,我們是十進(jìn)制數(shù),從右向左分別是個(gè)、十、百、千、萬(wàn)等位。 這個(gè)正好像那個(gè)。
可以看到2、2個(gè)文字傳遞給單詞的情況,在剪切數(shù)據(jù)時(shí)很有用。 因?yàn)椴蛔鼍唧w總結(jié),所以可以體驗(yàn)。
第三、三個(gè)也是我最開始很混亂的地方。 如果觀察2個(gè)字符的4個(gè)字節(jié),就會(huì)發(fā)現(xiàn)與位的排列順序相同。 也就是說(shuō),0位在右邊,依次向左變大。 但是,m區(qū)其實(shí)是按這個(gè)方向排列的,但是很混亂。 以上圖為例,設(shè)置0位時(shí),DB中第0字節(jié)有變化,但m區(qū)對(duì)應(yīng)MB27變化。 如最初的資料所示,對(duì)應(yīng)第1字節(jié)的變化。但是,MB27是第0字節(jié),MB26是第1字節(jié),按順序類推,大小和字節(jié)的順序再次相反。 仔細(xì)想想就知道發(fā)生了什么,但依然有點(diǎn)不舒服。
遇到同樣情況的人,應(yīng)該不只我一個(gè)。 分享一下,希望對(duì)有需要的人有幫助。 第一次發(fā)送共享粘貼。 文章有點(diǎn)不好。 請(qǐng)諒解。 有不足和錯(cuò)誤。 歡迎斧正。