想吃火鍋雞
級別: 正式會員
精華主題: 0
發(fā)帖數(shù)量: 14 個
工控威望: 83 點
下載積分: 526 分
在線時間: 14(小時)
注冊時間: 2021-08-21
最后登錄: 2024-08-20
查看想吃火鍋雞的 主題 / 回貼
樓主  發(fā)表于: 2021-09-01 17:28
圖片:
圖片:
初學定位控制,在書中出現(xiàn)3U新增位元件的介紹。
n為寄存器D編號,0-8511
b為寄存器中二進制位的編號,0-F
把H8421送入D0,其最高位為1。
則位元件D0.F常開點閉合,驅動D0.3
同時,當D0.3被驅動后,D0中的b3位由0變1,此時D0中的數(shù)發(fā)生變化
由H8421變?yōu)镠8429
H8421換算為二進制 1000  0100  0010  0001
H8429換算為二進制 1000  0100  0010  1001
可以看出b3位由0變1,所以H8421變?yōu)镠8429,到這里可以理解。
但是從監(jiān)視模式中讀取D0數(shù)值可以發(fā)現(xiàn),把H8421送入D0中時,D0為-31711,D0變?yōu)镠8429時,D0為-31703
-31711轉二進制   1 111  1011  1101  1111
-31703轉二進制   1 111  1011  1101  0111
最左邊1表示正負,其余15位表示數(shù)值,也是b3位變化,
但是-31711的二進制化為十六進制是FBDF
-31703的二進制化為十六進制FBD7,并不是上面的8421和8429。
請高手賜教上面的進制換算問題出在哪里?
菜鳥入行
級別: 論壇先鋒

精華主題: 0
發(fā)帖數(shù)量: 1381 個
工控威望: 1557 點
下載積分: 3686 分
在線時間: 177(小時)
注冊時間: 2017-09-01
最后登錄: 2024-06-11
查看菜鳥入行的 主題 / 回貼
1樓  發(fā)表于: 2021-09-01 17:32
H8421太大了。 相當于K33825.  已經(jīng)超過了單字節(jié)D可以存儲的上限,所以變成負數(shù)了。

在32767以內,你的算法是對的。

超過32767,要用DMOV ,會占用D0和D1,這樣才能按你的算法來。
打個醬油,懂的不多
水平有限,能幫則幫
互相幫助,共同進步
想吃火鍋雞
級別: 正式會員
精華主題: 0
發(fā)帖數(shù)量: 14 個
工控威望: 83 點
下載積分: 526 分
在線時間: 14(小時)
注冊時間: 2021-08-21
最后登錄: 2024-08-20
查看想吃火鍋雞的 主題 / 回貼
2樓  發(fā)表于: 2021-09-01 20:19
感謝解答,初學考慮不周,疏忽了最基礎的問題非常感謝



引用
引用第1樓菜鳥入行于2021-09-01 17:32發(fā)表的  :
H8421太大了。 相當于K33825.  已經(jīng)超過了單字節(jié)D可以存儲的上限,所以變成負數(shù)了。

在32767以內,你的算法是對的。

超過32767,要用DMOV ,會占用D0和D1,這樣才能按你的算法來。