wzy4828
風(fēng)流雖能驚天下,唯有悶騷動(dòng)世人
級別: 家園?
![]() |
圖片:
![]()
圖片:
![]() 用RS指令將PLS數據傳送到數碼管顯示,當數據超過(guò)32767就不能正確顯示,但是查看寄存器(寄存器的值是正確的,后面的數據卻不對<數碼管顯示的居然是這個(gè)后面的數據>),寄存器最高位置1表示是負數(怎么解決這個(gè)矛盾?)如果手動(dòng)設置一個(gè)超過(guò)32767的數字就能正確顯示,求教怎么解決?我另外設置兩個(gè)都超過(guò)±32767的值再傳送都能正確顯示,就是從PLS傳送過(guò)來(lái)的數據不能正確顯示超過(guò)±32767的值 在監控梯形圖下面PLS顯示的數據也是正確的,就是傳送到數碼管就不行!數碼管只能用8位模式,modbus協(xié)議 [ 此帖被wzy4828在2024-12-10 16:15重新編輯 ] |
---|---|
|
夢(mèng)雨天涯
微信hui530527 &
級別: 網(wǎng)絡(luò )英雄
![]() |
你顯示的時(shí)候,切換到32位顯示就行,16位顯示肯定不對啦 樓主留言:在軟元件監控里切換成32位,寄存器后面的值顯示是36000,但是數碼管還是29536 |
|
---|---|---|
|
零度浪子001
級別: 探索解密
![]() |
用modbus發(fā)送D19,D20研究下,是16位發(fā)送,還是8位發(fā)送,三菱FX3u可以設置8位模式。那你發(fā)過(guò)去的D19,D20是什么樣的,要和數碼管通訊協(xié)議對比下 樓主留言:是8位的,已經(jīng)設置8位模式了,如果寫(xiě)入一個(gè)任意數傳送就沒(méi)問(wèn)題,直接從PLS讀取超過(guò)32767就會(huì )出錯 |
---|---|
|
wzy4828
風(fēng)流雖能驚天下,唯有悶騷動(dòng)世人
級別: 家園?
![]() |
找到原因了,負數寄存器用的是二進(jìn)制補碼,要想讓數碼管正確顯示,需要逆向補碼,先減一再取反,這樣得到的二進(jìn)制碼就能在數碼管正確顯示了。(貌似這種方法最大只能滿(mǎn)足-65535) |
---|---|
|