Вот оно что! Спасибо за информацию. Придется делать костыли
Вот оно что! Спасибо за информацию. Придется делать костыли
В софт в CDS состоит из задач, которые выполняются в цикле, по событию и т.д. и т.п. Как создать кусок программы который будет выполняться перед запуском всех задач? Что я имею ввиду. Привык мыслить категориями программирования микроконтроллеров. Сначала выполняется код всяких разных инициализаций, настроек, потом запускается системный цикл, начинаются крутиться всякие разные прерывания или задачи (в случае RTOS). Т.е. к коду инициализации больше обращений не будет (только в случае сброса). Как нечто подобное организовать в CDS?
С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
В данный момент - именно так. В последних версиях CDS появилась возможность обрабатывать системные события (старт проекта - одно из таких событий), но этот функционал не поддерживается на текущих прошивках СПК.
С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
Подскажите каким образом работает задержка в 1 с.
IF (TIMER+T#1S)<TIME() THEN
TIMER:=TIME();
CHASTOTA_AUTO:=CHASTOTA_AUTO+1;
FUNCTION_BLOCK REGULIATOR
VAR_INPUT
REAL_DAVLENIE:REAL;
ON_OFF:BOOL;
USTAVKA_DAVLENIEL:REAL;
MIN_DAVLENIE:REAL;
MAX_DAVLENIE:REAL;
MIN_CHASTOTA:REAL;
MAX_CHASTOTA:REAL;
SBROS:BOOL;
END_VAR
VAR_OUTPUT
CHASTOTA_AUTO:REAL;
END_VAR
VAR
TIMER: TIME;
END_VAR
Сам код
IF ON_OFF=TRUE THEN
IF REAL_DAVLENIE>=USTAVKA_DAVLENIEL THEN
IF (TIMER+T#1S)<TIME() THEN
TIMER:=TIME();
CHASTOTA_AUTO:=CHASTOTA_AUTO+1;
END_IF
ELSE IF REAL_DAVLENIE<=USTAVKA_DAVLENIEL THEN
IF (TIMER+T#1S)<TIME() THEN
TIMER:=TIME();
CHASTOTA_AUTO:=CHASTOTA_AUTO-1;
END_IF
END_IF
END_IF
IF CHASTOTA_AUTO<=MIN_CHASTOTA THEN CHASTOTA_AUTO:=MIN_CHASTOTA;
END_IF
IF CHASTOTA_AUTO>=MAX_CHASTOTA THEN CHASTOTA_AUTO:=MAX_CHASTOTA;
END_IF
IF SBROS=TRUE THEN CHASTOTA_AUTO:=0;
END_IF
ELSE IF ON_OFF=FALSE THEN CHASTOTA_AUTO:=0;
END_IF
END_IF
считываю значение из прибора, надо это значение разделить на 1000, в итоге получаю 0. Почему?
С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
Скрин программы
Не делит на 1000.jpg
Попробуйте вот так:
Код:Omix_IB_REAL:=(WORD_TO_REAL(Omix_IB)/1000);
С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