wjk478
級(jí)別: 正式會(huì)員
|
請(qǐng)教一下論壇大佬,比如寄存器中的數(shù)值:50046其中有效數(shù)字是46,放大倍數(shù)是10的5次冪即100000那么對(duì)應(yīng)的浮點(diǎn)數(shù)值是0.00046 如果數(shù)值是:30046其中有效數(shù)字是46,放大倍數(shù)是10的3次冪即1000那么對(duì)應(yīng)的浮點(diǎn)數(shù)值是0.046 怎么實(shí)現(xiàn)威綸通觸摸屏上顯示對(duì)應(yīng)的浮點(diǎn)數(shù)值而不是寄存器中的數(shù)值? |
---|---|
|
wjk478
級(jí)別: 正式會(huì)員
|
放大倍數(shù)不是一個(gè)固定的值是寄存器數(shù)值里決定的是可變的,寄存器里的數(shù)值是一個(gè)十進(jìn)制的電壓數(shù)值 |
---|---|
|
wjk478
級(jí)別: 正式會(huì)員
|
是不是觸摸屏寫段宏指令對(duì)讀取的數(shù)值進(jìn)行一個(gè)數(shù)值轉(zhuǎn)換,問題是這個(gè)數(shù)值轉(zhuǎn)換思路是什么?寄存器內(nèi)數(shù)值首位是決定放大倍數(shù)后幾位是有效數(shù)值,放大倍數(shù)決定有效數(shù)值的小數(shù)位數(shù) |
---|---|
|
wjk478
級(jí)別: 正式會(huì)員
|
能不能屏直接讀取數(shù)值對(duì)數(shù)值進(jìn)行轉(zhuǎn)換后再在屏上顯示出來,只是現(xiàn)在轉(zhuǎn)換的思路是什么?數(shù)值中包含放大倍數(shù)和有效數(shù)值怎么區(qū)別轉(zhuǎn)換 |
---|---|
|
wjk478
級(jí)別: 正式會(huì)員
|
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)為浮點(diǎ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 謝謝大佬們的解答幫助,初步程序如上基本實(shí)現(xiàn)顯示問題 |
---|---|
|