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