西門子的數(shù)據(jù)存儲是低字高位,所以通常而言,浮點(diǎn)數(shù)是不需要高低位對換的,你這個(gè)項(xiàng)目居然要對換,所以我往上看了下。呃,不出意外的話,西門子對應(yīng)MODBUSRTU的首地址,應(yīng)該是40001對應(yīng)0,那么你讀取的首地址,應(yīng)該是40007才對,而你讀了40006。。。我覺得你應(yīng)該回頭看看這個(gè)項(xiàng)目了。
畢竟因?yàn)楦↑c(diǎn)數(shù)的計(jì)算方法,你對換以后,6 8 10這種主要數(shù)據(jù)位可以保證符號位指數(shù)位和主要數(shù)據(jù)部分沒有問題,但是精度一定會受影響。220.123456789對應(yīng)43 5C 1F 9A,380.123456789對應(yīng)43 BE 0F CD,你讀取了7.8然后對換得到的是43 BE 1F 9A,這個(gè)數(shù)是380.24688720703125。差別很小,但是你的做法確實(shí)不正確。如果你讀的不是電壓電流功率這種相對恒定的變量而是讀了有功總電能的話,累加越大,誤差會越大。
數(shù)據(jù)首地址+1,無需對換高低位;仡^有空還是去看下吧。
[ 此帖被phoenixyqc在2021-07-20 11:38重新編輯 ]