Как организовать обмен данными между программами?

Обсуждение установки, настройки и использования LinuxCNC. Вопросы по Gкоду.
Аватара пользователя
Сергей Саныч
Мастер
Сообщения: 9116
Зарегистрирован: 30 май 2012, 14:20
Репутация: 2858
Откуда: Тюмень
Контактная информация:

Re: Как организовать обмен данными между программами?

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

UAVpilot писал(а):Можно послать сигнал процессу командой/функцией kill.
вот то что "сигнал" - это специальный термин, я и не подозревал. А название функции как бэ предполагает, что после нее процессу уже не подняться :)
В общем, я поступил по сермяжному. Сделал в программе управления инвертором пин, который останавливает обмен и закрывает порт при единичном значении и открывает/возобновляет при нулевом. В панели pyvcp сделал чекбокс, который прицепил к этому пину. Теперь управляю в ручном режиме. Не так удобно, как было бы на полном автомате, но гораздо лучше частого перезапуска LCNC.
Чудес не бывает. Бывают фокусы.
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

Re: Как организовать обмен данными между программами?

Сообщение nkp »

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

Re: Как организовать обмен данными между программами?

Сообщение Serg »

Serg-tmn писал(а):А название функции как бэ предполагает, что после нее процессу уже не подняться :)
Так было только в самой первой версии unix, но историческое название сохранилось. :)

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

$ traphandle() {
> echo 'Отстань!'
> }
$ trap traphandle 15
$ 
$ kill $$
Отстань!
$ 
:)
Serg-tmn писал(а):Теперь управляю в ручном режиме. Не так удобно, как было бы на полном автомате, но гораздо лучше частого перезапуска LCNC.
Так в любом случае придётся как-то сообщать linuxcnc, что надо освободить порт. IMHO меньшего числа телодвижений не добиться.
nkp писал(а):если все так - зачем их две , "сложить их в одну" , и не думать ни о каком обмене...
Они по разному настраиваются на конкретную модель частотника. Да и вторая была сделана по сути случайно. :)
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

Re: Как организовать обмен данными между программами?

Сообщение nkp »

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

Re: Как организовать обмен данными между программами?

Сообщение Serg »

nkp писал(а):предполагал что достаточно прописать определенные (в доках на ПЧ) данные
в определенные (в доках на ПЧ) регистры
НАСТРОЙКА ПАРАМЕТРОВ всех виденных мной частотников, управляемых по Modbus сводится к изменению значения именованных переменных. Это легко формализуется, результат вы видите.
УПРАВЛЕНИЕ частотниками осуществляется посылкой разнообраных команд сильно разных форматов (для разных моделей). За то время, которое я смог выделить на создание vfdctl я не смог формализовать эти команды и форматы, посему не смог сделать настраиваемую программу. Если кто-то смог формализовать сей процесс и поделится информацией я с удовольствием сделаю одну прогу для обоих операций.
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

Re: Как организовать обмен данными между программами?

Сообщение nkp »

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

Re: Как организовать обмен данными между программами?

Сообщение Serg »

nkp писал(а):как возникает "повторная" потребность в настройке параметров ?
я так понимаю работу программы:
запустилась , автоматом прописались параметры , ждем действий пользователя.
Если ты купил частотник, в комплекте с докой и списком параметров для конкретного шпинделя, то тебе эта программа не нужна - как-нибудь осилишь один раз вбить настройки с пульта и пользуйся.
А вот если захочется изучить параметры/возможности частотника и попробовать что-то из них поменять и попробовать, вот тогда такая программка будет весьма полезна. Тем более, что для её настройки под конкретную модель придётся как минимум прочитать и скопипастить часть документации. :)
nkp писал(а):фактически это запись в регистр частотника? ("что именно" и "куда" - (всегда?) приводит производитель в документации)
Да.
nkp писал(а):если не брать аспект "формализации" и вытекающей из неё универсальности - а написать управление для одной конкретной модели -
наверно все будет проще...
Проще, но я-бы тогда не стал заморачиваться с выкладыванием программы в сеть и минимальным её описанием. Просто написал-бы прогу исключительно для собственного удобства (собственно так и появилась vfdctl). А т.к. настройка по Modbus легко формализуется, то я взял на себя труд сделать программу vfd более менее универсальной и опубликовал её. :)
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Аватара пользователя
Сергей Саныч
Мастер
Сообщения: 9116
Зарегистрирован: 30 май 2012, 14:20
Репутация: 2858
Откуда: Тюмень
Контактная информация:

