Показано с 1 по 6 из 6

Тема: Программная реализация ModbusTCP Master

  1. #1

    По умолчанию Программная реализация ModbusTCP Master

    Добрый день.

    Есть необходимость организовать взаимодействие ПЛК100 с ПК (собственная программа) по Modbus TCP, при этом ПЛК работает в режима Мастер (инициирует передачу данных). Знаю, что данную задачу можно решить с помощью конфигуратора ПЛК, но данный вариант меня не вполне устраивает, поскольку не дает полного контроля над процессом передачи (выбор момента начала передачи и контроль результатов передачи данных). Поэтому хотел бы реализовать работу ПЛК в режиме мастера ModbusTCP программно. Для RS485 я уже реализовывал такое взаимодействие используя библиотеки SysLibCom.lib и ModBus.lib. Изучая форум пришел к выводу, что для установления подключения по TCP роль роль библиотеки SysLibCom.lib будет выполнять SysLibSockets, но остается непонятным с помощью какой библиотеки реализовать протокол Modbus, поскольку функции в библиотеке ModBus.lib требуют в качестве параметра ComHandle, которого в случае TCP подключения не будет.

    Собственно вопрос - Какими библиотеками можно программно (не через конфигуратор) реализовать работу ПЛК100 (Codesys 2.3) в режиме Мастер по протоколу ModbusTCP?
    Хотелось бы конечно узнать не только названия самих библиотек, но и хотя бы в общих чертах последовательность использования функций для установки соединений и обмена (пример программы был бы наилучшим описанием )

  2. #2
    Пользователь Аватар для murdemon
    Регистрация
    03.02.2014
    Адрес
    Санкт-Петербург
    Сообщений
    844

    По умолчанию

    воспользуйся библиотекой OSCAT Network для Codesys 2 там уже все реализовано за нас но придется (корявые сокеты овеновские подправить чуть-чуть)
    Dmitriy Murashov
    SPS Software Engineer Automation Engineering RUS

  3. #3

    По умолчанию

    Спасибо за совет.
    Библиотека помогла и все получилось. Могло бы получиться и легче и быстрее, если бы реализации функции SysSockConnect из библиотеки SysLibSockets.lib для Овен`овских контроллеров возвращала BOOL, как это ожидается в библиотеке OSCAT. В результате целый день был потрачен на поиск причины почему данные не передаются. Ошибка конечно известная и на данном форуме обсуждалась уже годы тому назад, но когда делаешь что-то в первый раз, то доверяешь документации и не ждешь подвоха.
    На всякий случай, для тех кто еще может столкнуться с данной проблемой сообщаю:
    Библиотека OSCAT использует функции из системной библиотеки SysLibSockets.lib в которой, в свою очередь, есть функция для установления TCP подключения SysSockConnect, которая по идее должна возвращать BOOL - TRUE если подключение установлено и FALSE если подключение не установлено. Так вот в контроллерах ОВЕН функция SysSockConnect возвращает не BOOL, а DINT, при этом признаком удачного подключения является возвращаемое значение больше -1 (то есть и 0 тоже), а -1 является признаком неудачного подключения. Такая не стыковка приводит к тому, что код из библиотеки OSCAT при проверке возвращаемого функцией SysSockConnect значения считает, что соединение никак не может состояться.
    В результате пришлось в библиотеке OSCAT внести изменения в реазлизацию функциональных блоков IP_CONTROL и IP_CONTROL2 - заменить строки
    Код:
    IF SysSockConnect(socket, ADR(sockaddr), SIZEOF(sockaddr)) THEN
    на
    Код:
    IF BOOL_TO_DINT(SysSockConnect(socket, ADR(sockaddr), SIZEOF(sockaddr))) > -1 THEN
    На данный момент это все трудности с которыми пришлось столкнуться. Было бы неплохо узнать в каких еще функциях стандартных библиотек у Овена есть не стыковки, чтобы не тратить время на поиск системных ошибок.

  4. #4
    Пользователь
    Регистрация
    13.10.2011
    Адрес
    Златоуст
    Сообщений
    1,021

    По умолчанию

    Было бы неплохо узнать в каких еще функциях стандартных библиотек у Овена есть не стыковки
    Всё, что есть в SysLibCom.

  5. #5
    Пользователь Аватар для murdemon
    Регистрация
    03.02.2014
    Адрес
    Санкт-Петербург
    Сообщений
    844

    По умолчанию

    Да это нормально.. тот же ваго для своих ПЛК в разных моделях немного по разному с сокетами работает, да и PLCWinNT тоже.
    Dmitriy Murashov
    SPS Software Engineer Automation Engineering RUS

  6. #6
    Пользователь
    Регистрация
    13.10.2011
    Адрес
    Златоуст
    Сообщений
    1,021

    По умолчанию

    Где? Не вижу.

Похожие темы

  1. Программная смена IP адреса ПЛК
    от AlexPC1 в разделе ПЛК1хх
    Ответов: 8
    Последнее сообщение: 10.07.2017, 17:13
  2. программная перезагрузка плк
    от Сергеев Василий в разделе ПЛК1хх
    Ответов: 59
    Последнее сообщение: 04.12.2013, 06:58
  3. ModbusTCP(Master) - ошибки компиляции....
    от vladimir_prg в разделе СПК2хх
    Ответов: 7
    Последнее сообщение: 18.07.2013, 12:28
  4. ПЛК73+gprs режим ModbusTCP Master, передача на 3 ПК
    от alext1981 в разделе Сетевые технологии
    Ответов: 3
    Последнее сообщение: 28.02.2013, 13:48
  5. Ответов: 23
    Последнее сообщение: 16.08.2012, 16:20

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •