0 / 0 / 0
Регистрация: 19.06.2022
Сообщений: 2
1

[CoDeSys 3.5] Какой язык программирования выбрать для данной задачи?

19.06.2022, 13:06. Показов 896. Ответов 3

Студворк — интернет-сервис помощи студентам
Всем привет!
Стоит задача автоматизировать управление технологическим оборудованием установки.

Из оборудования для создания системы управления имеется: ПЛК NLcon-CED (Reallab) подключенный по интерфейсу RS-485 к модулю релейного вывода NL-8R (Reallab). ПЛК NLcon-CED соединен с компьютером по интерфейсу Ethernet для программирования ПЛК. После загрузки в ПЛК программы управления он будет отключен от компьютера и будет функционировать автономно. Среда разработки программы управления - Codesys 3.5.
[CoDeSys 3.5] Какой язык программирования выбрать для данной задачи?


Управление технологическим оборудованием осуществляется путем кратковременного замыкания релейных выходов NL-8R (имеет 8 релейных выходов). После замыкания релейного выхода производится подача питания на оборудование.

Окно программы должно содержать три кнопки, нажатие на которые приводит к замыканию релейного выхода, отжатие кнопки приводит к размыканию релейного выхода. Т.е. по сути нажатие кнопки формирует "1", а отжатие "0".
[CoDeSys 3.5] Какой язык программирования выбрать для данной задачи?


Подскажите пожалуйста какой язык программирования выбрать? Где-то видел, что с реле работают в LD. Сам только начал разбираться в Codesys, раньше не приходилось сталкиваться. И из опыта программирования только курс в институте Чувствую, что это, скорее всего, не сильно сложная задача, что-то типа циклов if...else должно применяться, поэтому первым проектом открыл язык ST.
[CoDeSys 3.5] Какой язык программирования выбрать для данной задачи?

Может быть есть примеры реализации или готовые решения? Буду очень признателен!
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
19.06.2022, 13:06
Ответы с готовыми решениями:

Где используется тот ли иной язык программирования? Какой из них выбрать для решения задачи?
спросил в этой теме из-за того что не нашел где можно почитать где используется тот ли иной язык...

Язык программирования для Android какой выбрать
Привет всем, есть две интересных идеи, хочу два проекта сделать на android, проблема в том что я не...

Какой язык выбрать для программирования микроконтроллеров
Добрый день, хочу изучить язык программирования микроконтроллеров, опыт небольшой есть. В года 2...

Какой язык программирования выбрать для хобби?
Добрый день! Программирование как и создания игр для меня хобби.После долгих скитаний между ЯП,...

3
Модератор
Эксперт по электронике
8381 / 4263 / 1618
Регистрация: 01.02.2015
Сообщений: 13,269
Записей в блоге: 5
19.06.2022, 13:45 2
Скажу за себя.

Пока на CoDeSys 3.5 не переходил, делал 2-3 программы в версии 2.3.

Основную программу делал на SFC - подобие блок-схем. Часть "квадратиков" оставлял пустыми, т.к. использовал их как метку для перехода.
Сами "квадратики" заполнял программами на ST или на FBD (он же CFC - не путать с SFC) - тут просто, как было удобнее, нагляднее.
На ST делал ту часть, которая требовала каких-то ветвлений, организации конечного автомата (при помощи оператора CASE).
На FBD (CFC) делал какие-то простые вычисления, вызовы библиотечных блоков с заполнением множества входов из переменных.
Выбор между ST и FBD - на каком проще и нагляднее сделать.

Так поступал, чтобы структурировать программу, разделить задачи.

Вот пара примеров основной программы на SFC (выделил цветом "квадратики", которые использую только как метки для переходов)
Кликните здесь для просмотра всего текста
[CoDeSys 3.5] Какой язык программирования выбрать для данной задачи?

Кликните здесь для просмотра всего текста
[CoDeSys 3.5] Какой язык программирования выбрать для данной задачи?


Вот конечный автомат одного из "квадратиков" на ST (номера состояний брал с интервалом 10 чтобы было удобнее вставлять дополнительные состояния)
Кликните здесь для просмотра всего текста
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
*=========================================================================*)
(* Действия объектового ПЛК при входящей связи с диспетчерской             *)
(*=========================================================================*)
 
uiStatusStep:=16#0230;
 
byDispData:=byDiscreteInputs;
 
(*
bInComOSetData:=bInComDReady AND (NOT bInComDRead);
*)
 
CASE byInComeState OF
00:
    bInComOReady:=FALSE;
    bInComOSetData:=FALSE;
    IF ( (    bInComDReady) AND (NOT bInComDRead) ) THEN
        byInComeState:=10;
(*      byDispData:=byDiscreteInputs;*)
    END_IF;
10:
    bInComOReady:=TRUE;
    bInComOSetData:=FALSE;
    IF ( (    bInComDReady) AND (    bInComDRead) ) THEN
        byInComeState:=20;
(*      byDispData:=byDiscreteInputs;*)
    END_IF;
20:
    bInComOReady:=TRUE;
    bInComOSetData:=TRUE;
    IF ( (    bInComDReady) AND (NOT bInComDRead) ) THEN
        byInComeState:=30;
    END_IF;
30:
    bInComOReady:=TRUE;
    bInComOSetData:=FALSE;
    IF ( (NOT bInComDReady) AND (NOT bInComDRead) ) THEN
        byInComeState:=40;
    END_IF;
40:
    bInComOReady:=FALSE;
    bInComOSetData:=FALSE;
(*  IF ( (NOT bInComDReady) AND (NOT bInComDRead) ) THEN*)
    byInComeState:=99;
(*  END_IF;*)
ELSE
    byInComeState:=00;
END_CASE;
 
(* сброс таймера отсчёта времени между сеансами входящей связи *)
bNoInCome:=(byInComeState<>(99));
 
IF (byInComeState=(99)) OR (tonInCome.Q) THEN
    byInComeState:=00;
END_IF;
 
IF tonInCome.Q THEN
    byInComeState:=00;
    bInComDReady:=FALSE;
    bInComDRead:=FALSE;
END_IF;


Вот "квадратик" на FBD (CFC)
[CoDeSys 3.5] Какой язык программирования выбрать для данной задачи?

Если какой-то код повторяется (попадание параметра в аварийный диапазон, ПИД-регулятор, масштабирование аналоговых входов), то реализую его или в виде функций или ФБ.
1
Модератор
Эксперт по электронике
8381 / 4263 / 1618
Регистрация: 01.02.2015
Сообщений: 13,269
Записей в блоге: 5
19.06.2022, 13:51 3
Цитата Сообщение от Son1c Посмотреть сообщение
Окно программы должно содержать три кнопки, нажатие на которые приводит к замыканию релейного выхода, отжатие кнопки приводит к размыканию релейного выхода. Т.е. по сути нажатие кнопки формирует "1", а отжатие "0".
Это, видимо, учебная программа. Т.к. затраты на ПЛК+ОП+модуль+блок питания многократно превышают стоимость трёх кнопок.
0
0 / 0 / 0
Регистрация: 19.06.2022
Сообщений: 2
19.06.2022, 15:52  [ТС] 4
Спасибо за ответ, буду вникать! Мне бы как можно проще сделать.
Программа в каком-то смысле учебная, но для меня Чтоб потихоньку въехать в программирование на Codesys. А так, вполне реально будет применяться. По мере развития навыка данный набор оборудования будет участвовать в более сложных задачах
0
19.06.2022, 15:52
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
19.06.2022, 15:52
Помогаю со студенческими работами здесь

Какой язык программирования выбрать для начинающего?
С какого языка программирования стоит начать новичку ? Java, Javascript, Python, Ruby?

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

Какой язык программирования выбрать для быстрого трудоустройства?
Доброго времени суток. Тема очень избитая, но всё же приглашаю к обсуждению, т.к. мне нужен не...

Какой язык программирования выбрать для создания игр?
Какой язык программирования выбрать для создания игр? Си или Си++. Собираюсь писать, как сложные,...

Какой язык программирования лучше всего выбрать для бизнеса С+ С++?
какой язык программирования лучше всего выбрать для бизнеса с+ с++?

Какой язык программирования выбрать для разработки собственного ЕРП решения?
Всем привет! Решили написать в нашей компании собственное ЕРП решение, сейчас выбираем какой...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru