Форум программистов, компьютерный форум, киберфорум
Контроллеры PLC
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.54/13: Рейтинг темы: голосов - 13, средняя оценка - 4.54
Эксперт JavaЭксперт по электроникеЭксперт .NET
 Аватар для wizard41
3450 / 2771 / 575
Регистрация: 04.09.2018
Сообщений: 8,715
Записей в блоге: 3

CODESYS + ПЛК МЗТА (МС8.3)

16.03.2024, 23:38. Показов 5641. Ответов 41

Студворк — интернет-сервис помощи студентам
Привет коллеги.
Впервые в своей практике столкнулся с ПЛК российского производства (ну, как 'российского': на процах Cortex, ага), а именно, ПЛК МЗТА МС8.
"Родная" среда разработки этих ПЛК Конграф, скажем так, больше похожа на пособие для изучения программирования для школьников. Как-то не зашла. Поэтому, я задумал вести разработку текущего проекта с этим ПЛК в универсальной среде CODESYS. Тем более, что производитель поддерживает это, выпуская соотв. таргеты.

Из всей что я нашел довольно скудной инфы по этому поводу, я предположил, что для разработки достаточно подключить библиотеку, в которой присутствует лишь один тип: "kb.D-2" - это дисплейный модуль на самом деле. Но через него, теоретически, можно взаимодействовать со всей линейкой ПЛК МС серии.
Но не это главное.
Главный вопрос возник в сопоставлении физических адресов ПЛК, которые изображены на картинке ниже, с адресами, принятыми для системы программирования (типа %IX0.0 / %QX0.0).
МС8.3

Понятно дело, что когда я доберусь до реального физического ПЛК МЗТА (или он до меня доберется), то я быстро разберусь где собака порылась. Но, пока этого не произошло, если кто знает, буду признателен за комментарии по этому поводу.

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

0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
16.03.2024, 23:38
Ответы с готовыми решениями:

[CoDeSys] Эмуляция и отладка программы - нет связи с ПЛК
Добрый день. Подскажите плиз начинающему. Установил Codesys 2.3 При попытке виртуального подключения к контроллеру выдает ошибку...

[CoDeSys] Подключить по Ethernet к ПЛК (slave) вторую панель оператора
Здравствуйте! Есть контроллер Wago 750-871, связанный с панелью weintek по Ethernet. Нужно подключить еще одну такую панель. Контроллер...

Написать кастомный драйвер для ПЛК (OpenPLC или CoDeSys) собранном на микроконтроллере
Добрый день, интересует такой вопрос как написать кастомный драйвер для конфигурирования кастомного плк под язык ST чтобы кастомный плк...

41
Модератор
Эксперт по электронике
 Аватар для ФедосеевПавел
8667 / 4504 / 1670
Регистрация: 01.02.2015
Сообщений: 13,934
Записей в блоге: 13
19.03.2024, 19:27
Студворк — интернет-сервис помощи студентам
TOF тогда сделал так

ЗДН ЛОГ нужно было, зачем - уже не помню.
0
Эксперт JavaЭксперт по электроникеЭксперт .NET
 Аватар для wizard41
3450 / 2771 / 575
Регистрация: 04.09.2018
Сообщений: 8,715
Записей в блоге: 3
20.03.2024, 12:41  [ТС]
ФедосеевПавел, если организовывать радиальную сеть, то нужно как-то задействовать назначенные адреса устройствам в этой сети, видимо. Т.е. мастер будет уже отправлять сообщение конкретному ПЛК, и этот ПЛК как-то должен понять, что посылка предназначена для него.
Эту логику (определение адреса) нужно тут самому писать? Ну и линии связи на холсте - получается одна идет от мастера через все ПЛК, заканчиваясь на последнем, а вторая - от первого ведомого через всех ведомых и на вход мастера... Правильно мыслю?
0
Модератор
Эксперт по электронике
 Аватар для ФедосеевПавел
