1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/aitang-ros_modbus

В этом репозитории не указан файл с открытой лицензией (LICENSE). При использовании обратитесь к конкретному описанию проекта и его зависимостям в коде.
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
readme.md

ROS: тестирование функциональности узла Modbus-коммуникации

Первый шаг: создание рабочей области и компиляция

Откройте терминал и выполните следующие команды:

mkdir -p ~/catkin_ws/src
cd catkin_ws
catkin_make

Второй шаг: компиляция

    catkin_make

Третий шаг: запуск

<1> Убедитесь, что устройство подключено:

Затем -> подключите USB к 485

<2> Откройте новый терминал, запустите мастер ROS:

 roscore

<3> Откройте новый терминал, запустите тестовый пакет ROS:

Просмотр устройств последовательного порта:

 ls -l /dev/ttyUSB*

Терминал должен вывести следующую информацию:

 crw-rw---- 1 root dialout 188, 0 Aug  3 21:46 /dev/ttyUSB0

Если это не /dev/ttyUSB0, измените имя устройства последовательного порта в файле ros_modbus.cpp в пакете ROS.

Добавьте права доступа к устройству:

sudo chmod 777 /dev/ttyUSB0  # Измените в соответствии с вашим устройством
#source
cd catkin_ws_test
source devel/setup.bash

Запустите узел пакета функций:

rosrun modbus_test publish_node

Протокол содержимого

Малый автомобиль шасси 0001 0010 отключение питания 01 06 00 01 00 10 D9 C6
0001 включение питания 01 06 00 01 00 01 19 CA
Маршрутизатор 0002 0002 0010 отключение питания 01 06 00 02 00 10 29 C6
0001 включение питания01 06 00 02 00 01 E9 CA
Лазерный радар 1 0003 01 06 00 03 00 10 78 06
01 06 00 03 00 01 B8 0A
Лазерный радар 2 0004 01 06 00 04 00 10 C9 C7
01 06 00 04 00 01 09 CB
16-линейный лазерный радар 0005 01 06 00 05 00 10 98 07
01 06 00 05 00 01 58 0B
Рыбий глаз камера 0006 01 06 00 06 00 10 68 07
01 06 00 06 00 01 A8 0B
Зарезервированный интерфейс 0007 01 06 00 07 00 10 39 C7
01 06 00 07 00 01 F9 CB
Механическая рука 0008

Тестирование протокола

Содержимое протокола:

Этот протокол представляет собой пользовательский коммуникационный протокол для связи между модулем управления питанием и контроллером. Он использует формат RTU и скорость передачи данных 115200 бод. Данные передаются в шестнадцатеричном формате. Контроллер отправляет запросы модулю управления питанием.

Интервал отправки составляет две секунды. Отправляются команды включения питания 0001 и отключения питания 01 06.

Код реализации:

 while(ros::ok())
    {
        ros::spinOnce();
	    writeModbus_in(0x01,0x0001,0x0010);

        loop_rate.sleep();
        ros::Duration(2).sleep();
        
     	 writeModbus_in(0x01,0x0001,0x0001);
     	 
        loop_rate.sleep();
        ros::Duration(2).sleep();
    }

Реализация функции:

Тестовый код функции находится в ros_modebus.cpp: addr: адрес машины, reg: регистр, value: значение передачи

void writeModbus_in(unsigned char addr,unsigned int reg,unsigned int value)
 {
    unsigned char cont = 0;
    unsigned int crc;
     modbus.Sendbuf[cont++] = addr;
     modbus.Sendbuf[cont++] = 0x06; //Функциональный код
     modbus.Sendbuf[cont++] = reg /256;   //Регистр
     modbus.Sendbuf[cont++] = reg%256;
    modbus.Sendbuf[cont++] = value /256;   //Данные
    modbus.Sendbuf[cont++] = value%256;
    crc = crc16(modbus.Sendbuf,cont);   //Проверка CRC
    modbus.Sendbuf[cont++] = crc/256;  
    modbus.Sendbuf[cont++] = crc%256;
    boost::asio::write(sp, boost::asio::buffer(modbus.Sendbuf));
    ROS_INFO("OK!!!");   //Успешная передача
 }
Малый автомобиль шасси 0001 0010
0001

Метод тестирования:

Нажатие клавиш на клавиатуре позволяет увидеть соответствующие подсказки на терминале и узнать, была ли отправка успешной.

Нажмите цифру 1:

Будет отправлена ​​информация о данных Modbus: {0x01,0x06,0x00,0x01,0x00,0x10,0xD9,0xC6}; //Отключение питания малого автомобиля шасси, 01 адрес машины, 06 запись, 00 01 регистр адреса, 00 01 количество регистров, контрольная сумма Реализовать отправку данных на плату питания, реализовать управление соответствующим реле отключения питания шасси малого автомобиля

Нажмите цифру 2:

Будет отправлена ​​информация о данных Modbus: {0x01,0x06,0x00,0x01,0x00,0x01,0xD9,0xC6}; //Включение питания шасси малого автомобиля, 01 адрес машины, 06 запись, 00 01 регистр адреса, 00 01 количество регистров, контрольная сумма Реализовать отправку данных на плату питания, реализовать управление реле включения питания шасси малого автомобиля

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Реализовать Modbus-коммуникацию в ROS-узле. Развернуть Свернуть
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/aitang-ros_modbus.git
git@api.gitlife.ru:oschina-mirror/aitang-ros_modbus.git
oschina-mirror
aitang-ros_modbus
aitang-ros_modbus
master