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:
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