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