Search Results (Searched for: )
- MirkoCNC
Since a week, I have been trying to set up a rotary axis A with a TangBob. It works at snail speed, but not at higher speed. I am always confronted with joint follow error of the axis.
I need the axis in a winder setup to wind bobbins. Hence A must rotate "endless" depending on the windings I want to achieve. I need to achieve at least 1000 rpm. There is no problem with a linear axis.
I have used rio-flow-gui to set up an open loop stepper type angular, 1600 micro steps. Scale in and scale out are set to 1600. Whatever I do with the ini parameters to achieve higher speeds it fails on the joint follow error.
As I do not understand the internal mechanics of the actual feedback that should confirm the requested speed, I am lost. Furthermore, I do not understand the fole of the PID, which should have no meaning for an open loop set up.
I also cannot find any example of my application to help me out.
Hence, I hope you can help me out to set up a rotary axis at 1000 rpm to overcome that joint follower error (in simulation mode and with the hardware (currently only with the Tangboard only - no ChinaBob attached).
Thanks a lot in advance.
- mwc
The lcec_configgen output didn't work due to a few reasons. The auto generated parameter names varied, and there seemed to be something weird going on with sync manager directions causing errors to be generated during initialising
- tommylight
-

For non essential stuff, vibe coding is fine and will save a lot of time, but being able to actually audit the code is a very nice bonus.
Claude has become pretty damn good at it, and so are some smaller models you can run locally on your PC, and Gemini is also very good at Python, it is free, so give it a try.
Despite what the internet would have you believe, you can run local models even on some low spec PC's and laptops, quite comfortably, and having a GPU with 8GB or more makes it way faster than you can read (that is my personal benchmark), and AMD APU's (GPU+CPU) are very good st it, i have Ryzen 7 laptops (3 of them) and they can run 4B parameter models exceptionally good, 7B and 8B with a bit of tweaking, all on 16GB of total memory.
Download LM Studio, download some 3-6GB models, play with them, you might be pleasantly surprised.
- tommylight
-

2. disable hyperthreading, TPM, secure boot
3. download the 2.9.9 and 2.8.4 ISO from the downloads page
4. boot from them, without installing, create a config for Mesa 7i96S
5. power on the Mesa 7i96S and wire it to laptop
6. run the config, run some gcode included and see if the connection drops
2.8.4 should be better on that CPU, but either way you look at it, gen 8 Intel are not good, they had to much power saving stuff included that causes huge delays.
I have a ThinkPad E580 with 4 core 8250 intel, it can be used with Mesa for testing, but not on a production machine.
6th gen CPU's were better for this, like 6300, but dual cores are getting to slow for new operating systems.
Here are some tested laptops:
forum.linuxcnc.org/18-computer/54369-use...mesa-ethernet-boards
- rodw
-

- rodw
-

latency-histogram --nobase --sbins 1000 --show
Also we need to know the NIC you are using
realtek needs the dkms driver, Intel needs coalescing disabling per man hm2_eth
I suspect its probably OK. IRQ affinity probably needs to be set on startup as it does not persist.
- rodw
-

In my homecomp, I have this comment
// RODW - the cia402 comp sets pos_fb = pos_cmd while internal homing to prevent following errors. This could be done here.
github.com/rodw-au/cia402_homecomp/blob/...2_homecomp.comp#L229
So not sure if its covered in Dominic's cia402.comp that you used as a base but I think it should be covered if this becomes an official comp in your ethercat repo.
- grandixximo
-

github.com/linuxcnc-ethercat/ethercat
you can also get updates if you install the repo here
github.com/linuxcnc-ethercat/apt
I will work on maintaining compatibility with vanilla ethercat, won't force users to use my ethercat, although IMO it is better
Edit:
Uploaded here, this should work with your ethercat as well
github.com/linuxcnc-ethercat/linuxcnc-et...ases#release-v1.48.0
- Rhubarb
This is my first post here, so a quick introduction. I'm Ruben, a web developer from Melbourne, Australia, who loves building CNC machines. I've been reading this forum for a while as I plan and build my first plasma table. Along the way, I wanted to drive the machine from a touchscreen, a laptop or my phone rather than a screen bolted to the controller. So I built a web interface for QtPlasmaC, and I'd like to share it.
Important: this has not been tested in production yet. My table is still being built, so plasmaweb has only been run against a virtual LinuxCNC machine — the QtPlasmaC simulator config on LinuxCNC 2.9.4, running in a VM — not on a real machine cutting real metal. Please treat it as untested on hardware, try it on a sim config first, and keep a working QtPlasmaC config to go back to (switching back is one INI line, see below). Bug reports and feedback are very welcome.
What it is
plasmaweb replaces the QtPlasmaC screen, not your config. It runs as the LinuxCNC [DISPLAY] program: a Python backend on the controller serves a touch-friendly web UI, and you open it in a browser on the controller itself or on any other machine on your network.It is designed as a drop-in:
- It registers the same qtplasmac HAL component (same 91 pins) that QtPlasmaC does, so your existing postgui HAL files connect unchanged.
- It reads and writes the same files: <machine>.prefs, <machine>_material.cfg and the [QTPLASMAC] INI section.
- Switching over is one line in the INI (DISPLAY = plasmaweb). Setting it back to qtvcp qtplasmac returns the machine to QtPlasmaC.
Features
Plasma screens (mirroring QtPlasmaC's tabs)
- MAIN — live dashboard: arc voltage, THC state, status LEDs, cut recovery, torch pulse, height override, single cut
- PARAMETERS — the QtPlasmaC parameters, saved back to your .prefs file, with QtPlasmaC's own tooltips
- MATERIAL — materials from your _material.cfg, including the M190 material-change handshake
- CONVERSATIONAL — LinuxCNC's own plasmac shape modules, driven from a web form
- PREVIEW — toolpath preview and run-from-line
- STATISTICS — cut counts, arc time and consumable stats
- Jogging, homing, MDI, program load/run and the tool table
- Macros, HAL softkeys and external panel inputs
- Uses your machine's own QtPlasmaC colours and keyboard shortcuts from the prefs file
- Layouts for 16:9, 4:3 and portrait (9:16) screens
- English and German UI
- Open the UI from a laptop, tablet or phone on your network. Settings shows the address to type in.
- There is no authentication: anyone who can reach the port can jog the machine and fire the torch. Only use it on a network you trust, or set PLASMAWEB_HOST=127.0.0.1 to restrict it to the controller's own screen.
- When the UI loads, it checks GitHub for a new release and offers Update now / Later / Skip this version. Settings → Updates shows the installed version and has a "Check for updates" button.
- Updates are downloaded over HTTPS and checksum-verified, and are refused while a program is running. Restart LinuxCNC afterwards to use the new version.
Installing
No Node.js needed on the controller. Download the latest release tarball from GitHub and run the installer:
Then in your machine INI:tar xzf plasmaweb-<version>-linux.tar.gz
cd plasmaweb-<version>-linux
sudo ./install.sh
Full guide: installation.md[DISPLAY]
DISPLAY = plasmaweb
Releases: github.com/RubenAhlhaus/plasmaweb/releases
Source: github.com/RubenAhlhaus/plasmaweb (GPL-3.0-or-later)
Credits
This project stands on the work of others, and I want to credit them properly:
- lcncgui ( github.com/salomom/lcncgui ) — the web application plasmaweb is built on. The backend, the WebSocket layer, and the jog, DRO, MDI, program and tool-table screens all come from lcncgui. plasmaweb adds the plasma layer on top. Huge thanks to its author.
- LinuxCNC and QtPlasmaC / plasmac — the realtime plasmac component does the actual work of running a plasma table, and plasmaweb reuses QtPlasmaC's conversational shape modules, run-from-line logic and G-code handling directly from LinuxCNC rather than reimplementing them. The whole design copies QtPlasmaC's files and HAL interface so that both screens stay interchangeable. Many thanks to Phillip Carter, Gregory Carl and everyone who has contributed to QtPlasmaC and LinuxCNC.
Feedback
If you try it on a sim, or are brave enough to try it on a real table, I'd love to hear how it goes. Please report issues on GitHub or reply here. Since I can't test on hardware yet, reports from people with working tables are especially valuable.Thanks for reading, and thanks to this community for everything I've learned here.
- CNCJIM
- mwc
The main reason I've selected this module is for the Analogue Inputs, as I want to use one for a Plasma THC, and another for FRO.
I've had it connected for a while, but have been concentrating on the Lichuan drivers first, so as it stands, I've only got as far as the lcec_configgen output -
<slave idx="3" type="generic" vid="0x00000b96" pid="0x00001400" name="D4">
<!--EC1A-CORE1-->
<syncManager idx="0" dir="in"/>
<syncManager idx="1" dir="out"/>
<syncManager idx="2" dir="out">
<pdo idx="1601">
<!--Digital Output process data mapping-->
<pdoEntry idx="7010" subIdx="01" bitLen="16" halPin="mapping-ch" halType="!!type 002e!!"/>
</pdo>
<pdo idx="1603">
<!--Analog Output process data mapping-->
<pdoEntry idx="7030" subIdx="01" bitLen="16" halPin="mapping-ch0" halType="u32"/>
<pdoEntry idx="7030" subIdx="02" bitLen="16" halPin="mapping-ch1" halType="u32"/>
</pdo>
<pdo idx="1605">
<!--Modbus Master Control process data mapping-->
<pdoEntry idx="7050" subIdx="01" bitLen="32" halPin="tigger-bit" halType="!!type 002f!!"/>
<pdoEntry idx="7050" subIdx="02" bitLen="32" halPin="clear-bit" halType="!!type 002f!!"/>
<pdoEntry idx="7050" subIdx="03" bitLen="8" halPin="rs485-enable" halType="!!type 001e!!"/>
</pdo>
</syncManager>
<syncManager idx="3" dir="in">
<pdo idx="1a00">
<!--Digital Input process data mapping-->
<pdoEntry idx="6000" subIdx="01" bitLen="16" halPin="mapping-ch" halType="!!type 002e!!"/>
</pdo>
<pdo idx="1a02">
<!--Analog Input process data mapping-->
<pdoEntry idx="6020" subIdx="01" bitLen="16" halPin="mapping-ch0" halType="u32"/>
<pdoEntry idx="6020" subIdx="02" bitLen="16" halPin="mapping-ch1" halType="u32"/>
<pdoEntry idx="6020" subIdx="03" bitLen="16" halPin="ch2" halType="u32"/>
<pdoEntry idx="6020" subIdx="04" bitLen="16" halPin="ch3" halType="u32"/>
</pdo>
<pdo idx="1a04">
<!--Data process data mapping-->
<pdoEntry idx="6040" subIdx="01" bitLen="16" halPin="word0" halType="u32"/>
<pdoEntry idx="6040" subIdx="02" bitLen="16" halPin="word1" halType="u32"/>
<pdoEntry idx="6040" subIdx="03" bitLen="16" halPin="word2" halType="u32"/>
<pdoEntry idx="6040" subIdx="04" bitLen="16" halPin="word3" halType="u32"/>
<pdoEntry idx="6040" subIdx="05" bitLen="16" halPin="word4" halType="u32"/>
<pdoEntry idx="6040" subIdx="06" bitLen="16" halPin="word5" halType="u32"/>
<pdoEntry idx="6040" subIdx="07" bitLen="16" halPin="word6" halType="u32"/>
<pdoEntry idx="6040" subIdx="08" bitLen="16" halPin="word7" halType="u32"/>
</pdo>
<pdo idx="1a05">
<!--Data process data mapping-->
<pdoEntry idx="6050" subIdx="01" bitLen="8" halPin="err0" halType="s32"/>
<pdoEntry idx="6050" subIdx="02" bitLen="8" halPin="err1" halType="s32"/>
<pdoEntry idx="6050" subIdx="03" bitLen="8" halPin="err2" halType="s32"/>
<pdoEntry idx="6050" subIdx="04" bitLen="8" halPin="err3" halType="s32"/>
<pdoEntry idx="6050" subIdx="05" bitLen="8" halPin="err4" halType="s32"/>
<pdoEntry idx="6050" subIdx="06" bitLen="8" halPin="err5" halType="s32"/>
<pdoEntry idx="6050" subIdx="07" bitLen="8" halPin="err6" halType="s32"/>
<pdoEntry idx="6050" subIdx="08" bitLen="8" halPin="err7" halType="s32"/>
<pdoEntry idx="6050" subIdx="09" bitLen="8" halPin="err8" halType="s32"/>
<pdoEntry idx="6050" subIdx="0a" bitLen="8" halPin="err9" halType="s32"/>
<pdoEntry idx="6050" subIdx="0b" bitLen="8" halPin="err10" halType="s32"/>
<pdoEntry idx="6050" subIdx="0c" bitLen="8" halPin="err11" halType="s32"/>
<pdoEntry idx="6050" subIdx="0d" bitLen="8" halPin="err12" halType="s32"/>
<pdoEntry idx="6050" subIdx="0e" bitLen="8" halPin="err13" halType="s32"/>
<pdoEntry idx="6050" subIdx="0f" bitLen="8" halPin="err14" halType="s32"/>
<pdoEntry idx="6050" subIdx="10" bitLen="8" halPin="err15" halType="s32"/>
<pdoEntry idx="6050" subIdx="11" bitLen="8" halPin="err16" halType="s32"/>
<pdoEntry idx="6050" subIdx="12" bitLen="8" halPin="err17" halType="s32"/>
<pdoEntry idx="6050" subIdx="13" bitLen="8" halPin="err18" halType="s32"/>
<pdoEntry idx="6050" subIdx="14" bitLen="8" halPin="err19" halType="s32"/>
<pdoEntry idx="6050" subIdx="15" bitLen="8" halPin="err20" halType="s32"/>
<pdoEntry idx="6050" subIdx="16" bitLen="8" halPin="err21" halType="s32"/>
<pdoEntry idx="6050" subIdx="17" bitLen="8" halPin="err22" halType="s32"/>
<pdoEntry idx="6050" subIdx="18" bitLen="8" halPin="err23" halType="s32"/>
<pdoEntry idx="6050" subIdx="19" bitLen="8" halPin="err24" halType="s32"/>
<pdoEntry idx="6050" subIdx="1a" bitLen="8" halPin="err25" halType="s32"/>
<pdoEntry idx="6050" subIdx="1b" bitLen="8" halPin="err26" halType="s32"/>
<pdoEntry idx="6050" subIdx="1c" bitLen="8" halPin="err27" halType="s32"/>
<pdoEntry idx="6050" subIdx="1d" bitLen="8" halPin="err28" halType="s32"/>
<pdoEntry idx="6050" subIdx="1e" bitLen="8" halPin="err29" halType="s32"/>
<pdoEntry idx="6050" subIdx="1f" bitLen="8" halPin="err30" halType="s32"/>
<pdoEntry idx="6050" subIdx="20" bitLen="8" halPin="err31" halType="s32"/>
</pdo>
</syncManager>
</slave>
Now this obviously doesn't work, as there are a few unknown halTypes, so I'm expecting a few issues along the way to getting this working, however it's a job for tomorrow night, as I'm needing to go and get some sleep, but first step will be getting the Digital IO working.
- mwc
This configures the drive to 4000mA current, and reads the digital inputs to a halPin.<slave idx="0" type="generic" vid="00000a79" pid="00001000" configPdos="true">
<!-- Lichuan CL£-E57H -->
<dcConf assignActivate="300" sync0Cycle="*1" sync0Shift="0"/>
<sdoConfig idx="2303" subIdx="00"> <!-- Peak Current -->
<sdoDataRaw data="a0 0f" />
</sdoConfig>
<syncManager idx="0" dir="out">
</syncManager>
<syncManager idx="1" dir="in">
</syncManager>
<syncManager idx="2" dir="out">
<pdo idx="1600">
<pdoEntry idx="6040" subIdx="00" bitLen="16" halPin="cia-controlword" halType="u32"/>
<pdoEntry idx="6060" subIdx="00" bitLen="8" halPin="opmode" halType="s32"/>
<pdoEntry idx="607A" subIdx="00" bitLen="32" halPin="target-position" halType="s32"/>
<pdoEntry idx="60FF" subIdx="00" bitLen="32" halPin="target-velocity" halType="s32"/>
</pdo>
</syncManager>
<syncManager idx="3" dir="in">
<pdo idx="1a00">
<pdoEntry idx="6041" subIdx="00" bitLen="16" halPin="cia-statusword" halType="u32"/>
<pdoEntry idx="6061" subIdx="00" bitLen="8" halPin="opmode-display" halType="s32"/>
<pdoEntry idx="6064" subIdx="00" bitLen="32" halPin="actual-position" halType="s32"/>
<pdoEntry idx="606C" subIdx="00" bitLen="32" halPin="actual-velocity" halType="s32"/>
<pdoEntry idx="6077" subIdx="00" bitLen="16" halPin="actual-torque" halType="u32"/>
<pdoEntry idx="60fd" subIdx="00" bitLen="32" halPin="digital-inputs" halType="u32"/>
</pdo>
</syncManager>
</slave>
I'll likely expand on it once things are installed on the machine, as I'd like it to fully configure the drive when the machine is powered on, but this is enough to get the basics working for now.
- JT
-

JT
- gonzalovargas1.
We own two old Biesse CNC machines, a Rover 321R (1994) and a Rover 18 (1993), and we are looking to retrofit their obsolete control systems.
We need someone who could help us design, configure and, hopefully, preprogram a complete retrofit control system, preferably retaining the existing DC servo motors and SOPREL drives.
We might also need remote technical assistance, particularly if we cannot find someone locally in Bolivia with the necessary expertise to carry out the installation and commissioning.
Do you think you could help us develop this project?
If so, could you please provide an email address where we can contact you directly? Alternatively, you can reach us at gvargas@lc.com.bo.
Thank you for your time.
Best regards,
Gonzalo Vargas
- tuxcnc
I couldn't have known about this, as I didn't examine the source files; I simply used the pre-built package you provided a link to. It doesn't work and instead throws the following error:a compatible cia402 is released with the latest linuxcnc-ethercat you don't need to compile it yourself, I also rewritten it in C.
github.com/linuxcnc-ethercat/linuxcnc-et...releases/tag/v1.47.0
here is the fixed component in C if you want to take a look
github.com/linuxcnc-ethercat/linuxcnc-et.../master/src/cia402.c
On the other hand, `linuxcnc-ethercat_1.45.0+getset-1+deb12u1_amd64.deb` works, but it does not contain `cia402.so`.
Consequently, I installed version 1.45 and used the `cia402.so` file extracted from the 1.47 package.
The machine works now.
Thank for your works.