кусок кода
IF (NOT Regim2.9) AND (NOT StopDosing) AND RunDosing THEN //остановка дозирования со скады
//должно стать
//StopDosing:=TRUE;
//Regim.9:=1;
//StopDosing - переменная в контроллере
//Regim - переменная с конкретным адресом, в OPC сервере описана как RW
IF (NOT Regim2.9) AND (NOT StopDosing) AND RunDosing THEN //остановка дозирования со скады
StopDosing:=TRUE;
Regim.9:=1;
END_IF
IF NOT StopDosing THEN
Regim.9:=0;
END_IF
//здесь StopDosing=true, Regim.9=0, хотя должно быть Regim.9=1
//и это происходит часто с переменными, активно используемыми для общения со скадой.
//надо со скады байт передать в контроллер - со второго, третьего раза проходит
//c контроллера в скаду биты доходят как хотят (то дойдет изменение, то нет)
// OPC сервер используется MasterOPC Universal Modbus Server.
//попробовал для одной критичной переменной использовать бесплатный arOPC. Повторяю - для одной. Все остальные работали через MasterOPC.
Никакого положительного результата. Биты в слове передаются не стабильно
IF StopDosing AND (NOT Regim.9) THEN //если в скаде решили прервать окончание цикла
RunDosing:=FALSE;
StopDosing:=FALSE;
StopDosingPred:=FALSE;
Regim2.9:=0;
END_IF
самое главное - правильная передача происходит в 90%
т.е. чаще всего все работает правильно, но иногда изменения не доходят
ярким примером является случай, когда со скады устанавливается бит, и он не доходит до контроллера