- Posts: 91
- Thank you received: 0
Find components source code.
8 years 7 months ago #107032
by Patrik T
Find components source code. was created by Patrik T
Hi
I want to set the limit2 components maxv parameter as a pin. If I find the source I can just change the parameter to a pin and save the work of making a component from scratch. I have searched but my Google fu is inadequate to this task. Could someone tell me how to find the components source code.
Thanks
I want to set the limit2 components maxv parameter as a pin. If I find the source I can just change the parameter to a pin and save the work of making a component from scratch. I have searched but my Google fu is inadequate to this task. Could someone tell me how to find the components source code.
Thanks
Please Log in to join the conversation.
8 years 7 months ago #107033
by andypugh
Replied by andypugh on topic Find components source code.
The comps are in src/hal/components
github.com/LinuxCNC/linuxcnc/blob/master...mponents/limit2.comp
And the maxv _is_ a pin, at least in Master, so you could just
sudo halcompile --install limit2.comp
with that file.
github.com/LinuxCNC/linuxcnc/blob/master...mponents/limit2.comp
And the maxv _is_ a pin, at least in Master, so you could just
sudo halcompile --install limit2.comp
with that file.
Please Log in to join the conversation.
8 years 7 months ago #107172
by Patrik T
Replied by Patrik T on topic Find components source code.
Thanks, I do not use Master. I do not know what the advantages of Master are.
The limit2 code did not compile immediately so i modified it to this:
The limit2 code did not compile immediately so i modified it to this:
Code:
component mylimit2;
pin in float in;
pin out float out;
pin in float min = -1e20;
pin in float max = 1e20;
pin in float maxv = 1e20;
param rw float threadfreq = 1000.0f;
///////////////////////////////////////////////////////////////7
function _;
license "GPL"; // indicates GPL v2 or later
;;
///////////////////////////////////////////////////////////////
double old_out = 0.0f;
#ifndef clamp
static inline double clamp(double v, double sub, double sup) {
if(v < sub) return sub;
if(v > sup) return sup;
return v;
}
#endif
///////////////////////////////////////////////////////////////
FUNCTION(_)
{
double tmp = in;
double maxdelta = maxv / threadfreq;
tmp = clamp(tmp, old_out - maxdelta, old_out + maxdelta);
tmp = clamp(tmp, min, max);
old_out = tmp;
out = tmp;
}
Please Log in to join the conversation.
Time to create page: 0.078 seconds
