Delphi-OPC-ПЛК 100 неправильное определение состояния выхода
написал на Delphi програмку, читающую и меняющую значения выходода контроллера ПЛК 100, подключение через OPC Codesys
var
V : variant;
begin
V := CreateOleObject('OPC.Automation'); //создаем OLE объект
V.Connect('CoDeSys.OPC.02'); //подключаемся
V.OPCGroups.Add('Group1'); //добавляем группу
V.OPCGroups.GetOPCGroup('Group1').OPCItems.AddItem ('PLC1:.out1',
1);//добавляем переменную
//читаем ее состояние
if V.OPCGroups.GetOPCGroup('Group1').OPCItems.Item('P LC1:.out1').Value=false
then ShowMessage('выход out1 выключен')
else ShowMessage('выход out1 ВКЛЮЧЕН!!!');
end;
почему-то правильное состояние выхода определяется только если выход включен или выключен в данной программе, если значение было изменено, например в CodeSys - состояние определяется неправильно.
Примечательно, что похожий пример, но реализованный через компонент dOPC функционирует исправно.
Может кто знает в чем проблема?
огромное спасибо, заработало!
только, нужно присваивать выходу не TRUE/FALSE, а 0 или 1
т.е. V.OPCGroups.GetOPCGroup('Group1').OPCItems.Item('P LC1:.OUT1').Write(0);
Вложений: 1
пример работы Delphi-ПЛК ОВЕН
Выкладываю пример взаимодействия между Delphi-приложением и ОВЕН ПЛК 100 подключенными по Ethernet через OPC-сервер (CodeSys) с подробным описанием (с картинками) Жаль только, что без OPC пока осилить неполучилось... Отдельное спасибо AWA1971 за помощь