yoyo2001426
級別: 略有小成
![]() |
上位機 將收到的浮點(diǎn)數值分成兩個(gè)D值丟進(jìn)來(lái)PLC 那怎么將兩個(gè)D值合并恢復成原本的數值 |
---|---|
|
夢(mèng)雨天涯
微信hui530527 &
級別: 網(wǎng)絡(luò )英雄
![]() |
不需要結合啊,你認為他是浮點(diǎn),那么他就自動(dòng)默認占用兩個(gè)字 |
|
---|---|---|
|
yoyo2001426
級別: 略有小成
![]() |
上位機的輸出為 1Byte 所以他將浮點(diǎn)數分成4 Byte 以PLC 這端來(lái)看的話(huà)就是兩個(gè)D值 假設 上位機的數值為 45.725 PLC收到為 26342 和 13890 要把這個(gè)兩個(gè)數值合起來(lái) 就是45.725 現在就是不知道怎么合并 |
---|---|
|
wmw186
級別: 略有小成
![]() |
單精度的浮點(diǎn)數本來(lái)就占用兩個(gè)字呀,你處理使用這個(gè)數據用浮點(diǎn)數相關(guān)的指令直接操作就行了 |
---|---|
|
陳0928
陳0928
級別: 探索解密
![]() |
這牽扯到通信格式的問(wèn)題,不同的PLC、通信模式都有些差異,而PLC會(huì )有通信上的特殊寄存器,通常只要用那個(gè)就能解決了。如果那寄存器格式不符合,就要自己解碼了 ![]() |
---|---|
|
yoyo2001426
級別: 略有小成
![]() |
上位機 數值為 100.723 從Float 轉成 Log 分成兩個(gè) 16Bit 的通道給PLC 數值分別為 11634 和 51522 如何在PLC程式里還原成100.723 |
---|---|
|
陳0928
陳0928
級別: 探索解密
![]() |
不是你的問(wèn)題不夠詳細,是你沒(méi)理解別人在提什么 ![]() 你的通訊如果是走M(jìn)ODBUS的話(huà),會(huì )有ABCD、BADC、CDAB、DCBA這些接收方式 最后看要不要重新排列,如果接收的寄存器剛好符合指令的格式,就能直接用指令DEBCD之類(lèi)的指令去轉 如果你的資訊只有給這樣,別人當然只能給你這樣的答案 |
---|---|
|
工控小c
級別: 工控俠客
![]() |
PLC收到的D0=K26342=H66 E6 ,D1=K13890=H36 42,H42 36 E6 66=IEEE754浮點(diǎn)數45.724998474121094,先D0D1高低字節交換后面自己想吧。
|
---|---|
|
wmw186
級別: 略有小成
![]() |
就是常見(jiàn)的通訊過(guò)來(lái)的數據高低字節順序顛倒問(wèn)題,swap指令調換下高低字節順序就好了。 |
---|---|
|
卓發(fā)智能
相互學(xué)習,共同進(jìn)步。
級別: 工控俠客
![]() |
高低字節互換再合并,果然是高手。 ![]() |
|
---|---|---|
|