Smeerpomp aansturen

LinuxCNC kan hier besproken worden

Moderator: Moderators

Plaats reactie
thebigbozz
Berichten: 91
Lid geworden op: 30 mei 2012 01:02
Locatie: Krimpen a/d IJssel
Contacteer:

Smeerpomp aansturen

Bericht door thebigbozz »

Heren, ik loop een beetje vast

In dit topic gaf ik al aan een smeerpomp te hebben en van plan bent om deze aan te sturen met LinuxCNC.

Nu heb ik component gevonden op het Linuxcnc forum maar ik krijg niet voor elkaar dat de timer gaat lopen

Hier de code in de costum.hal:

Code: Selecteer alles

#central lubrication
loadrt time
loadrt lubrication


net lube lubrication.0.lube => hm2_5i25.0.7i76.0.0.output-08
net machine-is-enabled lubrication.0.motion <= motion.motion-enabled
En hier het component:

Code: Selecteer alles

component lubrication ; 
pin in bit motion               "Input pin for motin detect";     
pin out bit lube           "Output pin for lube pump";
pin out float elapsed_cycle       "Current value of elapsed cycle time";
pin out float elapsed_lube "Current value of elapsed lube time";
 

param rw float cycletime=20      "Time for wait";
param rw float lubetime=10 "Time for lube";
 
variable double ctimer;
variable double ltimer;
 
 
function _;
 
license "GPL";
author "mk";
;;
if (motion) {
       ctimer = ctimer + fperiod;
       elapsed_cycle = ctimer;
       if (ctimer > cycletime){
             ctimer=0;
             elapsed_cycle=0;   
             lube=1;
       }     
}
if (lube){
       ltimer= ltimer + fperiod;
       elapsed_lube=ltimer;
       if (ltimer>lubetime){
             lube=0;
             ltimer=0;
             elapsed_lube=0;    
       }
}
Als ik nu in de Hal meter ga kijken veranderd lubrication.0.elapsed_cycle niet als ik de machine aanzet.
Wie weet wat ik over het hoofd zie, of fout doe?

Groeten,

Mark
Gebruikersavatar
DaBit
Donateur
Berichten: 11018
Lid geworden op: 05 dec 2012 13:48
Locatie: Oss

Re: Smeerpomp aansturen

Bericht door DaBit »

Je mist de 'addf lubrication servo-thread' na de loadrt.
De belangrijkste wet in de wetenschap: 'hoe minder efficient en hoe meer herrie, hoe leuker het is'
thebigbozz
Berichten: 91
Lid geworden op: 30 mei 2012 01:02
Locatie: Krimpen a/d IJssel
Contacteer:

Re: Smeerpomp aansturen

Bericht door thebigbozz »

Nu krijg ik gelijk een foutmelding:

HAL: error: function 'lubrication' not found
./costom.hal:8: addf failed
Gebruikersavatar
DaBit
Donateur
Berichten: 11018
Lid geworden op: 05 dec 2012 13:48
Locatie: Oss

Re: Smeerpomp aansturen

Bericht door DaBit »

Dan zou het 'addf lubrication.0 servo-thread' moeten wezen...
De belangrijkste wet in de wetenschap: 'hoe minder efficient en hoe meer herrie, hoe leuker het is'
Linki
Berichten: 679
Lid geworden op: 22 dec 2009 13:20
Contacteer:

Re: Smeerpomp aansturen

Bericht door Linki »

Aangezien het geen standaard component is, moet hij het component dan niet eerst installeren met hallcompile?
thebigbozz
Berichten: 91
Lid geworden op: 30 mei 2012 01:02
Locatie: Krimpen a/d IJssel
Contacteer:

Re: Smeerpomp aansturen

Bericht door thebigbozz »

DaBit schreef:Dan zou het 'addf lubrication.0 servo-thread' moeten wezen...
HELD!

2 dagen lopen etteren...

Dank je wel, nu kan ik weer verder met modificeren.
Linki schreef:Aangezien het geen standaard component is, moet hij het component dan niet eerst installeren met hallcompile?
Dat is gedaan. Anders was ik al eerder vast gelopen

Mark
thebigbozz
Berichten: 91
Lid geworden op: 30 mei 2012 01:02
Locatie: Krimpen a/d IJssel
Contacteer:

Re: Smeerpomp aansturen

Bericht door thebigbozz »

Na een paar dagen proberen om een component te maken voor mijn smeerpomp, is het eindelijk zo ver.
De dingen die wou, zitten er in en het werkt ook nog. Met dank aan Dabit voor het laatste zetje.

Voor de geintreseerde onder ons:

In je costum.hal toevoegen:

Code: Selecteer alles

#central lubrication
loadrt lubrication

addf lubrication.0 servo-thread


net lube lubrication.0.lube => hm2_5i25.0.7i76.0.0.output-08
net motion lubrication.0.motion <= motion.current-vel
net lubelow lubrication.0.lubelow <= hm2_5i25.0.7i76.0.0.input-16
Even je in en output aanpasen.


Het component:

Code: Selecteer alles

component lubrication ; 
pin in float motion             "Input pin for motin detect";     
pin out bit lube           	"Output pin for lube pump";
pin out float elapsed_cycle     "Current value of elapsed cycle time";
pin out float elapsed_lube 	"Current value of elapsed lube time";
pin out float elapsed_fault     "Current value of elapsed fault time";
pin out float elapsed_delay     "Current value of elapsed delay time";
pin in bit lubelow		"input for low oil level signal";

param rw float cycletime=900    "Time for wait";
param rw float lubetime=10 	"Time for lube";
param rw float faulttime=300 	"fault message interval";
param rw float delaytime=30 	"wait time to lube after fault";
 
variable double ctimer=870;
variable double ltimer=0;
variable double ftimer=290;
variable double dtimer=0;
variable int request=0;
 
 
function _;
 
license "GPL";
author "mk";
;;

if(motion > 0 ){
       ctimer = ctimer + fperiod;
       elapsed_cycle = ctimer;
       if (ctimer > cycletime){
             ctimer=0;
             elapsed_cycle=0;   
             request=1;
       }     
}

if (lubelow){
       dtimer=0;
       ftimer = ftimer + fperiod;
       elapsed_fault = ftimer;
       if (ftimer > faulttime){
             rtapi_print_msg(RTAPI_MSG_ERR, "Slideway oil level low! Refill oil tank");
             ftimer=0;
             elapsed_fault=0;

       }       
}
else if (request){
       dtimer= dtimer + fperiod;
       elapsed_delay=dtimer;
       if (dtimer>delaytime){
             lube=1;
             dtimer=0;
             elapsed_delay=0;
             request=0;
       }
}



if (lube){
       ltimer= ltimer + fperiod;
       elapsed_lube=ltimer;
       if (ltimer>lubetime){
             lube=0;
             ltimer=0;
             elapsed_lube=0;
             ftimer=0;
             elapsed_fault=290;
       }
}
Opslaan in je "Home" folder als "lubrication.comp".

Dan in terminal:

Code: Selecteer alles

sudo halcompile --install lubrication.comp
Verontschuldigingen voor mijn C skills, eerste keer dat ik C gebruik...

Wat doet het?

Na de eerste 30 sec bewegen (maakt niet uit welke as) geeft hij zijn eerste smeer request. De volgende request doet hij na 15 minuten
Dan gaat de 30 seconden delay in, en begint daarna 10 seconden te smeren.

Als er low level signaal komt,er na 10 seconden een alarm melding op het scherm en stopt hij de pomp na zijn 10 seconde smeren. (dit om niet te blijven hangen op het randje van wel/niet low level.
Deze melding blijft hij elke 5 min herhalen. Hij zal niet meer smeren tot hij geen low level meer heeft.

Wanneer dan de tank word bijgevuld, wacht hij 30 seconden tot de pomp word gestart. Overigens alleen als de 15min zonder smeren zijn overschreden.

Deze tijden zijn allemaal nog indicatief. Dit moet nog worden aangepast waneer dit nodig is.

Vragen en/of opmerkingen zijn welkom.

Mark
Plaats reactie