По прошествии некоторого времени опрос ТРМ-138 замедляется, т. е. если в самом начале (при старте Execute) опрос происходит 34-35 раз в сек, то минут через 5-10 1 раз в 2-3 сукунды и новые значения не считываются в данный момент tm = 32086 и неизменяется. Помогает только отключение от питания ТРМ. Ошибка - "Устройство неотвечает". Как это победить ?
Адаптер АС3
owen_io.dll от 13 декабря 2006 г., 13:19:54
Ниже привожу код опроса:
Код:procedure TSborCom1.Execute; var value: Single; difference,beg: Cardinal; mwSum: Double; begin Com1Open:= false; count:= 0; mwSum:= 0; difference:= 1001; if (OpenPort(COM_1,spd_115200,prty_NONE,databits_8,stopbit_1,RS485CONV_MANUAL) <> (-1)) then begin Com1Open:= true; while Com1Open do begin if difference>1000 then beg:= GetTickCount; if ReadIEEE32(0,0,'rEAd',value,tm1,0)>=0 then begin mwUnit1:= value; end; if ReadIEEE32(1,0,'rEAd',value,tm2,1) >=0 then begin mwUnit2:= value; end; mwSumm:= mwUnit1 + mwUnit2; mwSum:= mwSum + mwSumm; difference:= GetTickCount-beg; inc(count); //if difference<=1000 then inc(count) //else begin Form1.AverageDL.Caption:= FloatToStrF(mwSum / count,ffFixed,6,2); // mwSum:= 0; // count:= 0; //end; //Form1.StatusBar1.SimpleText:= IntToStr(count); Synchronize(ShowMW); end; end; Terminate; end;




Ответить с цитированием
