Arduino -> ModBus -> LCNC

Обсуждение установки, настройки и использования LinuxCNC. Вопросы по Gкоду.
aftaev
Зачётный участник
Зачётный участник
Сообщения: 34042
Зарегистрирован: 04 апр 2010, 19:22
Репутация: 6192
Откуда: Казахстан.
Контактная информация:

Re: Arduino -> ModBus -> LCNC

Сообщение aftaev »

nkp писал(а):в емс дуина работает через CL (ладдер)
через МодБас ?
Дилетанту сложные вещи кажутся очень простыми, и только профессионал понимает насколько сложна самая простая вещь
Кто хочет - ищет возможности, кто не хочет - ищет оправдание.
Найди работу по душе и тебе не придется работать.
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

Re: Arduino -> ModBus -> LCNC

Сообщение nkp »

ну да))
aftaev
Зачётный участник
Зачётный участник
Сообщения: 34042
Зарегистрирован: 04 апр 2010, 19:22
Репутация: 6192
Откуда: Казахстан.
Контактная информация:

Re: Arduino -> ModBus -> LCNC

Сообщение aftaev »

покаж картинку Ладдера как там регистры указываются :)
Дилетанту сложные вещи кажутся очень простыми, и только профессионал понимает насколько сложна самая простая вещь
Кто хочет - ищет возможности, кто не хочет - ищет оправдание.
Найди работу по душе и тебе не придется работать.
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

Re: Arduino -> ModBus -> LCNC

Сообщение nkp »

у меня в дуине порт /dev/ttyACM0
если ты хочешь попробовать ладдер - напиши "свой" порт - я тебе настроенный ладдер кину...
aftaev
Зачётный участник
Зачётный участник
Сообщения: 34042
Зарегистрирован: 04 апр 2010, 19:22
Репутация: 6192
Откуда: Казахстан.
Контактная информация:

Re: Arduino -> ModBus -> LCNC

Сообщение aftaev »

хочу картинку посмотреть как выглядит этот ладдер :)
Дилетанту сложные вещи кажутся очень простыми, и только профессионал понимает насколько сложна самая простая вещь
Кто хочет - ищет возможности, кто не хочет - ищет оправдание.
Найди работу по душе и тебе не придется работать.
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

Re: Arduino -> ModBus -> LCNC

Сообщение nkp »

Выделение_031.png (4155 просмотров) <a class='original' href='./download/file.php?id=19982&sid=a20d5331e44c92f20e8dcd3b03c88f8a&mode=view' target=_blank>Загрузить оригинал (204.85 КБ)</a>
вот , но :wik: :thinking:
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

Re: Arduino -> ModBus -> LCNC

Сообщение nkp »

вот ,думаю :
в чем разница - с одним устройством работает , с другим нет...
1. мастер команды отсылает правильно (иначе ничего бы не работало))
2. мастер ответы от slave получает и обрабатывает правильно (опять же -если бы нет - то ошибка)
остаются только таймауты - какие в платке с реле нам не узнать (хотя там было где то описание),
а вот с ардуиной все прозрачно в этом отношении...
зы
таймауты ожидания ответа
aftaev
Зачётный участник
Зачётный участник
Сообщения: 34042
Зарегистрирован: 04 апр 2010, 19:22
Репутация: 6192
Откуда: Казахстан.
Контактная информация:

Re: Arduino -> ModBus -> LCNC

Сообщение aftaev »

если в ладдере все работает то от туды выдрать настройки для ардуины :)
Дилетанту сложные вещи кажутся очень простыми, и только профессионал понимает насколько сложна самая простая вещь
Кто хочет - ищет возможности, кто не хочет - ищет оправдание.
Найди работу по душе и тебе не придется работать.
Аватара пользователя
solo
Мастер
Сообщения: 1374
Зарегистрирован: 20 окт 2011, 18:39
Репутация: 272
Настоящее имя: Юрий Соловьев
Откуда: Украина Харьков
Контактная информация:

Re: Arduino -> ModBus -> LCNC

Сообщение solo »

извиняюсь за то что не в тему но может кому то будет полезными ссылка, про ардуино ЧПУ под винду
http://www.engineeringforless.com/grbl_controller.html
https://www.youtube.com/watch?v=e0A9BLPatVY
еще раз извиняюсь если сильно помешал
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

Re: Arduino -> ModBus -> LCNC

Сообщение nkp »

направление поиска причины загвоздки оказались правильными ;)
но если бы не тормозить , то все нашлось бы оперативней - в скрипте встроена идентификация ошибки кодом :freak:
(для просмотра содержимого нажмите на ссылку)

Код: Выделить всё

/* Protocol exceptions */
#define ILLEGAL_FUNCTION        -0x01
#define ILLEGAL_DATA_ADDRESS    -0x02
#define ILLEGAL_DATA_VALUE      -0x03
#define SLAVE_DEVICE_FAILURE    -0x04
#define SERVER_FAILURE          -0x04
#define ACKNOWLEDGE             -0x05
#define SLAVE_DEVICE_BUSY       -0x06
#define SERVER_BUSY             -0x06
#define NEGATIVE_ACKNOWLEDGE    -0x07
#define MEMORY_PARITY_ERROR     -0x08
#define GATEWAY_PROBLEM_PATH    -0x0A
#define GATEWAY_PROBLEM_TARGET  -0x0B

/* Local */
#define COMM_TIME_OUT           -0x0C
#define PORT_SOCKET_FAILURE     -0x0D
#define SELECT_FAILURE          -0x0E
#define TOO_MANY_DATAS          -0x0F
#define INVALID_CRC             -0x10
#define INVALID_EXCEPTION_CODE  -0x11
увеличил таймаут в два раза - и все ожило))
но вот как правильно выставить его (таймаут) - еще вопрос открытый...
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

Re: Arduino -> ModBus -> LCNC

Сообщение nkp »

в ардуине по идее должны подтягиваться аналоговые входы :
http://arduino.ru/Tutorial/AnalogInputPins
(для просмотра содержимого нажмите на ссылку)

Код: Выделить всё

Подтягивающие резисторы

Выводы аналоговые входов имеют подтягивающие резисторы работающие как на цифровых выводах. Включение резисторов производится командой

digitalWrite(14, HIGH); // включить резистор на выводе аналогового входа 0

пока вывод работает как порт ввода.

Подключение резистора повлияет на величину сообщаемую функцией analogRead() при использовании некоторых датчиков. Большинство пользователей использует подтягивающий резистор при применении вывода аналогового входа в его цифровом режиме.
и вроде бы код соответствующий есть:
(для просмотра содержимого нажмите на ссылку)

Код: Выделить всё

 for(int Bit = 0; Bit < 16; Bit++)                  // Cycle throuh all Analog pins
  {
    if(bitRead(Register[ANIOMap_Register],Bit)==0)   // If I/O Pin
    {
      if(Bit == 0)                                   // If Output
      {
        pinMode(A0,~bitRead(Register[IO_Config_Register+4],Bit));      // Set Pin Mode to Input or Output
        digitalWrite(A0,bitRead(Register[IO_Config_Register+4],Bit));  // Turns on Internal Pull-Up Resistor if Input
      }
      if(Bit == 1)
      {
        pinMode(A1,~bitRead(Register[IO_Config_Register+4],Bit));
        digitalWrite(A1,bitRead(Register[IO_Config_Register+4],Bit));
      }
      if(Bit == 2)
      {
        pinMode(A2,~bitRead(Register[IO_Config_Register+4],Bit));
        digitalWrite(A2,bitRead(Register[IO_Config_Register+4],Bit));
но вот значения пинов неприсоедененных входов меняются произвольно ...
разве с подтяжкой такое возможно??
aftaev
Зачётный участник
Зачётный участник
Сообщения: 34042
Зарегистрирован: 04 апр 2010, 19:22
Репутация: 6192
Откуда: Казахстан.
Контактная информация:

Re: Arduino -> ModBus -> LCNC

Сообщение aftaev »

nkp писал(а):разве с подтяжкой такое возможно??
у меня тоже прыгали и разбирался с digitalWrite, потом взял и припаял резисторы в наглую :)
Дилетанту сложные вещи кажутся очень простыми, и только профессионал понимает насколько сложна самая простая вещь
Кто хочет - ищет возможности, кто не хочет - ищет оправдание.
Найди работу по душе и тебе не придется работать.
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

Re: Arduino -> ModBus -> LCNC

Сообщение nkp »

вот вариант для попробовать Arduino -> ModBus -> LCNC ...
сразу несколько слов о скрипте приводимом выше:
(для просмотра содержимого нажмите на ссылку)

Код: Выделить всё

void setup() {
  Serial.begin(9600);
}

void loop() {
  for(int i=0; i<6; i++) {
    uint16_t v = analogRead(i) | (i << 10); //добавляем идентификатор номера регистра
    Serial.print((v >> 7) | 0x80, BYTE); // выделяем идентификатор и первые 3 бита значения
    Serial.print(v & 0x7f, BYTE);  //выделяем последние 7 бит значения
  }
}
Nick писал(а):А зачем modbus???
скрипт не проверяет полученые данные - а потому и вероятность ошибки больше,а ошибка тут наподобие - включили не то реле(со всеми вытекающими)
у mdbus несколько видов контроля ошибок (crc,контроль четности , таймауты)...
========================
плата arduino Mega , прошивка :
Arduino.rar
(9.13 КБ) 645 скачиваний
Arduino IDE 1.5.4
убунту 10.04 Linuxcnc 2.6 RIP
------------------
сам скрипт:
gs2_vfd.c
(16 КБ) 1177 скачиваний
заменяем ним оригинальный в папка_с_lcnc/src/hal/user_comps
в терминале :
cd папка_с_lcnc/src
make
-----------------------------
конфиг :
Sherline4.rar
(7.19 КБ) 573 скачивания
ложим в папка_с_lcnc/src/configs
запускаем с подключенной платкой)
должна быть такая панелька: а на платке должны активно моргать леды приема-передачи
Последний раз редактировалось nkp 29 окт 2013, 13:53, всего редактировалось 1 раз.
aftaev
Зачётный участник
Зачётный участник
Сообщения: 34042
Зарегистрирован: 04 апр 2010, 19:22
Репутация: 6192
Откуда: Казахстан.
Контактная информация:

Re: Arduino -> ModBus -> LCNC

Сообщение aftaev »

nkp писал(а):включили не то реле(со всеми вытекающими)
:hehehe:
Дилетанту сложные вещи кажутся очень простыми, и только профессионал понимает насколько сложна самая простая вещь
Кто хочет - ищет возможности, кто не хочет - ищет оправдание.
Найди работу по душе и тебе не придется работать.
Аватара пользователя
NightV
Почётный участник
Почётный участник
Сообщения: 6599
Зарегистрирован: 30 дек 2011, 09:14
Репутация: 2279
Настоящее имя: Владимир Айрапетян
Откуда: Israel
Контактная информация:

Re: Arduino -> ModBus -> LCNC

Сообщение NightV »

ТУТ наткнулся на интересную плату, только не нашел какой протокол у нее
Всё просто! если знаешь КАК!
Baha
Мастер
Сообщения: 605
Зарегистрирован: 29 сен 2008, 17:37
Репутация: 26
Откуда: Тараз-Москва

Re: Arduino -> ModBus -> LCNC

Сообщение Baha »

NightV писал(а):ТУТ наткнулся на интересную плату, только не нашел какой протокол у нее
в название же написано, RS232 RS485, да и по разъемам можно предположить что это похоже на нее.
Сферический ватник в вакууме.
Аватара пользователя
NightV
Почётный участник
Почётный участник
Сообщения: 6599
Зарегистрирован: 30 дек 2011, 09:14
Репутация: 2279
Настоящее имя: Владимир Айрапетян
Откуда: Israel
Контактная информация:

Re: Arduino -> ModBus -> LCNC

Сообщение NightV »

Baha писал(а):в название же написано, RS232 RS485, да и по разъемам можно предположить что это похоже на нее.
ты в курсе какой зоопарк протоколов которые можно пропихнуть через RS232 RS485 ?
Всё просто! если знаешь КАК!
Baha
Мастер
Сообщения: 605
Зарегистрирован: 29 сен 2008, 17:37
Репутация: 26
Откуда: Тараз-Москва

Re: Arduino -> ModBus -> LCNC

Сообщение Baha »

NightV писал(а):ты в курсе какой зоопарк протоколов которые можно пропихнуть через RS232 RS485 ?
RS232 и RS485 это и есть протоколы, если ты под словом "через" подразумеваешь тип разъема, основной тип разъема под этот протокол называется D-sub, и его там на плате нет. На плате разъем 3-мя концами, как я думаю это TX, RX и земля, или А, В и земля. В той же ссылке где ты дал написано, the support 232 and 485 two forms of communication .
Сферический ватник в вакууме.
Аватара пользователя
NightV
Почётный участник
Почётный участник
Сообщения: 6599
Зарегистрирован: 30 дек 2011, 09:14
Репутация: 2279
Настоящее имя: Владимир Айрапетян
Откуда: Israel
Контактная информация:

Re: Arduino -> ModBus -> LCNC

Сообщение NightV »

Baha писал(а):RS232 и RS485 это и есть протоколы
'а слова:
MODBUS
CAN
ProfiBUS
и т. д.
тебе о чем-то говорят? и все это через RS232 и RS485
Всё просто! если знаешь КАК!
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5181
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: Arduino -> ModBus -> LCNC

Сообщение Serg »

Baha - великий мастер передёргиваний.
Или только он не осилил сообразить, что тут все говорят про протокол управления, описывающий такие команды как "включить реле №5".
А то, что эта плата использует в качестве протокола физической среды передачи RS232 и RS485 все тут заметили самостоятельно.
Baha писал(а):основной тип разъема под этот протокол называется D-sub, и его там на плате нет.
Стандарты на RS232 и RS485 не регламентируют тип разъёмов. Однако на плате всётаки имеется разъём D-sub для RS232.
Baha писал(а):На плате разъем 3-мя концами, как я думаю это TX, RX и земля.
И здесь "мимо тазика". На плате все разъёмы с тремя концами - это оконечные входы и выходы. А вот для RS485 есть два двухконтактных разъёма.
Почему их два и они двухконтактные и как промаркированы - пусть будет загадкой. :hehehe:
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Ответить

Вернуться в «LinuxCNC»