Advanced Search

Search Results (Searched for: )

  • Jensner
  • Jensner
22 Oct 2024 16:17 - 22 Oct 2024 16:21

Version aktualisieren + diverse Fehlermeldungen

Category: QtPyVCP

Yes, I think so.
I uninstalled and reinstalled like pint 4. and 5. in this Tutorial:
kcjengr.github.io/probe_basic/stable_develop_branch_change.html
Got no errors during deinstall and reinstall.
But nothing changed on these errors.
The sim opens wthout any problems and seems to work without any problems.

Becouse of an networkproblem, I checked my Firewall and found nothing at the logs. 
The last error was becouse of the blocked Port TCP 11371 whos needed for the Public_Key.
  • Roguish
  • Roguish's Avatar
22 Oct 2024 16:07
Replied by Roguish on topic Spindle Inhibit while Probing.....

Spindle Inhibit while Probing.....

Category: Qtvcp

Chris. appologies for bring this up again.
I have notices a pin named 'qtversaprobe.enable'
what is it? and where does it come from?
it is an output of something......
  • Grotius
  • Grotius's Avatar
22 Oct 2024 16:04
Replied by Grotius on topic linuxcnc trajectory planner

linuxcnc trajectory planner

Category: General LinuxCNC Questions

Hi Arciera,

The motdot.so logic is that it sends just one gcode line, or it sends a buch of lines.

If it sends just one line,
then it waits for this line to get ready. After that it sends 100+ gcode lines in portions. (most of time 2000 as the buffer size.)
So it's not that we get complete gcode at once. Therefore if we get only one line, we dont trim this one.

You can test this by turning of the program velocity to zero before pressing the run button.
If program speed is zero it won't send the bunch of gcode lines.
If you then turn on the program with speed, it will send more lines at once.

In the logic of the code at the moment, we don't trim the first segment's front. And last segment's back.

Maybe you have an idea what should be the route.

Note:
In the new planner, we are able to buffer including the first segment.

To me it seems that if we could pass on information about how much the segments of an intersection have been trimmed to the clothoid fitting function we could adjust the parameters of the clothoid such that we fit the larges possible fillet to that intersection. If you see a way to derive this information from the trimmed segments then I'm all for doing it your way
We know exactly what we trimmed and how much every segment is trimmed on bot's side's in mm.
The clothoids fit's given a start & end point. The clothoids use a start & endangle, and a curvature start & end.
That are in total 4 double values and 2 points.

So to change a clothoid, the only thing you can do is change the start & end point. Curvature's and Theta's are fixed.

If you mean something else, like max deviation from the clothoid to the path, this can be calculated also.

Installing qt is a terminal command.
sudo apt install qtcreator
sudo apt install qtbase5-dev qt5-qmake qtbase5-dev-tools




 
  • MennilTossFlykune
  • MennilTossFlykune
22 Oct 2024 15:39
Replied by MennilTossFlykune on topic Gmoccapy - spindle restarts at program stop

Gmoccapy - spindle restarts at program stop

Category: Gmoccapy

Here it is in gmoccapy:

If I abort almost immediately with the ESC key, the spindle stays on.
Does not happen with emcTaskStateRestore(); commented out.
  • Aciera
  • Aciera's Avatar
22 Oct 2024 15:31
Replied by Aciera on topic linuxcnc trajectory planner

linuxcnc trajectory planner

Category: General LinuxCNC Questions

Are you using qt for it as viewer and editor? This should be the nice as you can load the cmakelists directly in qt.


No, I'm using Eclipse, mostly because I remember the headaches I had trying to get Qt installed and setup correctly.


I played around a bit and moved the test for segment length vs trim_distance to 'trimCurves' which seems to work (although sometimes there is a problem with the first corner being falsely excluded apparently depending on where the tool is located at startup):

 
diff --git a/src/emc/motion/optimizer.cpp b/src/emc/motion/optimizer.cpp
index 21898a1..230c8fe 100644
--- a/src/emc/motion/optimizer.cpp
+++ b/src/emc/motion/optimizer.cpp
@@ -62,7 +62,12 @@ int optimizer::trimCurves(vector& ptr_vector) {
 
     // Trim all the curves back given the G64 P.. value.
     for (std::size_t i = 0; i < ptr_vector.vec.size(); ++i) {
-
+        double trim_distance = G64P; /*seg.tag.fields_float[3];*/  // G64 P..
+        // Trim conditions.
+        if(trim_distance<=0){
+            std::cout<<"no trim distance for segment id:"<<seg.id<<std::endl;
+            return 0;
+        }
         int trim_front=0;
         int trim_back=0;
 
@@ -74,18 +79,27 @@ int optimizer::trimCurves(vector& ptr_vector) {
             trim_back=1;
         }
 
-        // If next segment is colear, dont trim this end. Must be a line-line.
+        // If next segment is colinear, dont trim this end. Must be a line-line.
         if(i<ptr_vector.vec.size()-1){
             const struct emcmot_segment &seg = ptr_vector.vec.at(i);
             const struct emcmot_segment &seg_next = ptr_vector.vec.at(i+1);
+            std::cout<<"segment: "<<seg.id<<std::endl;
+            std::cout<<"trim_distance: "<<trim_distance<<std::endl;
+            std::cout<<"segment length: "<<seg.length<<std::endl;
+            std::cout<<"next segment length:"<<seg_next.length<<std::endl;
 
             int res=isColinear(seg.start.tran, seg.end.tran, seg_next.end.tran);
             if(seg.canon_motion_type!=3 && seg_next.canon_motion_type!=3 && res==1){
                 trim_back=0;
             }
+
+            if (trim_distance >= seg_next.length / 2.0 || trim_distance >= seg.length / 2.0) {
+                std::cout<<"next segment or this segment too short, no trim_back for this segment:"<<seg.id<<std::endl;
+                trim_back=0;
+            }            
         }
 
-        // If previous segment is colear, dont trim this start. Must be a line-line.
+        // If previous segment is colinear, dont trim this start. Must be a line-line.
         if(i>0){
             const struct emcmot_segment &seg = ptr_vector.vec.at(i);
             const struct emcmot_segment &seg_prev = ptr_vector.vec.at(i-1);
@@ -94,11 +108,16 @@ int optimizer::trimCurves(vector& ptr_vector) {
             if(seg.canon_motion_type!=3 && seg_prev.canon_motion_type!=3 && res==1){
                 trim_front=0;
             }
-        }
 
-        if (0 != trimCurve(ptr_vector.vec.at(i),trim_front,trim_back)) {
-            std::cerr << "Failed to trim curve at index " << i << std::endl;
-            return -1;
+            if (trim_distance >= seg_prev.length / 2.0 || trim_distance >= seg.length / 2.0) {
+               std::cout<<"previous segment or this segment too short, no trim_front for this segment:"<<seg.id<<std::endl;
+               trim_front=0;
+            }     
+    
+            if (0 != trimCurve(ptr_vector.vec.at(i),trim_front,trim_back)) {
+                std::cerr << "Failed to trim curve at index " << i << std::endl;
+                return -1;
+            }
         }
     }
     std::cout<<"trim curves done."<<std::endl;
@@ -311,9 +330,9 @@ int optimizer::trimCurve(emcmot_segment& seg, int& trim_front, int& trim_back) {
         return 0;
     }
 
-    if (trim_distance >= seg.length / 2.0) {
-        trim_distance = (seg.length / 2.0)-1e-3;
-    }
+    //if (trim_distance >= seg.length / 2.0) {
+    //    trim_distance = (seg.length / 2.0)-1e-3;
+    //}
 
     if(trim_distance<=1e-6){
         std::cout<<"too short to trim, no trim is done for segment id:"<<seg.id<<std::endl;



Is there a particular reason for not handling one fillet after the other?
In a other function, we start with a list of segments. (gcode input) .
They then already have a flag if they may be trimmed front & back.
It this point the empty fillet segments are inserted inbetween. This is a vector insert operation.


Not sure I understand what you are saying. To me it seems that if we could pass on information about how much the segments of an intersection have been trimmed to the clothoid fitting function we could adjust the parameters of the clothoid such that we fit the larges possible fillet to that intersection. If you see a way to derive this information from the trimmed segments then I'm all for doing it your way :)
  • programador
  • programador's Avatar
22 Oct 2024 15:08

Example of HAL configuration for plasma torch height control with THCAD2 7i96s

Category: HAL Examples

Thank you, I will follow your guidance and post step by step here.
  • bladekel
  • bladekel
22 Oct 2024 15:01 - 22 Oct 2024 15:11

How to use QStyleSheet with actionButtons?

Category: Qtvcp

I'm trying to create custom qui with QtDesigner.
I have an interesting problem with actionButton.
I added an actionButton to my MainWidget,and set Action > Machine Control > Home
So far everything worked as it should.. I pressed the button and it started to homing...
After that I wanted to add color change to my Home button with sytlesheet
ActionButton[isHomed=false]{
background-color: rgb(61, 56, 70);
}
ActionButton[isHomed=true]{
background-color: rgb(51, 209, 122);
}



I tried both isHomed,isAllHomed,is_homed_status and is_joint_homed_status...

Also I tried for estop button, machine on button... All the same...
The button action worked but the stylesheet not worked.

My QtDesigner version is 5.15.8, linuxcnc 2.9.3, and working on raspberry pi5 ....

And here is the xml code part of actionButton...
               <widget class="ActionButton" name="actionbutton_8">
                <property name="minimumSize">
                 <size>
                  <width>80</width>
                  <height>80</height>
                 </size>
                </property>
                <property name="maximumSize">
                 <size>
                  <width>80</width>
                  <height>80</height>
                 </size>
                </property>
                <property name="styleSheet">
                 <string notr="true">ActionButton[isHomed=false]{
background-color: rgb(61, 56, 70);
}
ActionButton[isHomed=true]{
background-color: rgb(51, 209, 122);
}</string>
                </property>
                <property name="text">
                 <string/>
                </property>
                <property name="icon">
                 <iconset resource="../../../linuxcnc/configs/my-mill/gui/resource.qrc">
                  <normaloff>:/iconlar/pngIconlar/home.png</normaloff>:/iconlar/pngIconlar/home.png</iconset>
                </property>
                <property name="iconSize">
                 <size>
                  <width>60</width>
                  <height>60</height>
                 </size>
                </property>
                <property name="checkable">
                 <bool>false</bool>
                </property>
                <property name="indicator_option" stdset="0">
                 <bool>false</bool>
                </property>
                <property name="indicator_HAL_pin_option" stdset="0">
                 <bool>false</bool>
                </property>
                <property name="indicator_status_option" stdset="0">
                 <bool>false</bool>
                </property>
                <property name="checked_state_text_option" stdset="0">
                 <bool>false</bool>
                </property>
                <property name="python_command_option" stdset="0">
                 <bool>false</bool>
                </property>
                <property name="on_color" stdset="0">
                 <color>
                  <red>255</red>
                  <green>0</green>
                  <blue>0</blue>
                 </color>
                </property>
                <property name="shape_option" stdset="0">
                 <number>2</number>
                </property>
                <property name="off_color" stdset="0">
                 <color>
                  <red>0</red>
                  <green>0</green>
                  <blue>0</blue>
                 </color>
                </property>
                <property name="indicator_size" stdset="0">
                 <double>0.300000000000000</double>
                </property>
                <property name="circle_diameter" stdset="0">
                 <number>10</number>
                </property>
                <property name="right_edge_offset" stdset="0">
                 <number>0</number>
                </property>
                <property name="top_edge_offset" stdset="0">
                 <number>0</number>
                </property>
                <property name="corner_radius" stdset="0">
                 <double>5.000000000000000</double>
                </property>
                <property name="height_fraction" stdset="0">
                 <double>0.300000000000000</double>
                </property>
                <property name="width_fraction" stdset="0">
                 <double>0.900000000000000</double>
                </property>
                <property name="true_state_string" stdset="0">
                 <string>True</string>
                </property>
                <property name="false_state_string" stdset="0">
                 <string>False</string>
                </property>
                <property name="true_python_cmd_string" stdset="0">
                 <string>print(&quot;true command&quot;)</string>
                </property>
                <property name="false_python_cmd_string" stdset="0">
                 <string>print(&quot;false command&quot;)</string>
                </property>
                <property name="invert_the_status" stdset="0">
                 <bool>false</bool>
                </property>
                <property name="is_paused_status" stdset="0">
                 <bool>false</bool>
                </property>
                <property name="is_estopped_status" stdset="0">
                 <bool>false</bool>
                </property>
                <property name="is_on_status" stdset="0">
                 <bool>false</bool>
                </property>
                <property name="is_idle_status" stdset="0">
                 <bool>false</bool>
                </property>
                <property name="is_homed_status" stdset="0">
                 <bool>false</bool>
                </property>
                <property name="is_flood_status" stdset="0">
                 <bool>false</bool>
                </property>
                <property name="is_mist_status" stdset="0">
                 <bool>false</bool>
                </property>
                <property name="is_block_delete_status" stdset="0">
                 <bool>false</bool>
                </property>
                <property name="is_optional_stop_status" stdset="0">
                 <bool>false</bool>
                </property>
                <property name="is_joint_homed_status" stdset="0">
                 <bool>false</bool>
                </property>
                <property name="is_limits_overridden_status" stdset="0">
                 <bool>false</bool>
                </property>
                <property name="is_manual_status" stdset="0">
                 <bool>false</bool>
                </property>
                <property name="is_mdi_status" stdset="0">
                 <bool>false</bool>
                </property>
                <property name="is_auto_status" stdset="0">
                 <bool>false</bool>
                </property>
                <property name="is_spindle_stopped_status" stdset="0">
                 <bool>false</bool>
                </property>
                <property name="is_spindle_fwd_status" stdset="0">
                 <bool>false</bool>
                </property>
                <property name="is_spindle_rev_status" stdset="0">
                 <bool>false</bool>
                </property>
                <property name="joint_number_status" stdset="0">
                 <number>0</number>
                </property>
                <property name="isHomed" stdset="0">
                 <bool>false</bool>
                </property>
                <property name="isAllHomed" stdset="0">
                 <bool>false</bool>
                </property>
                <property name="home_action" stdset="0">
                 <bool>true</bool>
                </property>
                <property name="template_label_option" stdset="0">
                 <bool>false</bool>
                </property>
                <property name="joint_number" stdset="0">
                 <number>-1</number>
                </property>
                <property name="incr_imperial_number" stdset="0">
                 <double>0.010000000000000</double>
                </property>
                <property name="incr_mm_number" stdset="0">
                 <double>0.025000000000000</double>
                </property>
                <property name="incr_angular_number" stdset="0">
                 <double>-1.000000000000000</double>
                </property>
                <property name="toggle_float_option" stdset="0">
                 <bool>false</bool>
                </property>
                <property name="float_num" stdset="0">
                 <double>0.300000000000000</double>
                </property>
                <property name="float_alt_num" stdset="0">
                 <double>50.000000000000000</double>
                </property>
                <property name="view_type_string" stdset="0">
                 <string>P</string>
                </property>
                <property name="command_text_string" stdset="0">
                 <string/>
                </property>
                <property name="ini_mdi_number" stdset="0">
                 <number>0</number>
                </property>
                <property name="textTemplate" stdset="0">
                 <string>%1.3f in</string>
                </property>
                <property name="alt_textTemplate" stdset="0">
                 <string>%1.2f mm</string>
                </property>
               </widget>
  • digiex_chris
  • digiex_chris
22 Oct 2024 14:57
Replied by digiex_chris on topic Surface Grinder cnc conversion advise

Surface Grinder cnc conversion advise

Category: General LinuxCNC Questions

hah indeed, stupid typos.

Though, $5022 would solve my problem...
  • Macwolf
  • Macwolf
22 Oct 2024 14:56
Replied by Macwolf on topic Beckhoff components crasht Linuxcnc

Beckhoff components crasht Linuxcnc

Category: EtherCAT

hello
<slave idx="0" type="generic" vid="00004321" pid="000010c2" configPdos="true">

what does this line mean
what is vid,pid?

thanks
  • PCW
  • PCW's Avatar
22 Oct 2024 14:55

7i95T spindle control via Modbus RS485 and SPINX1A

Category: Driver Boards

The SPINX1A has a 2 pole ~ 100 Hz RC filter to average the PWM signal.

Too low a PWM frequency will let noticeable ripple through the filter.
Too high a PWM frequency will result in poor linearity, (as the switcing
time of the OPTO becomes a significant part of the cycle time)

For the SPINX1A, 20 KHz is about the optimum compromise between ripple and linearity.
  • Muecke
  • Muecke's Avatar
22 Oct 2024 14:50

G-Code Verarbeitung: Kurze Pausen zwischen Bewegungen - Wie beschleunigen?

Category: Deutsch

DFX kenne ich auswenig, da der Inventor dies ausgeben kann.


OK, dann schaue ich mir die Programm mal bei gelegenhit an. oder kann ich mir der DFX schon was angfanegn? für LinuxCNC?
  • ric812
  • ric812
22 Oct 2024 14:16 - 22 Oct 2024 14:18
Replied by ric812 on topic Mesa 7i96s torch on/off connection

Mesa 7i96s torch on/off connection

Category: Driver Boards

Could not upload the manuel. Here is the link to it. It is an Everlast Supercut 50 (w/o a pilot arc)

Everlast Supercut 50
  • PCW
  • PCW's Avatar
22 Oct 2024 14:12

Example of HAL configuration for plasma torch height control with THCAD2 7i96s

Category: HAL Examples

3rd The big problem is that LinuxCNC does not understand that only a frequency signal from 100 to 1000Kz determines the feedback of the Z axis position.

I think this was already discussed  in another thread. I think the best way to do this is
step by step

The first step is to scale the encoder velocity into the desired units (mm?)
This can be done with the encoder scale parameter, but it's likely you will need
an offset, in which case you can feed the encoder velocity through the offset
component. When this is all done you should have a direct scaled position signal.

To calculate the scaling you will need to move the Z axis to 0 position, read the
encoder velocity, then move Z a known distance (preferably near full range of motion)
and then read the encoder velocity again,


The second step is to feed this signal into the feedback input of a PID component.
this PID component will force the Z axis to follow the Z axis position command from
LinuxCNC.

If you setup a normal analog + encoder feedback LinuxCNC configuration
with pncconf for 7I77 hardware, all of setup/connections/components will have been created
for you and the main change that needs to be done is substitution of the scaled/offset
encoder velocity for the encoder position that pncconf setup.

 
  • ric812
  • ric812
22 Oct 2024 14:11
Replied by ric812 on topic Mesa 7i96s torch on/off connection

Mesa 7i96s torch on/off connection

Category: Driver Boards

Here is the manual for the plasma source I am using. I have someone to help me with the wiring of the voltage divider to the plasma machine but nobody for the Mesa board pinout. Someone will help me with the Linuxcnc setup of the mesa board and QtplasmaC.
  • bkt
  • bkt's Avatar
22 Oct 2024 13:57
Replied by bkt on topic mb2hal feedback

mb2hal feedback

Category: Advanced Configuration

use classicladder ... all more easy
Displaying 22081 - 22095 out of 22909 results.
Time to create page: 0.455 seconds
Powered by Kunena Forum