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