Страница 13 из 22
Re: Arduino -> ModBus -> LCNC
Добавлено: 22 фев 2014, 13:07
Serg
arduino.Din1-20 прицепить к probe-in и ехать по g38.2
Re: Arduino -> ModBus -> LCNC
Добавлено: 22 фев 2014, 15:27
solo
Чего то пока у меня не получается

проверить скорость модбус
Скорее всего на входном пине ардуино включено сопротивление подтяжки к +5 и из за этого выходной пин не может переключить входной пин в ноль.
Я сам посмотрел скетч ардуино но тяму не хватило изменить, отключить подтяжку.
А вопрос касающийся Ж кода , можно в ж коде организовать условные переходы в выполнении Ж кода, по состоянию пина на ардуино .
Re: Arduino -> ModBus -> LCNC
Добавлено: 22 фев 2014, 16:24
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 на ардуине ,мы выводим на экран разные слова...
вместо месседжей конечно пишем полезный код))
зы
по моему даже так работает:
O<M66> IF [#5399]
Re: Arduino -> ModBus -> LCNC
Добавлено: 23 фев 2014, 08:44
nkp
solo писал(а):теперь надо отследить появление (1 ) на пине arduino.Din1-20 , и остановить перемещение (как это сделать) не придумал. Нужно в ж коде выполнить условный переход(если нет едим дальше, если да конец программы) Можно ли такое реализовать на ж кодеНу и соответственно после останова программы по перемещению можно будет судить о быстродействии модбус ардуинокак я понимаю мне надо что то так
только сейчас этот пост увидел
написал бы O<condition> sub поконкретней...
Re: Arduino -> ModBus -> LCNC
Добавлено: 23 фев 2014, 10:39
solo
nkp писал(а):написал бы O<condition> sub поконкретней
а че написать в принципе Вашей инфы
Arduino -> ModBus -> LCNC #243
мне в принципа достаточно что бы самому написать Ж код (это я пока так думаю пока не попробовал написать

я все таки

програмист)
попытка проверки скорости модбус
Arduino -> ModBus -> LCNC #240
но даже если Ж код заработает то надо немного подкорректировать скетч ардуино , нужно убрать подтяжку с входных пинов ардуино , а то если я ставлю перемычку между входом и выходом ардуино , то мощности выходного пина не хватает переключить входной пин в "0" , или надо поставить какой то усилитель на выход ардуино.
Мне просто на начальном этапе задумки реализации станка (производства пластиковых флакончиков ) надо понять можно ли будет по модбу управлять пневмоцилиндрами , (нужен дискретный сигнал длительность 0.6 , 3.5 , с точность +- 0.1 сек) почему я и хочу проверить стабильность работы модбу.
То есть на данном этапе мне надо понять модбус способен посылать стабильные импульсы или нет.
Re: Arduino -> ModBus -> LCNC
Добавлено: 23 фев 2014, 10:48
nkp
solo писал(а):(нужен дискретный сигнал длительность 0.6 , 3.5 , с точность +- 0.1 сек)
имхо - я бы не стал связываться с ардуиной (модбас) в таком вопросе...
не хотелось в итоге получить непредсказуемое устройство...
сразу бы работать в реалтайм и не думать о возможных сбоях из-за задержек...
solo писал(а):То есть на данном этапе мне надо понять модбус способен посылать стабильные импульсы или нет.
исключить usb,перейдя на Serial1, и попробовать с ладдером - но всё равно в реалтайм не влезем (скорей всего):
где то
Сергей Саныч на пальцах это показал...
========
Re: Arduino -> ModBus -> LCNC
Добавлено: 23 фев 2014, 11:16
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В
Re: Arduino -> ModBus -> LCNC
Добавлено: 23 фев 2014, 11:20
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
Re: Arduino -> ModBus -> LCNC
Добавлено: 23 фев 2014, 11:23
nkp
solo писал(а):светодиоды приема - передачи мигают постоянно
конечно - я тоже не против был бы - если оно работает
но мигание ледов приема-передачи это не значит "modbus"
однозначно - это последовательный обмен по uart
под конкретную задачу можно тоже "подрихтовать" модбас :
наверно можно исключить:
байт с номером slave
может хватит одного байта данных
и т.д.
Re: Arduino -> ModBus -> LCNC
Добавлено: 23 фев 2014, 11:41
Сергей Саныч
0,1 сек - такое modbus сам по себе вполне потянет.
Типичная скорость для modbus - 19200 бит/с. Цикл обмена минимальной длительности на такой скорости займет около 10 мсек. То есть имеем десятикратный запас по скорости. Но возможно, нужен будет драйвер modbus, работающий в реалтаймовом потоке. Не обязательно, кстати, в servothread, можно еще один поток завести, помедленнее. Скажем, с периодом 20-50 мсек.
nkp писал(а):где то Сергей Саныч на пальцах это показал...
Здесь речь шла про управление движением в servothread. Там совершенно другие временнЫе запросы. На два порядка более жесткие.
Re: Arduino -> ModBus -> LCNC
Добавлено: 23 фев 2014, 11:44
nkp
по подтяжке (и др.функциях) можно почитать
здесь...
Re: Arduino -> ModBus -> LCNC
Добавлено: 23 фев 2014, 11:47
nkp
Сергей Саныч писал(а):. Не обязательно, кстати, в servothread, можно еще один поток завести, помедленнее. Скажем, с периодом 20-50 мсек.
ну тогда все сростается:
ардуинка + модбас (serial1) + ладдер(он работает в реалтайм)
Re: Arduino -> ModBus -> LCNC
Добавлено: 23 фев 2014, 12:27
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)) если хочу чтобы не было подтяжки

Re: Arduino -> ModBus -> LCNC
Добавлено: 23 фев 2014, 12:52
nkp
проверить сейчас не могу - но по моему достаточно просто закомментировать эту строку:
//digitalWrite(Pin,bitRead(Register[Index+IO_Config_Register],Bit));
если не рабатывает - то:
digitalWrite(Pin,LOW);
но это будет для всех - надо условие прописать...
пробуй - потом посмотрим...
Re: Arduino -> ModBus -> LCNC
Добавлено: 23 фев 2014, 12:53
Сергей Саныч
я не работал с ардуиной в частности и Атмеловскими контроллерами вообще, но обычно сопротивление подтяжки достаточно велико (десятки килоом) и не может мешать работе подключенного выхода этого же контроллера.
Re: Arduino -> ModBus -> LCNC
Добавлено: 23 фев 2014, 13:23
solo
Ага все сработало
nkp писал(а)://digitalWrite(Pin,bitRead(Register[Index+IO_Config_Register],Bit));
но теперь другая проблема выход не может переключить вход на 1 , во общем надо какой то простенький усилитель на выходные пины ардуино чтоб проверить , пойду посмотря с чего мне проще всего слепить. Да не ожидал я шо такой слабенький выходной каскад на ардуино, то ли у меня такая мега "горбатая"
Re: Arduino -> ModBus -> LCNC
Добавлено: 23 фев 2014, 13:43
Сергей Саныч
solo писал(а):но теперь другая проблема выход не может переключить вход на 1
А выход вообще, включен? Хотя бы тестером посмотреть?
solo писал(а): Да не ожидал я шо такой слабенький выходной каскад на ардуино
Светодиод выход способен зажечь?
Re: Arduino -> ModBus -> LCNC
Добавлено: 23 фев 2014, 14:01
solo
Выход включается светодиод загорается подключенный к выходу ардуино.
Вход на ардуине если проводком тыкаю в +5 переключается в (1) сейчас, с подтяжкой было наоборот если проводком тыкал вход на землю переключался (0) контролирую на панели ладера , вообщем слабенький выход
Re: Arduino -> ModBus -> LCNC
Добавлено: 23 фев 2014, 14:24
Serg
Не выдержал, нашёл свою ардуину и быстренько набросал тестик: одну ногу сконфигурил как выход, все остальные как входы с подтяжкой, замкнул их все между собой - один выход совершенно спокойно переключает штук 15 подтянутых входов.
Re: Arduino -> ModBus -> LCNC
Добавлено: 23 фев 2014, 14:28
solo
А че у меня такой проблема меня тоже это все удивляет

вот мое чудо