Просмотр полной версии : Modbus master
Modbus master может работать и как slave в случае если master не отправляет запросы (из док. "Универсальное устройство Modbus имеет канал Start/Stop. Если в него записывается значение 0x00FF, то происходит старт работы данного устройства Modbus, если же в канал записано значение 0x00FE, то происходит его остановка и прекращение всех посылок в сеть.)
Ситуация следующая, ПЛК100 необходимо использовать для приема данных от другого контроллера по определенным адресам, преобразование данных и их передача, через другой порт, по другим адресам (для SCADA).
Возник еще вопрос, как установить адрес ПЛК для работы в режиме master/slave, или адрес устанавливается на конкретный порт.
Modbus master может работать и как slave в случае если master не отправляет запросы (из док. "Универсальное устройство Modbus имеет канал Start/Stop. Если в него записывается значение 0x00FF, то происходит старт работы данного устройства Modbus, если же в канал записано значение 0x00FE, то происходит его остановка и прекращение всех посылок в сеть.)
Ситуация следующая, ПЛК100 необходимо использовать для приема данных от другого контроллера по определенным адресам, преобразование данных и их передача, через другой порт, по другим адресам (для SCADA).
Возник еще вопрос, как установить адрес ПЛК для работы в режиме master/slave, или адрес устанавливается на конкретный порт.
Не совсем ясна задача: если вы получаете данные по одному порту (485, например) и отправляете через другой, то зачем вам управлять работой мастера и слэйва? поставьте на один порт мастера, на другой слэйва и не морочьте себе голову.
Если же на одном интерфейсе у вас получаются 2 мастера, тогда вам необходимо отключать как один (организованный на ПЛК), так и другой (организованный где-то еще).
Опишите, пожалуйста, яснее, что к чему и как вы хотите подключить.
В Modbus slave нет возможности положить данные по определенному адресу, например по адресу 32221. А в Modbus master такая возможность есть. Или я ошибаюсь?
Задача следующая. На отправленных установках установлены контроллеры с определенной картой адресов, но для телемеханики требуется другая карта адресов. Для этого необходимо переделывать ПО написанное на Паскале и С++, что трудоёмко, но есть и проблема ограничения по максим. адресу (10000).
Идея состоит в следующем. С помощью ПЛК100 считываем данные с заданных адресов, преобразуем и раскладваем по необходимым адресам для телемеханики.
В Modbus slave нет возможности положить данные по определенному адресу, например по адресу 32221. А в Modbus master такая возможность есть. Или я ошибаюсь?
Задача следующая. На отправленных установках установлены контроллеры с определенной картой адресов, но для телемеханики требуется другая карта адресов. Для этого необходимо переделывать ПО написанное на Паскале и С++, что трудоёмко, но есть и проблема ограничения по максим. адресу (10000).
Идея состоит в следующем. С помощью ПЛК100 считываем данные с заданных адресов, преобразуем и раскладваем по необходимым адресам для телемеханики.
яснее не стало.
телемеханика реализована на том же контроллере, где ПО на паскале и си?
у этого контроллера только один доступный интерфейс связи или несколько?
И если интерфейс только один, в "ПО на паскале и си" предусмотрен перевод работы этого контроллера с телемеханикой по данному интерфейсу на работу как в режим мастера, так и в режим слэйва? для ПЛК такой перевод реализуем, но если ПЛК мастер - атот другой контроллер тоже мастер - тогда работать это не будет.
или же все-таки телемеханика и контроллер - это две разные части системы, которые не работают по одному едиственно возможному интерфейсу?
Телемеханика и контроллер - это две разные части системы.
Контроллер является реализацией нижнего уровня, телемеханика - верхнего, для вывода данных на диспетчерский пункт. К контроллеру мы цепляемся по RS-485, а к телемеханике по RS-232.
Телемеханика и контроллер - это две разные части системы.
Контроллер является реализацией нижнего уровня, телемеханика - верхнего, для вывода данных на диспетчерский пункт. К контроллеру мы цепляемся по RS-485, а к телемеханике по RS-232.
Ага, ну тогда все не сложно. По разным интерфейсам ПЛК может быть одновременно мастером и слэйвом.
Посмотрите простой пример. Там на одном интерфейсе ПЛК мастер - на другом подчингенный. А в программе данные, считанные с одного интерфейса, присваиваются переменным на другом.
708
Как это реализовать я знаю, у меня в другом проблема.
Мне необходимо с контроллера прочитать 2015 регистр, это не составляет проблемы.
А мастер телемеханики должен забрать значение этого регистра из другого регистра, например 3028. Карта адресов телемеханики определена заранее и нам необходимо под неё подстроится.
Как в slave положить значение именно в этот регистр.
И что означает Идент. узла или Node id в параметре элементов modbus slave.
Как это реализовать я знаю, у меня в другом проблема.
Мне необходимо с контроллера прочитать 2015 регистр, это не составляет проблемы.
А мастер телемеханики должен забрать значение этого регистра из другого регистра, например 3028. Карта адресов телемеханики определена заранее и нам необходимо под неё подстроится.
Как в slave положить значение именно в этот регистр.
И что означает Идент. узла или Node id в параметре элементов modbus slave.
гм, боюсь в этом случае, вам придется в слэйве создать 3028 переменных 2 byte, тк нумерация адресов регистров в слэйве идет автоматически начиная с 0. Другого механизма не организовано. Либо можно по данному порту читать посылки от мастера, обрабатывать и отвечать на них с помощью библиотеки unm.lib, т.е. поддержать часть (одну две функции) протокола модбас непосредственно в программе контроллера.
Идент. узла - внутренняя информация таргет файла, на пользовательском уровне она не используется.
Тогда у меня еще вопрос.
Собираетесь ли вы распространять библиотеку Codesys по реализации Modbus вместе со своей продукцией.
И планируется ли в будущем дорабатывать свой модуль Modbus slave.
Николаев Андрей
25.09.2008, 08:50
Библиотека ModBus от CoDeSys и так доступна всем.
Но распространять мы её не можем, так как она платная. А купить её можно, я так думаю в компании Пролог - www.codesys.ru
Сейчас мы делаем свою библиотеку обмена по ModBus. Уже в ней можно будет добавить свой блочек, которй будет получая данные\запрос для определенного регистра переадресовывать его в нужный.
А вообще над данным вопросом мы задумались, но пока законченного решения не принято. А задание случайного адреса в контроллере противоречит особенностям работы с распределением памяти в системе программирования.
Сергей71
25.09.2008, 13:31
Библиотека ModBus от CoDeSys и так доступна всем.
Но распространять мы её не можем, так как она платная. А купить её можно, я так думаю в компании Пролог - www.codesys.ru
Сейчас мы делаем свою библиотеку обмена по ModBus. Уже в ней можно будет добавить свой блочек, которй будет получая данные\запрос для определенного регистра переадресовывать его в нужный.
А вообще над данным вопросом мы задумались, но пока законченного решения не принято. А задание случайного адреса в контроллере противоречит особенностям работы с распределением памяти в системе программирования.
Давно пользуюсь Slave режимом и мучаюсь считая какой это регистр.
В одних мастерах начало с 0 в других с 1. А когда расставишь несколько разных типов, то можно и запутаться.
А теперь у человека проблема. Можно бы использовать ПЛК с буквой L, а надо купить с М.
Потому я у диллеров покупаю только с М - а L почти не кому не нужна.
В чем сложность у вас не понятно.
Пришлось писать самим, через день работы уже поддерживается 03 READ HOLDING REGISTERS функция.
Работаем через указатели, создав свою карту адресов.
Хотелось бы поднять тему. Как решить аналогичную задачу использовав ПЛК для переконвертации регистров, получаемых от мастера и передавать по другому адрему для слейва? Например, принимаем от частотного преобразователя данные с регистра 2104, а по другому порту его необходимо транслировать с адресом 256? Может кто-нибудь на пальцах рассказать реализацию?
Powered by vBulletin® Version 4.2.3 Copyright © 2025 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot