Some answers In reply to one of Chris Morley's message by number.
And near the end past 7 some general comments about my goals for this
project:
1 Chris : "ok You must realize almost no one uses the networking
capability of linuxcnc."
Answer: Yes that is true. But that is only because the remote NML
interface has not been updated to include all required information that
is handled by separate Python or other code that is not part of NML, and
of coarse NML a lot harder to deal with. The second reason is that it
has not been promoted at all as a option for interfacing UI user
generated code. And the the third reason is that UI developers utilize
methods that have been made available to them. In other words no
standard network interface means no UI development for networks by UI
developers.
2 Chris : "It seems to be the case that most machines have the controls
on the machine so over network is not that important. Certainly its a
limitation in some cases. I guess I don't see why its
the-most-important-thing that you seem to?"
Answer: The migration of technology is to interconnect various sub
functions using network technology. Thus not including a user interface
to provide that technology is not progress and instead is suppression of
flexibility. Networking within LinuxCnc is already present in areas such
as connection to a Machine using the Mesa networking FPGA cards and
control of spindle drives. Why then would such a user interfaces be
excluded? It is not used now because it does not exists. If it was
present it would be used because of natural progression of code development.
3 Chris : "I am not sure why you are hostile. I am really trying to
understand exactly what you want. Machinekit did work on networking,
though I think it was just HAL. It's why I mentioned it."
Answer: I'm not being hostile. I'm at a loss as to why there is so
little interest and constructive support on how to develop the code to
allow make it easy to interface UI's using network technology and thus
my frustration shows. Spin offs like Machinekit and those of Tormach all
come from LinuxCnc and LinuxCnc is thus the common point and thus
LinuxCnc users and developers should likely do the development work for
such a user interface. Tormach's version being a closer match because of
its use of the Redis data base to handle shuffling of all kinds of
variable data where needed. Redis was of coarse proposed many years ago
to be encluded in LinuxCnc and was actually being worked on and
implemented in some versions. Redis allows for a direct interface for
network data distribution.
To me making LinuxCnc more flexible is more important that adding it to
Debian since compiling from source is not difficult and has worked well
for users of LinuxCnc for many years. I will always build from source.
Source is controlled by the assigned developers and thus I hope that the
developers can provide some guidance with either suggested code or block
diagrams to help my self and others who desire to aid in working on such
a user interface.
4 Chris : "I'll tell you I know almost nothing about networking. I'm a
self taught programmer that uses hack-till-it-works more then
engineering a solution. I have done tons of work in linuxcnc, but not so
much on NML."
Answer: I think that NML is a real pain to understand fully for
everyone but it does work well. To replace it would be quite difficult
and very time consuming. It is better to work on other code
improvements and enhancements. There are many option to replace NML but
all would likely require LinuxCnc to be torn completely apart and then
glued back to together with the replacement for NML included. I think
that the updated versions of Redis may well be able to do that job.
5 Chris A: " I'll tell you I know almost nothing about networking. I'm
a self taught programmer that uses hack-till-it-works more then
engineering a solution. I have done tons of work in linuxcnc, but not so
much on NML.
And
5 Chris B: "I'd be happy if NML was replaced to something mainstream so
there was examples to go by. Machinekit wanted to use ZMQ but never got
all the way there as I understand it. But it is beyond my skill."
Answer: I think that most of us are doing exactly the same thing. It is
nice that NML fuctions can be added fairly easily by modification of
some tasks. Since that is possible it makes replacing NML a lot less
important. I usually use the play until it works as expected technique
and includes remote assess to HAL.
6 Chris: "I certainly agree that inter-ui communication is not good in
linuxcnc and often a real pain to work around. Some hardware paradigm
don't lend themselves to multiple 'blind' ui control."
Answer: I agree with you fully. I think that this is mainly due to
additions that have been made to LinuxCnc that are not able to talk to
each other and run separately. When you think about that it lights up a
light bulb that points to the potential to add a flexible data base that
can distribute information between sub processes to user and real time
levels. So that brings it back to the potential question adding a Redis
data base handler which is extremely fast.
7 Chris: "Oh you are auto-mation-assist on the forum - guy that did
labview work."
Answer: Yes that is me. I have been working on this for years, loosing
interest every now then due to other work such as electronic design work
for my new metal detector for locating extremely small pieces of gold
for summer time enjoyment of being outdoors. And of coarse other things
at always seem to need attention.
A few moths back I configured my milling machine control computer to run
on Debian instead of Mint and installed Labview 2021 and 2022, which
takes a a few changes in the install procedure since Labview install is
not set up to run on Debian. Several files need to be modified to allow
it to install on Debian.
I also ran into a problem with the install of the Labview VI package
manager install which is not actually part of Labview but helpful in
installing optional packages build by other developers. This went fine
for Laview 2021 but would not connect to Labview 2022. Which makes it
more difficult to make Labview 2022 friendly to use since adding
packages for 2022 without the package manager require manually adding
folders and files to Labview 2022 for adding additional functionality.
I stopped working on my development on LinuxCnc two or three months back
since It seemed like there were continues changes being made to LinuxCnc
Master and I needed to develop new circuit boards from my metal detector
project.
At that time I was developing my LinuxCnc remote UI code with stripped
down version of LinuxCnc this became a problem. My plan now is when I
continue is not to strip down LinuxCnc and just add the code required to
continue working on remote UI control interface.
NML Cmds to LinuxCnc are not a problem, what is a problem are those
things that run separate like Python related code and perhaps some
others that I have not looked into that generate internal cmds and
status data that does not get routed to NML and thus is not processed by
the remote NML TCP channels. To attempt to overcome that it seem
reasonable to add the Redis data base to handle distribution of all
movement of flowing cmd, status and error data.
Requirements for adding the Redis data base can be researched by looking
at the old LinuxCnc code that has Redis added as part of LinuxCnc. As
believe Tormach installs Redis external to LinuxCnc which possibly makes
updating Redis somewhat simpler.
Machinekit in my view is using methods are complicated and thus likely
not way to get the job done to run remote UI's. Workable yes, best way ?
Only time will tell as other development for LinuxCnc code progresses.
My remote UI interface project continues but much more slowly than I had
anticipated.
My project goal is to provide a standard way for LinuxCnc to interface
with UI's that have built in ability to run locally or remotely via TCP
connections to fully control LinuxCnc and also provide access to all
status data and error messages. In short any new generated code is
intended to serve as universal interface for any UI that has built in
TCP network connectivity and allow such a UI to run either on the same
computer as LinuxCnc, or remote computers including windows based with
high reliability and security.
Ok, sounds great does it not, so lets get excited and get it done. I
expect that most of the code to be generated will be C.
I have been making a bit of noise about some of the shortcomings in
developing a improved UI remote user interface for LinuxCnc for a number
of years and feel that the response back as been somewhat disappointing.
My pushing this is not meant to upset anyone it is meant to feel out
what the support or opposition. In looking at the responses it is easy
to see who is on what side but one ever says that is technically not
feasible or not beneficial. I fully understand that not everyone has
the same interest as myself and also that each and everyone of us has a
limited amount of time available to allow deviating from our own
individuals goals. But that makes it possible for an individual to
develop things that they themselves see beneficial and as that slowly
gets incorporated others also start to see the value in those newly
developed things and start using the them. That is how progress works,
one person with an idea leads to its development and something new and
great is created that everyone loves. That is until the next great idea
comes around. In other words what we worked on last years can easily
become obsolete in no time at all.
UI remote interface for use within LinuxCnc is a future requirement
simply because the use of networking is continuously expanding every
year. In addition to providing remote ability it also allows for simple
ways to route data to where it is needed.
In view of the above I would truly like to receive some basic input for
interested individuals on what is sought to be best way to implement my
proposed remote UI interface for use within LinuxCnc. Example code for
various sub-functions, block diagrams, anything that can help me to
develop the code required to implement this. Without input from others
it is easy to overlook something that may later require a lot of rework.
Thus the goal is to come up with something that is easy to implement,
highly reliable and with methods efficient. The final goal of coarse is
to get this incorporated it into LinuxCnc or at minimum as an optional
install able module.
My work on this will continue, initially getting the required network
code in place for both TCP and UDP connections and also the Redis base
to handle the distribution of Cmd, Status and Error data to where ever
it is needed. Once that is done change my routing commands away from the
NML remote TCP ports into the newly created TCP server ports for further
testing and evaluation and development of any additional code
requirements. The same for status and errors.
If anyone is interested it this work and to share information feel free
to contact me via email. I can set up one of my github account folders
for sharing development data.
_______________________________________________
Emc-developers mailing list
Emc-developers@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/emc-developers