Вот только с реалтаймом у TCP/IP не то чтобы проблемы, у него с ним никак... Пакет может прийти когда ему вздумается.MX_Master писал(а):что пришло по протоколу TCP/IP, то сразу отправляется на все доступные выходы по протоколу CAN.
Нужно подружить Schneider Electric LXM32A с компьютером
- N1X
- Мастер
- Сообщения: 3653
- Зарегистрирован: 16 фев 2015, 21:19
- Репутация: 1645
- Настоящее имя: Владимир
- Откуда: Беларусь, Гомель
- Контактная информация:
Re: Нужно подружить Schneider Electric LXM32A с компьютером
- Serg
- Мастер
- Сообщения: 21923
- Зарегистрирован: 17 апр 2012, 14:58
- Репутация: 5181
- Заслуга: c781c134843e0c1a3de9
- Настоящее имя: Сергей
- Откуда: Москва
- Контактная информация:
Re: Нужно подружить Schneider Electric LXM32A с компьютером
У CAN-адаптеров не так всё просто...MX_Master писал(а):что пришло по протоколу TCP/IP, то сразу отправляется на все доступные выходы по протоколу CAN.
с реалтаймом проблемы у tcp, у udp проблем с реалтаймом нет.N1X писал(а):Вот только с реалтаймом у TCP/IP не то чтобы проблемы, у него с ним никак... Пакет может прийти когда ему вздумается.
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
- MX_Master
- Мастер
- Сообщения: 7478
- Зарегистрирован: 27 июн 2015, 19:45
- Репутация: 3099
- Настоящее имя: Михаил
- Откуда: Алматы
- Контактная информация:
Re: Нужно подружить Schneider Electric LXM32A с компьютером
Я только одно не понимаю, в чём же плюс реалтайма с ПК в CAN сеть? А если комп задумается о чём-то? Буфер обязателен! И он должет быть либо в каком-то контроллере, либо в самом устройстве. И как я понял, в устройстве такая возможность есть. Поэтому TCP/IP тоже пригоден, не говоря уже о UDP, как было сказано выше.
- Serg
- Мастер
- Сообщения: 21923
- Зарегистрирован: 17 апр 2012, 14:58
- Репутация: 5181
- Заслуга: c781c134843e0c1a3de9
- Настоящее имя: Сергей
- Откуда: Москва
- Контактная информация:
Re: Нужно подружить Schneider Electric LXM32A с компьютером
Если комп может задуматься, то это не реалтайм комп.MX_Master писал(а):А если комп задумается о чём-то?
Комп даёт команду "ехать туда-то" и начинает ждать срабатывания датчика касания. Незадолго до срабатывания датчика комп вдруг "задумывается" и пока "думает" не может получить сигнал от датчика. Чем тут пожет буфер?MX_Master писал(а):Буфер обязателен!
"На автомобилях можно ездить, не говоря уже о Мерседесах".MX_Master писал(а):Поэтому TCP/IP тоже пригоден, не говоря уже о UDP, как было сказано выше.
TCP/IP - набор сетевых протоколов для инета. UDP - один из протоколов этого набора.
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
- N1X
- Мастер
- Сообщения: 3653
- Зарегистрирован: 16 фев 2015, 21:19
- Репутация: 1645
- Настоящее имя: Владимир
- Откуда: Беларусь, Гомель
- Контактная информация:
Re: Нужно подружить Schneider Electric LXM32A с компьютером
Но он и доставку не гарантирует же вроде? (чето-помню о сетях, но весьма слабо)UAVpilot писал(а):у udp проблем с реалтаймом нет
Не плюс, а необходимость. Если НУЖНО использовать комп как контроллер - то он должен работать в реалтайме. Т.к. контроллер ЧПУ есть реалтайм система. Реалтайм не нужен в одном случае: комп тупо клиент, а функции ЧПУ выполняет внешний контроллер.MX_Master писал(а):Я только одно не понимаю, в чём же плюс реалтайма с ПК в CAN сеть? А если комп задумается о чём-то?
- Serg
- Мастер
- Сообщения: 21923
- Зарегистрирован: 17 апр 2012, 14:58
- Репутация: 5181
- Заслуга: c781c134843e0c1a3de9
- Настоящее имя: Сергей
- Откуда: Москва
- Контактная информация:
Re: Нужно подружить Schneider Electric LXM32A с компьютером
tcp тоже не гарантирует.N1X писал(а):Но он и доставку не гарантирует же вроде? (чето-помню о сетях, но весьма слабо)
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
- N1X
- Мастер
- Сообщения: 3653
- Зарегистрирован: 16 фев 2015, 21:19
- Репутация: 1645
- Настоящее имя: Владимир
- Откуда: Беларусь, Гомель
- Контактная информация:
Re: Нужно подружить Schneider Electric LXM32A с компьютером
Ясно, нужно читать на досугеUAVpilot писал(а):tcp тоже не гарантирует.
-
- Новичок
- Сообщения: 22
- Зарегистрирован: 21 май 2014, 19:43
- Репутация: 3
- Контактная информация:
Re: Нужно подружить Schneider Electric LXM32A с компьютером
Реалтайм в шине CAN нужен, если управление реализовано через сервоцикл. В мануалах это называется - "Profile interlopated position". Сервоцикл работает так - через равные промежутки времени нужно отправлять сообщение SYNC. Оно имеет фиксированный COB ID (80h) и состоит из нулей. Временной интервал сервоцикла или время между сообщениями SYNC задаётся отдельным параметром - от 2 до 20ms. Также задаётся точность сервоцикла - это отклонение времени передачи сообщения SYNC от заданного. Т.е. можно задать интервал 10ms +-1ms, как пример. Если в этом промежутке сервопривод не получил SYNC, то он выдаёт ошибку и отключает питание мотора. SYNC принимается всеми устройствами, подключенными к шине.MX_Master писал(а):Я только одно не понимаю, в чём же плюс реалтайма с ПК в CAN сеть? А если комп задумается о чём-то? Буфер обязателен! И он должет быть либо в каком-то контроллере, либо в самом устройстве. И как я понял, в устройстве такая возможность есть. Поэтому TCP/IP тоже пригоден, не говоря уже о UDP, как было сказано выше.
Далее между сообщениями 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 метра в экране.
-
- Новичок
- Сообщения: 22
- Зарегистрирован: 21 май 2014, 19:43
- Репутация: 3
- Контактная информация:
Re: Нужно подружить Schneider Electric LXM32A с компьютером
TCP для того и придуман, чтобы гарантировать целостность данных. Не вводите людей в заблуждение.UAVpilot писал(а):tcp тоже не гарантирует.N1X писал(а):Но он и доставку не гарантирует же вроде? (чето-помню о сетях, но весьма слабо)
Из Википедии:
Механизм TCP предоставляет поток данных с предварительной установкой соединения, осуществляет повторный запрос данных в случае потери данных и устраняет дублирование при получении двух копий одного пакета, гарантируя тем самым, в отличие от UDP, целостность передаваемых данных и уведомление отправителя о результатах передачи.
-
- Новичок
- Сообщения: 22
- Зарегистрирован: 21 май 2014, 19:43
- Репутация: 3
- Контактная информация:
Re: Нужно подружить Schneider Electric LXM32A с компьютером
Schneider Lexium 32a сами по себе очень продуманные железки. Чем больше узнаю их функционал, тем больше убеждаюсь в этом. Если понять принцип протокола CANOpen, то общаться с ними по этому протоколу не сложно.
Некоторые вещи конечно в мануале не описаны и пришлось разбираться в них самому либо копать спецификации CANOpen. Но в целом управление более функциональное, чем STEP-DIR.
Некоторые вещи конечно в мануале не описаны и пришлось разбираться в них самому либо копать спецификации CANOpen. Но в целом управление более функциональное, чем STEP-DIR.
-
- Зачётный участник
- Сообщения: 34042
- Зарегистрирован: 04 апр 2010, 19:22
- Репутация: 6192
- Откуда: Казахстан.
- Контактная информация:
Re: Нужно подружить Schneider Electric LXM32A с компьютером
Например?Yevhen_k писал(а): Но в целом управление более функциональное, чем STEP-DIR.
Дилетанту сложные вещи кажутся очень простыми, и только профессионал понимает насколько сложна самая простая вещь
Кто хочет - ищет возможности, кто не хочет - ищет оправдание.
Найди работу по душе и тебе не придется работать.
Кто хочет - ищет возможности, кто не хочет - ищет оправдание.
Найди работу по душе и тебе не придется работать.
- Serg
- Мастер
- Сообщения: 21923
- Зарегистрирован: 17 апр 2012, 14:58
- Репутация: 5181
- Заслуга: c781c134843e0c1a3de9
- Настоящее имя: Сергей
- Откуда: Москва
- Контактная информация:
Re: Нужно подружить Schneider Electric LXM32A с компьютером
Попробуйте осознать разницу между гарантией доставки и гарантией целостности данных - это совсем разные вещи.Yevhen_k писал(а):TCP для того и придуман, чтобы гарантировать целостность данных. Не вводите людей в заблуждение.
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
-
- Мастер
- Сообщения: 1950
- Зарегистрирован: 10 окт 2015, 23:25
- Репутация: 284
- Настоящее имя: Андрей
- Откуда: Красноярск
- Контактная информация:
Re: Нужно подружить Schneider Electric LXM32A с компьютером
гарантия доставки в купе с контрольными суммами вполне должна обеспечивать целостность.
- Serg
- Мастер
- Сообщения: 21923
- Зарегистрирован: 17 апр 2012, 14:58
- Репутация: 5181
- Заслуга: c781c134843e0c1a3de9
- Настоящее имя: Сергей
- Откуда: Москва
- Контактная информация:
Re: Нужно подружить Schneider Electric LXM32A с компьютером
Ещё один...Duhas писал(а):гарантия доставки в купе с контрольными суммами вполне должна обеспечивать целостность.
Так гарантии доставки ж нет... Вывалится кабель из порта - никакие контрольные суммы не помогут.
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
-
- Мастер
- Сообщения: 1950
- Зарегистрирован: 10 окт 2015, 23:25
- Репутация: 284
- Настоящее имя: Андрей
- Откуда: Красноярск
- Контактная информация:
Re: Нужно подружить Schneider Electric LXM32A с компьютером
а может привод уже испарило атомным взрывом и доставлять в принципе некому, тогда не существует доставки как таковой, не говоря уже о ее гарантии. не словоблудьте, сударь. я думаю мы с вами оба прекрасно понимаем о чем говорим.
- Serg
- Мастер
- Сообщения: 21923
- Зарегистрирован: 17 апр 2012, 14:58
- Репутация: 5181
- Заслуга: c781c134843e0c1a3de9
- Настоящее имя: Сергей
- Откуда: Москва
- Контактная информация:
Re: Нужно подружить Schneider Electric LXM32A с компьютером
Так я об этом ещё в #46 написал!
Но тут повылезали словоблуды, обвиняющие меня в словоблудии и не различающие гарантию доставки и целостность данных...
Но тут повылезали словоблуды, обвиняющие меня в словоблудии и не различающие гарантию доставки и целостность данных...
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
-
- Новичок
- Сообщения: 22
- Зарегистрирован: 21 май 2014, 19:43
- Репутация: 3
- Контактная информация:
Re: Нужно подружить Schneider Electric LXM32A с компьютером
Например - не нужно изобретать алгоритмы хоуминга, они уже есть. Причём несколько штук.aftaev писал(а):Например?Yevhen_k писал(а): Но в целом управление более функциональное, чем STEP-DIR.
Ещё очень просто забрать текущие координаты из привода. При step-dir это сложнее.
Концевые и estop уже реализованы на приводах.
Не нужен lpt порт и реалтайм на компьютере.
Ну и самый важный плюс - заставляет шевелить мозгами, разбираться с c++, протоколами, байтами и т.д.
-
- Новичок
- Сообщения: 22
- Зарегистрирован: 21 май 2014, 19:43
- Репутация: 3
- Контактная информация:
Re: Нужно подружить Schneider Electric LXM32A с компьютером
В этом случае гарантия доставки может быть только в сказочном мире с единорогами. Если вывалился кабель или ядерная война, то ни один протокол вам не доставит сообщение.UAVpilot писал(а):Ещё один...Duhas писал(а):гарантия доставки в купе с контрольными суммами вполне должна обеспечивать целостность.
Так гарантии доставки ж нет... Вывалится кабель из порта - никакие контрольные суммы не помогут.
Другое дела что CANopen предусматривает двухстороннее общение. Отправили приводу комманду ехать, он ответил- Ок, еду. Если не ответил, значит увы, связи нет. Главное чтобы комманда ехать не превратилась по дороге в комманду немедленного самоуничтожения или что-то подобное. От таких случаев и спасает TCP. А UDP пофиг, он может и испорченным телефоном быть.
- Serg
- Мастер
- Сообщения: 21923
- Зарегистрирован: 17 апр 2012, 14:58
- Репутация: 5181
- Заслуга: c781c134843e0c1a3de9
- Настоящее имя: Сергей
- Откуда: Москва
- Контактная информация:
Re: Нужно подружить Schneider Electric LXM32A с компьютером
Я так и не понял - вы согласны с #46 или мы продолжаем спор?..Yevhen_k писал(а):В этом случае гарантия доставки может быть только в сказочном мире с единорогами. Если вывалился кабель или ядерная война, то ни один протокол вам не доставит сообщение.
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
-
- Новичок
- Сообщения: 22
- Зарегистрирован: 21 май 2014, 19:43
- Репутация: 3
- Контактная информация:
Re: Нужно подружить Schneider Electric LXM32A с компьютером
Привода всё-таки заработали, только уже в другом городе на другом станке.
Производство переехало на новое место, где был собран новый станок с схожими характеристиками -
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
Производство переехало на новое место, где был собран новый станок с схожими характеристиками -
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