Trajectory Planner using Ruckig Lib
Almost always the guys at the exhibitions are sales guys without too much technical knowledge from the "back end" stuff. Hardly ever there are actual engineers that work on the products, maker fairs etc. excluded.And the manufacturers didn't know about
scurve motion profile and or path optimalisation using clothoids.
I really like this idea, I might be stupid to ask but do you really need 2 servers? Could you just open a websocket server that reads all states, parameters etc. and then stores all that data into example json. Then you could just connect to the server and the client could ask for the json data and you use from the stream what you want to use.Last week i made a few libraries to add to hal-core.
The idea is then that the motion controller in the kernel starts a http_server, and a websocket_server.
The gui's, pendants, smart-phones, etc can start a client and connect to the server. A simple website can be a client.
Then the gui's can be coded in python, c, rust, c++, html, java, etc. Cross platform solution.
However, displaying the gcode in a website for example, would still involve using extra code.
There are now 3 libraries tested to create networks : codeberg.org/skynet/network.git
1.http_server & http_client class. (can send a webpage to client showing the servers status)
2.tcp_server & tcp_client class. (can be used for custom data without the need of any http headers in the package's)
3.websocket_server & websocket_client class. (fastest, used for io, commands, position feedback to gui's etc.)
I have also considered to create a ethercat bus virtual client, but so far it's not essential and causes more difficulties as
a smart phone, pendant, has no ethercat bus running, normally.
So you always get all the data and then decide on the client side what you actually read/use from the json msg.
For the ethercat "client", I dont think its worth it. For speed and determinism, yeah its cool but who needs that in UI? I would say that if you beat your eye's refresh rate, its fast enough. At the end you just want to see a "fluid" change in position or any other fast rolling number, you dont care if at that millisecond the position is correct or not. If a led, stating an input status in a display changes 100ms after the input actaully triggered, who cares. You just want to know the real state of the machine example when it stops. You have and can make debug logs to debug, you dont need realtime screen refreshrate to do it.
Just my 2cents, keep up the good work.
Please Log in or Create an account to join the conversation.
The websocket server & client are now updated to exchange json data. This works fine.
For information a few pictures of the exhibition yesterday. So all these machines have a windows gui running.
Esab refused me to take a picture of their 5 axis cutting machine.
The swift-cut (now esab company) uses mach4 i guess, everyone knows how this looks like.
The kutavar is the next generation with my compliments to the software.
Kutavar is a english brand, located left to London on the map. The software they use is external made.
The software brand they use also delivers or advises the servo's for the Kutavar machine.
The kutavar uses software where you can do cad, cam and cnc in one program.
In England is easy'er to get hands on a Hypertherm high defenition as system integrator.
Then there are several tube cutters using laser, chinese brand, start price 75000 euro.
Tube cutter > 100.000 euro.
Attachments:
Please Log in or Create an account to join the conversation.
Esab’s DMX bevel head is one of the nicest ones in the market, the simplicity is just really good.
Kutavar, former ESCCO, uses flash cut. Getting highdef from Hypertherm “easier” I call BS.
Please Log in or Create an account to join the conversation.
so like my other controls do mitsubishi , fanuc etc you can tie them into a monitoring software suit, which shows alarms, running statues, job its on etc etc .. which then you also use for job scheduling etc..
intresting times
then all we need is the ability to run multi interpreters and superimposed control
Please Log in or Create an account to join the conversation.
i am thinking this would also open up the ability to have a monitoring system pickup info from every linuxcnc on the shop floor as i have many linuxcnc machines running
Yes, the monitor system starts a client for every machine on the floor and recieves a json list containing machine status and lots more.
But you can also start a new program from the monitor system as you can send commands as client.
If your shop has 10 machines, the monitor system can start 10 client's, the port numbers for each client must be unique.
So every machine's server in your shop has a unique port number.
For example machine 0 :
port = "0001";
For example machine 1 :
port = "0002";
Meaning superimposed control:
superimposed control refers to a higher-level control strategy where multiple control tasks or processes are managed simultaneously, often with overlapping responsibilities. This can involve coordinating multiple control loops, such as position control, speed control, and force control, which are executed concurrently to achieve more complex behaviors than would be possible with individual controls acting in isolation.
For example, in a machining environment, superimposed control might allow one control loop to maintain a precise tool position while another adjusts the cutting speed based on real-time feedback, such as load or temperature changes. The idea is to layer different control strategies (position, speed, force) on top of one another to ensure optimal machine performance.
then all we need is the ability to run multi interpreters and superimposed control
How do you see this in practical way?
Trough a monitor system for 10 machines, the 10 client's in the control system can do logic operations, like if machine 0 is ready, start machine 1 etc. Quite simple tasks.
I guess running multiple interpreters and superimposed control is something more complex, i am interested in how you see this.
@Rda,
I dont know why someone would refuse from a picture, crazy as you can just google it…
For me also the question.
Who is BS?
Please Log in or Create an account to join the conversation.
The past 10 years hypertherm has been reducing the amount of OEM’s and distributors and made it harder and harder to buy the highfef systems if you just make a couple tables per year.
In UK, or any other country, if you try to buy XPR’s you need to commit to buy more than a couple systems or they just point you to a distributor. At which point the price goes up so that you can’t really compete with the other “established” OEM’s.
Please Log in or Create an account to join the conversation.
off Hypertherm systems up to 125 amps. So i didn't understand their policy. And they more or less refused to give
a explanation afterwards. The wateryet was no problem to get.
It was all orgestrated from higher level as Rudy my contact at Hypertherm did degree to deliver the high def
at first. Later on he told me it was not possible.
Ok the websocket server runs on the production machine. Then i have 2 phones, they are now the "multiple"
clients connected to the production machine using a webbrowser that loads a html file.
The phones can now stop or start the production machine trough a web browser.
It works.
The phones only run a file called index.html.
This file starts a websocket client and connects to the production machine's ip and port on the local wifi network.
Then the index file polls the positions for 9 axis. The production machine only sends x,y,z axis position.
The phones may sends commands, like stop or start. This works also.
So now in fact any device can be used to interact with a specific production machine using a web browser.
However visualising the gcode in a web browser is another story.
Test result:
For linuxcnc this could be handy to stop a machine directly when you hear a big bang from a distance.
To connect to linuxcnc, i could connect the websocket server to the linuxcnc nml's server in c++.
Then you are ready to do the same thing with lcnc.
Attachments:
Please Log in or Create an account to join the conversation.
I assume, don’t take this as a fact, that they try to protect the consumable business for the existing OEM’s/distributors. Also the support you need to give to an OEM to get started is something completely different from the air/air plasmas.
Kjellberg and thermal dynamics are a bit more easy on new accounts as they both have other means to protect the consumable business and are somewhat more open to have new accounts on the higher stuff.
Sorry I have had no time to check your code on the server/client but how do you send the commands? I would assume that json would be pretty good at sending commands too? So you read states/parameters from the received json and you could also send json messages to change speeds, set states etc.?
EDIT: Sorry if this is confusing but on the server side you would have all the commands etc. mapped. Then the client could send json messages to ask the server to do what it can.
Please Log in or Create an account to join the conversation.
I agree with you. And that was the reason to use Thermal Dynamics high def for me.
But how do you send the commands? I would assume that json would be pretty good at sending commands too? So you read states/parameters from the received json and you could also send json messages to change speeds, set states etc.?
Yes, the transfer protocol for recieve and send is in json format. It's just a text string, but then uses a json layout.
EDIT: Sorry if this is confusing but on the server side you would have all the commands etc. mapped.
Yes indeed. You need at least a map or a list. In json we can use an array of Id and Value.
For example you send id="load" value="/home/gcode.ngc"
Or just send the id="run" value=""
Or send multiple id's and value's in one message, i have to test if we can send 30.000 lines of gcode in one message.
Then the client could send json messages to ask the server to do what it can.
Yes. The client can send id="stop value="" or the client can ask to load a mdi command like id="mdi" value="G01 X0 Y0 Z0"
And so on.
But everything from and to the server has to be mapped.
I am now trying out webassembly. This is c++ code compiled into html and java to run on a webbrowser.
Edit, my previous post : i could connect the websocket server to the linuxcnc nml's server in c++.
This is likely not the case, as we can better create a linuxcnc nml client that connects to the linuxcnc nml service or server.
Then we make a bridge from the linuxcnc nml client to a websocket server. This then should work excellent.
We already have the nml mapped, so we know all the command and status channels. It just a matter of coding it to the finish line.
Please Log in or Create an account to join the conversation.
Please Log in or Create an account to join the conversation.