Re: [Emc-developers] A vision for working now to LinuxCnc version 10

2022-12-05 Thread Johannes P Fassotte


On 12/5/2022 6:10 AM, Bari wrote:
A pdf that explains where DDS fits in to industry 
https://www.dds-foundation.org/sites/default/files/RTILunchAddressOMG2014v2.pdf


If we use DDS it might make LCNC compatible with the industry of the 
future. Is everyone jumping onto the DDS bandwagon? Which messaging 
system will gives us the best chance at fitting into factory 
automation, CNC machines and robotics of the near future (next 20 
years)? Will this best solve the issues of separating the controls 
from the GUI over the network as well as connect LCNC to factory 
controls and robot material handlers? Is this mission creep or killing 
two birds with one stone?


Bari,

I tend to agree that this is a good solution. In looking at the openDDS 
project I see that the project has been forked 408 times on github 
including my own fork. It also has a good developers guide that contains 
some 249 pages of information and also has the required support package 
for TOA available which has development guide that has some 1262 pages. 
OpenDDS seems like it has good documentation on its own and thus only 
requires LinuxCnc documentation to be added on how to get it to install 
and get it working  with LinuxCnc.


I think that working on this is much more beneficial to LinuxCnc than my 
previous concept which obviously does not have a lot of support so I may 
as well forget about working on that. But that does not mean that the 
requirement for improved network capability does not exist.


OpenDDS has its own own development team which thus requires less 
support from the LinuxCnc development team. All that needs to be done is 
to get it working within LinuxCnc. So my intention is to work on helping 
to accomplishing that. OpenDDS uses CorBa instead of Redis so Redis will 
most likely not be required.


My starting point for this project is to get openDDS  working inside and 
in parrallel with current LinuxCnc master code, without changing 
LinuxCnc  code and to only add the code required to make openDDS 
functional within LinuxCnc. Once it is functioning and able to run 
simple self tests then  start working on routing individual LinuxCnc 
commands along with the status data of those into openDDS and route 
those to an prior developed Labview based UI running on a Windows10 
computer. That will be helpful with checking the networking functions 
and any debugging work. Labview has some tools that are very handy for 
doing that but others joining the project could decide use any UI that 
has remote ability for there own testing.


This seems like an excellent project to undertake and I'm somewhat 
excited about getting started on this project.  OpenDDS appears to have 
good support and is already being used for such purposes. I have 
downloaded what I believe to be all required items for installation and 
will get my Debian development system set up to start doing work on this 
before the end of the year.






___
Emc-developers mailing list
Emc-developers@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/emc-developers



___
Emc-developers mailing list
Emc-developers@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/emc-developers


[Emc-developers] A vision for working now to LinuxCnc version 10

2022-12-04 Thread Johannes P Fassotte

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 

[Emc-developers] A vision for working now to LinuxCnc version 10

2022-12-03 Thread Johannes P Fassotte
In order to help clarify what I would like to see in not only version 10 
of LinuxCnc but also in the current version 9 future work. I will start 
working on this as soon as my new circuits board for my metal detectors 
are populated with all the SMD components. The circuit blank circuit 
boards arrived yesterday. This requires placing 235 SMD componets on 
each of the boards and likely take about seven days.


My goal for LinuxCnc is to provide a way for any user to interface any 
UI to LinuxCnc with a secure TCP network connection. LinuxCnc has had 
such an interface from its inception via the NML network servers however 
these are absolutely insecure and anyone with a bit of knowledge of 
remote NML commands can take control of LinuxCnc if those network ports 
are left open. Thus LinuxCnc needs modern secure network interfaces to 
replace the ones that were designed in from the very start government 
development and just ignored. Not many use this interface because it 
does not provide complete information due to developers add-ons such as 
Python that seem to just live in their own world within LinuxCnc and do 
not provide  any info into the NML network links. NML is likely the 
hardest thing to deal with and very difficult to replace but in general 
works just fine.


About 12 years ago I developed code to allow remote control of a lot of 
time sensitive  industrial and electronic equipment that was  over 500 
miles from the actual normal user interface. The equipment being 
remotely controlled was located in a isolated area and without 
communication links and thus those also had to be designed and 
implemented. The overall bandwidth of the communication link was divided 
into remote receive data, multiple command channels,  status and error 
channels. The system was designed for very high reliability and met all 
design goals and is still in operation with some equipment updates 
having been made.


The goal of me mentioning this is that I know that having a distributed 
data system with equipment to be controlled in one location and the user 
interface in an other more convenient location doe not have to suffer 
from reliability issues when properly executed. What it does provide is 
flexibility. In case of LinuxCnc which runs on Linux user interfaces and 
there support requirements can be offloaded from the Linux system and 
run on Windows based system instead or even on another Linux Based 
computer. Which as I mentioned before reduces the need to load up the 
machine control computer with support code that is not directly related 
to its main function which if of course to control a machine and output 
status info back to the user and process commands from the UI that may 
be located some distance away and not in a noisy environment. There are 
of coarse other ways to snoop into a Machine controller and some have 
implemented one or more o those methods strictly because LinuxCnc does 
not have a proper way of handing remote UI's.


I thing that even version 9 master has a good deal of the required code 
to fix that problem by just adding some code to do some data routing and 
adding some secure TCP channels. I have drawn a basic block diagram of 
what would be required and attached it.



___
Emc-developers mailing list
Emc-developers@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/emc-developers


[Emc-developers] A vision for working now to LinuxCnc version 10

2022-12-02 Thread Johannes P Fassotte
As you may know I have been desiring  a better way to interface user 
interfaces to LinuxCnc and strongly feel that there needs to be a big 
change in the way this is being done at the present time. I also feel 
that there is way to much resistance by the LinuxCnc developers to 
implement what many of us may see as a absolute requirement. That 
requirement is secure distributed networking interfaces for all user 
interfaces and implemented as plugins for LinuxCnc.


As such I would like to see plugin code developed to allow user 
interfaces to have full control of LinuxCnc, along with consolidated 
status and errors with plugin interfaces for Python, C/C++ and NML.  
This will allow all user interfaces to be developed as plugins and use 
the secure distributed network interface ability to link into LinnuxCnc 
via ether local or remote network connections. LinuxCnc provided plugin 
code would set all default commands that could be excepted along with a 
standard way of sending all available status info back to the user and 
also any errors that may have been encountered.


With  such a plugin system for user interfaces there is no need to 
include anything related to user interface development withing LinuxCnc 
code itself since those are all handled as completely separate projects 
by the various UI developers.  All such developers comply with the 
default LinuxCnc plugin requirements but also have the ability to do 
some customizing. Such a system is not to difficult to implement for 
LinuxCnc version 10 since all that has to be done is for LinuCnc 
developers to build the code for the UI plugin interfaces and do some 
cleanup work to remove the nonessential UI code that is presently 
contained in LinuxCnc.


I don't understand why I see so much resistance in getting such a 
relatively simple thing done by the experts in LinuxCnc development. 
Everyone knows that distributed networking is extremely viable so there 
should be no reason not to implement this concept for interfacing with 
UI's. You cannot keep on adding UI development things to LinuxCnc 
without it becoming a big big mess. I think to do so is just due to 
hardheadedness.


Lets develop the UI plugin interface concept for LinuxCnc version 10 
that allows UI interfaces to run as a distributed data system and which 
at the same time simplifies maintaining LinuxCnc a thousand fold and 
also reducing the size of its footprint.


Its up you, the LinuxCnc developers and also the UI developers to  get 
started on implementing something like this for LinuxCnc version 10! You 
are all the experts and developing the standard code for this is likely 
not difficult.  For those of us who are somewhat on the outside the 
development group we will have to do less customizing  work by not 
having to customize LinuxCnc to suit our desires and which causes a 
great deal of  update difficulties.


When you look at history there have been a number of warnings that this 
needed to be done a long time ago. One such example was the split and 
development of Machinekit which I feel was the direct result of 
developers being to stubborn to explore other points of view and their 
potential long term benefits. Just think about how much was lost by 
these two teams not being able to work together to resolve issues.





___
Emc-developers mailing list
Emc-developers@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/emc-developers


[Emc-developers] LinuxCnc growing with to much none essential code

2022-11-30 Thread Johannes P Fassotte
I have noticed that over the years LinuxCnc is taking up more and more 
space and that this is mostly related to supporting the QT related 
work.  When looking at the amount of Pythom code that is now contained 
in LinuxCnc it appears to equal more than 90% of all the code present 
based on my prior searches and charting.


I'm not in love with QT and in my personnal LinuxCnc installs QT related 
items are one of the first things that gets removed from LinuxCnc. To me 
it is just a tool to allow building QT based sluggish user interfaces 
that I dont use. It would be better if it was a optional install for 
users that which to use it. I do understand that it has taken a lot of 
work to develop the QT things but I would like to see LinuxCnc trimmed 
down to just containing the essential things.


As far as tools for building user interfaces It would also not surprise 
me if the next fad for building those is just around the corner and that 
QT will hopefully be just part of the old LinuxCnc history.  I there 
will always be newer and better ways to get things done without getting 
trapped into a current fad.


It was not to may years ago that LinuxCnc was just over 120Mb in 
extracted size.  Now V 2.9 master is takes up 252Mb so its getting 
bloaded with a lot of none essential things. I think it needs a good 
cleaning to get it back on track. I feel that there are to many 
personnal projects being added that are better suited to be developer 
supported addtions and not part of LinuxCnc itself.







___
Emc-developers mailing list
Emc-developers@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/emc-developers