PDA

Просмотр полной версии : Ошибка 0x31 (SZE) при передаче МВ110-224.8А команды APLY



fatlortroll
03.03.2021, 08:32
Добрый день.
При попытке отдать модулю МВ110-224.8А команду APLY с помощью библиотеки OwenNet (CoDeSys 2.3) возвращается ошибка с кодом 0x31 (SZE).
Подскажите, пожалуйста, как правильно отправить эту команду?


PROGRAM PLC_PRG
VAR
uComPort : USINT := 0;(* COM-порт, для ПЛК150 равен 0 *)
uComServ : COM_SERVICE;
uComSettings : COMSETTINGS;
uNeedComOpen : BOOL := FALSE;(* Открыть, или закрыть выбранный COM-порт *)
uComBaudrate : DWORD := 9600;

osdint : OWEN_SET_DINT;(* Задать новую скорость передачи порта *)
osaply : OWEN_SET_DINT;(* Отправить команду APLY *)
uExecSet : BOOL := FALSE;(* Выполнить связку osdint+osaply *)
uCompleteSet : BOOL := FALSE;(* osdint выполнен*)
uCompleteAply : BOOL := FALSE;(* osaply выполнен *)
uIndex : WORD := 16#FFFF;
uSetValue : DINT := 0;(* Значение, передаваемое в регистр скорости порта *)
uSetError : WORD := 0;(* Ошибки выполнения osdint *)
uAplyError : WORD := 0;(* Ошибки выполнения osaply *)
END_VAR

IF uNeedComOpen = TRUE THEN
uComServ.Task := 0;(* Открыть COM-порт с заданными настройками *)
ELSE
uComSettings.Port := uComPort;
uComSettings.dwBaudRate := uComBaudrate;
uComSettings.byStopBits := 0;
uComSettings.byParity := 0;
uComSettings.dwTimeout := 200;
uComServ.Task := 2;(* Закрыть COM-порт *)
END_IF;
uComServ(Enable := uNeedComOpen, Settings := uComSettings);

IF (uComServ.Ready = TRUE) AND (uNeedComOpen = TRUE) THEN
IF uExecSet = TRUE THEN
IF uCompleteSet = FALSE THEN
(* Запись в регистр значения не завершена *)
osdint(Enable := uExecSet, Addr := 16, AddrLen := A8BIT, Name := 'bPS', Index := uIndex, IntType := SINT1_FRM, Value := uSetValue, ComHandle := uComPort, TimeOut := T#500ms,
Complete => uCompleteSet, Error => uSetError);
ELSIF uCompleteAply = FALSE THEN
(* Выполнение команды APLY не завершено *)
osaply(Enable := uExecSet, Addr := 16, AddrLen := A8BIT, Name := 'APLY', Index := uIndex, IntType := SINT1_FRM, Value := 0, ComHandle := uComPort, TimeOut := T#500ms,
Complete => uCompleteAply, Error => uAplyError);
ELSE
(* Записанное в регистр значение зафиксировано *)
uExecSet := FALSE;
uCompleteSet := FALSE;
uCompleteAply := FALSE;
END_IF;
ELSE
uCompleteSet := FALSE;
uCompleteAply := FALSE;
END_IF;

END_IF;

fatlortroll
03.03.2021, 13:38
В РЭ тоже про APLY не нашлось, я про него узнал из описания протокола. Там в 6.2. указано: "Для смены сетевых настроек прибора необходимо послать в прибор специальный параметр-команду Aply".

Попробовал сейчас без отсылки APLY -- новые настройки (bPS) записываются в регистр, но применение их происходит только при сбросе по питанию. Я полагал, что APLY позволяет перейти на новые настройки сети без перезагрузки модуля, но теперь и вовсе не понимаю, что она делает, и присутствует ли вообще в МВ110-224.8А.

A.Simonov
03.03.2021, 15:17
В РЭ тоже про APLY не нашлось, я про него узнал из описания протокола. Там в 6.2. указано: "Для смены сетевых настроек прибора необходимо послать в прибор специальный параметр-команду Aply".

Попробовал сейчас без отсылки APLY -- новые настройки (bPS) записываются в регистр, но применение их происходит только при сбросе по питанию. Я полагал, что APLY позволяет перейти на новые настройки сети без перезагрузки модуля, но теперь и вовсе не понимаю, что она делает, и присутствует ли вообще в МВ110-224.8А.

После смены сетевых настроек прибор требуется перезагрузить, Aply не нужен для данного модуля.

fatlortroll
03.03.2021, 15:38
> После смены сетевых настроек прибор требуется перезагрузить, Aply не нужен для данного модуля

Это справедливо для всей линейки Мx110, или есть исключения?

APLY для данного модуля не нужен при смене сетевых настроек, или отсутствует вовсе?

A.Simonov
03.03.2021, 16:25
> После смены сетевых настроек прибор требуется перезагрузить, Aply не нужен для данного модуля

Это справедливо для всей линейки Мx110, или есть исключения?

APLY для данного модуля не нужен при смене сетевых настроек, или отсутствует вовсе?

На сколько я помню все Мх110 нужно перезагружать, для смены настроек.
Aply используется, например, в модуле 1ТД/4ТД.

fatlortroll
03.03.2021, 16:29
А есть возможность программного перезапуска? Что-то вроде (выдуманной мной сейчас) команды 'rst'?

fatlortroll
04.03.2021, 08:07
Зачем тайный-то? Автоматизация развёртывания установок. Чтобы минимизировать движения персонала. Если установок десяток, то не развалится персонал, настроит. А если тысяча?

fatlortroll
04.03.2021, 11:46
> Вы оптимист

Кто? Я??? Не может быть!