PDA

Просмотр полной версии : обьединение конфигурации codesys 2.3 и 3.5



portal
27.03.2023, 14:41
Здравствуйте ,первый раз работаю с codesys так что не ругайте))) плк 150 ,codesys 2.3 на cfc уже тестово откатал логику по входам \выходам теперь надо вывести визуализацию на спк110 . Но ведь спк110 работает на codesys 3.5 как мне поступить , как согласовать визуализацию из разных версий? на сайте овена есть учебное видео , там специалист создал выходы в 2.3 для визуализации в первой части видео а во второй части он уже в 3.5 показывает что все работает на панели))). Правильно я понимаю что в режиме мастер modbus плк150 опрашивает модули мв110 8а получая с них информацию с регистров а также посылает на мв110 8д сигналы упрапвления по выходам? тоесть и спк110 получает от плк визуализацию состояний а также панель передает на плк информацию об изменении уставок?

kondor3000
27.03.2023, 15:36
Здравствуйте ,первый раз работаю с codesys так что не ругайте))) плк 150 ,codesys 2.3 на cfc уже тестово откатал логику по входам \выходам теперь надо вывести визуализацию на спк110 . Но ведь спк110 работает на codesys 3.5 как мне поступить , как согласовать визуализацию из разных версий? на сайте овена есть учебное видео , там специалист создал выходы в 2.3 для визуализации в первой части видео а во второй части он уже в 3.5 показывает что все работает на панели))). Правильно я понимаю что в режиме мастер modbus плк150 опрашивает модули мв110 8а получая с них информацию с регистров а также посылает на мв110 8д сигналы упрапвления по выходам? тоесть и спк110 получает от плк визуализацию состояний а также панель передает на плк информацию об изменении уставок?

Не надо согласовывать визуализацию, это невозможно. Вам надо передать переменные из ПЛК в СПК, а уже в 3.5 нарисовать свою визуализацию.
Мастером может быть и ПЛК150 и СПК, это как сделаете, кто будет мастер, тот и опрашивает, записывает в модули.

Евгений Кислов
27.03.2023, 15:57
Добрый день.


Правильно я понимаю что в режиме мастер modbus плк150 опрашивает модули мв110 8а получая с них информацию с регистров а также посылает на мв110 8д сигналы упрапвления по выходам? тоесть и спк110 получает от плк визуализацию состояний а также панель передает на плк информацию об изменении уставок?

Да, вы всё правильно поняли.
См. п. 3 или 5 (в зависимости от используемого интерфейса связи) здесь:
https://ftp.owen.ru/CoDeSys3/11_Documentation/03_3.5.11.5/CDSv3.5_ExamplesWithPlc110m02_v.2.0.pdf

portal
25.04.2023, 00:32
создал конфигурации в плк 150 и спк 110 , решил начать с одной булевой переменной а она не передается , релейный блок мк110-8д отрабатывает по modbus rtu а спк молчит , проверьте пожалуйста переменую xVARtoSPKt1 что с ней не так

Евгений Кислов
25.04.2023, 06:55
Добрый день.
Пришлите мне на почту (в подписи) ваш контактный телефон и данные для подключения по AeroAdmin - посмотрим, что у вас происходит.

kondor3000
25.04.2023, 13:20
создал конфигурации в плк 150 и спк 110 , решил начать с одной булевой переменной а она не передается , релейный блок мк110-8д отрабатывает по modbus rtu а спк молчит , проверьте пожалуйста переменую xVARtoSPKt1 что с ней не так

Проверить 3.5 пока не могу, открыть сейчас нечем.
А по поводу 2.3 есть несколько замечаний:
Блоки 8 Bit рекомендуется добавлять по 2 штуки, в 1 регистре 2 байт (16 бит).
И запись в 26 регистр можно было спокойно поместить во 2 половину 0 регистра.
А ещё лучше передавать биты масками (Регистрами), как упаковывать биты в маску через точку, вы знаете.
До переменных REAL (2 Регистра, 4 Байта) вы ещё не добрались, но при не правильном их отображении, при передача по Модбас, рекомендуется поменять местами регистры.
Это делается установкой последней настройки UMD (Универсал модбас девайс), ставится Native

