Взаимодействие с ЛИР 919 Д30 по протоколу Modbus TCP/IP
Модератор: Денис Кашин
Взаимодействие с ЛИР 919 Д30 по протоколу Modbus TCP/IP
Здравствуйте!
Я новичок по работе с modbus TCP/IP, работал только с modbus RTU на другом устройстве.
Сейчас пишу приложение под ЛИР 919 и нужно взаимодействие с ним по протоколу modbus TCP/IP.
Подскажите пожалуйста, ЛИР 919 как-то нужно настроить на работу с modbus TCP/IP?
Если нужно, то как?
Я пересмотрел все документацию, нашел про RS-485 и про USB их взаимодействие через библиотеку UPL_LIB, но по ethernet modbus TCP/IP, нечего.
Выставлял настройки в приложении ULP Demo на вкладке ethernet: IP, port, протокол TCP. Порт ставил 502, как я понял, это специальный порт для работы modbus TCP/IP.
Я пытался подключится через библиотеку NModbus4 на c#, подключение не получилось. Так же пытался подключится через приложения по работе TCP/IP.
Я новичок по работе с modbus TCP/IP, работал только с modbus RTU на другом устройстве.
Сейчас пишу приложение под ЛИР 919 и нужно взаимодействие с ним по протоколу modbus TCP/IP.
Подскажите пожалуйста, ЛИР 919 как-то нужно настроить на работу с modbus TCP/IP?
Если нужно, то как?
Я пересмотрел все документацию, нашел про RS-485 и про USB их взаимодействие через библиотеку UPL_LIB, но по ethernet modbus TCP/IP, нечего.
Выставлял настройки в приложении ULP Demo на вкладке ethernet: IP, port, протокол TCP. Порт ставил 502, как я понял, это специальный порт для работы modbus TCP/IP.
Я пытался подключится через библиотеку NModbus4 на c#, подключение не получилось. Так же пытался подключится через приложения по работе TCP/IP.
-
- СКБИС
- Сообщения: 45
- Зарегистрирован: 19 июл 2022, 09:35
Re: Взаимодействие с ЛИР 919 Д30 по протоколу Modbus TCP/IP
Здравствуйте
Посмотрите описание модулей.
2. Попробуйте подключиться через ULP Demo выбрав тип соединения Ethernet (на медленных компьютерах бывает необходимо увеличить интервал опроса)
3. Если выполняются первые два пункта, то можно воспользоваться любой утилитой для чтения регистров по Modbus TCP/IP (например modbus poll).
ДаПодскажите пожалуйста, ЛИР 919 как-то нужно настроить на работу с modbus TCP/IP?
Открыть соответствующую вкладку в программе ULP Demo и заполнить необходимые параметры.Если нужно, то как?
Примера работы через Ethernet, к сожалению, нет. Эти примеры для взаимодействие по протоколу ulp, а Вам необходим Modbus.Я пересмотрел все документацию, нашел про RS-485 и про USB их взаимодействие через библиотеку UPL_LIB, но по ethernet modbus TCP/IP, нечего.
Посмотрите описание модулей.
Необходимо также выбрать протокол, не забыть кнопку "Изменить на". Задать Modbus адрес как в ULP Demo, так и в клиентском приложении.Выставлял настройки в приложении ULP Demo на вкладке ethernet: IP, port, протокол TCP. Порт ставил 502, как я понял, это специальный порт для работы modbus TCP/IP.
1. Есть ли пинг?Я пытался подключится через библиотеку NModbus4 на c#, подключение не получилось. Так же пытался подключится через приложения по работе TCP/IP.
2. Попробуйте подключиться через ULP Demo выбрав тип соединения Ethernet (на медленных компьютерах бывает необходимо увеличить интервал опроса)
3. Если выполняются первые два пункта, то можно воспользоваться любой утилитой для чтения регистров по Modbus TCP/IP (например modbus poll).
Re: Взаимодействие с ЛИР 919 Д30 по протоколу Modbus TCP/IP
Добрый день! Настроил все параметры сети у ПК и программы ULP Demo, для работы по протоколу modbus TCP/IP.
IP адреса пингуются. Прикрепил файлы настройки подключения, пинга адресов и параметры в программе modbus poll.
Я в программе modbus poll задаю:
1. Salve ID: 247
2. Function: 04 Read Input Registers(3x)
3. Address mode: Hex
4. Address: 1
5. Quantity: 4
6. Scan Rate: 1000 ms
Я хотел прочитать "Регистры ввода (input registers)", по адресу "0x01" ("Координата датчика").
Подключение есть, только ответ 0 и не меняется.
Параметр Quantity менял 1-30.
Помогите пожалуйста, как правильно читать координаты датчика и выставлять нули (параметр >0<)?
Какой адрес для чтения координат датчика использовать (есть несколько адресов 0x01-0x04, 0x08-0x0B и 0x11-0x14)?
IP адреса пингуются. Прикрепил файлы настройки подключения, пинга адресов и параметры в программе modbus poll.
Я в программе modbus poll задаю:
1. Salve ID: 247
2. Function: 04 Read Input Registers(3x)
3. Address mode: Hex
4. Address: 1
5. Quantity: 4
6. Scan Rate: 1000 ms
Я хотел прочитать "Регистры ввода (input registers)", по адресу "0x01" ("Координата датчика").
Подключение есть, только ответ 0 и не меняется.
Параметр Quantity менял 1-30.
Помогите пожалуйста, как правильно читать координаты датчика и выставлять нули (параметр >0<)?
Какой адрес для чтения координат датчика использовать (есть несколько адресов 0x01-0x04, 0x08-0x0B и 0x11-0x14)?
- Вложения
-
- Setting2.PNG (40 КБ) 599 просмотров
-
- Setting1.PNG (68.33 КБ) 599 просмотров
-
- Modbus tcp ip1.PNG (65.43 КБ) 599 просмотров
-
- СКБИС
- Сообщения: 45
- Зарегистрирован: 19 июл 2022, 09:35
Re: Взаимодействие с ЛИР 919 Д30 по протоколу Modbus TCP/IP
Здравствуйте
Вы читаете 0, т.к. не читаете регистр статуса. Регистр статуса позиции необходимо читать вместе с позицией. Именно чтение регистра статуса обновляет значение в регистрах позиции. Т.е. для вашего запроса необходимо изменить Address на 0 и Quantity на 5.
0х1010-0х1014 - G52 (оперативная СО, смещение хранится в ОЗУ, число перезаписей не лимитировано);
0х2010-0х2014 - G53 (абсолютная СО, смещение храниться в ПЗУ, число перезаписей ~1000, есть ограничение на выставление 0);
0х3010-0х3014 - G54 (абсолютная СО, смещение храниться в ПЗУ, число перезаписей ~100000).
Вы читаете 0, т.к. не читаете регистр статуса. Регистр статуса позиции необходимо читать вместе с позицией. Именно чтение регистра статуса обновляет значение в регистрах позиции. Т.е. для вашего запроса необходимо изменить Address на 0 и Quantity на 5.
Поскольку Вам требуется обнуление, то следует обратить внимание на группы регистров хранения:читать координаты датчика и выставлять нули
0х1010-0х1014 - G52 (оперативная СО, смещение хранится в ОЗУ, число перезаписей не лимитировано);
0х2010-0х2014 - G53 (абсолютная СО, смещение храниться в ПЗУ, число перезаписей ~1000, есть ограничение на выставление 0);
0х3010-0х3014 - G54 (абсолютная СО, смещение храниться в ПЗУ, число перезаписей ~100000).
Re: Взаимодействие с ЛИР 919 Д30 по протоколу Modbus TCP/IP
Я задал Address 0 и Quantity 5. Значения все по нулям. Может каких то настроек не хватает?Владимир Чухляев писал(а): ↑15 апр 2024, 15:14 Т.е. для вашего запроса необходимо изменить Address на 0 и Quantity на 5.
- Вложения
-
- ReadParam.PNG (31.65 КБ) 591 просмотр
-
- СКБИС
- Сообщения: 45
- Зарегистрирован: 19 июл 2022, 09:35
Re: Взаимодействие с ЛИР 919 Д30 по протоколу Modbus TCP/IP
Здравствуйте
Что во время запросов по Modbus показывает ULP Demo на вкладке преобразователь в индикаторе позиции?
Если у Вас инкрементный преобразователь - его стоит повращать.Значения все по нулям
Что во время запросов по Modbus показывает ULP Demo на вкладке преобразователь в индикаторе позиции?
Re: Взаимодействие с ЛИР 919 Д30 по протоколу Modbus TCP/IP
Добрый день, Владимир!
Владимир, спасибо большое за помощь!
Данные читаю! Вопрос насчет формата полученных данных.
В программе UPL Demo при таких настройка
Соединение: usb
Вкладка "Преобразователь".
-Состояние: включен
Раздел: преобразователь
-Текущий тип датчика:SSI
К примеру, на датчике стоит число 16637756, а по modus TCP, читается значение:
0=256
1=57148
2=253
Как преобразовать полученное значение?
При отключении питания, в программе UPL Demo нужно заново настраивать на подключение через modbus TCP/IP.
Есть ли какая-то возможность сохранять заданные настройки в устройстве?
Оставляю код на c#, вдруг кому-то пригодиться. Используется пакет (библиотека) NModbus4.
Владимир, спасибо большое за помощь!
Данные читаю! Вопрос насчет формата полученных данных.
В программе UPL Demo при таких настройка
Соединение: usb
Вкладка "Преобразователь".
-Состояние: включен
Раздел: преобразователь
-Текущий тип датчика:SSI
К примеру, на датчике стоит число 16637756, а по modus TCP, читается значение:
0=256
1=57148
2=253
Как преобразовать полученное значение?
При отключении питания, в программе UPL Demo нужно заново настраивать на подключение через modbus TCP/IP.
Есть ли какая-то возможность сохранять заданные настройки в устройстве?
Оставляю код на c#, вдруг кому-то пригодиться. Используется пакет (библиотека) NModbus4.
Код: Выделить всё
using Modbus.Device;
using System;
using System.Net.Sockets;
namespace ConsoleApp1
{
internal class Program
{
static void Main(string[] args)
{
// Создание клиента Modbus TCP
string ip = "192.168.1.250";
int port = 90;
TcpClient client = new TcpClient(ip, port);
ModbusIpMaster master = ModbusIpMaster.CreateIp(client);
//Modbus адрес
byte slave = 247;
ushort startAddress = 0x00;
ushort numInputs = 5;
ushort[] inputs = master.ReadInputRegisters(slave, startAddress, numInputs);
for (int i = 0; i < numInputs; i++)
{
Console.WriteLine("Input {0}={1}", startAddress + i, inputs[i]);
}
Console.ReadLine();
}
}
}
-
- СКБИС
- Сообщения: 45
- Зарегистрирован: 19 июл 2022, 09:35
Re: Взаимодействие с ЛИР 919 Д30 по протоколу Modbus TCP/IP
0xFD DF3Cна датчике стоит число 16637756
1-0xDF3C1=57148
2=253
2-0x00FD
В регистрах данные позиции располагаются начиная с младших байт. Если разрядность преобразователя не использует все биты позиции, то можно читать не все Modbus регистры (например, для 32 битного преобразователя можно читать 2 Modbus регистра позиции + статус).
Статус позиции 0000 0001 0000 0000b. Расшифровывается согласно описанию (стр.18)0=256
Поскольку у Вас в статусе 8ой бит в "1", скорее всего, не верно заданы настройки преобразователя.
Вкладка "Системный" -> "Сохранить" в области "Устройство"Есть ли какая-то возможность сохранять заданные настройки в устройстве?
Re: Взаимодействие с ЛИР 919 Д30 по протоколу Modbus TCP/IP
Подскажите пожалуйста, что нужно настроить в "Преобразователе", для правильного чтения по modbus TCP/IP?
Все настройки, которые есть сейчас в "Преобразователе", были установлены по умолчанию.
Все настройки, которые есть сейчас в "Преобразователе", были установлены по умолчанию.
- Вложения
-
- Setting.PNG (45.99 КБ) 490 просмотров
-
- СКБИС
- Сообщения: 45
- Зарегистрирован: 19 июл 2022, 09:35
Re: Взаимодействие с ЛИР 919 Д30 по протоколу Modbus TCP/IP
Если предположить, что модуль интерфейса работает в паре с преобразователем ЛИР-ДА190К-Ф4-22-3-В(DB9), то:что нужно настроить в "Преобразователе"
-изменить значение поля "Количество бит данных" на 22
Re: Взаимодействие с ЛИР 919 Д30 по протоколу Modbus TCP/IP
Изменения "Количества бит данных" на 22, не дало положительных результатов.-изменить значение поля "Количество бит данных" на 22
Да, преобразователь верный.Если предположить, что модуль интерфейса работает в паре с преобразователем ЛИР-ДА190К-Ф4-22-3-В(DB9)
Настройки применил и обновил.
Получается такой же непонятный набор данных прочитанный по modbus TCP.
Программа UPL Demo: 2166945 => Modbus TSP: 1=17030, 2=132.
- Вложения
-
- Setting_.PNG (45.82 КБ) 471 просмотр
-
- СКБИС
- Сообщения: 45
- Зарегистрирован: 19 июл 2022, 09:35
Re: Взаимодействие с ЛИР 919 Д30 по протоколу Modbus TCP/IP
Надо разделять задачи:Получается такой же непонятный набор данных прочитанный по modbus TCP.
-настройка работы по Modbus TCP (это сделано);
-настройка преобразователя (с этим проблемы).
При установленных 22 битах как изменяется позиция при медленном вращении? По одной дискрете или .... ?
Re: Взаимодействие с ЛИР 919 Д30 по протоколу Modbus TCP/IP
Согласен.Надо разделять задачи:
-настройка работы по Modbus TCP (это сделано);
-настройка преобразователя (с этим проблемы).
Я составил таблицу. Будет ли ее достаточно?При установленных 22 битах как изменяется позиция при медленном вращении? По одной дискрете или .... ?
- Вложения
-
- Data.PNG (23.63 КБ) 444 просмотра
-
- СКБИС
- Сообщения: 45
- Зарегистрирован: 19 июл 2022, 09:35
Re: Взаимодействие с ЛИР 919 Д30 по протоколу Modbus TCP/IP
Здравствуйте
Я просмотрел что в вашем преобразователе присутствует бит аларм. Установите следующие настройки: Улучшило ли это ситуацию? Если нет, Вы территориально где находитесь? Если в Санкт-Петербурге, то было бы быстрее к нам подъехать.
Я просмотрел что в вашем преобразователе присутствует бит аларм. Установите следующие настройки: Улучшило ли это ситуацию? Если нет, Вы территориально где находитесь? Если в Санкт-Петербурге, то было бы быстрее к нам подъехать.
Re: Взаимодействие с ЛИР 919 Д30 по протоколу Modbus TCP/IP
Добрый день, Владимир!
При работе с "Количеством бит данных" 16, читаю правильно и хватает одного регистра и преобразование не нужно. Но мне нужно минимум 22 бита данных. В таком количестве данных уже участвует 2 регистра.
Я разобрался, напишу, вдруг кто-то будет искать информацию. Когда число в 1 разряде становиться рано 65536, то число переходит в следующий регистр, во второй. Получается 1 регистр 0, а второй регистр 1. Например, число 3 301 787. Чтение modbus TCP/IP, получаем 1 регистр 24 987 2 регистр 50. Полученное число 50 это количество циклов для числа 65 536. Далее берем его и умножаем 50 * 65536 =3 276 800 к нему прибавляем 2 регистр 3 276 800 + 24 987 = 3 301 787.
Вот и весь расчет.
Работает для настроек:
"Количества бит данных" - 22
"Позиция первого бита данных" - 1
"Количество бит статуса" - 1
"Инверсия битов статуса" - 1
"Начальный интервал" - 0
Настройки в скриншотах.
После настройки всех параметрам, сохраняем в программе. Необходимость UPL Demo, отпадает.
Используется пакет (библиотека) NModbus4.
Код для работы
Нет.Улучшило ли это ситуацию?
Территориально в Москве.Вы территориально где находитесь?
При работе с "Количеством бит данных" 16, читаю правильно и хватает одного регистра и преобразование не нужно. Но мне нужно минимум 22 бита данных. В таком количестве данных уже участвует 2 регистра.
Я разобрался, напишу, вдруг кто-то будет искать информацию. Когда число в 1 разряде становиться рано 65536, то число переходит в следующий регистр, во второй. Получается 1 регистр 0, а второй регистр 1. Например, число 3 301 787. Чтение modbus TCP/IP, получаем 1 регистр 24 987 2 регистр 50. Полученное число 50 это количество циклов для числа 65 536. Далее берем его и умножаем 50 * 65536 =3 276 800 к нему прибавляем 2 регистр 3 276 800 + 24 987 = 3 301 787.
Вот и весь расчет.
Работает для настроек:
"Количества бит данных" - 22
"Позиция первого бита данных" - 1
"Количество бит статуса" - 1
"Инверсия битов статуса" - 1
"Начальный интервал" - 0
Настройки в скриншотах.
После настройки всех параметрам, сохраняем в программе. Необходимость UPL Demo, отпадает.
Используется пакет (библиотека) NModbus4.
Код для работы
Код: Выделить всё
using Modbus.Device;
using System;
using System.Net.Sockets;
namespace ConsoleApp1
{
internal class Program
{
static void Main(string[] args)
{
// Создание клиента Modbus TCP
string ip = "192.168.1.250";
int port = 90;
TcpClient client = new TcpClient(ip, port);
ModbusIpMaster master = ModbusIpMaster.CreateIp(client);
//Modbus адрес
byte slave = 247;
ushort startAddress = 0x00;
ushort numInputs = 5;
ushort[] inputs = master.ReadInputRegisters(slave, startAddress, numInputs);
for (int i = 0; i < numInputs; i++)
{
Console.WriteLine("Input {0}={1}", startAddress + i, inputs[i]);
}
Console.ReadLine();
}
}
}
- Вложения
-
- Сохранение настроек
- Setting__2.PNG (42.15 КБ) 195 просмотров
-
- Настройки для чтения modbus TCP/IP.
- Setting__1.PNG (38.56 КБ) 201 просмотр
-
- Настройки для подключения modbus TCP/IP.
- Setting__.PNG (40.92 КБ) 201 просмотр