Arduino -> ModBus -> LCNC
- Serg
- Мастер
- Сообщения: 21923
- Зарегистрирован: 17 апр 2012, 14:58
- Репутация: 5183
- Заслуга: c781c134843e0c1a3de9
- Настоящее имя: Сергей
- Откуда: Москва
- Контактная информация:
Re: Arduino -> ModBus -> LCNC
arduino.Din1-20 прицепить к probe-in и ехать по g38.2
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
- solo
- Мастер
- Сообщения: 1374
- Зарегистрирован: 20 окт 2011, 18:39
- Репутация: 272
- Настоящее имя: Юрий Соловьев
- Откуда: Украина Харьков
- Контактная информация:
Re: Arduino -> ModBus -> LCNC
Чего то пока у меня не получается
проверить скорость модбус
Скорее всего на входном пине ардуино включено сопротивление подтяжки к +5 и из за этого выходной пин не может переключить входной пин в ноль.
Я сам посмотрел скетч ардуино но тяму не хватило изменить, отключить подтяжку.
А вопрос касающийся Ж кода , можно в ж коде организовать условные переходы в выполнении Ж кода, по состоянию пина на ардуино .
Скорее всего на входном пине ардуино включено сопротивление подтяжки к +5 и из за этого выходной пин не может переключить входной пин в ноль.
Я сам посмотрел скетч ардуино но тяму не хватило изменить, отключить подтяжку.
А вопрос касающийся Ж кода , можно в ж коде организовать условные переходы в выполнении Ж кода, по состоянию пина на ардуино .
-
nkp
- Мастер
- Сообщения: 8340
- Зарегистрирован: 28 ноя 2011, 00:25
- Репутация: 1589
- Контактная информация:
Re: Arduino -> ModBus -> LCNC
в хал: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зы
по моему даже так работает:
O<M66> IF [#5399]
-
nkp
- Мастер
- Сообщения: 8340
- Зарегистрирован: 28 ноя 2011, 00:25
- Репутация: 1589
- Контактная информация:
Re: Arduino -> ModBus -> LCNC
только сейчас этот пост увиделsolo писал(а):теперь надо отследить появление (1 ) на пине arduino.Din1-20 , и остановить перемещение (как это сделать) не придумал. Нужно в ж коде выполнить условный переход(если нет едим дальше, если да конец программы) Можно ли такое реализовать на ж кодеНу и соответственно после останова программы по перемещению можно будет судить о быстродействии модбус ардуинокак я понимаю мне надо что то так
написал бы O<condition> sub поконкретней...
- solo
- Мастер
- Сообщения: 1374
- Зарегистрирован: 20 окт 2011, 18:39
- Репутация: 272
- Настоящее имя: Юрий Соловьев
- Откуда: Украина Харьков
- Контактная информация:
Re: Arduino -> ModBus -> LCNC
а че написать в принципе Вашей инфы Arduino -> ModBus -> LCNC #243nkp писал(а):написал бы O<condition> sub поконкретней
мне в принципа достаточно что бы самому написать Ж код (это я пока так думаю пока не попробовал написать
попытка проверки скорости модбус Arduino -> ModBus -> LCNC #240
но даже если Ж код заработает то надо немного подкорректировать скетч ардуино , нужно убрать подтяжку с входных пинов ардуино , а то если я ставлю перемычку между входом и выходом ардуино , то мощности выходного пина не хватает переключить входной пин в "0" , или надо поставить какой то усилитель на выход ардуино.
Мне просто на начальном этапе задумки реализации станка (производства пластиковых флакончиков ) надо понять можно ли будет по модбу управлять пневмоцилиндрами , (нужен дискретный сигнал длительность 0.6 , 3.5 , с точность +- 0.1 сек) почему я и хочу проверить стабильность работы модбу.
То есть на данном этапе мне надо понять модбус способен посылать стабильные импульсы или нет.
-
nkp
- Мастер
- Сообщения: 8340
- Зарегистрирован: 28 ноя 2011, 00:25
- Репутация: 1589
- Контактная информация:
Re: Arduino -> ModBus -> LCNC
имхо - я бы не стал связываться с ардуиной (модбас) в таком вопросе...solo писал(а):(нужен дискретный сигнал длительность 0.6 , 3.5 , с точность +- 0.1 сек)
не хотелось в итоге получить непредсказуемое устройство...
сразу бы работать в реалтайм и не думать о возможных сбоях из-за задержек...
исключить usb,перейдя на Serial1, и попробовать с ладдером - но всё равно в реалтайм не влезем (скорей всего):solo писал(а):То есть на данном этапе мне надо понять модбус способен посылать стабильные импульсы или нет.
где то Сергей Саныч на пальцах это показал...
========
- solo
- Мастер
- Сообщения: 1374
- Зарегистрирован: 20 окт 2011, 18:39
- Репутация: 272
- Настоящее имя: Юрий Соловьев
- Откуда: Украина Харьков
- Контактная информация:
Re: Arduino -> ModBus -> LCNC
Я писал что у меня есть термопласт и в нем между компьтером управление и платой ввода вывод идет соединение по ком порту и скорее всего по модбус (светодиоды приема - передачи мигают постоянно) , там все работает в таком режиме очень хорошо и стабильно (импульсы с точность +- 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В
Сижу смотрю скетч ардуино , нужно консультация
раздел скетча 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
смотри в другом скетче(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
конечно - я тоже не против был бы - если оно работаетsolo писал(а):светодиоды приема - передачи мигают постоянно
но мигание ледов приема-передачи это не значит "modbus"
однозначно - это последовательный обмен по uart
под конкретную задачу можно тоже "подрихтовать" модбас :
наверно можно исключить:
байт с номером slave
может хватит одного байта данных
и т.д.
- Сергей Саныч
- Мастер
- Сообщения: 9116
- Зарегистрирован: 30 май 2012, 14:20
- Репутация: 2858
- Откуда: Тюмень
- Контактная информация:
Re: Arduino -> ModBus -> LCNC
0,1 сек - такое modbus сам по себе вполне потянет.
Типичная скорость для modbus - 19200 бит/с. Цикл обмена минимальной длительности на такой скорости займет около 10 мсек. То есть имеем десятикратный запас по скорости. Но возможно, нужен будет драйвер modbus, работающий в реалтаймовом потоке. Не обязательно, кстати, в servothread, можно еще один поток завести, помедленнее. Скажем, с периодом 20-50 мсек.
Типичная скорость для modbus - 19200 бит/с. Цикл обмена минимальной длительности на такой скорости займет около 10 мсек. То есть имеем десятикратный запас по скорости. Но возможно, нужен будет драйвер modbus, работающий в реалтаймовом потоке. Не обязательно, кстати, в servothread, можно еще один поток завести, помедленнее. Скажем, с периодом 20-50 мсек.
Здесь речь шла про управление движением в servothread. Там совершенно другие временнЫе запросы. На два порядка более жесткие.nkp писал(а):где то Сергей Саныч на пальцах это показал...
Чудес не бывает. Бывают фокусы.
-
nkp
- Мастер
- Сообщения: 8340
- Зарегистрирован: 28 ноя 2011, 00:25
- Репутация: 1589
- Контактная информация:
Re: Arduino -> ModBus -> LCNC
по подтяжке (и др.функциях) можно почитать здесь...
-
nkp
- Мастер
- Сообщения: 8340
- Зарегистрирован: 28 ноя 2011, 00:25
- Репутация: 1589
- Контактная информация:
Re: Arduino -> ModBus -> LCNC
ну тогда все сростается:Сергей Саныч писал(а):. Не обязательно, кстати, в servothread, можно еще один поток завести, помедленнее. Скажем, с периодом 20-50 мсек.
ардуинка + модбас (serial1) + ладдер(он работает в реалтайм)
- solo
- Мастер
- Сообщения: 1374
- Зарегистрирован: 20 окт 2011, 18:39
- Репутация: 272
- Настоящее имя: Юрий Соловьев
- Откуда: Украина Харьков
- Контактная информация:
Re: Arduino -> ModBus -> LCNC
все это конечно меня ставит в ступор , но попробую по умничать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)) если хочу чтобы не было подтяжки
-
nkp
- Мастер
- Сообщения: 8340
- Зарегистрирован: 28 ноя 2011, 00:25
- Репутация: 1589
- Контактная информация:
Re: Arduino -> ModBus -> LCNC
проверить сейчас не могу - но по моему достаточно просто закомментировать эту строку:
//digitalWrite(Pin,bitRead(Register[Index+IO_Config_Register],Bit));
если не рабатывает - то:
digitalWrite(Pin,LOW);
но это будет для всех - надо условие прописать...
пробуй - потом посмотрим...
//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
Ага все сработало
но теперь другая проблема выход не может переключить вход на 1 , во общем надо какой то простенький усилитель на выходные пины ардуино чтоб проверить , пойду посмотря с чего мне проще всего слепить. Да не ожидал я шо такой слабенький выходной каскад на ардуино, то ли у меня такая мега "горбатая"nkp писал(а)://digitalWrite(Pin,bitRead(Register[Index+IO_Config_Register],Bit));
- Сергей Саныч
- Мастер
- Сообщения: 9116
- Зарегистрирован: 30 май 2012, 14:20
- Репутация: 2858
- Откуда: Тюмень
- Контактная информация:
Re: Arduino -> ModBus -> LCNC
А выход вообще, включен? Хотя бы тестером посмотреть?solo писал(а):но теперь другая проблема выход не может переключить вход на 1
Светодиод выход способен зажечь?solo писал(а): Да не ожидал я шо такой слабенький выходной каскад на ардуино
Чудес не бывает. Бывают фокусы.
- solo
- Мастер
- Сообщения: 1374
- Зарегистрирован: 20 окт 2011, 18:39
- Репутация: 272
- Настоящее имя: Юрий Соловьев
- Откуда: Украина Харьков
- Контактная информация:
Re: Arduino -> ModBus -> LCNC
Выход включается светодиод загорается подключенный к выходу ардуино.
Вход на ардуине если проводком тыкаю в +5 переключается в (1) сейчас, с подтяжкой было наоборот если проводком тыкал вход на землю переключался (0) контролирую на панели ладера , вообщем слабенький выход
Вход на ардуине если проводком тыкаю в +5 переключается в (1) сейчас, с подтяжкой было наоборот если проводком тыкал вход на землю переключался (0) контролирую на панели ладера , вообщем слабенький выход
- Serg
- Мастер
- Сообщения: 21923
- Зарегистрирован: 17 апр 2012, 14:58
- Репутация: 5183
- Заслуга: c781c134843e0c1a3de9
- Настоящее имя: Сергей
- Откуда: Москва
- Контактная информация:
Re: Arduino -> ModBus -> LCNC
Не выдержал, нашёл свою ардуину и быстренько набросал тестик: одну ногу сконфигурил как выход, все остальные как входы с подтяжкой, замкнул их все между собой - один выход совершенно спокойно переключает штук 15 подтянутых входов.
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
- solo
- Мастер
- Сообщения: 1374
- Зарегистрирован: 20 окт 2011, 18:39
- Репутация: 272
- Настоящее имя: Юрий Соловьев
- Откуда: Украина Харьков
- Контактная информация:
Re: Arduino -> ModBus -> LCNC
А че у меня такой проблема меня тоже это все удивляет 
вот мое чудо
вот мое чудо