8667 / 4504 / 1670
Регистрация: 01.02.2015
Сообщений: 13,934
Записей в блоге: 13
20.03.2024, 13:17
У меня был ЩУ (щит управления) и 4 ЩУП (щит управления печью).
ЩУ отслеживал состояния работы отдельных ЩУП и включал какое-то общее для всех оборудование.

В программе от ПЛК ЩУ виртуальными связями подключил все ШУП - получилось как солнышко с центром в ЩУ. Не было прохождения насквозь никакого сигнала. Только ЩУ-ЩУП1, ЩУ-ЩУП2, ЩУ-ЩУП3, ЩУ-ЩУП4.

Хотя провода, конечно, гирляндой соединялись.

Реально смонтировали 2 из 4 печей, но проект был на 4. Вернусь домой - покажу главный холст.
1
Эксперт JavaЭксперт по электроникеЭксперт .NET
 Аватар для wizard41
3450 / 2771 / 575
Регистрация: 04.09.2018
Сообщений: 8,715
Записей в блоге: 3
20.03.2024, 13:26  [ТС]
Цитата Сообщение от ФедосеевПавел Посмотреть сообщение
получилось как солнышко с центром в ЩУ
Ага, я тоже уже прихожу к такому варианту...
Цитата Сообщение от ФедосеевПавел Посмотреть сообщение
Вернусь домой - покажу главный холст.
Было бы неплохо )
0
Эксперт JavaЭксперт по электроникеЭксперт .NET
 Аватар для wizard41
3450 / 2771 / 575
Регистрация: 04.09.2018
Сообщений: 8,715
Записей в блоге: 3
20.03.2024, 16:22  [ТС]
В общем, у меня получилась вот такая конструкция (согласно прошлой тестовой задаче):
Радиальная схема связи:
главный холст

Слейвы одинаковые (кроме адреса, естественно), включая собственные списки:
ведомые

Мастер (ведущий) - отдает приказы и получает состояния ведомых:
мастер

Таким образом получается, что у мастера добавляется кол-во виртуальных входов/выходов, согласно кол-ву подчиненных.
В симуляторе работает как часы.
Если в настоящей связи KontarBus все так и будет, то это то, что мне нужно!
0
Модератор
Эксперт по электронике
 Аватар для ФедосеевПавел
8667 / 4504 / 1670
Регистрация: 01.02.2015
Сообщений: 13,934
Записей в блоге: 13
20.03.2024, 20:20
Главный холст
Кликните здесь для просмотра всего текста


Один из однотипных Slave (ЩУП4).
"Из HMI" и "В HMI" - это параметры для ввода и вывода параметров в операторскую панель.
"ШУП" - основной алгоритм работы щита без внутренних энергонезависимых параметров.
Кликните здесь для просмотра всего текста
0
Эксперт JavaЭксперт по электроникеЭксперт .NET
 Аватар для wizard41
3450 / 2771 / 575
Регистрация: 04.09.2018
Сообщений: 8,715
Записей в блоге: 3
20.03.2024, 20:46  [ТС]
ФедосеевПавел, ага, ну да. Такую топологию я и представлял уже, после того как задал вопрос. На картинках, полагаю, передача данных между ШУП и ШУ - односторонняя?
0
Модератор
Эксперт по электронике
 Аватар для ФедосеевПавел
8667 / 4504 / 1670
Регистрация: 01.02.2015
Сообщений: 13,934
Записей в блоге: 13
20.03.2024, 20:59
Да, получилась односторонняя - от ЩУП_N к ЩУ и другая от ЩУ к МР20.
Можно было бы и команды в ЩУП направлять, но необходимости не было.
0
Эксперт JavaЭксперт по электроникеЭксперт .NET
 Аватар для wizard41
3450 / 2771 / 575
Регистрация: 04.09.2018
Сообщений: 8,715
Записей в блоге: 3
20.03.2024, 21:06  [ТС]
Цитата Сообщение от ФедосеевПавел Посмотреть сообщение
Можно было бы и команды в ЩУП направлять
Но для этого пришлось бы дорисовывать выхода у ЩУ и входа у ШУП-ов, и соединять их. Как я понял, в этой системе проектирования, линия связи не работает в обе стороны...

Добавлено через 1 минуту
Т.е. входы, выходы и их соединения однозначно определяют направление связи.
0
Модератор
Эксперт по электронике
 Аватар для ФедосеевПавел
8667 / 4504 / 1670
Регистрация: 01.02.2015
Сообщений: 13,934
Записей в блоге: 13
20.03.2024, 21:27
Да, совершенно верно.
Связи показываются для каждого направления для каждой переменной.
1
Эксперт JavaЭксперт по электроникеЭксперт .NET
 Аватар для wizard41
3450 / 2771 / 575
Регистрация: 04.09.2018
Сообщений: 8,715
Записей в блоге: 3
20.03.2024, 21:43  [ТС]
ФедосеевПавел, окей, вопрос касательно связи между Контарами более-менее прояснился.
Спасибо за содействие!
Возможно позже, немного порасспрашиваю по поводу увязки HMI с этой системой (ну, чтобы самому долго не увлекаться изучением этого).
0
Модератор
Эксперт по электронике
 Аватар для ФедосеевПавел
8667 / 4504 / 1670
Регистрация: 01.02.2015
Сообщений: 13,934
Записей в блоге: 13
20.03.2024, 21:53
Хорошо. Постараюсь вспомнить.
У меня оставалась нерешённая проблема - при отключении щита Slave на панели всплывало окно о прерывании связи и его было проблематично убрать. Так и не разобрался...
0
Эксперт JavaЭксперт по электроникеЭксперт .NET
 Аватар для wizard41
3450 / 2771 / 575
Регистрация: 04.09.2018
Сообщений: 8,715
Записей в блоге: 3
22.03.2024, 16:35  [ТС]
И снова, как говорится, здравствуйте.
Коль уж мы немного "перебежали" на софт "Конграф", то в качестве заметки приведу пример - как разделить дробное (float) число (температуру/напряжение...) на два целых, например, для передачи их по внутренней сети KontarBus.

В библиотеке Конграфа на самом деле есть соотв. функциональные блоки, и в нашем случае подходит блок АН-2 ЦЕЛ, который выполняет побайтное преобразование аналогового числа в два целых. Но проблема в том, что свои операции, включая результат, он помещает в память регистров, например, для передачи в Modbus. Эта память недоступна для памяти программы, т.е. для того же симулятора, ну и как следствие, мы не сможем передать этот результат по сети KontarBus другому устройству.

Для выхода из этой "неприятной" ситуации, я разработал свой ФБ, который выполняет то же, что и библиотечный АН-2 ЦЕЛ:
ФБ FLT2INT

Если передавать куда-либо результат его работы не требуется, а лишь "подсматривать" в симуляторе, то этот блок можно сделать виртуальным, тогда он не будет компилироваться в итоговый бинарный файл.

После создания блока прописываем у значащих (выходных) субмодулей следующие параметры:
ЦЕЛ ЧАСТЬ - выделение целой части

ЦЕЛ ЧАСТЬ - дробная часть

Теперь они доступны в симуляторе (да и вообще в программе внутри блока).

Вставим наш ФБ в текущую программу для проверки, например, температуры:
ФБ в программе ПЛК

и проверим результат в симуляторе:
Проверка в симуляторе

Таким образом, параллельно с библиотечным ФБ, мы можем подключить свой, для наблюдения результатов разложения дробных чисел на два целых, которые проще передавать по тем или иным каналам связи.
0
Модератор
Эксперт по электронике
 Аватар для ФедосеевПавел
8667 / 4504 / 1670
Регистрация: 01.02.2015
Сообщений: 13,934
Записей в блоге: 13
22.03.2024, 18:21
Мне казалось, что связь между ПЛК по внутренней сети возможна в любом формате чисел.

