-
Тема
-
Здравствуйте. Помогите, пожалуйста с разрешением следующего вопроса. Написал на Делфи7 прогу. Программа управляет клапанами, через коммутационную колодку. Там 7 рабочих реле. Использую SRV. Помимо этого считываю по таймеру с нескольких каналов сигналы датчиков давления (аналоговый выход до 10В) (тоже через SRV).В принципе простой алгоритм. Все отлажено и работает, но вот, млин, бьюсь с зависоном, который происходит через 20мин-2часа, после запуска программы. Проявляется в том, что считываемые сигналы с датчиков резко падают 0.00000, хотя там напруга точно есть, проверял тестером (да и шум хотя бы должен же быть). Релюшками остаются включенными, не выключаются. Только не управлять ими уже не получается. Сама программа не зависает, все работает, как будто бы ничего не произошло. Грешил на глюки самого АЦП, но приобрели второе Zet-220 и абсолютно то же самое. Помогает только выкл./вкл. АЦП.
Вот код считывания с одного из каналов.procedure TForm1.FormCreate(Sender: TObject);
begin
form1.SRV1.ConnectVrtCh(1);
mytime:=Srv1.CurrentTime(0);
srv1.SetDigOutEnable(0,65535); //маска записи в порт
end;procedure TForm1.Timer1Timer(Sender: TObject);
begin
if Srv1.CurrentTime(0)>mytime then
begin
Srv1.GetData(0,0,mytime,200,ff[0]);
mytime:=mytime+1;
b[1]:=0;
for i:=0 to 199 do
begin
b[1]:=b[1]+ff[i];
end;
b[1]:=b[1]/200;
end;
end;Вот код управления одним из реле.
procedure TForm1.CheckBox1Click(Sender: TObject);
begin
if checkbox1.Checked=true then
beginsrv1.SetDigOutput(0,2);
end
else
beginsrv1.SetDigOutput(0,253);
end;
end;
Для ответа в этой теме необходимо авторизоваться.