Здравствуйте, коллеги
Возможно тема давно не актуальна, но у меня появилась задача связать расходомер US-800 с ПЛК Siemens S7 1212 по Modbus RTU.
На данный момент мне не понято, как при помощи стандартных блоков библиотеки Communication создать телеграмму для опроса значений регистров расходомера?
- Обязательно представиться на русском языке кириллицей (заполнить поле "Имя").
- Фиктивные имена мы не приветствуем. Ивановых и Пупкиных здесь уже достаточно.
- Не писать свой вопрос в первую попавшуюся тему - вместо этого создать новую тему.
- За поиск, предложение и обсуждение пиратского ПО и средств взлома - бан без предупреждения.
- Рекламу и частные объявления "куплю/продам/есть халтура" мы не размещаем ни на каких условиях.
- Перед тем как что-то написать - читать здесь и здесь, а студентам - обязательно здесь.
- Не надо писать в ЛС администраторам свои технические вопросы. Администраторы форума отлично знают как работает форум, а не все-все контроллеры, о которых тут пишут.
связь между расходомером US800 и ПЛК по Modbus
-
- здесь недавно
- Сообщения: 13
- Зарегистрирован: 04 июл 2018, 03:27
- Имя: Максим Невмержицкий
- Страна: Россия
- Благодарил (а): 2 раза
- Поблагодарили: 1 раз
-
- осмотрелся
- Сообщения: 166
- Зарегистрирован: 24 янв 2018, 11:18
- Имя: Антон
- Страна: Россия
- город/регион: Калининград
- Благодарил (а): 26 раз
- Поблагодарили: 27 раз
связь между расходомером US800 и ПЛК по Modbus
Maksim Nevmer,
1. Единожды (при старте контроллера) вызываете блок MB_COMM_LOAD
2. Для чтения регистров вызываете блок MB_MASTER с необходимыми значениями параметров.
1. Единожды (при старте контроллера) вызываете блок MB_COMM_LOAD
2. Для чтения регистров вызываете блок MB_MASTER с необходимыми значениями параметров.
-
- здесь недавно
- Сообщения: 13
- Зарегистрирован: 04 июл 2018, 03:27
- Имя: Максим Невмержицкий
- Страна: Россия
- Благодарил (а): 2 раза
- Поблагодарили: 1 раз
связь между расходомером US800 и ПЛК по Modbus
NewOrdered, Спасибо за ответ!
Как я понял, что коммуникация с расходомером происходить в формате запрос-ответ.
У расходомера для чтения параметров следующие номера регистров шестнадцатеричноо формата 200..206.
На корректный адрес нужно отправить запрос в формате набора восьми байт: 01 03 02 00 00 07 05 B0
Я не уверен, что верно настроил параметры блоков MB_MASTER.
Прилагаю, картинки настроек и пример настройки от производителя.
параметр MB_MASTER_STATUS выдаёт по очереди ошибки:
W#16#8281 - Negative acknowledgment when writing module
W#16#818D - The area addressed by DATA_PTR is longer than the DB, or the area addressed is too small for the number of data bytes to be read or written.
На модуле СМ 1241 не мигают ламы Tx и Rx.
Читая описание к функциям MODBUS я пока не понял, каким параметром указываться запись в регистры.
Можно ли использовать типы данных BYTE?
Как я понял, что коммуникация с расходомером происходить в формате запрос-ответ.
У расходомера для чтения параметров следующие номера регистров шестнадцатеричноо формата 200..206.
На корректный адрес нужно отправить запрос в формате набора восьми байт: 01 03 02 00 00 07 05 B0
Я не уверен, что верно настроил параметры блоков MB_MASTER.
Прилагаю, картинки настроек и пример настройки от производителя.
параметр MB_MASTER_STATUS выдаёт по очереди ошибки:
W#16#8281 - Negative acknowledgment when writing module
W#16#818D - The area addressed by DATA_PTR is longer than the DB, or the area addressed is too small for the number of data bytes to be read or written.
На модуле СМ 1241 не мигают ламы Tx и Rx.
Читая описание к функциям MODBUS я пока не понял, каким параметром указываться запись в регистры.
Можно ли использовать типы данных BYTE?
У вас нет необходимых прав для просмотра вложений в этом сообщении.
-
- осмотрелся
- Сообщения: 166
- Зарегистрирован: 24 янв 2018, 11:18
- Имя: Антон
- Страна: Россия
- город/регион: Калининград
- Благодарил (а): 26 раз
- Поблагодарили: 27 раз
связь между расходомером US800 и ПЛК по Modbus
При чтении:
MODE = 0
DATA_LEN = Количество запрашиваемых регистров (не байт)
DATA_ADDR - тут надо подбирать. С моим слэйвом заработал вариант не 40000, а 400000
DATA_PTR должен указывать на область, равную (кол-во регистров * длина регистра). Для вашего случая 19*2 = 38 байт
MODE = 0
DATA_LEN = Количество запрашиваемых регистров (не байт)
DATA_ADDR - тут надо подбирать. С моим слэйвом заработал вариант не 40000, а 400000
DATA_PTR должен указывать на область, равную (кол-во регистров * длина регистра). Для вашего случая 19*2 = 38 байт
-
- здесь недавно
- Сообщения: 13
- Зарегистрирован: 04 июл 2018, 03:27
- Имя: Максим Невмержицкий
- Страна: Россия
- Благодарил (а): 2 раза
- Поблагодарили: 1 раз
связь между расходомером US800 и ПЛК по Modbus
А при записи:
- каким будет параметр MODE?
- необходимо ли как-то задавать Modbus function code, или он автоматически создаётся блоком MB_MASTER?
- каким будет параметр MODE?
- необходимо ли как-то задавать Modbus function code, или он автоматически создаётся блоком MB_MASTER?
-
- осмотрелся
- Сообщения: 166
- Зарегистрирован: 24 янв 2018, 11:18
- Имя: Антон
- Страна: Россия
- город/регион: Калининград
- Благодарил (а): 26 раз
- Поблагодарили: 27 раз
связь между расходомером US800 и ПЛК по Modbus
Maksim Nevmer, F1 на блоке MB_MASTER. Там будет ссылка на подробную расшифровку параметра MODE.
Там же в таблице и примеры адресации в зависимости от выбранного режима MODE.
Всю посылку, включая и код функции, и длину и CRC, блок формирует сам "под капотом".
Там же в таблице и примеры адресации в зависимости от выбранного режима MODE.
Всю посылку, включая и код функции, и длину и CRC, блок формирует сам "под капотом".
-
- здесь недавно
- Сообщения: 13
- Зарегистрирован: 04 июл 2018, 03:27
- Имя: Максим Невмержицкий
- Страна: Россия
- Благодарил (а): 2 раза
- Поблагодарили: 1 раз
связь между расходомером US800 и ПЛК по Modbus
Модбас в различных вариантах, к сожалению, не помог для этого прибора.
Я решил задачу коммуникации с расходомер US-800 по протоколу PTP, библиотеки версии 3.1. Обмен данными идёт стабильно!
Также пробовал более ранние библиотеки PTP 1.1 и т.п. - запрос на чтение параметров отправлялся, но расходомер его не понимал, и ответ не слал (судя по диагностической информации прибора)
P.S. Натолкнуло меня на решение задачи полезное видео о коммуникации с похожим расходомером другой фирмы!))
https://www.youtube.com/watch?v=EHKXNcAOIhw
Коллега на видео использует библиотеки PTP 1.1
Я решил задачу коммуникации с расходомер US-800 по протоколу PTP, библиотеки версии 3.1. Обмен данными идёт стабильно!
Также пробовал более ранние библиотеки PTP 1.1 и т.п. - запрос на чтение параметров отправлялся, но расходомер его не понимал, и ответ не слал (судя по диагностической информации прибора)
P.S. Натолкнуло меня на решение задачи полезное видео о коммуникации с похожим расходомером другой фирмы!))
https://www.youtube.com/watch?v=EHKXNcAOIhw
Коллега на видео использует библиотеки PTP 1.1