Category Archives: Программы ПЛК

Пример работы ОВЕН ПЛК с ICMP протоколом.

Введение

Пример предназначен для демонстрации функционирования протокола ICMP на  ОВЕН ПЛК посредством посылки стандартной команды PING с ПЛК на любое удаленное устройство, подключенное к сети. Функционально программа   выполняет 1000 циклов в каждом из которых с помощью команды SysSockSendTo отсылается ICMP пакет с типом PING и кодом 0х00. После этого по прошествии задержки в 0.003с вызывается функция приема SysSockRecvFrom. Далее производится сравнивнение содержимго переданного и принятого пакета, и если проверяемое устройство корректно ответило, то  инкрементируется  флаг успеха suces, в противном случае флаг неудачи faul.

Проект, реализующий данный пример находится в файле «ISMP_TEST_PING.pro». При написании программы вызываются функции стандартной библиотеки SysLibSockets.

Типовая аппаратная конфигурация

Программа  испытывалась с двумя ОВЕН ПЛК 100 при подключении через сеть Ethernet.

При посылки 1000 запросов с временем ожидания 0.003с. ответ был получен на 970 запросов, что говорит о быстрой работе TCP/IP стека на ПЛК. При работе с другими устройствами время ожидания ответа необходимо увеличивать (например PC под управлением Windows) .

Описание программы

Программа функционирует через UDP сокеты, где при его создании необходимо указывать ICMP тип, в номере порта старший байт обозначает тип ICMP пакета, младший код пакета и IP адрес удаленной машины. Далее с помощью стандартных команд SysSockSendTo и  SysSockRecvFrom можно обмениваться данными с удаленной машиной через ICMP протокол.

Описание работы с ICMP протоколом

(*Программа опроса {Ping-запроса} через ICMP протокол*)

CASE web_stat OF

0:

(*Участок выполняемый при старте программы*)

web_stat:=1;

sock_adr.sin_addr:=16#0A00065F;

(*IP Адрес опрашиваемого устройства {создается сокет на опрашивающем устройстве}*)

sock_adr.sin_family:=SOCKET_AF_INET;

(*Стек протоколов TCP/IP*)

sock_adr.sin_port:=16#0800;

(*Старший байт- Тип ICMP пакета {08 — Ping} младший байт- код ICMP пакета { 0- Ping}*)

sock_adr1.sin_addr:=16#0A000626;

(*То же самое для функции чтения {в принципе не важно}*)

sock_adr1.sin_family:=SOCKET_AF_INET;

sock_adr1.sin_port:=16#1111;

my_BUFs:=’qwertyuiopasdfghjklzxcvbnm123456′;

(*Буфер передачи, данная информация используется для контроля ответа, может быть любой*)

my_BUFr:=»;

(*Буфер приема*)

sock:=SysSockCreate(SOCKET_AF_INET,SOCKET_DGRAM,SOCKET_IPPROTO_ICMP);

send:=FALSE;

suces:=0;

faul:=0;

count:=0;

1:

(*Участок выполняемый в цикле опроса*)

IF NOT send THEN

send:=TRUE;

resd:=SysSockSendTo(sock,ADR(my_bufs),32,0,ADR(sock_adr),SIZEOF(sock_adr));

(*Собственно посылаем запрос в ICMP формате c параметрами sock_adr*)

END_IF