portal
25.04.2023, 14:04
спасибо , по 16 бит сегодня попробую , мне непонятно по редактированию подчинения modbus устройств. у меня сначала блок 8 бит , потом REAL регистры , потом снова блок на 8 бит а опрос же идет строго с нулевого регистра т.е. мне надо удалить REAL регистры , добавить второй блок на 8 бит а потом снова добавить REAL. Нельзя эти блоки REAL добавитиь в буфер памяти чтобы потом вставить после 8 битных блоков?

kondor3000
25.04.2023, 14:21
спасибо , по 16 бит сегодня попробую , мне непонятно по редактированию подчинения modbus устройств. у меня сначала блок 8 бит , потом REAL регистры , потом снова блок на 8 бит а опрос же идет строго с нулевого регистра т.е. мне надо удалить REAL регистры , добавить второй блок на 8 бит а потом снова добавить REAL. Нельзя эти блоки REAL добавитиь в буфер памяти чтобы потом вставить после 8 битных блоков?

Можно скопировать нижний 8 Bit, нажать на верхний Register ( который после верхнего 8 Bit) и вставить.
Потом нижний удалить.
После всех перестановок, Очистить всё, Компилировать всё.

kondor3000
25.04.2023, 22:05
Смоделировал связь на вирт. контроллере Control WIN V3 и ПЛК154

В 2.3 надо у двух 8 Bit Input поставить функцию 0х01 вместо 0х02 (адреса у первого 0 и у второго 8)
Функции Register Input и Real Input везде поменять на 0х03, вместо 0х04.
В 3.5 обновил у Модбас СОМ до версии до 4.1.0.0., у Модбас Serial до 3.5.17.0, переменные надо присваивать регистрам, а не битам. Скрин 67541
А уже в программе разложить маску на биты.
Но есть проблемка, при включении 0 бита в 2.3, в 3.5 включается 8 бит и наоборот, то есть байты переставлены, 67542
На скринах, в 2.3 включены 8 и 9 бит, а в 3.5 это 0 и 1 бит
как вариант можно адреса в 2.3 поменять местами 8 и 0 у 8 Bit Input и 8 Bit Output
А ещё лучше сразу убрать 8 Bit и передавать 16 бит маской, через Register Input, Register Output, как и писал ранее.
На скринах передаются и биты и регистр (222) и REAL (33.3).

portal
26.04.2023, 09:18
спасибо большое Вам и Евгению !!! REAL и BOOL правильно отображаются , метод маски регистра

portal
28.04.2023, 10:26
казалось бы уже все понятно но все равно есть проблема. Передаю в плк150 уставки , в спк110 создал переменую - обьединение , тут часть которая отвечает за REAL привязал к бегунку , в modbus device в соотнесении WORD rVADfromSPK1 массив [1] привязал ко второму регистру а [0] к третьему. В плк150 в RPG создал переменый вход rVARfromSPK1 - назначил выход T1(вход для элемента <) ,добавил выход real input , назначил 2 регистр , тип чтения 0х004... и ничего . двигаю уставку REAL меняется и WORD соответсвенно - в ПЛК тишина...значение 0

portal
28.04.2023, 10:40
есть еще проблемка , не могу передать уставку в плк , создал переменую обьединение ,ту ее часть которая отвечает за REAL привязал к бегунку . в modbus device в соотнесении привязал массив к output задал 2 регистр для [1] и 3 регистр для [0]
в плк создал real input привязал к 2 регистру , тип записи 0х04 ... не передается , в спк при перемещении бегунка real и word соответсвенно показывает вещественые и двоичный код а на стороне плк значение 0.

portal
28.04.2023, 10:41
извините компьютер подвис , два раза написал )

kondor3000
28.04.2023, 10:44
казалось бы уже все понятно но все равно есть проблема. Передаю в плк150 уставки , в спк110 создал переменую - обьединение , тут часть которая отвечает за REAL привязал к бегунку , в modbus device в соотнесении WORD rVADfromSPK1 массив [1] привязал ко второму регистру а [0] к третьему. В плк150 в RPG создал переменый вход rVARfromSPK1 - назначил выход T1(вход для элемента <) ,добавил выход real input , назначил 2 регистр , тип чтения 0х004... и ничего . двигаю уставку REAL меняется и WORD соответсвенно - в ПЛК тишина...значение 0

Проекты выклыдывайте

portal
28.04.2023, 11:48
уставка т1 на визуализации visualisation U, переменая rVARfromSPK1

kondor3000
28.04.2023, 15:17
3.5 открыть пока не могу, а по 2.3 опять вопросы:

