СODESYS V3.5: Repository Archive V3.5 SP4 (необходим для старых СПК) / Раздел CDS V3.5 на сайте
Форум: Вопросы и ответы / Визуализация / Настройка обмена с другими устройствами
Web-панель ВП110 / Modbus-индикатор СМИ2-М
Telegram: @JuneSmellsLikeBlood | e-mail: e.kislov@owen.ru | oscat.ru | Как обратиться в техподдержку?
Как отлаживать ошибки | Отладка проектов в CODESYS V3.5 | XY problem | Как правильно задавать вопросы | AnyDesk
Я не правильно написал условие, должно быть:
Теперь все корректно.IF xModbusStatusAlarm_A111 THEN
wsModbusError_A111 := MB_MODBUS_ERROR_TO_WSTRING(A111.byModbusError) ; // Вывод названии ошибки
wsModbusError_A111 := wConcat (wsModbusError_A111, wsNameA111);
ELSE
xModbusError_A111 := FALSE ;
END_IF
Последний раз редактировалось sco-scorpion; 18.07.2023 в 18:32.
Ну лучше сразу написать FB, а не копипастить A112, A111 и так далее, чтобы не путаться. Торопыжничество вида "ща сделаю кое-как, а потом сделаю нормально" приводит к глюкам, ерунде и фигне. А что будет, если потом тебе захочется добавить какое-то другое вычисление ошибки Modbus, и надо будет этот кусок кода копипастить во все места?
IOStates.gif
Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живёте. © Steve McConnell
Мой рабочий блог со статьями про щиты и автоматику ОВЕН - Cs-Cs.Net | Почта: Info@Cs-Cs.Net
Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живёте. © Steve McConnell
Мой рабочий блог со статьями про щиты и автоматику ОВЕН - Cs-Cs.Net | Почта: Info@Cs-Cs.Net
Решил все таки попробовать сделать ФБ, я так понимаю на вход мы передаем сигнал ошибки
и в самом начале кодесис начинает ругаться что не понимает что такое xError_Modbus : IoDrvModbus.xError;FUNCTION_BLOCK MBDeviceCheck
VAR_INPUT
xError_Modbus : IoDrvModbus.xError;
END_VAR
VAR_OUTPUT
xModbusStatusAlarm : BOOL; // Установка наличии ошибки
wsModbusError : WSTRING; // Вывод названии ошибки
END_VAR
VAR
eError_Modbus : IoDrvModbus.MB_ErrorCodes;
fbTon : TON;
END_VAR
сам ФБ вызываю
MBDeviceCheck(xError_Modbus:= A111.byModbusError, xModbusStatusAlarm=> xCheck, wsModbusError=> wsCheck);
Вы же ФБ делаете на разные случаи, а пытаетесь конкретный вход IoDrvModbus.xError; прямо в ФБ воткнуть, надо так
А уже потом на вход нужноеКод:VAR_INPUT xError : BOOL; END_VAR
MBDeviceCheck(xError:= A111.byModbusError, xModbusStatusAlarm=> xCheck, wsModbusError=> wsCheck);
А это в VAR, вообще вставлять не надо. Получится внутренняя (неизвестного типа) переменная ФБ, вместо глобальной, потому и ругается.
Код:VAR eError_Modbus : IoDrvModbus.MB_ErrorCodes; // Это убрать fbTon : TON; END_VAR
Последний раз редактировалось kondor3000; 18.07.2023 в 23:48.
Добрый день, подскажите а можно ли как то в CS удалить не используемые переменные в автоматическом режиме?
СODESYS V3.5: Repository Archive V3.5 SP4 (необходим для старых СПК) / Раздел CDS V3.5 на сайте
Форум: Вопросы и ответы / Визуализация / Настройка обмена с другими устройствами
Web-панель ВП110 / Modbus-индикатор СМИ2-М
Telegram: @JuneSmellsLikeBlood | e-mail: e.kislov@owen.ru | oscat.ru | Как обратиться в техподдержку?
Как отлаживать ошибки | Отладка проектов в CODESYS V3.5 | XY problem | Как правильно задавать вопросы | AnyDesk