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