Страница 1 из 4
панель оператора на удаленном компе
Добавлено: 25 мар 2015, 07:04
Lexxa
Сабж: выполнять GUI (в идеале gmoccapy) на внешнем компе.
Например взять Raspberry Pi, завести на нем ubuntu. На ней выполнять GUI linuxcnc и передавать управление прямо в основной комп.
Получится ли?
Зачем это все.
1) Комп с gmoccapy (на атоме) притормаживает.
2) Провода до пульта слишком длинные
3) удаленные GPIO опять же.
Re: Raspberry Pi, linuxcnc, панель оператора
Добавлено: 25 мар 2015, 07:08
popcorn
Re: Raspberry Pi, linuxcnc, панель оператора
Добавлено: 25 мар 2015, 07:22
Lexxa
Ну в синумерике 840дсл так и сделано, там работает по vnc.
Но по vnc там работает тогда, когда GUI крутятся на самой ЧПУ, т.е. выражаясь языком синумерика - с внутренним HMI.
При этом в роли панели оператора выступает тонкий клиент, который загружается со стойки и запускает у себя VNC-клиент.
Синумерик же позволяет GUI запускать на компе с виндой, так называемый внешний HMI. при этом внутренний HMI обязательно надо выключать ибо в некоторы режимах есть неопределнность (MDA например) - какому HMI подчиняться.
Т.е. у меня задача вынести GUI совсем из компа с linuxcnc
Re: Raspberry Pi, linuxcnc, панель оператора
Добавлено: 25 мар 2015, 07:48
Serg
Lexxa писал(а):Получится ли?
получится. вопрос в том осилит-ли это Raspberry Pi, всётаки gtk довольно тяжёлый GUI.
Re: Raspberry Pi, linuxcnc, панель оператора
Добавлено: 25 мар 2015, 08:17
popcorn
Lexxa писал(а):Ну в синумерике 840дсл так и сделано, там работает по vnc.
Но по vnc там работает тогда, когда GUI крутятся на самой ЧПУ, т.е. выражаясь языком синумерика - с внутренним HMI.
При этом в роли панели оператора выступает тонкий клиент, который загружается со стойки и запускает у себя VNC-клиент.
Синумерик же позволяет GUI запускать на компе с виндой, так называемый внешний HMI. при этом внутренний HMI обязательно надо выключать ибо в некоторы режимах есть неопределнность (MDA например) - какому HMI подчиняться.
Т.е. у меня задача вынести GUI совсем из компа с linuxcnc
Я еще не дошёл до lcnc, так что немного не в теме, и готовое решение не подскажу. Имхо, надо искать узкое место, и оптимизировать. Малина совсем не для графики - это 100%.
Из моих быстрых поисков - тормозит сам фронтенд для lcnc, а значит будет тормозить на малине еще больше.
Re: Raspberry Pi, linuxcnc, панель оператора
Добавлено: 25 мар 2015, 16:18
Lexxa
popcorn писал(а):а значит будет тормозить на малине еще больше
по большому счету даже не в тормозах и пофиг на тормоза гуй, главное, чтоб вычислительным процессам чпу это не помешало ну и конечно же клава с мышкой удлиннится.
Терь вопрос такого рода. По большому счету малина или просто левый комп будет на пульте - пофиг. вопрос в удаленности.
Допустим связку linuxcnc и виртуальной машины.
Перенаправить иксы - как бы вопрос решаемый, а вот как выполнять гуи отдельно?
Re: Raspberry Pi, linuxcnc, панель оператора
Добавлено: 25 мар 2015, 16:54
Lexxa
Re: Raspberry Pi, linuxcnc, панель оператора
Добавлено: 25 мар 2015, 20:00
popcorn
Осталось настроить:
Actually run the the second GUI on the remote PC, and send NML commands over the network. You must edit the appropriate fields (IP addresses) in the file specified by [EMC] NML_FILE, typically emc.nml in the example configurations. The files configs/common/client.nml and configs/common/server.nml are provided to help with this.
Re: Raspberry Pi, linuxcnc, панель оператора
Добавлено: 25 мар 2015, 22:11
Lexxa
Вот еще
http://www.wallacecompany.com/machine_s ... notes.html
Взял конфиг на tkemc. Создал файлы server.nml и client.nml
Делаю все на одном и том же компе без всяких виртуальных машин, указав во всех адресах ip своего компа.
Добавил в ini секцию
Запускаю - ругань, мат практически.
ругань (для просмотра содержимого нажмите на ссылку)Код: Выделить всё
Starting LinuxCNC...
libnml/buffer/physmem.cc 143: PHYSMEM_HANDLE: Can't write 6356 bytes at offset 60 from buffer of size 4064.
libnml/cms/cms_in.cc 1373: CMS:(toolSts) Error writing 6356 bytes to global memory at offset 0x80584c8
(See libnml/cms/cms_in.cc line 1376.)
**********************************************************
* Current Directory = /home/lexxa/linuxcnc/configs/l_net
*
**********************************************************
* BufferName = toolSts
* BufferType = 0
* ProcessName = tool
* Configuration File = server.nml
* CMS Status = -3 (CMS_INTERNAL_ACCESS_ERROR: An error occured during an internal access function. )
* Recent errors repeated:
PHYSMEM_HANDLE: Can't write 6356 bytes at offset 60 from buffer of size 4064.
CMS:(toolSts) Error writing 6356 bytes to global memory at offset 0x80584c8
(See libnml/cms/cms_i
* BufferLine: B toolSts SHMEM 192.168.1.65 4096 0 0 5 16 1005 TCP=5005 xdr
* ProcessLine: P tool toolSts LOCAL 192.168.1.65 W 0 1.0 0 3
* error_type = 5 (NML_INTERNAL_CMS_ERROR)
************************************************************
emc/iotask/ioControl.cc 752: can't load tool table.
libnml/buffer/physmem.cc 143: PHYSMEM_HANDLE: Can't write 6356 bytes at offset 60 from buffer of size 4064.
libnml/cms/cms_in.cc 1373: CMS:(toolSts) Error writing 6356 bytes to global memory at offset 0x80584c8
(See libnml/cms/cms_in.cc line 1376.)
core_sim.hal:7: Ini variable '[EMCMOT]SHMEM_KEY' not found.
Shutting down and cleaning up LinuxCNC...
LinuxCNC terminated with an error. You can find more information in the log:
/home/lexxa/linuxcnc_debug.txt
and
/home/lexxa/linuxcnc_print.txt
as well as in the output of the shell command 'dmesg' and in the terminal
Конфиг в прицепе, попробуйте ктонть его у себя
Re: Raspberry Pi, linuxcnc, панель оператора
Добавлено: 25 мар 2015, 23:34
Lexxa
Сам спросил, сам ответил.
Поменял размеры emcStatus и toolSts и серверная часть запустилась без ругании и мата.
Дело за клиентской.
Re: Raspberry Pi, linuxcnc, панель оператора
Добавлено: 26 мар 2015, 00:47
Lexxa
Lexxa писал(а):
Дело за клиентской.
а вот она то как раз и не хочет.
Код: Выделить всё
#
# Use this NML config on the computer running the GUI in a networked emc2
# system. The host IP address should be changed to point to the computer
# that is running the realtime code. Change the NML_FILE in emc.ini to
# client.nml and (after the server side is running) run the GUI with:
#
# tcl/tkemc.tcl -ini emc.ini
#
# Note: tkemc.tcl does not need to be run as 'root'.
ругается вот так
Код: Выделить всё
lexxa@lexxa-laptop:~/linuxcnc/linuxcnc-2.7.3/tcl$ ./tklinuxcnc.tcl
./tklinuxcnc.tcl: 3: exec: emcsh: not found
lexxa@lexxa-laptop:~/linuxcnc/linuxcnc-2.7.3/tcl$
Как лечить? emcsh я не нашел нигде
Re: Raspberry Pi, linuxcnc, панель оператора
Добавлено: 26 мар 2015, 01:00
Serg
Код: Выделить всё
lexxa@lexxa-laptop:~/linuxcnc/linuxcnc-2.7.3/tcl$ LINUXCNC_EMCSH=/usr/bin/wish ./tklinuxcnc.tcl
Re: Raspberry Pi, linuxcnc, панель оператора
Добавлено: 26 мар 2015, 09:24
Lexxa
Завелось все)))) работает на tklinuxcnc
Заработало с таким вот конфигом
сервер - комп с realtime, ip 192.168.56.1
клиент - комп с gui, ip 192.168.56.101
на сервере и на клиенте установил linuxcnc-sim. На клиенте пришлось установить, ибо tklinuxcnc.tcl ругался в духе pakage требует linuxcnc.
Ну установил и установил. в исходниках linuxcnc в папке tests есть конфиг linuxcncrsh-tcp. Его и использовал как рыбу.
в конфиг сервера в раздел [EMC] прописывается NML_FILE = srv.nml
в конфиг клиента в раздел [EMC] прописывается NML_FILE = /путь_к_файлу/cln.nml, нужно чтоб полный путь был. причем не важно, что прописано в клиентской [DISPLAY]DISPLAY = linuxcncrsh.
в nml файлы прописываются ip сервера и клиента соответственно.
srv.nml (для просмотра содержимого нажмите на ссылку)Код: Выделить всё
#
# Use this NML config on the computer running the realtime parts of emc2
# in a networked system. The host address should point to the computer
# running the GUI (although this is not critical).
# Change the NML_FILE in emc.ini to server.nml.
# Start emc2 normally, and then run the GUI client.
# Buffers
# Name Type Host size neut? (old) buffer# MP ---
# Top-level buffers to EMC
B emcCommand SHMEM 192.168.56.1 8192 0 0 1 16 1001 TCP=5005 xdr
B emcStatus SHMEM 192.168.56.1 16384 0 0 2 16 1002 TCP=5005 xdr
B emcError SHMEM 192.168.56.1 8192 0 0 3 16 1003 TCP=5005 xdr queue
# These are for the IO controller, EMCIO
B toolCmd SHMEM 192.168.56.1 1024 0 0 4 16 1004 TCP=5005 xdr
B toolSts SHMEM 192.168.56.1 8192 0 0 5 16 1005 TCP=5005 xdr
# Processes
# Name Buffer Type Host Ops server? timeout master? cnum
P emc emcCommand LOCAL 192.168.56.1 RW 0 1.0 0 0
P emc emcStatus LOCAL 192.168.56.1 W 0 1.0 0 0
P emc emcError LOCAL 192.168.56.1 W 0 1.0 0 0
P emc toolCmd LOCAL 192.168.56.1 W 0 1.0 0 0
P emc toolSts LOCAL 192.168.56.1 R 0 1.0 0 0
P emcsvr emcCommand LOCAL 192.168.56.1 W 1 1.0 1 2
P emcsvr emcStatus LOCAL 192.168.56.1 R 1 1.0 1 2
P emcsvr emcError LOCAL 192.168.56.1 R 1 1.0 1 2
P emcsvr toolCmd LOCAL 192.168.56.1 W 1 1.0 1 2
P emcsvr toolSts LOCAL 192.168.56.1 R 1 1.0 1 2
P emcsvr default LOCAL 192.168.56.1 RW 1 1.0 1 2
P tool emcError LOCAL 192.168.56.1 W 0 1.0 0 3
P tool toolCmd LOCAL 192.168.56.1 RW 0 1.0 0 3
P tool toolSts LOCAL 192.168.56.1 W 0 1.0 0 3
P xemc emcCommand REMOTE localhost W 0 10.0 0 10
P xemc emcStatus REMOTE localhost R 0 10.0 0 10
P xemc emcError REMOTE localhost R 0 10.0 0 10
P xemc toolCmd REMOTE localhost W 0 10.0 0 10
P xemc toolSts REMOTE localhost R 0 10.0 0 10
(для просмотра содержимого нажмите на ссылку)Код: Выделить всё
#
# Use this NML config on the computer running the realtime parts of emc2
# in a networked system. The host address should point to the computer
# running the GUI (although this is not critical).
# Change the NML_FILE in emc.ini to server.nml.
# Start emc2 normally, and then run the GUI client.
# Buffers
# Name Type Host size neut? (old) buffer# MP ---
# Top-level buffers to EMC
B emcCommand SHMEM 192.168.56.1 8192 0 0 1 16 1001 TCP=5005 xdr
B emcStatus SHMEM 192.168.56.1 16384 0 0 2 16 1002 TCP=5005 xdr
B emcError SHMEM 192.168.56.1 8192 0 0 3 16 1003 TCP=5005 xdr queue
# These are for the IO controller, EMCIO
B toolCmd SHMEM 192.168.56.1 1024 0 0 4 16 1004 TCP=5005 xdr
B toolSts SHMEM 192.168.56.1 8192 0 0 5 16 1005 TCP=5005 xdr
# Processes
# Name Buffer Type Host Ops server? timeout master? cnum
P emc emcCommand LOCAL 192.168.56.1 RW 0 1.0 0 0
P emc emcStatus LOCAL 192.168.56.1 W 0 1.0 0 0
P emc emcError LOCAL 192.168.56.1 W 0 1.0 0 0
P emc toolCmd LOCAL 192.168.56.1 W 0 1.0 0 0
P emc toolSts LOCAL 192.168.56.1 R 0 1.0 0 0
P emcsvr emcCommand LOCAL 192.168.56.1 W 1 1.0 1 2
P emcsvr emcStatus LOCAL 192.168.56.1 R 1 1.0 1 2
P emcsvr emcError LOCAL 192.168.56.1 R 1 1.0 1 2
P emcsvr toolCmd LOCAL 192.168.56.1 W 1 1.0 1 2
P emcsvr toolSts LOCAL 192.168.56.1 R 1 1.0 1 2
P emcsvr default LOCAL 192.168.56.1 RW 1 1.0 1 2
P tool emcError LOCAL 192.168.56.1 W 0 1.0 0 3
P tool toolCmd LOCAL 192.168.56.1 RW 0 1.0 0 3
P tool toolSts LOCAL 192.168.56.1 W 0 1.0 0 3
P xemc emcCommand REMOTE localhost W 0 10.0 0 10
P xemc emcStatus REMOTE localhost R 0 10.0 0 10
P xemc emcError REMOTE localhost R 0 10.0 0 10
P xemc toolCmd REMOTE localhost W 0 10.0 0 10
P xemc toolSts REMOTE localhost R 0 10.0 0 10
Первым делом запускается серверная часть, затем клиентская.
Клиентская запускается у меня так. из папки tcl с откомпилированными исходниками LINUXCNC_EMCSH=/usr/bin/wish ./tklinuxcnc.tcl -ini /путь_к_клиентскому_ini/клиентский.ini
серверный ини (для просмотра содержимого нажмите на ссылку)Код: Выделить всё
[EMC]
DEBUG = 0x7FFFFFFF
NML_FILE = srv.nml
#DEBUG = 0
[DISPLAY]
DISPLAY = linuxcncrsh
[TASK]
TASK = milltask
CYCLE_TIME = 0.001
[RS274NGC]
PARAMETER_FILE = sim.var
USER_M_PATH = ./subs
[EMCMOT]
EMCMOT = motmod
COMM_TIMEOUT = 4.0
COMM_WAIT = 0.010
BASE_PERIOD = 0
SERVO_PERIOD = 1000000
[HAL]
HALFILE = core_sim.hal
[TRAJ]
AXES = 3
COORDINATES = X Y Z
HOME = 0 0 0
LINEAR_UNITS = inch
ANGULAR_UNITS = degree
CYCLE_TIME = 0.010
DEFAULT_VELOCITY = 1.2
MAX_LINEAR_VELOCITY = 4
NO_FORCE_HOMING = 1
[AXIS_0]
TYPE = LINEAR
HOME = 0.000
MAX_VELOCITY = 4
MAX_ACCELERATION = 100.0
BACKLASH = 0.000
INPUT_SCALE = 4000
OUTPUT_SCALE = 1.000
MIN_LIMIT = -40.0
MAX_LIMIT = 40.0
FERROR = 0.050
MIN_FERROR = 0.010
[AXIS_1]
TYPE = LINEAR
HOME = 0.000
MAX_VELOCITY = 4
MAX_ACCELERATION = 100.0
BACKLASH = 0.000
INPUT_SCALE = 4000
OUTPUT_SCALE = 1.000
MIN_LIMIT = -40.0
MAX_LIMIT = 40.0
FERROR = 0.050
MIN_FERROR = 0.010
[AXIS_2]
TYPE = LINEAR
HOME = 0.0
MAX_VELOCITY = 4
MAX_ACCELERATION = 100.0
BACKLASH = 0.000
INPUT_SCALE = 4000
OUTPUT_SCALE = 1.000
MIN_LIMIT = -4.0
MAX_LIMIT = 4.0
FERROR = 0.050
MIN_FERROR = 0.010
[EMCIO]
EMCIO = io
CYCLE_TIME = 0.100
клиентский ини (для просмотра содержимого нажмите на ссылку)Код: Выделить всё
[EMC]
DEBUG = 0x7FFFFFFF
NML_FILE = cln.nml
#DEBUG = 0
[DISPLAY]
DISPLAY = linuxcncrsh
[TASK]
TASK = milltask
CYCLE_TIME = 0.001
[RS274NGC]
PARAMETER_FILE = sim.var
USER_M_PATH = ./subs
[EMCMOT]
EMCMOT = motmod
COMM_TIMEOUT = 4.0
COMM_WAIT = 0.010
BASE_PERIOD = 0
SERVO_PERIOD = 1000000
[HAL]
HALFILE = core_sim.hal
[TRAJ]
AXES = 3
COORDINATES = X Y Z
HOME = 0 0 0
LINEAR_UNITS = inch
ANGULAR_UNITS = degree
CYCLE_TIME = 0.010
DEFAULT_VELOCITY = 1.2
MAX_LINEAR_VELOCITY = 4
NO_FORCE_HOMING = 1
[AXIS_0]
TYPE = LINEAR
HOME = 0.000
MAX_VELOCITY = 4
MAX_ACCELERATION = 100.0
BACKLASH = 0.000
INPUT_SCALE = 4000
OUTPUT_SCALE = 1.000
MIN_LIMIT = -40.0
MAX_LIMIT = 40.0
FERROR = 0.050
MIN_FERROR = 0.010
[AXIS_1]
TYPE = LINEAR
HOME = 0.000
MAX_VELOCITY = 4
MAX_ACCELERATION = 100.0
BACKLASH = 0.000
INPUT_SCALE = 4000
OUTPUT_SCALE = 1.000
MIN_LIMIT = -40.0
MAX_LIMIT = 40.0
FERROR = 0.050
MIN_FERROR = 0.010
[AXIS_2]
TYPE = LINEAR
HOME = 0.0
MAX_VELOCITY = 4
MAX_ACCELERATION = 100.0
BACKLASH = 0.000
INPUT_SCALE = 4000
OUTPUT_SCALE = 1.000
MIN_LIMIT = -4.0
MAX_LIMIT = 4.0
FERROR = 0.050
MIN_FERROR = 0.010
[EMCIO]
EMCIO = io
CYCLE_TIME = 0.100
Re: панель оператора на удаленном компе
Добавлено: 31 мар 2015, 14:59
Lexxa
В связи с успехом операциии решил попробовать накидать свой экран, точнее перелопатить tkemc.
Кто шарит в tcl/tk помогите разобраться.
Создал пару три фрейма, на нем кнопки. При изменении размеров окна горизонтальный ряд растягивается, а вертикаьный - нет. Как починить?
Re: панель оператора на удаленном компе
Добавлено: 31 мар 2015, 15:54
raddd
Как то ставил иксы в винду и удаленно юзал linuxcnc 2.6 debian. Непомню как завется программа, запускается через ssh посредством putty для винды но есть проблемы с xface и lxde. Закрывая окно сама программа остается работать на сервере. Дальше разбиратся устал

... если некуплю моник буду пробовать потом...

Re: панель оператора на удаленном компе
Добавлено: 31 мар 2015, 18:50
Lexxa
raddd писал(а):запускается через ssh посредством putty
в этом случае GUI полностью ложится на плечи сервера и картинка полностью гонится по сети. В моем случае GUI полностью работает на удаленном компе.
ибо у сервера [DISPLAY]DISPLAY = linuxcncrsh в том и вкусность решения
Re: панель оператора на удаленном компе
Добавлено: 31 мар 2015, 20:15
raddd
http://white55.ru/xubuntu.html
Вот этим способом пробовал... иксы вроде запускаются под виндой...
Почему пробовал этот способ? Rdp, vnc, жрет немного ситему плюс сами иксы... а основное это есть комп с виндой и маленкий сарайчик где второй моник с клавой особо непоместятся((((( линух на том же компе тож стоит и я им пользуюсь.. но! Когда надо включить программатор или запустить cad-cam софт пользую винду... вобщем как то так... а из линуха на линух оно то здорово... но вот хотелось бы и виндой пользаватся...
Re: панель оператора на удаленном компе
Добавлено: 31 мар 2015, 23:25
Serg
У этих способов весь обсчёт тяжёлой графики (gtk+) всё равно будет происходить на компе с RT, а клиентский комп будет только выполнять простейшие команды типа "нарисовать пиксель" и "нарисовать прямоугольник".
Re: панель оператора на удаленном компе
Добавлено: 01 апр 2015, 13:31
Nick
Правильно ли я понимаю, что этот nml прокидывает события от gui к linuxcnc и обратно?
Или там что-то хитрее?
Re: панель оператора на удаленном компе
Добавлено: 01 апр 2015, 14:07
raddd
UAVpilot писал(а):У этих способов весь обсчёт тяжёлой графики (gtk+) всё равно будет происходить на компе с RT, а клиентский комп будет только выполнять простейшие команды типа "нарисовать пиксель" и "нарисовать прямоугольник".
Вот и вопрос! Можно ли gui на стороне клиента под мелкософтом запустить?
Придется мне моник к потолку лепить
