Просмотр полной версии : Ехе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
да не ту сначала загрузил чуть, щас та.
Долго мучался вручную вбивая и меняя адресацию.
Наконец то руки добрались в екселе написать макрос для автоматич.проставления адресации для панели и для орс сервера
может кому поможет.
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 раз меньше будет.
И адрес давать не всем регистрам, а только один для массива.
А ещё лучше один, для структуры из массивов. То есть по факту, даже на тысячу переменных, нужно прописать пару, тройку адресов и всё.
Хотя может это кому то и пригодится.
Вот только не понятно, накой им адреса эти давать, типа AT %QX9.256.0.6 и зачем вообще булевые переменные, если биты можно в маску упаковать, по 16 -32 штуки.
Передавать регистры тоже лучше группой, массивом по 40 регистров за раз (или 640 булевых), а не по одному. Так время передачи в 40 раз меньше будет.
И адрес давать не всем регистрам, а только один для массива.
А ещё лучше один, для структуры из массивов. То есть по факту, даже на тысячу переменных, нужно прописать пару, тройку адресов и всё.
Хотя может это кому то и пригодится.
Если сетевых переменных много, то эта штука будет очень даже полезна. А паковать биты в сетевые регистры никто не мешает.
Если сетевых переменных много, то эта штука будет очень даже полезна..
дык
...структуры ... То есть по факту, даже на тысячу переменных, нужно прописать пару, тройку адресов и всё..
Если
...допустим их 1,5тыс.
то это
.потом надо к каждой переменной прикрутить адрес (CP_Boil1_ON_OUT AT %QX9.256.0.6: BOOL; )
уже кривая архитектура проекта
Но
Хотя может это кому то и пригодится.
А разве вообще хорошо давать ПРЯМЫЕ адреса переменных?!
Почему нельзя делать так, как делают профи: создать структуру, и назначить ей адрес?
Тогда никаких % не надо, работа со структурой идёт легко и понятно.
А разве вообще хорошо давать ПРЯМЫЕ адреса переменных?!
Почему нельзя делать так, как делают профи: создать структуру, и назначить ей адрес?
Тогда никаких % не надо, работа со структурой идёт легко и понятно.
С созданием структуры то же возни много. Ехеlпрога адреса автоматом проставляет.
С созданием структуры то же возни много. Ехеlпрога адреса автоматом проставляет.
С двух сторон соединения одинаковая структура. Адреса вообще не нужны.
С двух сторон соединения одинаковая структура. Адреса вообще не нужны.
Простой пример структуры для сетевого обмена можете привести ?
Чем много?
Простой пример структуры для сетевого обмена можете привести ?
Вопросы такие краткие, что я не понимаю. Для сетевого обмена с ЧЕМ?
Вот для панели оператора ИП-320:
79264
Вот для HomeAssistant (тестовые датчики, 20 штук):
79265 79266
В ОБОИХ случаях привязка структуры идёт так (выделил рамками):
79267 79268
Итого вся адресация - это одна именованная переменная в Конфигурации ПЛК и одна строчка кода с оператором ADR().
Если адресация меняется - то всё само пересчитается. Ничего, кроме этих двух действий, делать не надо.
А расчёты номеров регистров у меня идут в XLS-файле с таблицей IO. Это часть документации на проект, и она делается по любому.
Я как-нибудь про это статью напишу. Уже в пятый раз на форуме это рассказываю.
Вопросы такие краткие, что я не понимаю. Для сетевого обмена с ЧЕМ?
Написал в личку.
николай72
09.10.2024, 15:04
я слишком ленивый чтобы со структурами и массивами заморачиваться, паковать и распаковывать.)
канал связи позволяет гонять по 2тыс переменных без проблем, мне этого хватает, зато все сразу отлично видно )
ну я и не профи, наверно мне это не грозит уже )
николай72 Там никто ничего не пакует. Просто объявляешь переменные и пользуешься, но не вычисляешь адреса, и всё.
IVM Да, но я ничего не понял. Скорее всего я напишу статью.
Простой пример структуры для сетевого обмена можете привести ?
https://owen.ru/forum/showthread.php?t=10555&page=1104
посты 11035...40
STRUCT_SLAVE читаемая другим - такая же.
(учитываем контекст сообщений)
В любом варианте организации - очень удобно иметь какой-либо функционал, который пронумерует сетевые переменные для клиента (Скада, ОПС, панель) и создаст файл для последующего импорта
николай72
09.10.2024, 20:10
отлично! век живи век учись )
на сл.проекте попробую!
Камрады. Мне IVM аж в личку написал - проект просил показать.
Я вчера ночью сделал демонстрационный проект работы с Modbus Slave без дурацкой прямой адресации.
Вот, выкладываю сюда.
Не обещаю, что скоро - но потом сделаю по этой теме подробную статью у себя на сайте и там выложу этот же пример.
В проекте массово применяются константы для всего-всего. И чтобы ошибок в индексах не было, и чтобы код был нагляднее.
Изучайте.
Powered by vBulletin® Version 4.2.3 Copyright © 2025 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot