Arduino -> ModBus -> LCNC

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

Re: Arduino -> ModBus -> LCNC

Сообщение Serg »

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

Re: Arduino -> ModBus -> LCNC

Сообщение solo »

Чего то пока у меня не получается :D проверить скорость модбус
Скорее всего на входном пине ардуино включено сопротивление подтяжки к +5 и из за этого выходной пин не может переключить входной пин в ноль.
Я сам посмотрел скетч ардуино но тяму не хватило изменить, отключить подтяжку.

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

Re: Arduino -> ModBus -> LCNC

Сообщение nkp »

solo писал(а):вопрос касающийся Ж кода , можно в ж коде организовать условные переходы в выполнении Ж кода, по состоянию пина на ардуино .
в хал:
net signal-name motion.digital-in-00 <= arduino.Din1-16
G-код:

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

O<condition> sub
	O101 REPEAT [5]
	M66 P0 L0
	O<M66> IF [#5399 EQ 1]
		(MSG,Ok!!)
		G4 P4
	O<M66> ELSE
		(MSG,No!!)
		G4 P4
	O<M66> ENDIF
	O101 ENDREPEAT
O<condition> endsub

O<condition>call
M2
в зависимости от состояние пина 16 на ардуине ,мы выводим на экран разные слова...
Выделение_049.png (2223 просмотра) <a class='original' href='./download/file.php?id=25164&mode=view' target=_blank>Загрузить оригинал (125.57 КБ)</a>
вместо месседжей конечно пишем полезный код))
зы
по моему даже так работает:
O<M66> IF [#5399]
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

Re: Arduino -> ModBus -> LCNC

Сообщение nkp »

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

Re: Arduino -> ModBus -> LCNC

Сообщение solo »

nkp писал(а):написал бы O<condition> sub поконкретней
а че написать в принципе Вашей инфы Arduino -> ModBus -> LCNC #243
мне в принципа достаточно что бы самому написать Ж код (это я пока так думаю пока не попробовал написать :hehehe: я все таки :monkey: :hammer: програмист)
попытка проверки скорости модбус Arduino -> ModBus -> LCNC #240
но даже если Ж код заработает то надо немного подкорректировать скетч ардуино , нужно убрать подтяжку с входных пинов ардуино , а то если я ставлю перемычку между входом и выходом ардуино , то мощности выходного пина не хватает переключить входной пин в "0" , или надо поставить какой то усилитель на выход ардуино.
Мне просто на начальном этапе задумки реализации станка (производства пластиковых флакончиков ) надо понять можно ли будет по модбу управлять пневмоцилиндрами , (нужен дискретный сигнал длительность 0.6 , 3.5 , с точность +- 0.1 сек) почему я и хочу проверить стабильность работы модбу.
То есть на данном этапе мне надо понять модбус способен посылать стабильные импульсы или нет.
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

Re: Arduino -> ModBus -> LCNC

Сообщение nkp »

solo писал(а):(нужен дискретный сигнал длительность 0.6 , 3.5 , с точность +- 0.1 сек)
имхо - я бы не стал связываться с ардуиной (модбас) в таком вопросе...
не хотелось в итоге получить непредсказуемое устройство...
сразу бы работать в реалтайм и не думать о возможных сбоях из-за задержек...
solo писал(а):То есть на данном этапе мне надо понять модбус способен посылать стабильные импульсы или нет.
исключить usb,перейдя на Serial1, и попробовать с ладдером - но всё равно в реалтайм не влезем (скорей всего):
где то Сергей Саныч на пальцах это показал...
========
Аватара пользователя
solo
Мастер
Сообщения: 1374
Зарегистрирован: 20 окт 2011, 18:39
Репутация: 272
Настоящее имя: Юрий Соловьев
Откуда: Украина Харьков
Контактная информация:

Re: Arduino -> ModBus -> LCNC

Сообщение solo »

Я писал что у меня есть термопласт и в нем между компьтером управление и платой ввода вывод идет соединение по ком порту и скорее всего по модбус (светодиоды приема - передачи мигают постоянно) , там все работает в таком режиме очень хорошо и стабильно (импульсы с точность +- 0.1 сек посылает на гидравлику) по этому не все так безнадежно ИМХО
Сижу смотрю скетч ардуино , нужно консультация
раздел скетча void setup()
.....
//################ Kill IO Register ################# // 0 => Leave, 1 => Kill
Register[Kill_IO_Register] = 0b1111111111111111; // UNO and MEGA PIN 00-15
Register[Kill_IO_Register+1] = 0b1111111111111111; // MEGA PIN 16-31
Register[Kill_IO_Register+2] = 0b1111111111111111; // MEGA PIN 32-47
Register[Kill_IO_Register+3] = 0b1111111111111111; // MEGA PIN 48-64
Вот этот кусок скетча и включает подтягивающие сопротивления или как , или я что то не туда смотрю
Насколько я понимаю если пин ардуино сформировать как Input и дальше на него записать (1) то включается внутрисхемное сопротивление подтяжки в +5В
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

Re: Arduino -> ModBus -> LCNC

Сообщение nkp »

смотри в другом скетче(Pin_Manipulator.ino):

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

      {
        Index = 11;                                   // Set Index above max Index to force exiting of outer Loop
        break;                                        // Break For Loop
      }
      pinMode(Pin,~bitRead(Register[Index+IO_Config_Register],Bit));      // Set Pin Mode to Input or Output
      digitalWrite(Pin,bitRead(Register[Index+IO_Config_Register],Bit));  // Turns on Internal Pull-Up Resistor if Input
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

Re: Arduino -> ModBus -> LCNC

Сообщение nkp »

solo писал(а):светодиоды приема - передачи мигают постоянно
конечно - я тоже не против был бы - если оно работает :)
но мигание ледов приема-передачи это не значит "modbus"
однозначно - это последовательный обмен по uart
под конкретную задачу можно тоже "подрихтовать" модбас :
наверно можно исключить:
байт с номером slave
может хватит одного байта данных
и т.д.
Аватара пользователя
Сергей Саныч
Мастер
Сообщения: 9116
Зарегистрирован: 30 май 2012, 14:20
Репутация: 2858
Откуда: Тюмень
Контактная информация:

Re: Arduino -> ModBus -> LCNC

Сообщение Сергей Саныч »

0,1 сек - такое modbus сам по себе вполне потянет.
Типичная скорость для modbus - 19200 бит/с. Цикл обмена минимальной длительности на такой скорости займет около 10 мсек. То есть имеем десятикратный запас по скорости. Но возможно, нужен будет драйвер modbus, работающий в реалтаймовом потоке. Не обязательно, кстати, в servothread, можно еще один поток завести, помедленнее. Скажем, с периодом 20-50 мсек.
nkp писал(а):где то Сергей Саныч на пальцах это показал...
Здесь речь шла про управление движением в servothread. Там совершенно другие временнЫе запросы. На два порядка более жесткие.
Чудес не бывает. Бывают фокусы.
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

Re: Arduino -> ModBus -> LCNC

Сообщение nkp »

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

Re: Arduino -> ModBus -> LCNC

Сообщение nkp »

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

Re: Arduino -> ModBus -> LCNC

Сообщение solo »

nkp писал(а):digitalWrite(Pin,bitRead(Register[Index+IO_Config_Register],Bit)); // Turns on Internal Pull-Up Resistor if Input
все это конечно меня ставит в ступор , но попробую по умничать
мне надо данную строку отредактировать так
digitalWrite(Pin,bitRead(Register[Index+IO_Config_Register],LOW)) если хочу чтобы не было подтяжки :thinking:
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

Re: Arduino -> ModBus -> LCNC

Сообщение nkp »

проверить сейчас не могу - но по моему достаточно просто закомментировать эту строку:
//digitalWrite(Pin,bitRead(Register[Index+IO_Config_Register],Bit));
если не рабатывает - то:
digitalWrite(Pin,LOW);
но это будет для всех - надо условие прописать...
пробуй - потом посмотрим...
Аватара пользователя
Сергей Саныч
Мастер
Сообщения: 9116
Зарегистрирован: 30 май 2012, 14:20
Репутация: 2858
Откуда: Тюмень
Контактная информация:

Re: Arduino -> ModBus -> LCNC

Сообщение Сергей Саныч »

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

Re: Arduino -> ModBus -> LCNC

Сообщение solo »

Ага все сработало
nkp писал(а)://digitalWrite(Pin,bitRead(Register[Index+IO_Config_Register],Bit));
но теперь другая проблема выход не может переключить вход на 1 , во общем надо какой то простенький усилитель на выходные пины ардуино чтоб проверить , пойду посмотря с чего мне проще всего слепить. Да не ожидал я шо такой слабенький выходной каскад на ардуино, то ли у меня такая мега "горбатая"
Аватара пользователя
Сергей Саныч
Мастер
Сообщения: 9116
Зарегистрирован: 30 май 2012, 14:20
Репутация: 2858
Откуда: Тюмень
Контактная информация:

Re: Arduino -> ModBus -> LCNC

Сообщение Сергей Саныч »

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

Re: Arduino -> ModBus -> LCNC

Сообщение solo »

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

Re: Arduino -> ModBus -> LCNC

Сообщение Serg »

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

Re: Arduino -> ModBus -> LCNC

Сообщение solo »

А че у меня такой проблема меня тоже это все удивляет :thinking:
вот мое чудо
Вложения
2014-02-23-133405.jpg (2153 просмотра) <a class='original' href='./download/file.php?id=25189&mode=view' target=_blank>Загрузить оригинал (164.17 КБ)</a>
Ответить

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