tmr(IN:=start_TON,PT:=t#0.003s);

(*Организуем таймер для обеспечении временной задержки ожидания ответа*)

IF NOT start_TON THEN

start_TON:=TRUE;

END_IF

IF tmr.Q THEN

resd:=SysSockRecvFrom(sock,ADR(my_bufr),32,0,ADR(sock_adr1),SIZEOF(sock_adr1));

(*Время ожидания истекло считываем данные*)

IF FIND(my_BUFr,’pasd’)<>0           THEN

suces:=suces+1;

(*Сравниваем переданные и принятые данные в случае идентичности увеличиваем счетчик удачного Ping*)

ELSE

faul:=faul+1;

(*В противном случае увеличиваем счетчик неудачного Ping запроса*)

END_IF

my_BUFr:=»;

(*Очишаем буфер приема*)

send:=FALSE;

start_TON:=FALSE;

(*Устанавливаем переменные состояния для следующего запроса*)

count:=count+1;

(*Увеличиваем счетчик сформированных запрсов*)

END_IF

IF count=1000 THEN

(*Если выполнено определенное кол-во запрсов «останавливаем программу»*)

web_stat:=3;

END_IF

(*Участок выполняемый при останове программы*)

3:

;

END_CASE

 

Поддержание уровня жидкости в баке (ПЛК+панель)

Пример конфигурации панели ИП-320 совместно с ПЛК — 150 для управления двумя насосами, работающими на поддержание уровня жидкости в баке.

Постановка задачи: контроллер управляет 2 насосами, один из которых работает на наполнение емкости, другой на опорожнение. Управление производится по дискретному датчику уровня, который независимо передает сигналы для уровней: сухого хода насосов, нижнего и верхнего рабочих уровней и уровня переполнения. Рабочие уровни используются для управления насосами (ниже нижнего – включает наполнение, останавливает откачку, выше верхнего — наоборот), аварийные уровни – для сигнализации.

Чему можно научиться: конфигурация панели, список тревог, индикаторы, конфигурация ПЛК для работы с панелью, работа с дискретными датчиками.

Программа ПЛК

Дискретные выходы датчиков уровня подключим последовательно к входам ПЛК, а насосы и сигнальные лампы – к выходам.

Настройка производится в разделе «Конфигурация ПЛК». Итогом ее станет примерно такая картина:

Рисунок 1 Конфигурация входов/выходов ПЛК под задачу

Далее целесообразно сразу настроить элемент связи ПЛК с панелью. Выглядит это например так.

Рисунок 2 Отображение панели в конфигурации ПЛК

В конфигурацию добавлен модуль Modbus slave (ПЛК выступает в роли slave- устройства). В него добавлен модуль связи Debug RS-232 (используемый интерфейс связи), в котором настроены параметры связи ПЛК и панели:

Рисунок 3 Настройки связи панели и ПЛК

Для проекта панели добавлен элемент 8 bits, через который передаются сигналы для визуализации на панели (2 сигнала аварии, 4 сигнала уровня, 2 сигнала работы насоса).

Программа управления особых сложностей не представляет:

Рисунок 4 Программа ПЛК

В конфигурации панели важно задать те же параметры связи в разделе Выбор ПЛК что показаны на рис.3. Сам проект состоит из 2 экранов – насосы и уровни и представлен ниже.

Рисунок 5 Экраны проекта панели

Рисунок 5 Экраны проекта панели

При настройке индикаторов проставляется тот же номер бита, что и на рис.2

Аварии прописаны отдельно в разделе список тревог.

Рисунок 6 Окно списка тревог

Список тревог в этой панели, как показывает опыт, лучше начинать с нулевого бита. Именно поэтому первыми битами в конфигурации ПЛК прописаны аварии.

 

Терморегулятор с ПИД-управлением в CoDeSys

Задача: моделирование работы ПИД – регулятора температуры. По первому выходу осуществляется непосредственно ПИД-регулирование, по второму – сигнализация режима работы по гистерезисной, П или U – логике.

Чему можно научиться: работа со стандартным ПИД-регулятором, разработка гистерезисных  алгоритмов на языках ST и CFC

Основная программа разработана на языке CFC. Такой выбор объясняется наибольшей наглядностью работы с функциональными блоками по сравнению с другими языками программирования ПЛК.

Итак, ПИД – регулятор.

ПИД-регулирование является наиболее точным и эффективным методом поддержания контролируемой величины на заданном уровне. На рис. 1 приведена функциональная схема ПИД-регулятора. Основное назначение регулятора – формирование управляющего сигнала Y, задающего выходную мощность исполнительного механизма (ИМ) и направленного на уменьшение рассогласования Е или отклонения текущего значения регулируемой величины Т от величины уставки Туст.

пропорционально-интегрально-дифференциальное регулирование

рис1 Схема ПИД-регулятора

ПИД-регулятор состоит из трех основных частей: пропорциональной Кп, интегральной 1/р×Ти и дифференциальной р×Тд. На практике, для формирования цифровых регуляторов используются разностные формулы, позволяющие работать не с непрерывным во времени сигналом, а с квантованным по времени. Таким образом, для расчета управляющего сигнала на выходе цифрового ПИД-регулятора  используется формула:

Xp полоса пропорциональности;
Ei рассогласование или разность между уставкой Туст и текущим значением измеренной величины Тi;
tд дифференциальная постоянная;
DEi разность между двумя соседними рассогласованиями Ei и Ei–1;
Dtизм время между двумя соседними измерениями Ti и Ti–1;
tи интегральная постоянная;
накопленная в i-й момент времени сумма рассогласований (интегральная сумма).

Пропорциональная составляющая зависит от рассогласования Ei и отвечает за реакцию на мгновенную ошибку регулирования.

Интегральная составляющая содержит в себе накопленную ошибку регулирования и позволяет добиться максимальной скорости достижения уставки.

Дифференциальная составляющая зависит от скорости изменения рассогласования и позволяет улучшить качество переходного процесса.

В CoDeSys в библиотеке UTIL.lib реализован стандартный блок ПИД-регулятора, который показан на рис.2

рис2 ПИД-регулятор в CoDeSys

Функциональный блок реализует ПИД закон регулирования:

где Y_OFFSET – стационарное значение, KP – коэффициент передачи, TN – постоянная интегрирования (ms), TV – постоянная дифференцирования (ms), e(t) — сигнал ошибки (SET_POINT-ACTUAL).

Входы ACTUAL, SET_POINT, KP, Y_OFFSET, Y_MIN Y_MAX типа REAL. Входы TN и TV типа

DWORD, RESET и MANUAL типа BOOL.

Выходы Y – REAL, LIMITS_ACTVE и OVERFLOW типа BOOL.

Значение выхода Y ограничено Y_MIN и Y_MAX. При достижении Y границ ограничения, выход

LIMITS_ACTVE, (BOOL) принимает значение TRUE. Если ограничение выхода не требуется, Y_MIN

и Y_MAX должны быть равны 0.

Неправильная настройка регулятора может вызвать неограниченный рост интегральной составляющей. Для обнаружения такой ситуации предназначен выход OVERFLOW. При переполнении он принимает значение TRUE, одновременно останавливается работа регулятора. Для его включения необходимо использовать рестарт.

Теперь собственно о программе.

Для начала, как обычно – список переменных. По традиции – это самая длинная часть программы. Список переменных  включает в себя параметры 2 регуляторов (ПИД и 2-х позиционного) и входы / выходы системы управления.

рис 3 Переменные проекта

рис 3 Переменные проекта

Далее собственно программа управления.

рис4 Проект ПИД-регулятора в CoDeSys

рис4 Проект ПИД-регулятора в CoDeSys

В алгоритме ПИД-регулятора реализовано ограничение по мощности регулирования (0-100%). Двухпозиционный регулятор реализован в виде подпрограммы, которая выглядит, например, так:

рис5 Переменные подпрограммы 2-х позиционного регулятора

рис5 Переменные подпрограммы 2-х позиционного регулятора

Программа на ST

рис8 Подпрограмма работы 2-х позиционного регулятора на языке ST

рис8 Подпрограмма работы 2-х позиционного регулятора на языке ST

Ну и то же самое на языке CFC

рис9 2-хпозиционный регулятор на языке CFC

рис9 2-хпозиционный регулятор на языке CFC

рис10 Подпрограмма на CFC (продолжение)

рис10 Подпрограмма на CFC (продолжение)

 

Мой блог находят по следующим фразам

Управление сверлильным станком

Перед началом работы оператор с помощью тумблера выбора определяет режим сверления.

После нажатия оператором кнопки запуска контроллер начинает управление станком. Подается команда опустить сверло и начинается обратный отсчет координаты. При достижении нижней точки (y=0) снимается команда на опускание и подается команда на сверление.

Если выбран первый режим, то команда сверления снимается через 5 секунд. Если выбран второй режим, то команда сверления снимается после нажатия оператором кнопки останова сверления.

Затем контролер подает команду на подъем сверла и начинает прямой отсчет координаты. После достижения верхнего положения (y=70) команда подъема снимается.

Рисунок 1 Схема упражнения 8.

Рисунок 1 Схема упражнения 8.

Программа SFC. Управление сверлильным станком.

Раздел переменных.

 

PROGRAM PLC_PRG

VAR

start: BOOL; (*сигнал о начале работы станка*)

y: REAL;(*координата высоты сверла*)

vniz: BOOL;(*сигнал о движении сверла вниз*)

sverlo: BOOL;(*сигнал о нахождении станка в режиме сверления*)

ready: BOOL;(*сигнал о завершении сверления в ручном режиме *)

vverh: BOOL;(*сигнал о движении сверла вверх*)

avt: BOOL;(*сигнал включения станка в автоматическом режиме*)

END_VAR

Вид основной программы на языке SFC

 

 

Рисунок 2 Программа на языке SFC

Рисунок 2 Программа на языке SFC

Программы действий

Программы действий

Программы действий

Рисунок 3 Атрибуты шага автоматического режима сверления

Рисунок 3 Атрибуты шага автоматического режима сверления

Визуализация

 

 

Рисунок 4Визуализация задачи про станок

Рисунок 4Визуализация задачи про станок

Рисунок 5 Настройка положения движущегося блока

Рисунок 5 Настройка положения движущегося блока

 

Мой блог находят по следующим фразам

Задача на изучение блоков стандартных библиотек (управление освещением)

Условие задачи

Условие задачи

Условие задачи

На входе установлены два дискретных датчика: один снаружи комнаты, другой внутри. Когда срабатывает сначала внешний датчик, затем внутренний, это означает, что человек зашел в комнату.Когда срабатывает сначала внутренний датчик, затем внешний, это означает, что человек вышел из комнаты.

Задача1: Если человек вошел – включить свет, Если человек вышел – выключить свет.

Задача2: Необходимо считать количество людей, заходящих и выходящих из комнаты.

Пока в комнате остается хотя бы один человек, свет должен быть включен.

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

 

Рисунок 1 Визуализация задачи

Рисунок 1 Визуализация задачи

Рисунок 2 Добавление стандартных библиотек

Рисунок 2 Добавление стандартных библиотек

Программа

Область переменных:

PROGRAM PLC_PRG

VAR vh_sen, vyh_sen:BOOL;(*сигналы с сенсоров на входной двери*)

light:BOOL;(*сигнал включения света в комнате*)

ludi:INT;(*число людей в комнате*)

vh_sen_pred, vyh_sen_pred:BOOL;(*вспомогательные переменные: состояния сенсоров на предыдущем шаге*)

rtr1: R_TRIG;(*детекторы передних фронтов*)

rtr2: R_TRIG;

tt2: TOF;(*таймер для организации задержки выключения*)

tzad:TIME;(*текущее время задержки*)

END_VAR

Рисунок 3 Вид программы на языке СFC с использованием стандартных библиотек

Рисунок 3 Вид программы на языке СFC с использованием стандартных библиотек

Мой блог находят по следующим фразам

Система пожарной сигнализации здания

В здании две одинаковые комнаты.

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

Если в комнате срабатывает хотя бы один из датчиков, то загорается сигнальная лампа для соответствующей комнаты. Лампа гаснет, если все датчики в комнате отключены.

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

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

Рисунок 1 Схема задачи

Рисунок 1 Схема задачи

Рисунок 2 Добавление функции или функционального блока

Рисунок 2 Добавление функции или функционального блока

Рисунок 3 Добавление функции срабатывания 2-х датчиков из 3-х

Рисунок 3 Добавление функции срабатывания 2-х датчиков из 3-х

Рисунок 4 Добавление функционального блока обработки сигналов для комнаты

Рисунок 4 Добавление функционального блока обработки сигналов для комнаты

Подпрограммы.

 

Функция выбора 2 из 3 (язык ST)

Назначение: функция имеет сигнал типа логической 1 на выходе при наличии на входе не менее 2 сигналов типа логической 1.

Область переменных:

FUNCTION log2_3 :BOOL

VAR_INPUT

in1, in2,in3: BOOL;(*входы функции*)

END_VAR

VAR

END_VAR

Программа:

IF (in1 AND in2)OR((in1 AND in3))OR(in2 AND in3) THEN log2_3:=1;

ELSE log2_3:=0;

END_IF;

Функциональный блок обработки сигналов для 1 комнаты.

 

Область переменных:

FUNCTION_BLOCK room

VAR_INPUT

dat1,dat2,dat3:BOOL;(*сигналы с датчиков пожарной безопасности в комнате*)

knop_trevog, sbros_trevog:BOOL;(*внешние  кнопки включения и сброса тревоги*)

logika23:BOOL;(*сигнал о срабатывании 2 пожарных датчиков*)

END_VAR

VAR_OUTPUT

sign_lamp, sign_trevog:BOOL;(*сигнальная лампа комнаты и сигнал тревоги*)

END_VAR

VAR

END_VAR

Рисунок 5 Функциональный блок обработки сигналов для комнаты на языке LD

Рисунок 5 Функциональный блок обработки сигналов для комнаты на языке LD

Основная программа:

 

Область переменных:

PROGRAM PLC_PRG

VAR

dat11,dat12,dat13,dat21,dat22,dat23:BOOL;(*датчики пожарной сигнализации в комнатах*)

sign1,sign2:BOOL;(*сигнальные лампы комнат*)

alarm:BOOL;(*сигнал тревоги*)

trevog1, sbros1,trevog2, sbros2:BOOL;(*внешние кнопки тревоги и сброса тревоги*)

room1: room;               (*блок пожарной сигнализации 1 комнаты*)

room2: room;               (*блок пожарной сигнализации 2 комнаты*)

END_VAR

Рисунок 6 Основная программа на языке CFC

Рисунок 6 Основная программа на языке CFC

Рисунок 7 Пример организации визуализации задачи

Рисунок 7 Пример организации визуализации задачи

 

Мой блог находят по следующим фразам

Задача для изучения языка релейной логики (управление освещением)

Условие задачи

Условия задачи

Условия задачи

На входе установлены два дискретных датчика: один снаружи комнаты, другой внутри. Когда срабатывает сначала внешний датчик, затем внутренний, это означает, что человек зашел в комнату.Когда срабатывает сначала внутренний датчик, затем внешний, это означает, что человек вышел из комнаты.

Задача1: Если человек вошел – включить свет, Если человек вышел – выключить свет.

Задача2: Необходимо считать количество людей, заходящих и выходящих из комнаты.

Пока в комнате остается хотя бы один человек, свет должен быть включен.

Программа управления в POU

Рисунок 1 Выбор языка программирования

 

Рисунок 1 Выбор языка программирования
Рисунок 2 Переменные, используемые для решения задачи

Рисунок 2 Переменные, используемые для решения задачи

Рисунок 3 Вид программы на языке LD

Рисунок 3 Вид программы на языке LD

Рисунок 4 Вид программы на языке CFC

Рисунок 4 Вид программы на языке CFC

Визуализация задачи

 

 

Рисунок 5 Общий вид визуализации для задачи о включении света

Рисунок 5 Общий вид визуализации для задачи о включении света

Рисунок 6 Вид визуализации после запуска программы

Рисунок 6 Вид визуализации после запуска программы

Настройки отдельных объектов визуализации:

Входной сенсор

Рисунок 7 Организация связи кнопки на визуализации и переменной программы

Рисунок 7 Организация связи кнопки на визуализации и переменной программы

Рисунок 8 Выбор цветов заливки во включенном и выключенном режиме

Рисунок 8 Выбор цветов заливки во включенном и выключенном режиме

Рисунок 9 Назначение переменной изменения цвета

Рисунок 9 Назначение переменной изменения цвета

Настройки для кнопки выходного сенсора аналогичны.

Лампа

Рисунок 10 Назначение переменной переключения цветов

Рисунок 10 Назначение переменной переключения цветов

Рисунок 11 Создание подписи объекта "ЛАМПА"

Рисунок 11 Создание подписи объекта "ЛАМПА"

Рисунок 12 Выбор цветов заливки во включенном и выключенном режиме

Рисунок 12 Выбор цветов заливки во включенном и выключенном режиме

Счетчик

Рисунок 13 Настройка вывода текста счетчика

Рисунок 13 Настройка вывода текста счетчика

Рисунок 14 Организация связи значения счетчика на визуализации и переменной программы

Рисунок 14 Организация связи значения счетчика на визуализации и переменной программы

 

Мой блог находят по следующим фразам

Управление освещением в длинном коридоре (язык LD)

Есть длинный коридор. Для управления освещением в коридоре используется три переключателя:

  • Msw- главный переключатель
  • Bsw – переключатель в начале коридора.
  • Esw – переключатель в конце коридора.

Подача питания в коридор осуществляется с помощью переключателя Msw.

Необходимо решить задачу включения/выключения света с помощью любого из двух переключателей Bsw и Esw, установленных в разных концах коридора.

Т.е. при входе в коридор с одной стороны необходимо переключить Bsw, чтобы зажечь свет. На выходе с другой стороны коридора необходимо переключить Esw, чтобы свет погас. И наоборот.

Рисунок 1 Схема задачи

Рисунок 1 Схема задачи

Решение задачи.

Область переменных

PROGRAM PLC_PRG

VAR Msw, bsw, esw:BOOL;(*переключатели главный, в начале и конце коридора соответственно*)

sost:BOOL; (*вспомогательная булева переменная*)

light:BOOL; (*включение *)

END_VAR

Программа на языке ST

sost:=esw XOR bsw;

IF sost AND msw THEN light:=TRUE;

ELSE light:=FALSE;

END_IF;

Программа на языке LD

 

 

 

 

Программа на языке LD

Программа на языке LD

 

 

Пример можно скачать  здесь

 

Мой блог находят по следующим фразам

Мой блог находят по следующим фразам

Терморегулятор в CoDeSys (язык ST)

В представленном ниже примере рассмотрена возможность реализации в CoDeSys стандартных алгоритмов работы терморегулятора.

Цель работы: реализация  алгоритма терморегулятора, работающего по гистерезисному закону (нагреватель / охладитель), а также логике поддержания температуры в заданных границах (U/П — логика).

Чему можно научиться: простая и наглядная реализация алгоритмов с гистерезисом, работа с IF и CASE на языке ST.

Программа написана на наиболее популярном и удобном языке программирования ПЛК ST (структурированный текст). Реализуется алгоритм терморегулятора, работающего в одном из 5 режимов:

  • тип логики 0. регулятор отключен.
  • тип логики 1 (прямой гистерезис) применяется в случае использования прибора для управления работой нагревателя (например, ТЭНа) или сигнализации о том, что значение текущего измерения Ттек меньше уставки Т. При этом выходное устройство, подключенное к ЛУ, первоначально включается при значениях Ттек < (Т – Δ), выключается при Ттек > (T + Δ) и вновь включается при Ттек < (Т – Δ), осуществляя тем самым двухпозиционное регулирование по уставке Т с гистерезисом ± Δ;
  • тип логики 2 (обратный гистерезис) применяется в случае использования прибора для управления работой охладителя (например, вентилятора) или сигнализации о превышении значения уставки. При этом выходное устройство первоначально включается при значениях Ттек > (T + Δ), выключается при Ттек < (Т – Δ);
  • тип логики 3 (П-образная) применяется при использовании прибора для сигнализации о входе контролируемой величины в заданные границы. При этом выходное устройство включается при (Т – Δ) < Ттек < (T + Δ);
  • тип логики 4 (U-образная) применяется при использовании прибора для сигнализации о выходе контролируемой величины за заданные границы. При этом выходное устройство включается при Ттек < (Т – Δ) и Ттек > (T + Δ).

Задание уставки (Т) и гистерезиса (Δ) проводится при программировании параметров регулирования прибора.

Наглядно работа прибора может быть пояснена с помощью диаграммы на рис.1.

Схема режимов работы терморегулятора

Рисунок 1. Диаграмма работы логического устройства в различных режимах

В соответствие с заданием определим переменные проекта, например, так как на рис.2.

переменные проекта

Рисунок 2 Определение переменных проекта

Далее собственно программа. Для выбора режима использован оператор CASE, логика работы устройства разработана с использованием IF. Дополнительно к вышеописанным алгоритмам разработаны и аналоговые П-регуляторы, как нагреватель, так и холодильник.

программа

Рисунок 3. Первая часть программы. Обработка дискретных алгоритмов

Первая часть программы. Обработка дискретных алгоритмов

аналоговый выход

Рисунок 4. Часть программы обрабатывающая алгоритмы для аналогового выхода

Не забывайте закрывать соответствующие условные операторы словом END_ххх. Надеюсь пример получился не только простым, но и полезным.

 

Мой блог находят по следующим фразам

Задача на переключатели и лимиты(СFC)

Два насоса работают поочередно на одну магистраль. Переключение работающего насоса осуществляет оператор с цифровой панели (задает номер работающего насоса либо отключает заданием 0). При ошибке оператора в большую сторону работает 2 насос, в меньшую — насосы отключаются. На панель управления выдается текстовое сообщение о состоянии системы.

Визуализация задачи

Визуализация задачи

Программа на языке CFC

Программа на языке CFC

 

Мой блог находят по следующим фразам