Vai al contenuto
PLC Forum


Tapparella Elettrica - Il motore non va!!!


snafu

Messaggi consigliati

Ciao a tutti,

sto facendo un FB per la selezione di X dati di default in funzione del tipo di bobina scelta.

Per cui in funzione del tipo di bobina scelta l'FB mi dovrebbe sparar fuori in uscita 15 valori di preset (per esempio il diametro minimo, diametro massimo, larghezza bobina, etc.. etc..)

Sto facendo un indirizzamento indiretto per cui in funzione del numero bobina scelto carico un valore in un puntatatore "Pointer"

dopodichè

AUF #DB_Bobbin_Data (ingresso del FB)

L DBW [Pointer_Min_Diameter] <<------- PROBLEMA

T #Bobbin_Min_Diameter (uscita del FB)

nel FB non mi perrmette di indicizzare la DBW "non sono ammesse operazioni indirette di FB Pointer_Min_Diameter (cosa che posso tranquillamente fare in un FC)

Sbaglio qualcosa? C'è un modo per ovviare al problema??

Grazie a tutti in anticipo.

Link al commento
Condividi su altri siti


Mi sento di chiederti subito una cosa, perché vuoi usare un FB e non un FC?

Se non ho capito male tu vuoi che la tua funzione restituisca dei valori (suppongo registrati in una DB globale) in funzione ad un ingresso coretto?

Per tanto la tua funzione dovrebbe fare all'incirca questo:

Dato in ingresso (Suppongo INT per comodità valori da 1 a 10)

Struttura dati composta da 5 INT ( sempre per supposizione)

Per cui il mio puntatore al dato richiesto sarà => Puntatore = (Dato in ingresso - 1) * (5 * 2(= byte per ogni dato int))

Gianluca

Modificato: da TravelMen
Link al commento
Condividi su altri siti

Fondamentalmente hai centrato il punto.

INDIRIZZAMENTO PUNTATORI:

L L#160

+D

T #Pointer_Preset_Diameter

L L#160

+D

T #Pointer_Core_Diameter

L L#160

+D

T #Pointer_Flange_Diameter

L L#160

+D

T #Pointer_WireEnd_Diameter

SCITTURA DELLE USCITE IN FUNZIONE DEL PUNTATORE:

AUF #DB_Bobbin_Data_Base

L DBW [Pointer_Preset_Diameter]

T #Reel_Preset_Diameter

AUF #DB_Bobbin_Data_Base

