夜夜躁日日躁狠狠久久|国产精品亚洲va在线观看|色天天天天综合男人的天堂|日本特黄特色aa大片免费|国产好痛疼轻点好爽的视频|欧美18school人禽杂交

wjk478
級別: 正式會(huì )員
精華主題: 0
發(fā)帖數量: 5 個(gè)
工控威望: 56 點(diǎn)
下載積分: 299 分
在線(xiàn)時(shí)間: 5(小時(shí))
注冊時(shí)間: 2022-11-14
最后登錄: 2024-12-06
查看wjk478的 主題 / 回貼
樓主  發(fā)表于: 2024-01-29 20:05
請教一下論壇大佬,比如寄存器中的數值:50046其中有效數字是46,放大倍數是10的5次冪即100000那么對應的浮點(diǎn)數值是0.00046
                                               如果數值是:30046其中有效數字是46,放大倍數是10的3次冪即1000那么對應的浮點(diǎn)數值是0.046
怎么實(shí)現威綸通觸摸屏上顯示對應的浮點(diǎn)數值而不是寄存器中的數值?
夢(mèng)雨天涯
微信hui530527   &
級別: 網(wǎng)絡(luò )英雄
精華主題: 0
發(fā)帖數量: 4686 個(gè)
工控威望: 8088 點(diǎn)
下載積分: 17419 分
在線(xiàn)時(shí)間: 3265(小時(shí))
注冊時(shí)間: 2016-10-31
最后登錄: 2025-05-20
查看夢(mèng)雨天涯的 主題 / 回貼
1樓  發(fā)表于: 2024-01-30 08:20
那就把你的數值除以100,找到余數46,然后余數除以100000,得到0.00046就行
微信hui530527      b站賬號,非標自動(dòng)化譚工
請不要隨意加我,不會(huì )隨便通過(guò)。QQ群942493953
卓發(fā)智能
相互學(xué)習,共同進(jìn)步。
級別: 工控俠客
精華主題: 0
發(fā)帖數量: 2489 個(gè)
工控威望: 3105 點(diǎn)
下載積分: 12452 分
在線(xiàn)時(shí)間: 671(小時(shí))
注冊時(shí)間: 2008-08-03
最后登錄: 2025-05-19
查看卓發(fā)智能的 主題 / 回貼
2樓  發(fā)表于: 2024-01-31 10:01
分二步,PLC需要運算一下,屏有內差轉換設置。
相信自我!
gxtmdb82164
級別: 論壇先鋒
精華主題: 0
發(fā)帖數量: 806 個(gè)
工控威望: 1184 點(diǎn)
下載積分: 477 分
在線(xiàn)時(shí)間: 647(小時(shí))
注冊時(shí)間: 2019-09-22
最后登錄: 2025-05-20
查看gxtmdb82164的 主題 / 回貼
3樓  發(fā)表于: 2024-01-31 10:39
如果只是顯示的話(huà),推薦HMI后寫(xiě)個(gè)腳本處理,最簡(jiǎn)單最靈活
wjk478
級別: 正式會(huì )員
精華主題: 0
發(fā)帖數量: 5 個(gè)
工控威望: 56 點(diǎn)
下載積分: 299 分
在線(xiàn)時(shí)間: 5(小時(shí))
注冊時(shí)間: 2022-11-14
最后登錄: 2024-12-06
查看wjk478的 主題 / 回貼
4樓  發(fā)表于: 2024-02-01 09:52
引用
引用第1樓夢(mèng)雨天涯于2024-01-30 08:20發(fā)表的  :
那就把你的數值除以100,找到余數46,然后余數除以100000,得到0.00046就行

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

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

能不能屏直接讀取數值對數值進(jìn)行轉換后再在屏上顯示出來(lái),只是現在轉換的思路是什么?數值中包含放大倍數和有效數值怎么區別轉換
gxtmdb82164
級別: 論壇先鋒
精華主題: 0
發(fā)帖數量: 806 個(gè)
工控威望: 1184 點(diǎn)
下載積分: 477 分
在線(xiàn)時(shí)間: 647(小時(shí))
注冊時(shí)間: 2019-09-22
最后登錄: 2025-05-20
查看gxtmdb82164的 主題 / 回貼
7樓  發(fā)表于: 2024-02-01 10:43
引用
引用第5樓wjk478于2024-02-01 10:01發(fā)表的  :

是不是觸摸屏寫(xiě)段宏指令對讀取的數值進(jìn)行一個(gè)數值轉換,問(wèn)題是這個(gè)數值轉換思路是什么?寄存器內數值首位是決定放大倍數后幾位是有效數值,放大倍數決定有效數值的小數位數


所以讓你用宏指令讀到HMI里處理,直接轉成字符串,然后分成兩個(gè)子字符串,一個(gè)是位數一個(gè)是有效數值,然后再轉成數值運算以后寫(xiě)到HMI內部地址上,HMI直接顯示就行了
PC編程上的大數運算也是這樣操作的,什么20位數乘以20位數,常規的數值系統都容納不了這么大的數值,都是轉成字符串以后,按四則運算的規則一位一位的算,算一位就寫(xiě)一位結果到字符串里面,字符串隨便多長(cháng)都無(wú)所謂

你這個(gè)等于是一個(gè)自定義的科學(xué)計數法,不過(guò)足夠簡(jiǎn)單罷了
xuxulaifeng
級別: 探索解密
精華主題: 0
發(fā)帖數量: 31 個(gè)
工控威望: 122 點(diǎn)
下載積分: 637 分
在線(xiàn)時(shí)間: 44(小時(shí))
注冊時(shí)間: 2015-01-03
最后登錄: 2024-02-04
查看xuxulaifeng的 主題 / 回貼
8樓  發(fā)表于: 2024-02-04 16:19
1.蔣數據轉換為字符串
2.PLC使用字符串指令,取第一位,得到其精度,
3.PLC使用字符串指令,取除第一位外其它的值,并轉換為整數
4.根據2 3條換算真正的浮點(diǎn)數,50046,是數值除以100000,40046是除以10000,30046是除以1000
5.在人機中顯示浮點(diǎn)數,設置小數點(diǎn)后位數是可能出現最小精度
wjk478
級別: 正式會(huì )員
精華主題: 0
發(fā)帖數量: 5 個(gè)
工控威望: 56 點(diǎn)
下載積分: 299 分
在線(xiàn)時(shí)間: 5(小時(shí))
注冊時(shí)間: 2022-11-14
最后登錄: 2024-12-06
查看wjk478的 主題 / 回貼
9樓  發(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)
//讀取寄存器數值如:34567(3是放大倍數,4567為有效數值)
DEC2ASCII(a, b[0], 5)//將34567轉為ASCII碼
ASCII2FLOAT(b[1], d, 4)//將4567轉為浮點(diǎn)數
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
謝謝大佬們的解答幫助,初步程序如上基本實(shí)現顯示問(wèn)題
gxtmdb82164
級別: 論壇先鋒
精華主題: 0
發(fā)帖數量: 806 個(gè)
工控威望: 1184 點(diǎn)
下載積分: 477 分
在線(xiàn)時(shí)間: 647(小時(shí))
注冊時(shí)間: 2019-09-22
最后登錄: 2025-05-20
查看gxtmdb82164的 主題 / 回貼
10樓  發(fā)表于: 2024-02-06 10:05
引用
引用第9樓wjk478于2024-02-05 16:12發(fā)表的  :
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í)現就好,距離完美的程序(別人死我不死,我死也要優(yōu)雅的死)還有兩小步
1、入參檢查,不能保證下位機給的數值一定是正確的,第一位如果讀到0呢?你這里可是有除法的(一般不會(huì )炸,但是萬(wàn)一哪天移植到其他平臺上呢),如果大于5呢?
2、錯誤通知,這個(gè)也是要依賴(lài)特定平臺的,比如說(shuō)你這里用威綸通的話(huà),最直接的辦法就是給顯示元件設置一個(gè)極限值,最大或者最小看具體設計,總之讀取到錯誤數據后要給用戶(hù)一個(gè)良好的提示,是數據錯誤了

可能的優(yōu)化方案:
1、入參檢查,讀取到字符串后檢查第一位的數值范圍,理論上應該是1~5的范圍,超過(guò)這個(gè)范圍可以認為數據無(wú)效了
2、去掉除法,第一位的1~5會(huì )對應0.1到0.00001這5個(gè)小數值,取出來(lái)這個(gè)小數值和有效值相乘即可(你這個(gè)系統里面0到底是怎么表達的?)
3、更高階的寫(xiě)法是在宏函數內完成數值到字符串的轉換,界面元件直接顯示字符串,本身有float2Ascii的內建函數,同時(shí)可以在函數內方便的判斷數據有效情況,反正最后輸出的字符串,數據合法范圍內輸出這個(gè)數值的字符串結果,超過(guò)這個(gè)結果直接輸出一個(gè)ERROR或者NaN,可以更明確當前的錯誤

夜夜躁日日躁狠狠久久|国产精品亚洲va在线观看|色天天天天综合男人的天堂|日本特黄特色aa大片免费|国产好痛疼轻点好爽的视频|欧美18school人禽杂交