А при разделении "аналогового" числа на два целых (typecast) АН-2 ЦЕЛ можно отправить результаты в ЗДН ЦЕЛОГО в котором выход спрятать и присвоить его переменной из списка.
Или просто не уяснил цель преобразования.
0
Эксперт JavaЭксперт по электроникеЭксперт .NET
 Аватар для wizard41
3450 / 2771 / 575
Регистрация: 04.09.2018
Сообщений: 8,715
Записей в блоге: 3
22.03.2024, 18:31  [ТС]
ФедосеевПавел, оказалось, что нет.
Цитата Сообщение от ФедосеевПавел Посмотреть сообщение
АН-2 ЦЕЛ можно отправить результаты в ЗДН ЦЕЛОГО
Не-а, внутри программы там будет "ничего", т.е. даже не нули. Что и понятно, т.к. все это находится в регистрах реального ПЛК.
Название: an2.png
Просмотров: 59

Размер: 3.3 Кб
0
Эксперт JavaЭксперт по электроникеЭксперт .NET
 Аватар для wizard41
3450 / 2771 / 575
Регистрация: 04.09.2018
Сообщений: 8,715
Записей в блоге: 3
22.03.2024, 18:46  [ТС]
Точнее сказать - они скорее всего передаются, но увидеть в отладке их нельзя, после встроенного ФБ, т.к. он вычисляет все в памяти регистров конкретного ПЛК. А передать то в другой блок без проблем.

Добавлено через 1 минуту
Цитата Сообщение от ФедосеевПавел Посмотреть сообщение
и присвоить его переменной из списка.
пробовал. не помогло )
0
Модератор
Эксперт по электронике
 Аватар для ФедосеевПавел
8667 / 4504 / 1670
Регистрация: 01.02.2015
Сообщений: 13,934
Записей в блоге: 13
22.03.2024, 20:14
У меня всегда "под рукой" был ПЛК, поэтому симулятором даже не научился пользоваться.

При помощи АН-2 ЦЕЛ отправлял по Modbus аналоговое число на панель, это работало, а вот разделение на регистры в список не пытался добавлять. Возможно, какая-то недоработка симулятора или всей среды.
0
Эксперт JavaЭксперт по электроникеЭксперт .NET
 Аватар для wizard41
3450 / 2771 / 575
Регистрация: 04.09.2018
Сообщений: 8,715
Записей в блоге: 3
17.06.2024, 13:57  [ТС]
В одном моменте не до конца разобрался — передача тегов из ПО КОНСОЛЬ в проект для панели.
......
Теперь добавляю теги из ПЛК к тегам проекта панели кнопкой «Импорт CSV…». И получаю нерабочий проект для панели! Всё потому, что теги ПЛК не добавились, а полностью заменили существовавшие внутренние теги панели.
Чтобы выйти из этой ситуации, пришлось:
......
Также, мне советовали создавать проект для панели без использования шаблона — тогда проект создаётся без внутренних тегов, с которыми нужно дополнительно возиться при обновлении проекта для ПЛК.
Опишу этот момент из своего опыта:
Да, если создавать проект без использования шаблона, то "пользовательских" меток в нем не будет совсем, т.о. импортированные теги просто заносятся в таблицу и ничего не перезаписывают лишнего.
Однако, если проект создан на основании шаблона, то в нем будут присутствовать некоторые теги "по умолчанию" примерно такого вида:
теги HMI по умолчанию

В этом случае, при импорте своих тегов из проекта Конграфа, нужно снять галочку "удалить старые теги":

и тогда вновь добавляемые теги не перезапишут системные. Работа проекта в HMI не нарушится.
1
Эксперт JavaЭксперт по электроникеЭксперт .NET
 Аватар для wizard41
