Java и CANopen
Фон
Я должен создать программу Java на ноутбуке, чтобы получать / отправлять сообщения CANopen.
RJ45 выбран в качестве физического носителя сети. Я новичок в программировании CANopen и Java.
Простите меня, если я кажусь непосвященным. Правда в том, что я много читаю, но до сих пор не знаю, с чего начать.
Вопросы
- Помимо подключения ПК к сети CANbus, что еще делает адаптер CAN-PC?
- Можно ли подключить ноутбук к сети CANbus без адаптера CAN-PC?
- Если требуется адаптер CAN-PC, какой тип адаптера мне следует использовать? PCMCIA, параллельный, последовательный, usb и т. Д.?
- Как начать писать Java-программу для прослушивания / записи сообщений CANopen?
- Какие библиотеки я должен использовать?
- Нужно ли создавать свои собственные драйверы?
- Должна ли моя программа обрабатывать мониторинг сердцебиения, обнаружение ошибок и т. Д.? Или об этом заботится адаптер CAN-PC?
- Как получить конкретную информацию с узла CANbus?
- Как создается файл EDS и словарь объектов? Каждый узел требует их?
- Как мне симулировать сеть CAN для тестирования моей программы на Java без покупки оборудования CAN?
1 ответ
Это много вопросов. Я никогда не занимался программированием, связанным с CAN, на Java, но давайте посмотрим, на какие вопросы я мог бы ответить в любом случае:
1) Помимо подключения ПК к сети CANbus, что еще делает адаптер CAN-PC?
Это зависит главным образом от того, какой контроллер CAN встроен в ваш адаптер. Но в основном он просто обрабатывает низкоуровневые вещи, такие как шинный арбитраж, обработка ошибок, повторные передачи и буферизация сообщений.
2) Возможно ли подключить ноутбук к сети CANbus без адаптера CAN-PC?
Нет.
3) Если требуется адаптер CAN-PC, какой тип адаптера мне следует использовать? PCMCIA, параллельный, последовательный, USB и т. Д.?
На ноутбуке? Я бы выбрал интерфейс USB. У меня есть хороший опыт работы с интерфейсами Kvaser.
4) Как начать писать Java-программу для прослушивания / записи сообщений CANopen?
Зависит от API для вашего адаптера. API, скорее всего, будет основан на C, поэтому я бы по крайней мере начал с некоторых простых программ для тестирования на C. У поставщика CAN-интерфейса, вероятно, есть несколько хороших примеров.
5) Какие библиотеки мне следует использовать?
Вероятно, тот, который поставляется с вашим CAN-интерфейсом, по крайней мере, для базовой части CAN. Для части CANopen есть несколько коммерческих стеков CANopen и, возможно, даже некоторые бесплатные. Я сомневаюсь, что есть какие-либо написанные на Java. Вы также можете реализовать необходимые части стека CANopen самостоятельно, если вы только делаете простую связь.
6) Нужно ли создавать свои собственные драйверы?
Вообще нет. Зависит от вашей операционной системы и модели CAN-интерфейса. Выберите интерфейс CAN с драйверами для вашей операционной системы.
7) Должна ли моя программа обрабатывать мониторинг сердцебиения / обнаружение ошибок и т. Д.? Или об этом заботится адаптер CAN-PC?
Стек CANopen должен обрабатывать это на уровне CANopen. Обработка ошибок шины CAN низкого уровня обеспечивается вашим интерфейсом.
8) Как получить конкретную информацию с узла CANbus?
Я не знаю, что вы имеете в виду здесь. PDO или SDO в зависимости от того, какую информацию вы хотите.
9) Как создается файл EDS и словарь объектов? Каждый узел требует их?
Обычно вам не нужно создавать файл EDS, но это может быть полезно для целей документирования. Объект-словарь реализован программно. Некоторые части OD являются обязательными, если они соответствуют стандартам.
10) Как мне симулировать сеть CAN для тестирования моей Java-программы без покупки оборудования CAN?
Я бы не стал... Разумный симулятор шины, вероятно, стоил бы дороже, чем просто купить адаптер CAN. Обратите внимание, что многие CAN-адаптеры содержат двойные интерфейсы, поэтому вы можете проводить тесты связи на реальной шине CAN с чуть большим количеством оборудования, чем просто адаптер и пара согласующих резисторов.