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