1) Вам писал, как убрать 8 Bit и вставить Register, зачем вы их оставили?
2) Зачем вы сравниваете Т1 два раза, с T on и T off ? Зачем 2 уставки, достаточно одной, если Т1 ниже уставки бит включен, если выше выключен, S и R тоже не нужны. Лучше сделать фиксированную Дельту, например +/- 2-5 градусов.
Тоже самое и с давлением, не работает нормально.
Мало того бит m_out.0 даже по S у вас не включается, потому что ниже ему присвоен FALSE. q1-q4 записывают в m_out.0 - m_out.3
Вы просто налепили кучу всего, и одно мешает работать другому. Алгоритм не проверили, все можно проверить в эмуляции.
Тоже самое и с обменом, добавили по 10- 15 REAL, а с обменом не разобрались до конца. Уставки лучше сразу назвать типа Ust_GVS, Ust_Kond

portal
28.04.2023, 18:59
уважаемый Кондор 3000 , я вчера спешил и поэтому добавил маску битовую а 8 бит не убрал , ведь он не мешал без переменых ( ну да занимал 0 регистр но без переменых) по поводу триггера RS я же только учусь и в основном по видео из ютуба , увидел решение на триггере- применил . За m_out спасибо это я переменную чуть затер (уже исправил ). И по real тоже заработало от положения бегунка , поменял pooling time -1000 ms и тип опроса by pool time а не по измнению как рекомендовалось в видео.

kondor3000
28.04.2023, 19:10
У меня ваш проект заработал без переделок, только в REAL были переставлены регистры. Поменял местами [0] и [1] , скрин 67610
Теперь в ПЛК отображается правильно. И регулируется с бегунков тоже.
Как могло заработать само у вас, не понятно.

portal
28.04.2023, 20:35
аналогично ) я тоже менял местами 0 и 1 регистры массивов. Но ведь вчера вообщено значение 0 было , а если бы только в перестановке дело было word бы формировал неправильные символы но не как не 0. В данный момент на компе исполняется, оба кодесиса и мастерскада через tcp , уже полчаса стабильно работает и от датчиков и от уставок

portal
30.04.2023, 10:28
приехал я вчера на обьект , подключил провода , термосопротивления дтс-оз5 50м (сопротивление 50 ом) на модуль мв100-8а , задал адрес в модбасе и тип ( там куча датчиков почему нельзя четко выбрать дтс? ) выбрал 23гр 50 ом - наиболее адекватный тип.. прогрузил и все равно набор цифр ...

kondor3000
30.04.2023, 10:53
приехал я вчера на обьект , подключил провода , термосопротивления дтс-оз5 50м (сопротивление 50 ом) на модуль мв100-8а , задал адрес в модбасе и тип ( там куча датчиков почему нельзя четко выбрать дтс? ) выбрал 23гр 50 ом - наиболее адекватный тип.. прогрузил и все равно набор цифр ...

Проверять надо было на столе. Это не набор цифр, а переданное по Модбас число Float, с переставленными регистрами ( байтами)
Вот скрин с возможными вариантами, их всего 4, чаще всего достаточно переставить регистры. 67642
О чём я и писал в посте #18, только у вас их надо переставить в чтении с модуля 110-8A.

выбрал 23гр 50 ом- это не правильно, там написано 23гр 53 ом ( такие делали в СССР) , а надо ТМС50М (Cu50) a=0,00426 ( Современные датчики). 67643
Смотреть надо в паспорте датчика

portal
02.05.2023, 13:42
по типу дачика я понял , благодарю а по перестановке регистров - я же именно дома запускал кодесис 2.3 и спк110 , вносил и записывал значения в переменные rVARtoSPK и они ПРАВИЛЬНО отображались на экране спк ... Получается режим записиси тестовых значений не гарантирует правильность чередования регистров при реальном опросе модулей МВ ?

kondor3000
02.05.2023, 14:03
по типу дачика я понял , благодарю а по перестановке регистров - я же именно дома запускал кодесис 2.3 и спк110 , вносил и записывал значения в переменные rVARtoSPK и они ПРАВИЛЬНО отображались на экране спк ... Получается режим записиси тестовых значений не гарантирует правильность чередования регистров при реальном опросе модулей МВ ?

Вы забыли, что не тестировали передачу данных с модуля, возможно там они и перевёрнуты. А проверяли только от ПЛК до СПК.
Достаточно подключиться к ПЛК онлайн и посмотреть, что приходит с модуля и там же в UMD можно переставить регистры. Читай мой пост #6
И выкладывать надо не фото экрана СПК, а работу программы Онлайн в ПЛК и в СПК.
А так же корректность температуры, полученной с входов ПЛК (если вы их используете)

portal
29.05.2023, 14:47
а я все еще не запустил обьект) . напомню плк 150 опрашивает по модбас модули и по модбасу же передает на спк 110 значения. у меня ведь в плк 150 заданы переменые T1,T2....:REAL; так вот когда эти переменые обьявлены в плк150 на входе =0 на экране спк 110 (000000) , если я убираю эти перемные то данные на входе блоков правильные и на экране спк110 - 60гр.
и не понятно про значения входа -выхода, допустим блок сравнения температуры и уставки -выход OUT1 , я это значение отправляю в спк регистре переменной WORD для отображения на визуализации. также я создал визуализацию с кнопками(пуск выхода) и передаю обратно также в регитре WORD булевы значения кнопок. как мне сделать правильно чтобы ПЛК понял что OUT1 выход блока сравнения и OUT1 переменая от спк110 это одно и тоже? Я создал переменую временную q1,q2... сопоставил с выходами OUT1,OUT2... но неработает сопоставление.

kondor3000
29.05.2023, 15:29
а я все еще не запустил обьект) . напомню плк 150 опрашивает по модбас модули и по модбасу же передает на спк 110 значения. у меня ведь в плк 150 заданы переменые T1,T2....:REAL; так вот когда эти переменые обьявлены в плк150 на входе =0 на экране спк 110 (000000) , если я убираю эти перемные то данные на входе блоков правильные и на экране спк110 - 60гр.
и не понятно про значения входа -выхода, допустим блок сравнения температуры и уставки -выход OUT1 , я это значение отправляю в спк регистре переменной WORD для отображения на визуализации. также я создал визуализацию с кнопками(пуск выхода) и передаю обратно также в регитре WORD булевы значения кнопок. как мне сделать правильно чтобы ПЛК понял что OUT1 выход блока сравнения и OUT1 переменая от спк110 это одно и тоже? Я создал переменую временную q1,q2... сопоставил с выходами OUT1,OUT2... но неработает сопоставление.

По первому пункту, все переменные объявленные в конфигурации уже глобальные их можно использовать в любом месте программы, больше их нигде объявлять не надо.
По второму, конкретнее где неправильно? Лучше показать на скрине

И вы опять ничего не поняли, вы например q1 записываете в маску m_out.0 например TRUE
и ниже из маски wBitMaskToPLK.0 в эту же q1 опять записываете например FALSE, так нельзя делать, у вас и q1 и m_out.0 сбросятся.68051
С остальными то же самое. Оставьте одну маску и разберитесь с одной, потом уже со второй и другими переменными.
Одна маска только для q1, q2,q3,q4 и т. д. другая только аварий и с другими переменными

portal
29.05.2023, 16:54
я понял , то есть в q1 из спк 110 уже приходит false , а в блоке формируется true и происходит каша. То есть мне надо для каждого выхода создать блок И где я буду сравнивать реальный выход с блока сравнения температуры и уставки с переменой которая прилетает от кнопки спк?

kondor3000
29.05.2023, 17:31
я понял , то есть в q1 из спк 110 уже приходит false , а в блоке формируется true и происходит каша. То есть мне надо для каждого выхода создать блок И где я буду сравнивать реальный выход с блока сравнения температуры и уставки с переменой которая прилетает от кнопки спк?

Вообще то q1 у вас получается сравнением Т1 и tr1on, tr1of, её и отправляйте на СПК (или на модуль, куда надо), больше в q1 ничего записывать не надо.
А то что получили из маски wBitMaskToPLK.0, записывайте в другую переменную.

Советую на бумаге сначала набросать алгоритм работы, что с чем сравнивается и куда отправляется, что получаете от СПК и что включаете. Пока для одной Т1, потом уже повторите с другими температурами.

Кроме того у вас действия происходят не по порядку ( посмотрите мой скрин, 28 действие происходит рядом с 76), для правильной работы, после изменений,
делайте нажатием ПКМ по холсту, выбираете Порядок/ В соответствии с потоком данных.
И периодически делайте Проект /Очистить всё/ Компилировать всё, потом сохранить проект