3450 / 2771 / 575
Регистрация: 04.09.2018
Сообщений: 8,715
Записей в блоге: 3
30.12.2024, 17:28  [ТС]
В общем и в целом, подведу некоторые итоги по своему первому, и возможно последнему опыту работы с ПЛК МЗТА.
Как обычно водится у нас - продвижение продуктов на рынок происходит быстрее, чем, собственно, развитие этих самых продуктов. Как результат, инженерам приходится самостоятельно бороться с некачественной проработкой исходных алгоритмов, т.е. изобретать "велосипеды" на том что есть.

И так, запущена в работу автоматизация средне-статистической котельной (2 котла), на основе приборов МЗТА. Схема IO и межблочных связей вышла следующая:
Кликните здесь для просмотра всего текста

Для наглядной имитации и проверки на объекте тех или иных узлов автоматики, для панели Weintek был разработан ряд экранов:
Кликните здесь для просмотра всего текста

Можно отметить, что большинство "заводских" алгоритмов (блоков) в ПО Контар - сделано весьма добротно. Таких как ПИД-регуляторы, компараторы, различного рода преобразователи и прочие 'локальные' вещи. В то же время, действительно важным вещам, что касается связи и безопасности, уделено слишком мало внимания. Т.е. они оказались не работоспособны вообще, в плане реализации конвенций и требований IEC, либо работоспособны "наполовину". Остальную "половину", как обычно, пришлось дорабатывать напильником.

Так же, существуют некоторые "тонкости", которые не освещены нигде в документации/справке и познаются только "случайно" в ходе ПНР.

Не буду касаться всех замеченных недостатков: достаточно будет упомянуть только банальную проверку связи между устройствами, т.н. ФБ "ПРВ СВЗ (М)".
Работает эта система в режиме "симплекс", т.е. в одном направлении Slave -> Master. Ведущее устройство узнает что какой-то Слейв отвалился, а вот чтобы Слейв знал о пропаже связи с Мастером - нужно самостоятельно реализовать тоже самое, только наоборот. От сюда, кроме всего прочего, растет "паутина" межблочных связей на общей картине взаимодействия.

Кроме того, если в системе участвует панель, которая в свою очередь получает все данные от всех ПЛК через тот же WebLinker, то она как бы сама определяет потерю связи с блоками. Для этого ФБ проверки связи вообще становятся не нужны.

В вопросах безопасности этот момент образует значительную брешь: например, если ведомое устройство запустилось по команде от ведущего и в некоторый момент связь между ними пропадает, то "знание" об этом факте ведущего уже не поможет остановить ведомого.. Он так и будет продолжать работать, даже не подозревая что связи то и нет.
Таким образом, система связи "все через одного" оставляет весьма мало пространства для хоть какого-то горячего резервирования, не говоря уже про условно критические реагирования на различные ситуации.

В процессе работы над проектом не раз приходило на ум решение - организовать значительную часть логики в панели, а ПЛК МЗТА использовать только как модули ввода-вывода, ну, с некоторыми возможными небольшими алгоритмами внутри. Т.е. сама панель будет выступать в качестве основного "мозга" взаимодействия системы, на основе своих внутренних подпрограмм и макросов. Однако, в случае выхода панели из строя - система в целом становится неработающей. Поэтому эту мысль отложил пока на будущее.

Не мало вопросов и к "железной" составляющей этих ПЛК, что набрасывает очевидную тень на бесперебойность и надежность работы систем на их основе. Не редки случаи, когда при ошибочной подаче "не того сигнала/нагрузки" в порт - порт выгорает полностью. Если в других, по-настоящему промышленных ПЛК проблема легко решается путем перебивки входа/выхода на соседний свободный, то здесь без замены целого ПЛК не обойтись. Так же, встречались самопроизвольные переключения состояния приборов в режим "СТОП" по неведанным причинам, равно как и не переход их в режим "RUN" после пропажи и восстановления питания.
Можно сказать, что автоматизация на их основе требует практически 100%-го участия человека рядом (оператора) на случай таких странных поведений. Этот факт значительно нивелирует рекламный лозунг "Подключил и забыл".
1
Эксперт JavaЭксперт по электроникеЭксперт .NET
 Аватар для wizard41
