Да согласен, у каждого своя "нормальная работа" )
Огонь, спасибо! При этих настройках именно тот эффект, которого я хотел добиться.
Вид для печати
Еще раз большое спасибо. После того как подправил код работы через приложение:
В режиме эмуляции Modbus тоже начал очень даже хорошо работать.Код:RTRIG_fbMbRolDone(CLK := fbModbusRol.xDone);
IF RTRIG_fbMbRolDone.Q THEN
xSuccess := TRUE;
fbModbusRol.xExecute := FALSE;
xRdPosReg := FALSE;
END_IF
IF xRdPosReg THEN
//xSuccess := FALSE;
wIntPosPOld := GVL.stServo[1].stRdServo.wP700_IntPosP;
GVL.stServo[1].stWrServo.wP700_IntPosP := 4610;
GVL.stServo[1].stWrServo.wP765_IntPosDZT := 1000;
fbModbusRol(slave := ROL_DORNA, xExecute := xExecModbus, iChannelIndex := iCurrentCh);
ltTimeOfStart := TargetVars.stRtc.ltSystemTick;
//xRdPosReg := FALSE;
xCount := TRUE;
iCntr := iCntr + 1;
END_IF
Тему закрыть можно, но вдруг возникнут еще вопросы. Пусть еще пару дней повисит
А есть ли в CODESYS механизм (функциональный блок, свойство, метод) позволяющий получить индекс канала, привязанного к переменной? Очень было-бы полезно
В итоге пришел я к OwenCommunication. Прийдется переписать немного (ну не так уж и немного) код. По другому все криво получается.
Зато опыт (сын ошибок трудных)
Спрошу еще в своей теме:
Есть массив структур, делаю инициализацию структур значенями по умолчанию. Хочу чтобы эти значения были защищены от изменения. Возможно ли такое?
Код (один из элементов массива):
Присвоенное значение хочу защитить от измененияКод:TYPE MB_SWORD :
STRUCT
iChannelIndex : INT;
uiDataAddr : UINT;
uiDataCount : UINT := 1;
wData : WORD;
END_STRUCT
END_TYPE
uiDataCount : UINT := 1;
Можно ли это сделать?
Не дублируйте свои посты, пожалуйста.
https://owen.ru/forum/showthread.php...l=1#post359527