Объявление

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

Modbus Slave

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

  • Modbus Slave

    День добрый, Заметил очень интересное отношение к клиентам со стороны вашей фирмы, Оборудование заказываю часто, иногда счета для оплаты не приходят пока не напишешь повторно, так же если возникают какие вопросы могут на сообщение даже не ответить, я бы даже сказал и не отвечают., а ведь оборудование вашего заказано на сумму превышающую 100к. Собственно задал я один вопрос Андрею Евгеньевичу и попросил пример готового проекта в котором используется Modbus Slave. И в итоге полная тишина, То что показано в ваших примерах для простых пользователей не понятно, что откуда берется. А внятной документации по вашим контроллерам нету. Вообще суть такова, по rs485 надо передавать данные в gsm шлюз от овена.

  • #2
    Примеры работы с Modbus slave есть в SDK в папке Примеры\AgavaModbus\ПЛК-40\ST\, если возникнут вопросы - задавайте. Прошу понять, объем вопросов в техподдержку весьма значительный, и иногда не получается отвечать сразу.


    Комментарий


    • #3
      Сообщение от таушканов Посмотреть сообщение
      примеры работы с modbus slave есть в sdk в папке примеры\agavamodbus\плк-40\st\, если возникнут вопросы - задавайте. прошу понять, объем вопросов в техподдержку весьма значительный, и иногда не получается отвечать сразу.

      его видел и не раз, вот простой пример. мастер сети запрашивает с устройства под номером допустим 8, регистр 1 значение температуры то есть функция чтения 4, я вот совсем не могу понять как в этом примере создать ответ на этот запрос. вроде не тупой но язык st увидел месяца 2 назад и естественно много всего не понятно.

      Комментарий


      • #4
        В примерах ModbusRTUSlave и ModbusTCPSlave для Вашего случая нужно дополнить метод OnReadInputRegisters, который вызывается при получении запроса на чтение функции 4.
        Последний раз редактировалось Таушканов Константин; 18-12-2018, 12:00 PM.

        Комментарий


        • #5
          Сообщение от Таушканов Посмотреть сообщение
          В примерах ModbusRTUSlave и ModbusTCPSlave для Вашего случая нужно дополнить метод OnReadInputRegisters, который вызывается при получении запроса на чтение функции 4.
          Вот смотрите, у нас есть ModbusRTUSlave с такими параметрами.

          // Порт.
          MBRTUSlave.Port := PORT_RS2;

          // Скорость.
          MBRTUSlave.Baudrate := SYS_BR_38400;

          // Чётность.
          MBRTUSlave.Parity := SYS_NOPARITY;

          // Количество стоп-битов.
          MBRTUSlave.StopBits := SYS_ONESTOPBIT;

          // Адрес подчинённого устройства.
          MBRTUSlave.DeviceId := 10;

          а так же Globals в котором есть массив

          RegInputBuf: array [ 0 .. REG_INPUT_NREGS - 1 ] of word;

          На сколько я в данный момент понимаю этот массив и есть адреса регистров 0-10 которые я должен считывать, соответственно RegInputBuf[1]-RegInputBuf[10] я заполняю произвольными значениями. Теперь беру OPC Сервер настраиваю аналогично скорость порта, контроль четности, 10 адрес устройства, Создаю теги на чтение регистров 04 с адресами 1-10., в ответ получаю следующее:

          2018-12-19 09:12:12.6576 TRACE 19-12-2018 09:12:12.657 : Конфигурация "1" загружена
          2018-12-19 09:12:12.6576 TRACE 19-12-2018 09:12:12.660 : Сервер запущен
          2018-12-19 09:12:12.7006 TRACE 19-12-2018 09:12:12.700 : Порт открыт device: Узел1 port: COM4
          2018-12-19 09:12:12.7006 TRACE 19-12-2018 09:12:12.700 : Старт опроса устройства device: Узел1.Устройство1 port: COM4, size: 0, data:[]
          2018-12-19 09:12:12.7006 TRACE 19-12-2018 09:12:12.700 : device: Узел1.Устройство1 port: Tx Tx, size: 8, data:[0A 04 00 01 00 05 60 B2 ]
          2018-12-19 09:12:13.7013 TRACE 19-12-2018 09:12:13.701 : Нет ответа от устройства device: Узел1.Устройство1 port: Rx Rx, size: 0, data:[]
          2018-12-19 09:12:13.7013 TRACE 19-12-2018 09:12:13.701 : Перезапрос после ошибки device: Узел1.Устройство1 port: Tx Tx, size: 8, data:[0A 04 00 01 00 05 60 B2 ]

          2018-12-19 09:12:20.9908 TRACE 19-12-2018 09:12:20.990 : Останов сервера...
          2018-12-19 09:12:21.7217 TRACE 19-12-2018 09:12:21.721 : Нет ответа от устройства device: Узел1.Устройство1 port: Rx Rx, size: 0, data:[]
          2018-12-19 09:12:21.7217 TRACE 19-12-2018 09:12:21.723 : Порт закрыт device: Узел1 port: COM4
          2018-12-19 09:12:21.7217 TRACE 19-12-2018 09:12:21.726 : Сервер остановлен




          Соответственно то ли я дурак то ли лыжи не едут, или все же должно быть что-то в промежутке между массивом и методом. Простите за много букв.

          Комментарий


          • #6
            Попробуйте воспользоваться отладчиком: поставьте точку в начале метода OnReadInputRegisters, и при поступлении соответствующего запроса Вы увидите, что метод реально получает. Далее будет довольно просто проверить код на корректность.

            Комментарий


            • #7
              Сообщение от Таушканов Посмотреть сообщение
              Попробуйте воспользоваться отладчиком: поставьте точку в начале метода OnReadInputRegisters, и при поступлении соответствующего запроса Вы увидите, что метод реально получает. Далее будет довольно просто проверить код на корректность.
              Вот что получилось в закрепе

              Комментарий


              • #8
                Для работы с ModbusRTUSlave воспользуйтесь примером из вложения.
                Вложения

                Комментарий


                • #9
                  Сообщение от Пушкарев Андрей Посмотреть сообщение
                  Для работы с ModbusRTUSlave воспользуйтесь примером из вложения.
                  Спасибо. все работает

                  Комментарий


                  • #10
                    Спасибо большое, удалось мастер и слейв поднять на одном ПЛК.

                    Комментарий

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