Просмотр полной версии : обьединение конфигурации codesys 2.3 и 3.5
Здравствуйте ,первый раз работаю с 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
создал конфигурации в плк 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
спасибо , по 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).
спасибо большое Вам и Евгению !!! REAL и BOOL правильно отображаются , метод маски регистра
казалось бы уже все понятно но все равно есть проблема. Передаю в плк150 уставки , в спк110 создал переменую - обьединение , тут часть которая отвечает за REAL привязал к бегунку , в modbus device в соотнесении WORD rVADfromSPK1 массив [1] привязал ко второму регистру а [0] к третьему. В плк150 в RPG создал переменый вход rVARfromSPK1 - назначил выход T1(вход для элемента <) ,добавил выход real input , назначил 2 регистр , тип чтения 0х004... и ничего . двигаю уставку REAL меняется и WORD соответсвенно - в ПЛК тишина...значение 0
есть еще проблемка , не могу передать уставку в плк , создал переменую обьединение ,ту ее часть которая отвечает за REAL привязал к бегунку . в modbus device в соотнесении привязал массив к output задал 2 регистр для [1] и 3 регистр для [0]
в плк создал real input привязал к 2 регистру , тип записи 0х04 ... не передается , в спк при перемещении бегунка real и word соответсвенно показывает вещественые и двоичный код а на стороне плк значение 0.
извините компьютер подвис , два раза написал )
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
Проекты выклыдывайте
уставка т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
уважаемый Кондор 3000 , я вчера спешил и поэтому добавил маску битовую а 8 бит не убрал , ведь он не мешал без переменых ( ну да занимал 0 регистр но без переменых) по поводу триггера RS я же только учусь и в основном по видео из ютуба , увидел решение на триггере- применил . За m_out спасибо это я переменную чуть затер (уже исправил ). И по real тоже заработало от положения бегунка , поменял pooling time -1000 ms и тип опроса by pool time а не по измнению как рекомендовалось в видео.
kondor3000
28.04.2023, 19:10
У меня ваш проект заработал без переделок, только в REAL были переставлены регистры. Поменял местами [0] и [1] , скрин 67610
Теперь в ПЛК отображается правильно. И регулируется с бегунков тоже.
Как могло заработать само у вас, не понятно.
аналогично ) я тоже менял местами 0 и 1 регистры массивов. Но ведь вчера вообщено значение 0 было , а если бы только в перестановке дело было word бы формировал неправильные символы но не как не 0. В данный момент на компе исполняется, оба кодесиса и мастерскада через tcp , уже полчаса стабильно работает и от датчиков и от уставок
приехал я вчера на обьект , подключил провода , термосопротивления дтс-оз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
Смотреть надо в паспорте датчика
по типу дачика я понял , благодарю а по перестановке регистров - я же именно дома запускал кодесис 2.3 и спк110 , вносил и записывал значения в переменные rVARtoSPK и они ПРАВИЛЬНО отображались на экране спк ... Получается режим записиси тестовых значений не гарантирует правильность чередования регистров при реальном опросе модулей МВ ?
kondor3000
02.05.2023, 14:03
по типу дачика я понял , благодарю а по перестановке регистров - я же именно дома запускал кодесис 2.3 и спк110 , вносил и записывал значения в переменные rVARtoSPK и они ПРАВИЛЬНО отображались на экране спк ... Получается режим записиси тестовых значений не гарантирует правильность чередования регистров при реальном опросе модулей МВ ?
Вы забыли, что не тестировали передачу данных с модуля, возможно там они и перевёрнуты. А проверяли только от ПЛК до СПК.
Достаточно подключиться к ПЛК онлайн и посмотреть, что приходит с модуля и там же в UMD можно переставить регистры. Читай мой пост #6
И выкладывать надо не фото экрана СПК, а работу программы Онлайн в ПЛК и в СПК.
А так же корректность температуры, полученной с входов ПЛК (если вы их используете)
а я все еще не запустил обьект) . напомню плк 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 и т. д. другая только аварий и с другими переменными
я понял , то есть в q1 из спк 110 уже приходит false , а в блоке формируется true и происходит каша. То есть мне надо для каждого выхода создать блок И где я буду сравнивать реальный выход с блока сравнения температуры и уставки с переменой которая прилетает от кнопки спк?
kondor3000
29.05.2023, 17:31
я понял , то есть в q1 из спк 110 уже приходит false , а в блоке формируется true и происходит каша. То есть мне надо для каждого выхода создать блок И где я буду сравнивать реальный выход с блока сравнения температуры и уставки с переменой которая прилетает от кнопки спк?
Вообще то q1 у вас получается сравнением Т1 и tr1on, tr1of, её и отправляйте на СПК (или на модуль, куда надо), больше в q1 ничего записывать не надо.
А то что получили из маски wBitMaskToPLK.0, записывайте в другую переменную.
Советую на бумаге сначала набросать алгоритм работы, что с чем сравнивается и куда отправляется, что получаете от СПК и что включаете. Пока для одной Т1, потом уже повторите с другими температурами.
Кроме того у вас действия происходят не по порядку ( посмотрите мой скрин, 28 действие происходит рядом с 76), для правильной работы, после изменений,
делайте нажатием ПКМ по холсту, выбираете Порядок/ В соответствии с потоком данных.
И периодически делайте Проект /Очистить всё/ Компилировать всё, потом сохранить проект
Powered by vBulletin® Version 4.2.3 Copyright © 2025 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot