top of page

Написание программного кода на ПЛК

Решение любой задачи происходит поэтапно.

Первый этап - постановка задачи. Специалисты предприятия формулируют, обычно устно, цели которые должны быть достигнуты и общее содержание задачи.

Обсудив все пожелания переходим ко второму этапу анализ и моделирование. Создается математическая модель, определяются исходные данные и границы модели.

Выбор алгоритма решения. На этом этапе ошибки

- постановки задачи, 

- анализа,

- математической модели,

могут привести к скрытой ошибке в работе всей программы.

Четвертым этапом является проектирование общей структуры программы. Определяется архитектура и разбивка на подпрограммы.

Кодирование — запись алгоритма на языке программирования.

Отладка и тестирование. Отладка это устранение ошибок в коде. Тестирование - проверка на работоспособность и правильность логики программы.

Седьмой этап - анализ результатов. Если результаты работы программы не соответствуют ожидаемым необходимо разрабатывать новую модель. Если полученные результаты в ходе тестирования удовлетворяют цели переходим к восьмому этапу.

Бюрократический, написание документации и передача заказчику.

Сопровождение программы — включает консультации представителей заказчика по работе с программой и обучение персонала. Недостатки и ошибки, замеченные в процессе эксплуатации, должны устраняться.

Пример кода на языке ST CodeSys

VAR_OUTPUT
    additional_steps_left        :    WORD;
    additional_steps_right    :    WORD;
END_VAR
VAR
    _CTU_steps_left            :    CTU;
    _CTU_steps_right        :    CTU;
    Reset_left: BOOL;
    Reset_right: BOOL;
END_VAR

_CTU_steps_left(
    CU:=Steps_left ,
    RESET:= Reset_left,
    PV:= ,
    Q=> , 
    CV=> );
additional_steps_left        :=    _CTU_steps_left.CV + 10;

_CTU_steps_right(
    CU:= Steps_right,
    RESET:= Reset_right,
    PV:= ,
    Q=> ,
    CV=> );
additional_steps_right    :=    _CTU_steps_right.CV +10;
IF    Steps_left = TRUE    AND    Steps_right    =    TRUE
    THEN
        Reset_left        :=    TRUE;
        Reset_right    :=    TRUE;
    ELSE
        Reset_left        :=    FALSE;
        Reset_right    :=    FALSE;
END_IF

bottom of page