3450 / 2771 / 575
Регистрация: 04.09.2018
Сообщений: 8,715
Записей в блоге: 3
30.12.2024, 17:34  [ТС]
Какой-то глюк с загрузкой картинок, продублирую:

1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
30.12.2024, 17:34
Помогаю со студенческими работами здесь

Обмен данными c ПЛК Moeller-SC-CPU-201 (CodeSys) по Modbus-протоколу в сети RS-485
Добрый день! Прошу помощи, уже отчаялся искать в чем проблема: Есть ПЛК moeller-xc-cpu-201, программируемый через codesys....

ПЛК Schneider electric MODICON TSX Micro vs ПЛК от Allen bradley
День добрый, народ подскажите,пожалуйста, плохо ещё разбираюсь в этом, у меня есть контроллер Shneider electric MODICON TSX Micro, мне...

Контролеры ELMO и ака ПЛК, которые не ПЛК
Ребят... А кто что-нибудь может рассказать про контроллеры Elmo. Вот про них: http://www.elmomc.com/products/motion-controllers.htm ...

[Siemens s7 314c 2dp] Корректная программа для ПЛК одной версии не записывается в ПЛК другой версии
Здравствуйте! Прошу совета как быть. Ситуация следующая: Siemens s7 314c 2dp. ПЛК версии 1.0 вышел из строя. Слетела прошивка....

[CoDeSys 3.5] ПЛК SM252MESC: прочитать данные по CAN
Здравствуйте. Имею дело с контролером от system electric SM252MESC. ПЛК программируется в CODESYS 3.5. Пытаюсь настроить общение...


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

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
[golang] Алгоритм «Хак Госпера»
alhaos 17.05.2026
Алгоритм «Хак Госпера» Хак Госпера (Gosper's Hack) — алгоритм нахождения следующего по величине числа с тем же количеством установленных бит. Придуман Биллом Госпером в 1970-х, опубликован в. . .
Рисование бинарного древа до 6-го колена на js, svg.
russiannick 17.05.2026
<svg width="335" height="240" viewBox="0 0 335 240" fill="#e5e1bb"> <style> <!]> </ style> <g id="bush"> </ g> </ svg> function fn(){ let rost;/ / высота древа let xx=165,yy=210,w=256;
FSharp: interface of module
DevAlt 16.05.2026
Интерфейс модуля F# позволяет управлять доступностью членов, содержащихся в реализации модуля. По-умолчанию все члены модуля доступны: module Foo let x = 10 let boo () = printfn "boo" . . .
Хитросплетение родственных связей пантеона греческих богов.
russiannick 14.05.2026
Однооконник, позволяющий узреть и изучить отдельных героев древней Греции. <!DOCTYPE html> <html lang="ru"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible". . .
[golang] Угол между стрелками часов
alhaos 12.05.2026
По заданным значениям часа и минуты необходимо определить значение меньшего угла между стрелками аналогового циферблата часов. import "math" func angleClock(hour int, minutes int) float64 { . . .
Debian 13: Установка Lazarus QT5
ВитГо 09.05.2026
Эта инструкция моя компиляция инструкций volvo https:/ / www. cyberforum. ru/ blogs/ 203668/ 10753. html и его же старой инструкции по установке Lazarus с gtk2. . .
Нейросеть на алгоритме "эстафета хвоста" как перспектива.
Hrethgir 06.05.2026
На десерт, когда запущу сервер. Статья тут https:/ / habr. com/ ru/ articles/ 1030914/ . Автор я сам, нейросеть только помогает в вопросах которые мне не известны - не знаю людей которые знали-бы. . .
Асинхронный приём данных из COM-порта
Argus19 01.05.2026
Асинхронный приём данных из COM-порта Купил на aliexpress термопринтер QR701. Он оказался странным. Поключил к Arduino Nano. Был очень удивлён. Наотрез отказывается печатать русские буквы. Чтобы. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru