PDA

Просмотр полной версии : Ехеlпрога для автоматич.проставления адресации для ПЛК(в переменных и конфигурации)



николай72
07.10.2024, 13:50
Долго мучался вручную вбивая и меняя адресацию.
Наконец то руки добрались в екселе написать макрос для автоматич.проставления адресации для панели и для орс сервера
может кому поможет.
1.набиваем нужные переменные в Codesys (порядок можно поменять в люб.момент)
2.копируем, вставляем в EXEL (А7) , жмем на нужную кнопку/
3.копируем обратно результат в Codesys

kondor3000
07.10.2024, 18:29
Долго мучался вручную вбивая и меняя адресацию.
Наконец то руки добрались в екселе написать макрос для автоматич.проставления адресации для панели и для орс сервера
может кому поможет.
1.набиваем нужные переменные в Codesys (порядок можно поменять в люб.момент)
2.копируем, вставляем в EXEL (А7) , жмем на нужную кнопку/
3.копируем обратно результат в Codesys

А где прога то?

николай72
07.10.2024, 18:59
да не ту сначала загрузил чуть, щас та.

IVM
07.10.2024, 20:43
Долго мучался вручную вбивая и меняя адресацию.
Наконец то руки добрались в екселе написать макрос для автоматич.проставления адресации для панели и для орс сервера
может кому поможет.
1.набиваем нужные переменные в Codesys (порядок можно поменять в люб.момент)
2.копируем, вставляем в EXEL (А7) , жмем на нужную кнопку/
3.копируем обратно результат в Codesys

Что значит набиваем нужные переменные в Codesys ? Пример этой набивки можете привести ?

николай72
08.10.2024, 19:47
ну видимо каждый по своему обьявляет переменные )
например объявляем VAR_GLOBAL (переменные для панели СП310):
CP_Boil1_ON_OUT : BOOL;
CP_Boil2_ON_OUT : BOOL;
допустим их 1,5тыс.
потом надо к каждой переменной прикрутить адрес (CP_Boil1_ON_OUT AT %QX9.256.0.6: BOOL; )
причем если в процессе вставил или убрал переменную, то вся адресация сбивается.
а тут раз и все адреса автоматом проставились
в конфигурации только добавляй переменные (какие тоже указаны в макросе)

kondor3000
08.10.2024, 20:35
Вот только не понятно, накой им адреса эти давать, типа AT %QX9.256.0.6 и зачем вообще булевые переменные, если биты можно в маску упаковать, по 16 -32 штуки.

Передавать регистры тоже лучше группой, массивом по 40 регистров за раз (или 640 булевых), а не по одному. Так время передачи в 40 раз меньше будет.
И адрес давать не всем регистрам, а только один для массива.
А ещё лучше один, для структуры из массивов. То есть по факту, даже на тысячу переменных, нужно прописать пару, тройку адресов и всё.
Хотя может это кому то и пригодится.

IVM
09.10.2024, 10:30
Вот только не понятно, накой им адреса эти давать, типа AT %QX9.256.0.6 и зачем вообще булевые переменные, если биты можно в маску упаковать, по 16 -32 штуки.

Передавать регистры тоже лучше группой, массивом по 40 регистров за раз (или 640 булевых), а не по одному. Так время передачи в 40 раз меньше будет.
И адрес давать не всем регистрам, а только один для массива.
А ещё лучше один, для структуры из массивов. То есть по факту, даже на тысячу переменных, нужно прописать пару, тройку адресов и всё.
Хотя может это кому то и пригодится.

Если сетевых переменных много, то эта штука будет очень даже полезна. А паковать биты в сетевые регистры никто не мешает.

Валенок
09.10.2024, 11:07
Если сетевых переменных много, то эта штука будет очень даже полезна..
дык


...структуры ... То есть по факту, даже на тысячу переменных, нужно прописать пару, тройку адресов и всё..




Если

...допустим их 1,5тыс.
то это

.потом надо к каждой переменной прикрутить адрес (CP_Boil1_ON_OUT AT %QX9.256.0.6: BOOL; )
уже кривая архитектура проекта


Но

Хотя может это кому то и пригодится.

Cs-Cs
09.10.2024, 11:57
А разве вообще хорошо давать ПРЯМЫЕ адреса переменных?!
Почему нельзя делать так, как делают профи: создать структуру, и назначить ей адрес?
Тогда никаких % не надо, работа со структурой идёт легко и понятно.

IVM
09.10.2024, 13:30
А разве вообще хорошо давать ПРЯМЫЕ адреса переменных?!
Почему нельзя делать так, как делают профи: создать структуру, и назначить ей адрес?
Тогда никаких % не надо, работа со структурой идёт легко и понятно.

С созданием структуры то же возни много. Ехеlпрога адреса автоматом проставляет.

Валенок
09.10.2024, 14:06
С созданием структуры то же возни много. Ехеlпрога адреса автоматом проставляет.
С двух сторон соединения одинаковая структура. Адреса вообще не нужны.

Cs-Cs
09.10.2024, 14:11
Чем много?

IVM
09.10.2024, 14:12
С двух сторон соединения одинаковая структура. Адреса вообще не нужны.

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

IVM
09.10.2024, 14:13
Чем много?

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

Cs-Cs
09.10.2024, 14:32
Вопросы такие краткие, что я не понимаю. Для сетевого обмена с ЧЕМ?
Вот для панели оператора ИП-320:
79264

Вот для HomeAssistant (тестовые датчики, 20 штук):
79265 79266

В ОБОИХ случаях привязка структуры идёт так (выделил рамками):
79267 79268

Итого вся адресация - это одна именованная переменная в Конфигурации ПЛК и одна строчка кода с оператором ADR().
Если адресация меняется - то всё само пересчитается. Ничего, кроме этих двух действий, делать не надо.
А расчёты номеров регистров у меня идут в XLS-файле с таблицей IO. Это часть документации на проект, и она делается по любому.
Я как-нибудь про это статью напишу. Уже в пятый раз на форуме это рассказываю.

IVM
09.10.2024, 15:00
Вопросы такие краткие, что я не понимаю. Для сетевого обмена с ЧЕМ?

Написал в личку.

николай72
09.10.2024, 15:04
я слишком ленивый чтобы со структурами и массивами заморачиваться, паковать и распаковывать.)
канал связи позволяет гонять по 2тыс переменных без проблем, мне этого хватает, зато все сразу отлично видно )
ну я и не профи, наверно мне это не грозит уже )

Cs-Cs
09.10.2024, 15:26
николай72 Там никто ничего не пакует. Просто объявляешь переменные и пользуешься, но не вычисляешь адреса, и всё.
IVM Да, но я ничего не понял. Скорее всего я напишу статью.

Валенок
09.10.2024, 15:51
Простой пример структуры для сетевого обмена можете привести ?
https://owen.ru/forum/showthread.php?t=10555&page=1104
посты 11035...40
STRUCT_SLAVE читаемая другим - такая же.
(учитываем контекст сообщений)

1exan
09.10.2024, 18:17
В любом варианте организации - очень удобно иметь какой-либо функционал, который пронумерует сетевые переменные для клиента (Скада, ОПС, панель) и создаст файл для последующего импорта

николай72
09.10.2024, 20:10
отлично! век живи век учись )
на сл.проекте попробую!

Cs-Cs
10.10.2024, 10:13
Камрады. Мне IVM аж в личку написал - проект просил показать.
Я вчера ночью сделал демонстрационный проект работы с Modbus Slave без дурацкой прямой адресации.
Вот, выкладываю сюда.
Не обещаю, что скоро - но потом сделаю по этой теме подробную статью у себя на сайте и там выложу этот же пример.
В проекте массово применяются константы для всего-всего. И чтобы ошибок в индексах не было, и чтобы код был нагляднее.
Изучайте.