L DBW [#Pointer_Core_Diameter]

T #Reel_Core_Diameter

AUF #DB_Bobbin_Data_Base

L DBW [#Pointer_Flange_Diameter]

T #Reel_Flange_Diameter

AUF #DB_Bobbin_Data_Base

L DBW [#Pointer_WireEnd_Diameter]

T #Reel_Wire_End_Diameter

Perchè non voglio usare un FC? perchè tutte le funzioni standard che ho creato fin ora sono come FB che automaticamente genera la bella DB d'istanza che conterrà tutti i dati.

Esempio FB100 calcola il diametro di una bobina in funzione della velocità di linea e della velocità bobina per cui richiamandola X volte nello stesso programma avrò X DB d'istanza, una per bobina con tutti i suoi valori.

Onestamente preferirei farlo nell'FB... sempre che sia possibile...

Modificato: da snafu
Link al commento
Condividi su altri siti

Probabilmete il problema è nel formato del puntatore. Come lo hai scritto?

i puntatori sono dichiarati DINT

ho provato a copiare il tutto in un FC e lì non mi da errori :huh:

Link al commento
Condividi su altri siti

AUF #DB_Bobbin_Data_Base

Così richiami una DB globale in primo luogo (lo si puo fare anche con le DB di istanza) ma allora i dati e i puntatori che vai a creare sono riferiti alla DB che vai ad aprire prima dell' assegnazione dei valori all'uscita del tuo FB, per tanto prova a fare questo

supposto che con "L L#160" tu voglia indicare un dato locale e non un numero DINT (perché se vuoi puntare al dato presente nella locazione 160 della DB di istanza puoi scrivere anche L P#DIX160.0)

dopo aver aperto la DB fai:

L 160

SLD 3 => trasformazione di 160 in puntatore

L P#DBX0.0

+D

T #Pointer_Preset_Diameter

e cosi via

Prova a dichiarare i puntatori come DWORD e non DINT

Mi sa che stai facendo un di confusione attento con DB di istanza e DB globali, non conosco la tua applicazione ma mi sento di dirti crea una DB globale dove vai a scrive tutti i dati che ti servono dove se devi inserire una nuova sequenza di dati non ti serve aggiungere richiami a FB con relative DB.

Modificato: da TravelMen
Link al commento
Condividi su altri siti

Grazie 1000... lunedì provo.

Comunque, la mia idea è questa

- ho un FB100 (per esempio) che gestisce tutto l'ambaradan a cui, tutte le volte che vado a utilizzarla (x volte nel mio programma per x bobine), assegnerò una db (per esempio DB100) che automaticamente verrà creata d'istanza per il mio FB100

- un parametro d'ingresso del mio FB100 è il numero di una DB globale (per esempio DB30) che contiene tutti e 15 i valori di default bobine per 20 tipi di bobine (per un totale quindi di 300 valori) dove il primo valore della prima bobina sarà alla DB30.DBW40, il primo valore della seconda bobina alla DBW42, il secondo valore della prima bobina sarà 160 Bit (10 INT) dopo e quindi alla DB30.DBW60, e via via così.

- quindi il mio FB, in base al numero di bobina da te selezionato (per esempio 2) andrà ad indicizzare a DBW42 - DBW62 - DBW82 - DBW102 etc.. etc..

- 15 valori di default caricati in funzione della bobina scelta verranno scritti come valore d'uscita del FB e risiederanno ovviamente nella DB d'istanza (nel caso del nostro esempio DB100

Lunedì provo e poi ti faccio sapere. Intanto grazie!

Link al commento
Condividi su altri siti

Ho commesso un errore bestiale, per fortuna ancora nessuno se ne è accorto :ph34r: ;)

Mettiamo un po di ordine:

Allora adesso mi è abbastanza chiaro cosa vuoi fare allora come sospettavo tu vuoi in base la numero di bobina selezionato porre in uscita del tuo blocco i dati relativi alla bobina, bene, allora secondo me è meglio fare un FC tanto che questa funzione serve solo a preparare dei dati in funzione alla scelta fatta, in cui come valore d'ingresso metterei anche la DB da cui prelevare i dati, per tanto dovrebbe venir fuori una cosa del genere: (te la scrivo in inglese perché lo conosco meglio)

OPN DB 300

L #BOBINASEL

L 1

-I

L 2

*I

SLD 3

L P#DBX42.0

+D

T #PUNTATORE_PRIMO_DATO

ECC.

ECC.

ECC.

L DBW[#PUNTATORE_PRIMO_DATO]

T PRIMO_DATO_IN_USCITA

Se posso consigliarti vedi di mettere apposto i dati nella DB 300, secondo me andrebbe meglio ragruppare i dati relativi alla prima bobina uno dietro l'altro, anche per una più facile lettura.

buon lavoro

Link al commento
Condividi su altri siti

alla fine ho fatto un FC

AUF DB 300

L #BOBINASEL

L 1

-I

L 50

*I

SLD 3

T #PUNTATORE_PRIMO_DATO

ECC.

ECC.

ECC.

L DBW[#PUNTATORE_PRIMO_DATO]

T PRIMO_DATO_IN_USCITA

Come mi hai giustamente consigliato tu, nella DB300 ho messo tutti i dati della bobina 1 in fila ed ho lasciato anche 5 INT spare per future applicazioni.

Quindi dalla DBW0 alla DBW48 ho la bobina 1

dalla DBW50 alla DBW98 ho la bobina 2

dalla DBW100 alla DBW148 ho la bobina 3

dalla DBW150 alla DBW198 ho la bobina 4

dalla DBW200 alla DBW248 ho la bobina 5

E se in un futuro il cliente volesse aggiungere altri tipi di bobine potrei tranquillamente aggiungerre a seguire nella DB.

Questo è quanto... e grazie a tutti per i consigli!

Link al commento
Condividi su altri siti

OK, mi fa piacere di esserti stato utile, ho solo da farti un appunto, quello che hai fatto è giusto ma il tuo puntatore punta alla locazione "50" giusta ma non corretta dovresti aggiungere prima dell'operazione di "trasfer" io farei :

L P#DBX0.0

+D

così facendo il tuo puntatore punta realmente alla locazione DBX50.0 e non solo a 50.0

Link al commento
Condividi su altri siti

  • 1 year later...

Salve a tutti voi del forum.

Sto sistemando un impianto elettrico a casa di un caro amico e mi sono imbattuto per la prima volta in una serranda elettrica. La classica serranda che si avvolge su se stessa per aprirsi. Ho gia fatto qualche ricerca sul forum ma ho trovato solo discussioni sul collegamento multiplo di queste o di collegamento temporizzato.

Come anticipato è la prima volta che provo a collegare una serranda del genere. Usa un interruttore basculante per la movimentazione, ma dopo vari tentativi non sono riuscito a farla andare. Era un impianto elettrico vecchio (i cavi elettrici erano mantenuti a muro con i chiodi) e quindi ho una movimentazione vecchia di una decina d'anni almeno, ed ovviamente non ho nessun schema elettrico o aiuto del genere.

Il cavo con guaina che va al motore della serranda è così composto:

Cavo Giallo verde

Cavo Blu

Cavo Nero

Cavo Marrone

Dall'alto della mia ignoranza :lol: ho ragionato rispettando i colori e cioè:

Il NERO ed il MARRONE sono le 2 fasi. Questo perchè in base a dove mando la fase la serranda o sale o scende.

Il neutro sarà il BLU per avere il ritorno della fase che sta lavorando.

Ecco come ho collegato nel dettaglio:

Fase che va all'interruttore basculante --> Ponte nell'interruttore basculante per portare la fase per la movimentazione inversa --> dall'intterruttore basculante poi esco con due cavi, uno al nero ed uno al marrone del motore --> il blu che esce dal motore lo porto nel neutro dall'impianto.

Con questo collegamento non va una mazza :angry:

Fatemi sapere se ho ragionato bene con il collegamento xkè in settimana ritornerò per finirire l'impinato (si spera).

Spero solo che qualche genio di pseudo elettricista che ha collegato la saracinesca per la prima volta non abbia invertito qualche cavo. Mi è stato detto dal titolare che è stato modificato qualche collegamento per baipassare i fine corsa che si erano rotti :o

Stavo pensado come alternativa di prendere fase e neutro ed andare a collegare direttamente sul motore per fare vari tentativi.

Apetto vostre notizie.

Grazie.

Valentino.

Link al commento
Condividi su altri siti

Non ho capito ancora se è una serranda (tipo garage) o tapparella per finestre.

Il collegamento e le colorazioni che haui rispettato doverbbero essere giusti, ad eccetto se è una serranda.... potrebbe essere che sono stati invertiti i collegamenti alla morsettiera del motore. Se è un vecchio impianto, e il motore è stato collegato dal fabbro molto probabilmente avrà utilizzato il cavo nero per il neutro ed il blu e marrone per alzare ed abbassare.

Se parli di tapparella è sicuramente un guasto al motore, perchè il cavetto che esce dal motore rispetta le colorazioni che elencavi.

Link al commento
Condividi su altri siti

Guarda non so che roba è. Si tratta di saracinesca per garage xkè è grossa (un paio di metri di larghezza) e perchè sta in un garage :P ma alla fine si avvolge su se stessa come le tapparella di casa. Ho pensato di chiamarla "tapparella" perchè non vorrei che pensaste a quei garage tipo americani con la porta che sale e scompare sotto al soffitto.

Però adesso che mi ci fai pensare, mi sembra che il titolare mi ha detto che il "FERRARO" (alias Fabbro) ha poi modificato qualcosa per baipassare i fine corsa che di fatto adesso non intervengono :o

Modificato: da vale.zullo
Link al commento
Condividi su altri siti

Ciao Vale.

Sul motore ci sono dei fine corsa,se sono rotti il motore non ti parte.

Si ci sono 2 finecorsa (uno per la salita ed uno per la discesa) che a detta del titolare sono stati baipassati da un elettricista anni fa perchè erano rotti. Tu dici che sono dei finecorsa N.C. che nel momento di rottura si interrompe il circuito? Tipo i pulsanti di STOP che uso in automazione come il PLC. Bene che mi avete aperto questa idea così almeno controllo.

Modificato: da Luca Bettinelli
sistemato il "quote"
Link al commento
Condividi su altri siti

Se non dico eresie,i fine corsa,inquanto sicurezze, dovrebbero essere sempre nc.
Esatto, devono essere nc, la sicurezza deve intervenire anche in caso si interrompa un cavo che va ai finecorsa.
Link al commento
Condividi su altri siti

Crea un account o accedi per commentare

Devi essere un utente per poter lasciare un commento

Crea un account

Registrati per un nuovo account nella nostra comunità. è facile!

Registra un nuovo account

Accedi

Hai già un account? Accedi qui.

Accedi ora
×
×
  • Crea nuovo/a...