Страница 111 из 893 ПерваяПервая ... 1161101109110111112113121161211611 ... ПоследняяПоследняя
Показано с 1,101 по 1,110 из 8921

Тема: CODESYS V3.5. Вопросы и ответы

  1. #1101

    По умолчанию

    Вот оно что! Спасибо за информацию. Придется делать костыли

  2. #1102
    Пользователь
    Регистрация
    05.11.2016
    Адрес
    Нижний Новгород
    Сообщений
    77

    По умолчанию

    В софт в CDS состоит из задач, которые выполняются в цикле, по событию и т.д. и т.п. Как создать кусок программы который будет выполняться перед запуском всех задач? Что я имею ввиду. Привык мыслить категориями программирования микроконтроллеров. Сначала выполняется код всяких разных инициализаций, настроек, потом запускается системный цикл, начинаются крутиться всякие разные прерывания или задачи (в случае RTOS). Т.е. к коду инициализации больше обращений не будет (только в случае сброса). Как нечто подобное организовать в CDS?

  3. #1103

    По умолчанию

    Цитата Сообщение от Number17 Посмотреть сообщение
    В софт в CDS состоит из задач, которые выполняются в цикле, по событию и т.д. и т.п. Как создать кусок программы который будет выполняться перед запуском всех задач? Что я имею ввиду. Привык мыслить категориями программирования микроконтроллеров. Сначала выполняется код всяких разных инициализаций, настроек, потом запускается системный цикл, начинаются крутиться всякие разные прерывания или задачи (в случае RTOS). Т.е. к коду инициализации больше обращений не будет (только в случае сброса). Как нечто подобное организовать в CDS?
    Типичный пример кода, исполняемого однократно при загрузке контроллера (подразумевается, что xInit - булевская переменная, которая не перезаписывается из других фрагментов программы):

    Код:
    IF NOT(xInit) THEN
       // команды инициализации
       xInit:=TRUE;
    END_IF

  4. #1104
    Пользователь
    Регистрация
    05.11.2016
    Адрес
    Нижний Новгород
    Сообщений
    77

    По умолчанию

    Цитата Сообщение от Евгений Кислов Посмотреть сообщение
    Типичный пример кода, исполняемого однократно при загрузке контроллера (подразумевается, что xInit - булевская переменная, которая не перезаписывается из других фрагментов программы):

    Код:
    IF NOT(xInit) THEN
       // команды инициализации
       xInit:=TRUE;
    END_IF
    То есть всё равно код выполняется в составе задачи, какой то специального структурного программного блока для начальной инициализации не предусмотрено.

  5. #1105

    По умолчанию

    В данный момент - именно так. В последних версиях CDS появилась возможность обрабатывать системные события (старт проекта - одно из таких событий), но этот функционал не поддерживается на текущих прошивках СПК.

  6. #1106

    По умолчанию

    Подскажите каким образом работает задержка в 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

  7. #1107
    Пользователь
    Регистрация
    05.03.2012
    Адрес
    СПб
    Сообщений
    13

    По умолчанию

    считываю значение из прибора, надо это значение разделить на 1000, в итоге получаю 0. Почему?

  8. #1108

    По умолчанию

    Цитата Сообщение от Alexmorphy Посмотреть сообщение
    считываю значение из прибора, надо это значение разделить на 1000, в итоге получаю 0. Почему?
    Выложите архив проекта, пожалуйста. Если это невозможно - то приведите кусок кода, желательно, скриншотом из онлайн-мониторинга - чтобы увидеть корректное считанное значение и операцию деления, которая приводит к обнулению значения.

  9. #1109
    Пользователь
    Регистрация
    05.03.2012
    Адрес
    СПб
    Сообщений
    13

    По умолчанию

    Цитата Сообщение от Евгений Кислов Посмотреть сообщение
    Выложите архив проекта, пожалуйста. Если это невозможно - то приведите кусок кода, желательно, скриншотом из онлайн-мониторинга - чтобы увидеть корректное считанное значение и операцию деления, которая приводит к обнулению значения.
    Скрин программы
    Не делит на 1000.jpg

  10. #1110

Страница 111 из 893 ПерваяПервая ... 1161101109110111112113121161211611 ... ПоследняяПоследняя

Похожие темы

  1. Панели оператора СП3xx. Вопросы и ответы
    от Мурат Ахриев в разделе СП3хх, СП270
    Ответов: 4209
    Последнее сообщение: 26.08.2026, 16:07
  2. Ответов: 863
    Последнее сообщение: 02.03.2026, 17:13
  3. ИПП120. Вопросы и ответы
    от Р.Александр в разделе Программируемые реле
    Ответов: 273
    Последнее сообщение: 08.09.2025, 13:21
  4. Индикатор ИП120 , вопросы- ответы
    от rovki в разделе Программируемые реле
    Ответов: 56
    Последнее сообщение: 03.11.2017, 15:58
  5. Панели оператора СП270. Вопросы и ответы
    от Давидюк в разделе СП3хх, СП270
    Ответов: 930
    Последнее сообщение: 15.05.2017, 17:12

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •