wjk478
級別: 正式會員
精華主題: 0
發(fā)帖數(shù)量: 5 個
工控威望: 56 點
下載積分: 299 分
在線時間: 5(小時)
注冊時間: 2022-11-14
最后登錄: 2024-02-05
查看wjk478的 主題 / 回貼
樓主  發(fā)表于: 2024-01-29 20:05
請教一下論壇大佬,比如寄存器中的數(shù)值:50046其中有效數(shù)字是46,放大倍數(shù)是10的5次冪即100000那么對應(yīng)的浮點數(shù)值是0.00046
                                               如果數(shù)值是:30046其中有效數(shù)字是46,放大倍數(shù)是10的3次冪即1000那么對應(yīng)的浮點數(shù)值是0.046
怎么實現(xiàn)威綸通觸摸屏上顯示對應(yīng)的浮點數(shù)值而不是寄存器中的數(shù)值?
wjk478
級別: 正式會員
精華主題: 0
發(fā)帖數(shù)量: 5 個
工控威望: 56 點
下載積分: 299 分
在線時間: 5(小時)
注冊時間: 2022-11-14
最后登錄: 2024-02-05
查看wjk478的 主題 / 回貼
1樓  發(fā)表于: 2024-02-01 09:52
引用
引用第1樓夢雨天涯于2024-01-30 08:20發(fā)表的  :
那就把你的數(shù)值除以100,找到余數(shù)46,然后余數(shù)除以100000,得到0.00046就行

放大倍數(shù)不是一個固定的值是寄存器數(shù)值里決定的是可變的,寄存器里的數(shù)值是一個十進(jìn)制的電壓數(shù)值
wjk478
級別: 正式會員
精華主題: 0
發(fā)帖數(shù)量: 5 個
工控威望: 56 點
下載積分: 299 分
在線時間: 5(小時)
注冊時間: 2022-11-14
最后登錄: 2024-02-05
查看wjk478的 主題 / 回貼
2樓  發(fā)表于: 2024-02-01 10:01
引用
引用第3樓gxtmdb82164于2024-01-31 10:39發(fā)表的  :
如果只是顯示的話,推薦HMI后寫個腳本處理,最簡單最靈活

是不是觸摸屏寫段宏指令對讀取的數(shù)值進(jìn)行一個數(shù)值轉(zhuǎn)換,問題是這個數(shù)值轉(zhuǎn)換思路是什么?寄存器內(nèi)數(shù)值首位是決定放大倍數(shù)后幾位是有效數(shù)值,放大倍數(shù)決定有效數(shù)值的小數(shù)位數(shù)
wjk478
級別: 正式會員
精華主題: 0
發(fā)帖數(shù)量: 5 個
工控威望: 56 點
下載積分: 299 分
在線時間: 5(小時)
注冊時間: 2022-11-14
最后登錄: 2024-02-05
查看wjk478的 主題 / 回貼
3樓  發(fā)表于: 2024-02-01 10:07
引用
引用第2樓卓發(fā)智能于2024-01-31 10:01發(fā)表的  :
分二步,PLC需要運算一下,屏有內(nèi)差轉(zhuǎn)換設(shè)置。

能不能屏直接讀取數(shù)值對數(shù)值進(jìn)行轉(zhuǎn)換后再在屏上顯示出來,只是現(xiàn)在轉(zhuǎn)換的思路是什么?數(shù)值中包含放大倍數(shù)和有效數(shù)值怎么區(qū)別轉(zhuǎn)換
wjk478
級別: 正式會員
精華主題: 0
發(fā)帖數(shù)量: 5 個
工控威望: 56 點
下載積分: 299 分
在線時間: 5(小時)
注冊時間: 2022-11-14
最后登錄: 2024-02-05
查看wjk478的 主題 / 回貼
4樓  發(fā)表于: 2024-02-05 16:12
macro_command main()
unsigned short c,a,e
unsigned char b[5]
float d
GetData(a, "MODBUS RTU (zero-based addressing)", 3x, 2, 1)
//讀取寄存器數(shù)值如:34567(3是放大倍數(shù),4567為有效數(shù)值)
DEC2ASCII(a, b[0], 5)//將34567轉(zhuǎn)為ASCII碼
ASCII2FLOAT(b[1], d, 4)//將4567轉(zhuǎn)為浮點數(shù)
c=b[0]-48//將3的ASCII碼減去48得出數(shù)字(放大倍數(shù))
//ASCII2DEC(b[0], c, 1)
POW(10,c,e)//10的c次方賦于e
d=d/e
SetData(d, "Local HMI", LW, 0, 1)
end macro_command
謝謝大佬們的解答幫助,初步程序如上基本實現(xiàn)顯示問題