Re: Как организовать обмен данными между программами?

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

UAVpilot писал(а):Так в любом случае придётся как-то сообщать linuxcnc, что надо освободить порт.
Ставлю галочку в чекбоксе, обмен прекращается, порт закрывается. Настраиваю частотник через vfd, галочку снимаю - порт открывается, обмен возобновляется. Гораздо быстрее, чем остановить/запустить linuxcnc.
PS: программа управления тоже на основе твоей сделана :) Управление частотником через modbus. #1
Чудес не бывает. Бывают фокусы.
Аватара пользователя
Сергей Саныч
Мастер
Сообщения: 9116
Зарегистрирован: 30 май 2012, 14:20
Репутация: 2858
Откуда: Тюмень
Контактная информация:

Re: Как организовать обмен данными между программами?

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

nkp писал(а):что есть настройка частотника с т.з. программы ? (предполагал что достаточно прописать определенные (в доках на ПЧ) данные
в определенные (в доках на ПЧ) регистры)
Если бы был доступ к сколько-нибудь подробной документации, можно было бы настроить один раз и не заморачиваться более. Но в моем случае документация достаточно скупая, несмотря что частотник не ноунейм китайский, а приличный корейский Hyundai.
Если для обычного режима еще можно худо-бедно настроить по инструкции (я пользуюсь аж четырьмя - две в русском переводе, одна английская, и одна корейская (последняя, понятно, с гуглопереводчиком), то векторный режим - полный мрак, и без метода научного тыка ничего не добиться. Вот для "тыкания" и понадобилась одновременная (точнее, поочередная) работа двух программ. Изменил какой-то параметр - перешел в LCNC, позапускал на разных скоростях по MDI, посмотрел токи-напряжения на холостом ходу и под нагрузкой (нагрузка - это две деревяшки, которыми тормозил шпиндель :hehehe: ). Повторил. И так до приемлемого результата.
Кстати, параметров, которые задаются частотнику - больше сотни. И многие взаимозависимые.
Последний раз редактировалось Сергей Саныч 23 ноя 2013, 19:02, всего редактировалось 1 раз.
Чудес не бывает. Бывают фокусы.
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

Re: Как организовать обмен данными между программами?

Сообщение nkp »

Serg-tmn, понял...
а для полноты картины можно модель пч ?
Аватара пользователя
Сергей Саныч
Мастер
Сообщения: 9116
Зарегистрирован: 30 май 2012, 14:20
Репутация: 2858
Откуда: Тюмень
Контактная информация:

Re: Как организовать обмен данными между программами?

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

nkp писал(а):а для полноты картины можно модель пч ?
Hyundai N700E-1.5
Чудес не бывает. Бывают фокусы.
Impartial
Мастер
Сообщения: 953
Зарегистрирован: 23 фев 2011, 01:50
Репутация: 36
Контактная информация:

Re: Как организовать обмен данными между программами?

Сообщение Impartial »

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

Re: Как организовать обмен данными между программами?

Сообщение nkp »

Impartial писал(а):А не проще переписать драйвер модбаса под свои нужды?
драйвер модбаса переписать - если не устраивает что то в существующих(имхо)
а что не устривает в существующих??
============
я пользовал пару-тройку на си , один на питоне ,и есть два на тикле(не пробовал в работе))
но все они делают одно и тоже ;)
если я правильно понял слово "драйвер" - библиотека модбас ?
Impartial
Мастер
Сообщения: 953
Зарегистрирован: 23 фев 2011, 01:50
Репутация: 36
Контактная информация:

Re: Как организовать обмен данными между программами?

Сообщение Impartial »

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

Re: Как организовать обмен данными между программами?

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

Impartial писал(а):В крайнем случае именно в нем наиболее просто сделать кнопку закрыть - открыть.
Так я по сути, так и сделал.
Impartial писал(а):А можно и настройки туда всунуть если есть описание команд.
Собственно, с этого я и начинал. Не пошел по этому пути в основном из-за того, что не умею делать GUI под линуксом. UAVpilot предложил программу настройки, которую я худо-бедно адаптировал под свой частотник. На более серьезную переработку ее меня не хватило в связи со слабым знакомством с Tcl/Tk.
Последний раз редактировалось Сергей Саныч 23 ноя 2013, 20:02, всего редактировалось 1 раз.
Чудес не бывает. Бывают фокусы.
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

Re: Как организовать обмен данными между программами?

Сообщение nkp »

а-аа , понял , не "драйвер модбаса" , а драйвер конкретной железки...
я про библиотеки модбаса вел речь...
Impartial
Мастер
Сообщения: 953
Зарегистрирован: 23 фев 2011, 01:50
Репутация: 36
Контактная информация:

Re: Как организовать обмен данными между программами?

Сообщение Impartial »

nkp писал(а):а-аа , понял , не "драйвер модбаса" , а драйвер конкретной железки...
я про библиотеки модбаса вел речь...
Я имел в виду файлы modbus.с modbus.h из стандартных исходников.
Serg-tmn писал(а):На более серьезную переработку ее меня не хватило в связи со слабым знакомством с Tcl/Tk.
Да, его желательно знать. Там большая часть гуев на нем написана с питоном в паре. У меня эта парочка вызывает резкую антипатию :)
Аватара пользователя
Сергей Саныч
Мастер
Сообщения: 9116
Зарегистрирован: 30 май 2012, 14:20
Репутация: 2858
Откуда: Тюмень
Контактная информация:

Re: Как организовать обмен данными между программами?

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

Impartial писал(а):Я имел в виду файлы modbus.с modbus.h из стандартных исходников.
Стандартный драйвер модбаса не использовался, но, возможно, был взят за основу.
УП сама открывает и настраивает порт, сама обрабатывает протокол modbus. Все написано на Си, так что с этим проблем не было.
Последний раз редактировалось Сергей Саныч 23 ноя 2013, 20:41, всего редактировалось 2 раза.
Чудес не бывает. Бывают фокусы.
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

Re: Как организовать обмен данными между программами?

Сообщение nkp »

Impartial писал(а):Я имел в виду файлы modbus.с modbus.h из стандартных исходников.
так всё таки я правильно подозревал :)
=============
modbus.с - не что иное как библиотека модбас - то есть программная реализация протокола ...
она не заточена под конкретное железо , а реализует набор функций модбаса:
формирование пакета данных , отправку -получение , проверку , конфигурирование-открытие порта и т.д.
переписывать ее можно - но без явных , объективных причин - это бесполезный труд...
а вот используя функции , определенные в этом модуле , мы уже строим свой драйвер для железа ...
там уже и параметры и все остальное...
==========
я вот пуговицы пришиваю ! к пуговицам претензии есть? © :)
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

Re: Как организовать обмен данными между программами?

Сообщение nkp »

Serg-tmn писал(а):Стандартный драйвер модбаса не использовался.
здесь позволю не согласиться ;)
использовался - но немного подкорректированный :)
из него автор выбросил реализацию tcp и по моему всё...
как говорится - найди десять различий:
21.rar
(18.04 КБ) 229 скачиваний
зы
да и называть его "стандартным" не стоит - так - очередное решение...
кстати - по моему в самых новых версиях включен еще один "стандартный"...
Ответить

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