wjk478
級別: 正式會員
![]() |
請教一下論壇大佬,比如寄存器中的數值:50046其中有效數字是46,放大倍數是10的5次冪即100000那么對應的浮點數值是0.00046 如果數值是:30046其中有效數字是46,放大倍數是10的3次冪即1000那么對應的浮點數值是0.046 怎么實現威綸通觸摸屏上顯示對應的浮點數值而不是寄存器中的數值? |
---|---|
|
wjk478
級別: 正式會員
![]() |
放大倍數不是一個固定的值是寄存器數值里決定的是可變的,寄存器里的數值是一個十進制的電壓數值 |
---|---|
|
wjk478
級別: 正式會員
![]() |
是不是觸摸屏寫段宏指令對讀取的數值進行一個數值轉換,問題是這個數值轉換思路是什么?寄存器內數值首位是決定放大倍數后幾位是有效數值,放大倍數決定有效數值的小數位數 |
---|---|
|
wjk478
級別: 正式會員
![]() |
能不能屏直接讀取數值對數值進行轉換后再在屏上顯示出來,只是現在轉換的思路是什么?數值中包含放大倍數和有效數值怎么區別轉換 |
---|---|
|
wjk478
級別: 正式會員
![]() |
macro_command main() unsigned short c,a,e unsigned char b[5] float d GetData(a, "MODBUS RTU (zero-based addressing)", 3x, 2, 1) //讀取寄存器數值如:34567(3是放大倍數,4567為有效數值) DEC2ASCII(a, b[0], 5)//將34567轉為ASCII碼 ASCII2FLOAT(b[1], d, 4)//將4567轉為浮點數 c=b[0]-48//將3的ASCII碼減去48得出數字(放大倍數) //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 謝謝大佬們的解答幫助,初步程序如上基本實現顯示問題 |
---|---|
|