How would you design a real time application for cnc control in c / c++ ???

More
3 years 10 months ago #259418 by akg1904
Hi,
Newbie here, I have a custom program for homing and Tool Change in C/C++.
I want to replace the existing homing and Tool changeĀ  to integrate my homing an tool change program with LinuxCNC .
I don't know how to approach this problem so need some help to figure it out.

Thanks and Regards
Abhishek

Please Log in to join the conversation.

More
3 years 10 months ago #259695 by andypugh
It is only possible to supply an alternative homing component in version 2.9+ of LinuxCNC.

You can specify a new homing component in the INI file:
linuxcnc.org/docs/2.9/html/config/ini-co...l#sub:ini:sec:emcmot

There is an example homing component here:
github.com/LinuxCNC/linuxcnc/blob/master...onents/homecomp.comp (which is a C file with extra stuff at the top for the halcompile utility to parse)

I suspect that the homing component can only be C, not C++ as in some LinuxCNC realtime systems all realtime code has to run in kernel space.

I have had a look and I haven't found much in the docs about writing an alternate homemod.

Please Log in to join the conversation.

More
3 years 9 months ago #262684 by tommylight
Subject tittle restored.
-
Do not change subject tittle when replying.
Thank you.

Please Log in to join the conversation.

More
3 years 9 months ago #263197 by Grotius
I suspect that the homing component can only be C, not C++ as in some LinuxCNC realtime systems all realtime code has to run in kernel space.

User can write code in c++ for kernel modules, no problem. We use a wrap function mentioning "extern c" for this trick.
That's why high-end libs like orocos-kdl or ai can be included in a hal component.

Ā 

Please Log in to join the conversation.

More
3 years 3 weeks ago #282353 by TheRoslyak
Hi Grotius. I've already added you to my project. You can start familiarizing yourself with it at your own pace. Here's what I've accomplished so far: I'm using a yaml file as a basic configurator. In it, several processes and real-time functions are created. Threads are described separately. Currently, the real-time functions are empty, and they need to be made similar to the emcmotController function in linuxcnc. There are many operations and references to structures there, which are difficult to understand - I'm in the process of figuring them out. I think you can guide me in the right direction. The plan is to move robots based on the pick and place principle, similar to what's done in twincat or codeys. There's also a started project working with the URDF file and the KDL library, but it's secondary for now. The graphical interface is in another project, where QML and all the qt libraries with the ULAPI parameter are used. It operates similarly to halmeter, extracting everything from the RAM that's related to hal and assigning an index to the model. Knowing this index, it can then be used in a designed QML project.

Please Log in to join the conversation.

More
3 years 2 days ago #284025 by bkt
mmm ... and how many axis would use for your project? Plus not understand you start more than one Lcnc istance inside a different thread? And it works in realtime? ..... thse is interesting ...

Please Log in to join the conversation.

More
3 years 1 day ago #284132 by TheRoslyak
It's not working yet, but the groundwork is there. This is necessary not just to start a single machine in one's garage, but for an entire complex of systems operating on a single controller. Like this:

This is an example of how such a system can be implemented on Codesys or Twincat. Accordingly, I am working on making this possible in the HAL environment. And of course, there are many axes involved. The processes work independently of each other. It's even possible to program it so that each process or task operates on a separate CPU core.)

Please Log in to join the conversation.

More
3 years 1 day ago #284140 by bkt
so you means start a Lcnc instance every core? so it will possible to run separate gcode on every cpu? .... and for share stat/command/error trought different core and istance? What about these? because rt capable shared info it will be very good .... you have any suggestion as starting point to study these?

regards

Please Log in to join the conversation.

More
3 years 22 hours ago #284157 by TheRoslyak
In general, I can add you to my project if you provide your GitHub contact details. You will need to install the yaml-cpp library. And if you help not only with advice but also join the development, that would be even better.

Please Log in to join the conversation.

More
3 years 21 hours ago #284160 by bkt
on your github new thread? (i'm not github specialist .... so not know github terms) but for sure share my contact ... is easy use yapps libs on qt c++? as all other c++ lib?

regards

Please Log in to join the conversation.

Time to create page: 0.290 seconds
Powered by Kunena Forum