Нужно подружить Schneider Electric LXM32A с компьютером

Контроллеры, драйверы, датчики, управляющие устройства.
Аватара пользователя
N1X
Мастер
Сообщения: 3653
Зарегистрирован: 16 фев 2015, 21:19
Репутация: 1645
Настоящее имя: Владимир
Откуда: Беларусь, Гомель
Контактная информация:

Re: Нужно подружить Schneider Electric LXM32A с компьютером

Сообщение N1X »

MX_Master писал(а):что пришло по протоколу TCP/IP, то сразу отправляется на все доступные выходы по протоколу CAN.
Вот только с реалтаймом у TCP/IP не то чтобы проблемы, у него с ним никак... Пакет может прийти когда ему вздумается.
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5181
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: Нужно подружить Schneider Electric LXM32A с компьютером

Сообщение Serg »

MX_Master писал(а):что пришло по протоколу TCP/IP, то сразу отправляется на все доступные выходы по протоколу CAN.
У CAN-адаптеров не так всё просто...
N1X писал(а):Вот только с реалтаймом у TCP/IP не то чтобы проблемы, у него с ним никак... Пакет может прийти когда ему вздумается.
с реалтаймом проблемы у tcp, у udp проблем с реалтаймом нет.
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Аватара пользователя
MX_Master
Мастер
Сообщения: 7465
Зарегистрирован: 27 июн 2015, 19:45
Репутация: 3088
Настоящее имя: Михаил
Откуда: Алматы
Контактная информация:

Re: Нужно подружить Schneider Electric LXM32A с компьютером

Сообщение MX_Master »

Я только одно не понимаю, в чём же плюс реалтайма с ПК в CAN сеть? А если комп задумается о чём-то? Буфер обязателен! И он должет быть либо в каком-то контроллере, либо в самом устройстве. И как я понял, в устройстве такая возможность есть. Поэтому TCP/IP тоже пригоден, не говоря уже о UDP, как было сказано выше.
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5181
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: Нужно подружить Schneider Electric LXM32A с компьютером

Сообщение Serg »

MX_Master писал(а):А если комп задумается о чём-то?
Если комп может задуматься, то это не реалтайм комп. :)
MX_Master писал(а):Буфер обязателен!
Комп даёт команду "ехать туда-то" и начинает ждать срабатывания датчика касания. Незадолго до срабатывания датчика комп вдруг "задумывается" и пока "думает" не может получить сигнал от датчика. Чем тут пожет буфер?
MX_Master писал(а):Поэтому TCP/IP тоже пригоден, не говоря уже о UDP, как было сказано выше.
"На автомобилях можно ездить, не говоря уже о Мерседесах". ;)
TCP/IP - набор сетевых протоколов для инета. UDP - один из протоколов этого набора. :)
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Аватара пользователя
N1X
Мастер
Сообщения: 3653
Зарегистрирован: 16 фев 2015, 21:19
Репутация: 1645
Настоящее имя: Владимир
Откуда: Беларусь, Гомель
Контактная информация:

Re: Нужно подружить Schneider Electric LXM32A с компьютером

Сообщение N1X »

UAVpilot писал(а):у udp проблем с реалтаймом нет
Но он и доставку не гарантирует же вроде? (чето-помню о сетях, но весьма слабо)
MX_Master писал(а):Я только одно не понимаю, в чём же плюс реалтайма с ПК в CAN сеть? А если комп задумается о чём-то?
Не плюс, а необходимость. Если НУЖНО использовать комп как контроллер - то он должен работать в реалтайме. Т.к. контроллер ЧПУ есть реалтайм система. Реалтайм не нужен в одном случае: комп тупо клиент, а функции ЧПУ выполняет внешний контроллер.
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5181
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: Нужно подружить Schneider Electric LXM32A с компьютером

Сообщение Serg »

N1X писал(а):Но он и доставку не гарантирует же вроде? (чето-помню о сетях, но весьма слабо)
tcp тоже не гарантирует. :)
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Аватара пользователя
N1X
Мастер
Сообщения: 3653
Зарегистрирован: 16 фев 2015, 21:19
Репутация: 1645
Настоящее имя: Владимир
Откуда: Беларусь, Гомель
Контактная информация:

Re: Нужно подружить Schneider Electric LXM32A с компьютером

Сообщение N1X »

UAVpilot писал(а):tcp тоже не гарантирует.
Ясно, нужно читать на досуге :)
Yevhen_k
Новичок
Сообщения: 22
Зарегистрирован: 21 май 2014, 19:43
Репутация: 3
Контактная информация:

Re: Нужно подружить Schneider Electric LXM32A с компьютером

Сообщение Yevhen_k »

MX_Master писал(а):Я только одно не понимаю, в чём же плюс реалтайма с ПК в CAN сеть? А если комп задумается о чём-то? Буфер обязателен! И он должет быть либо в каком-то контроллере, либо в самом устройстве. И как я понял, в устройстве такая возможность есть. Поэтому TCP/IP тоже пригоден, не говоря уже о UDP, как было сказано выше.
Реалтайм в шине CAN нужен, если управление реализовано через сервоцикл. В мануалах это называется - "Profile interlopated position". Сервоцикл работает так - через равные промежутки времени нужно отправлять сообщение SYNC. Оно имеет фиксированный COB ID (80h) и состоит из нулей. Временной интервал сервоцикла или время между сообщениями SYNC задаётся отдельным параметром - от 2 до 20ms. Также задаётся точность сервоцикла - это отклонение времени передачи сообщения SYNC от заданного. Т.е. можно задать интервал 10ms +-1ms, как пример. Если в этом промежутке сервопривод не получил SYNC, то он выдаёт ошибку и отключает питание мотора. SYNC принимается всеми устройствами, подключенными к шине.
Далее между сообщениями SYNC у нас есть время для отправки сообщения R_PDO. Его структура должна задаваться каждый раз при инициализации с помощью R_PDO mapping. Т.е. по простому в него нужно запихнуть обьект - текущее состояние привода и обьект - целевое положение. В моём случае это 2 байта и 4 байта, при этом два крайних остаются свободными. Псоле получения R_PDO сервопривод ожидает следующего сообщения SYNC, и только после него выполняет задание - меняет состояние либо движется в новую позицию. Также после SYNC сервопривод отправляем обратно то, что с помощью T_PDO mapping запихнули в сообщение T_PDO. В моём случае это текущее состояние и текущую позицию.

На сегодня у меня есть заготовка плагина к Mach3 взятая из темы, на которую я давал ссылку. В исходниках я немного разобрался и ададптировал его к своим требованиям. Добавил функцию отправки комманд JOG, HOME и RESET при нажатии на соответственные кнопки в mach3. Осталось добавить в плагин функцию приёма текущих координат и состояния каждой оси с контроллера. И примитивный переключатель режимов PROGRAM_RUN - JOG - HOME. Это минимум функционала, который мне нужен.

Пришлось отдельно сколхозить RS232-UART адаптер, т.к. USB-UART генерирует очень большие задержки, собственно как и писали об этом выше. По-прежнему эксперименты ставлю над одним приводом и одним мотором. Сейчас мотор умеет крутится по программе из Mach3. Realtime реализован на контроллере. При этом интервала сервоцикла 10ms более чем достаточно для приёма данных через serial port и отправки 8 байт сообшения обратно. Пока что это сообщение содержит только запрос на новую порцию данных. В будущем оно будет содержать состояние одной координаты и текущую позицию для отображения в Mach3. Теоретически пропускная способность rs232 на скорости 115200 - 1152 бита за 10 ms, или 144 байта. Даже с учётом всех служебных бит этого более чем достаточно, т.к. в моём случае контроллеру нужно успеть за 10 ms принять 4 байта и отправить 8 байт. При том, что 4 байта пишутся в буфер, а 8 байт можно передавать не каждые 10 ms. Всё можно свести к тому что за 20 ms нужно передать 8 байт и принять столько-же. Неизвестно как себя будет вести линк RS232 на предмет потери байт или помех. У меня на одном из станков программы грузятся на скорости 9600 через 3-х проводной кабель длиной около 10 м, проходящий рядом с силовый 3-х фазным. За 2 года ошибок не было. В этом же случае кабель будет около 1 метра в экране.
Yevhen_k
Новичок
Сообщения: 22
Зарегистрирован: 21 май 2014, 19:43
Репутация: 3
Контактная информация:

Re: Нужно подружить Schneider Electric LXM32A с компьютером

Сообщение Yevhen_k »

UAVpilot писал(а):
N1X писал(а):Но он и доставку не гарантирует же вроде? (чето-помню о сетях, но весьма слабо)
tcp тоже не гарантирует. :)
TCP для того и придуман, чтобы гарантировать целостность данных. Не вводите людей в заблуждение.

Из Википедии:
Механизм TCP предоставляет поток данных с предварительной установкой соединения, осуществляет повторный запрос данных в случае потери данных и устраняет дублирование при получении двух копий одного пакета, гарантируя тем самым, в отличие от UDP, целостность передаваемых данных и уведомление отправителя о результатах передачи.
Yevhen_k
Новичок
Сообщения: 22
Зарегистрирован: 21 май 2014, 19:43
Репутация: 3
Контактная информация:

Re: Нужно подружить Schneider Electric LXM32A с компьютером

Сообщение Yevhen_k »

Schneider Lexium 32a сами по себе очень продуманные железки. Чем больше узнаю их функционал, тем больше убеждаюсь в этом. Если понять принцип протокола CANOpen, то общаться с ними по этому протоколу не сложно.
Некоторые вещи конечно в мануале не описаны и пришлось разбираться в них самому либо копать спецификации CANOpen. Но в целом управление более функциональное, чем STEP-DIR.
aftaev
Зачётный участник
Зачётный участник
Сообщения: 34042
Зарегистрирован: 04 апр 2010, 19:22
Репутация: 6191
Откуда: Казахстан.
Контактная информация:

Re: Нужно подружить Schneider Electric LXM32A с компьютером

Сообщение aftaev »

Yevhen_k писал(а): Но в целом управление более функциональное, чем STEP-DIR.
Например?
Дилетанту сложные вещи кажутся очень простыми, и только профессионал понимает насколько сложна самая простая вещь
Кто хочет - ищет возможности, кто не хочет - ищет оправдание.
Найди работу по душе и тебе не придется работать.
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5181
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: Нужно подружить Schneider Electric LXM32A с компьютером

Сообщение Serg »

Yevhen_k писал(а):TCP для того и придуман, чтобы гарантировать целостность данных. Не вводите людей в заблуждение.
Попробуйте осознать разницу между гарантией доставки и гарантией целостности данных - это совсем разные вещи.
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Duhas
Мастер
Сообщения: 1949
Зарегистрирован: 10 окт 2015, 23:25
Репутация: 284
Настоящее имя: Андрей
Откуда: Красноярск
Контактная информация:

Re: Нужно подружить Schneider Electric LXM32A с компьютером

Сообщение Duhas »

гарантия доставки в купе с контрольными суммами вполне должна обеспечивать целостность.
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5181
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: Нужно подружить Schneider Electric LXM32A с компьютером

Сообщение Serg »

Duhas писал(а):гарантия доставки в купе с контрольными суммами вполне должна обеспечивать целостность.
Ещё один... :lol:
Так гарантии доставки ж нет... Вывалится кабель из порта - никакие контрольные суммы не помогут. :)
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Duhas
Мастер
Сообщения: 1949
Зарегистрирован: 10 окт 2015, 23:25
Репутация: 284
Настоящее имя: Андрей
Откуда: Красноярск
Контактная информация:

Re: Нужно подружить Schneider Electric LXM32A с компьютером

Сообщение Duhas »

а может привод уже испарило атомным взрывом и доставлять в принципе некому, тогда не существует доставки как таковой, не говоря уже о ее гарантии. не словоблудьте, сударь. я думаю мы с вами оба прекрасно понимаем о чем говорим.
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5181
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: Нужно подружить Schneider Electric LXM32A с компьютером

Сообщение Serg »

Так я об этом ещё в #46 написал!
Но тут повылезали словоблуды, обвиняющие меня в словоблудии и не различающие гарантию доставки и целостность данных... ;)
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Yevhen_k
Новичок
Сообщения: 22
Зарегистрирован: 21 май 2014, 19:43
Репутация: 3
Контактная информация:

Re: Нужно подружить Schneider Electric LXM32A с компьютером

Сообщение Yevhen_k »

aftaev писал(а):
Yevhen_k писал(а): Но в целом управление более функциональное, чем STEP-DIR.
Например?
Например - не нужно изобретать алгоритмы хоуминга, они уже есть. Причём несколько штук.
Ещё очень просто забрать текущие координаты из привода. При step-dir это сложнее.
Концевые и estop уже реализованы на приводах.
Не нужен lpt порт и реалтайм на компьютере.
Ну и самый важный плюс - заставляет шевелить мозгами, разбираться с c++, протоколами, байтами и т.д.
Yevhen_k
Новичок
Сообщения: 22
Зарегистрирован: 21 май 2014, 19:43
Репутация: 3
Контактная информация:

Re: Нужно подружить Schneider Electric LXM32A с компьютером

Сообщение Yevhen_k »

UAVpilot писал(а):
Duhas писал(а):гарантия доставки в купе с контрольными суммами вполне должна обеспечивать целостность.
Ещё один... :lol:
Так гарантии доставки ж нет... Вывалится кабель из порта - никакие контрольные суммы не помогут. :)
В этом случае гарантия доставки может быть только в сказочном мире с единорогами. Если вывалился кабель или ядерная война, то ни один протокол вам не доставит сообщение.
Другое дела что CANopen предусматривает двухстороннее общение. Отправили приводу комманду ехать, он ответил- Ок, еду. Если не ответил, значит увы, связи нет. Главное чтобы комманда ехать не превратилась по дороге в комманду немедленного самоуничтожения или что-то подобное. От таких случаев и спасает TCP. А UDP пофиг, он может и испорченным телефоном быть.
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5181
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: Нужно подружить Schneider Electric LXM32A с компьютером

Сообщение Serg »

Yevhen_k писал(а):В этом случае гарантия доставки может быть только в сказочном мире с единорогами. Если вывалился кабель или ядерная война, то ни один протокол вам не доставит сообщение.
Я так и не понял - вы согласны с #46 или мы продолжаем спор?.. :hehehe:
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Yevhen_k
Новичок
Сообщения: 22
Зарегистрирован: 21 май 2014, 19:43
Репутация: 3
Контактная информация:

Re: Нужно подружить Schneider Electric LXM32A с компьютером

Сообщение Yevhen_k »

Привода всё-таки заработали, только уже в другом городе на другом станке.
Производство переехало на новое место, где был собран новый станок с схожими характеристиками -
X - 6500 mm
Y - 2500 mm
Z - 2000 mm
Станком по-прежнему управляем mach3 с самописным плагином, который передаёт по com порту данные в Arduino Mega, где уже непосредственно идёт общение с приводами через Can bus shield. За основу был взят тот же плагин, только переписанный под работу с com портом в асинхронном режиме. Прошивка на arduino была написана с нуля.
https://www.youtube.com/watch?v=hweHLsHyuog

Постараюсь привести код прошивки и плагина в читабельный вид и выложить на Github
Ответить

Вернуться в «Электроника»