Объявление

Свернуть
Пока нет объявлений.

Modbus

Свернуть
X
 
  • Фильтр
  • Время
  • Показать
Очистить всё
новые сообщения

  • Modbus

    Звонил сегодня в пролог,узнать сколько стоит лицензия на modbus чтобы работать с ним штатными инструментами Codesys а не костылями,увы очень дорого по 100 евро за rtu + 100 евро tcp + 50 евро юсб ключ(. Однако если производитель подсуетится он купит OEM за копейки. Уважаемый производитель так как вы заявляете что контроллер модульный и собирается под нужды заказчика сделайте за доп плату лицензии на модбас и web визуализацию.

  • #2
    Работаю с овен спк и в этом плане всё устраивает но у них нет встроенных входов и выходов ,только по модбас что в некоторых проэктах критично по времени(100мс на считывание входа + 100мс на запись выхода ) из-за этого приходится аппаратно и программно извращаться. Думал что нашел то что надо но нет и тут все неприлично сложно.

    Комментарий


    • #3
      Сообщение от Иван Посмотреть сообщение
      Звонил сегодня в пролог,узнать сколько стоит лицензия на modbus чтобы работать с ним штатными инструментами Codesys а не костылями,увы очень дорого по 100 евро за rtu + 100 евро tcp + 50 евро юсб ключ(. Однако если производитель подсуетится он купит OEM за копейки. Уважаемый производитель так как вы заявляете что контроллер модульный и собирается под нужды заказчика сделайте за доп плату лицензии на модбас и web визуализацию.
      Увы, такова лицензионная политика 3S. Вопрос с добавлением поддержки Modbus от 3S решается. Также в ближайшее время появится возможность приобрести ПЛК-40 (и ПО-50) с web и target визуализацией.

      Комментарий


      • #4
        Хочу добавить, что наша реализация Modbus ничуть не хуже реализации от 3S, просто она может быть немного непривычна. Более того, библиотека AgavaLinks много удобнее стандартной на проектах средних и больших размеров, так как сплошным текстом набить сотню-другую регистров гораздо быстрее, чем тысячу раз кликать мышкой. Да и в коде обращение к регистру по имени повышает наглядность.

        Комментарий


        • #5
          Используя Agava Links можно получить очень интересный и неприятный результат.
          Программа уходит в исключение на создании списка тегов Unit.FillTagsList();
          В случае когда на запись больше 7-значений использующих WriteFunction := 16#10,

          Комментарий


          • #6
            Да, мы так же столкнулись с таким эффектом. Исправим в ближайшее время и выложим обновленную библиотеку.

            Комментарий


            • #7
              Сообщение от Таушканов Посмотреть сообщение
              Да, мы так же столкнулись с таким эффектом. Исправим в ближайшее время и выложим обновленную библиотеку.
              Спасибо буду ждать.

              Комментарий


              • #8
                Вот пример, которым можно протестировать работу на большом количестве тегов.

                В архиве есть листинги отдельных дампов для чтения (0x03) 1000 и записи (0x10) 100 holding регистров (программа настраивалась для каждого случая). Не имеет смысла использовать драйвер Links для записи набора регистров, т.к. запись идёт всё равно отдельными запросами по одному регистру. В типовых реальных проектах периодическая запись такого рода не используется. Это сделано умышленно.

                Состав архива:

                - LinksDynamicTagsTest.project - проект в формате Codesys 3.5.10.40 (работа с симулятором);
                - tags.csv - файл списка тегов, который можно загружать динамически при помощи функции LoadTags(), включён в состав проекта;
                - Read 1000 HR.html и Write 100 HR.html - дампы обмена между симуляторами Codesys Win PLC и Modbus Slave.

                Для использования проекта нужно изменить ПЛК на свой и исправить значения идентификаторов для последовательных портов.

                Имейте в виду, что использование библиотеки AgavaModbus требует установки необходимого размера динамической памяти для приложения. Необходимый размер можно установить экспериментальным путём. Если памяти не хватит, то будет исключение. Загружать теги можно только в первом цикле программы. В остальное время изменять размеры динамических списков не рекомендуется.

                Будете править исходники - не сломайте то, что работает. Читайте документацию, экспериментируйте с примерами, изучите основы Delphi (работа с указателями).

                ПРАВКА: Записывается на самом деле 200 регистров, т.к. все теги имеют тип float. Т.е. запись 100 тегов типа float.
                Вложения
                Последний раз редактировалось Вячеслав Мезенцев; 02-15-2019, 03:52 PM.

                Комментарий


                • #9
                  Сообщение от Вячеслав Мезенцев Посмотреть сообщение
                  Вот пример, которым можно протестировать работу на большом количестве тегов.

                  В архиве есть листинги отдельных дампов для чтения (0x03) 1000 и записи (0x10) 100 holding регистров (программа настраивалась для каждого случая). Не имеет смысла использовать драйвер Links для записи набора регистров, т.к. запись идёт всё равно отдельными запросами по одному регистру. В типовых реальных проектах периодическая запись такого рода не используется. Это сделано умышленно.

                  Состав архива:

                  - LinksDynamicTagsTest.project - проект в формате Codesys 3.5.10.40 (работа с симулятором);
                  - tags.csv - файл списка тегов, который можно загружать динамически при помощи функции LoadTags(), включён в состав проекта;
                  - Read 1000 HR.html и Write 100 HR.html - дампы обмена между симуляторами Codesys Win PLC и Modbus Slave.

                  Для использования проекта нужно изменить ПЛК на свой и исправить значения идентификаторов для последовательных портов.

                  Имейте в виду, что использование библиотеки AgavaModbus требует установки необходимого размера динамической памяти для приложения. Необходимый размер можно установить экспериментальным путём. Если памяти не хватит, то будет исключение. Загружать теги можно только в первом цикле программы. В остальное время изменять размеры динамических списков не рекомендуется.

                  Будете править исходники - не сломайте то, что работает. Читайте документацию, экспериментируйте с примерами, изучите основы Delphi (работа с указателями).
                  При запуске проекта

                  Комментарий


                  • #10
                    Если добавить библиотеки которые отсутствуют

                    Комментарий


                    • #11
                      В формате .projectarchive (файлы этого формата большие для форума): https://yadi.sk/d/9Hlc0vJvDAYTnA

                      Нельзя совать в библиотеки всё, что суётся. Серым помечаются те из них, которые подключаются "неявно", т.е. при добавлении визуализации или устройств. Вручную их добавлять не следует. Все копии одного и того же нужно удалить. Должна была сработать магическая кнопка "Загрузка отсутствующих библиотек". Если в документации написано, что для сборки библиотек применялся компилятор 3.5.10.x, то зависимости этих библиотек желательно иметь с теми же цифрами.

                      Проект будет работать в любой версии Codesys 3.5, начиная с 3.5.10.40. Под симулятором понимается не встроенный в среду, а runtime под Windows, который идёт в комплекте (32-разрядная его версия). Работа с ним по последовательному порту требует специальных навыков, поэтому лучше применять реальный ПЛК.

                      Комментарий


                      • #12
                        Сообщение от Petefree Посмотреть сообщение
                        Спасибо буду ждать.
                        Игорь, здравствуйте, проблема в Вашем проекте была в динамическом распределении памяти, выделенной по умолчанию памяти (1000 байт) было не достаточно, поэтому проект, при добавлении определенного количества тегов , генерировал исключение.

                        Вам необходимо увеличить объем выделяемой памяти, например до 20000 байт.

                        Объем памяти нужно указывать только опытным путем, если памяти не хватит, то снова получите исключение при старте.

                        Как указать объем выделяемой памяти:


                        В проекте , правой кнопкой мыши по приложению, далее свойства, далее опции компиляции приложения, указать требуемый объем выделения памяти.

                        Комментарий


                        • #13
                          Всем доброго дня. Помогите с решением. Приобретен контроллера АГАВА 40, задача стоит следующая: необходимо реализовать модбас мастер, модбас слейв и получение 3х аналоговых сигналов с модуля расширения.
                          С аналоговыми сигналами все протестировал, подключив библиотеку Agavamodules, все работает.
                          Но возникла проблема с модбас. Скачал пример реализации модбас с сайта Агава "АГАВА\Codesys_AgavaSDK_20180608\Примеры\AgavaModb us\ПЛК-40\ST\ModbusRTUMaster.project"
                          Компилируется нормально но как только в данный пример добавляется библиотека Agavamodules тут же возникают проблемы при компиляции модбас.
                          Подскажите решение, заранее спасибо!

                          Комментарий


                          • #14
                            Сообщение от VBSega Посмотреть сообщение
                            Всем доброго дня. Помогите с решением. Приобретен контроллера АГАВА 40, задача стоит следующая: необходимо реализовать модбас мастер, модбас слейв и получение 3х аналоговых сигналов с модуля расширения.
                            С аналоговыми сигналами все протестировал, подключив библиотеку Agavamodules, все работает.
                            Но возникла проблема с модбас. Скачал пример реализации модбас с сайта Агава "АГАВА\Codesys_AgavaSDK_20180608\Примеры\AgavaModb us\ПЛК-40\ST\ModbusRTUMaster.project"
                            Компилируется нормально но как только в данный пример добавляется библиотека Agavamodules тут же возникают проблемы при компиляции модбас.
                            Подскажите решение, заранее спасибо!
                            Добрый день, для решения этой проблемы, необходимо переменные, что вызывают ошибки, определить в проекте, например в разделе var_global constant

                            var_global constant
                            READ_COILS : byte := 16#01;
                            READ_DISCRETE_INPUTS : byte := 16#02;
                            READ_HOLDING_REGISTERS : byte := 16#03;
                            READ_INPUT_REGISTERS : byte := 16#04;
                            WRITE_SINGLE_COIL : byte := 16#05;
                            WRITE_SINGLE_REGISTER : byte := 16#06;
                            WRITE_MULTIPLE_COILS : byte := 16#0F;
                            WRITE_MULTIPLE_REGISTERS : byte := 16#10;
                            end_var

                            Комментарий


                            • #15
                              Сообщение от Пушкарев Андрей Посмотреть сообщение

                              Сообщение от VBSega Посмотреть сообщение
                              Всем доброго дня. Помогите с решением. Приобретен контроллера АГАВА 40, задача стоит следующая: необходимо реализовать модбас мастер, модбас слейв и получение 3х аналоговых сигналов с модуля расширения.
                              С аналоговыми сигналами все протестировал, подключив библиотеку Agavamodules, все работает.
                              Но возникла проблема с модбас. Скачал пример реализации модбас с сайта Агава "АГАВА\Codesys_AgavaSDK_20180608\Примеры\Agava Modb us\ПЛК-40\ST\ModbusRTUMaster.project"
                              Компилируется нормально но как только в данный пример добавляется библиотека Agavamodules тут же возникают проблемы при компиляции модбас.
                              Подскажите решение, заранее спасибо!

                              Добрый день, для решения этой проблемы, необходимо переменные, что вызывают ошибки, определить в проекте, например в разделе var_global constant

                              var_global constant
                              READ_COILS : byte := 16#01;
                              READ_DISCRETE_INPUTS : byte := 16#02;
                              READ_HOLDING_REGISTERS : byte := 16#03;
                              READ_INPUT_REGISTERS : byte := 16#04;
                              WRITE_SINGLE_COIL : byte := 16#05;
                              WRITE_SINGLE_REGISTER : byte := 16#06;
                              WRITE_MULTIPLE_COILS : byte := 16#0F;
                              WRITE_MULTIPLE_REGISTERS : byte := 16#10;
                              end_var
                              Также, посмотрите примеры работы с Modbus RTU master и Slave в примерах программирования на форуме
                              http://forum.kb-agava.ru/forum/проду...рования

                              Комментарий

                              Обработка...
                              X