Vai al contenuto
PLC Forum

Partecipa anche tu alla Live su Youtube martedì 28/01/2025 per festeggiare i 24 anni di PLC Forum

Per ulteriori informazioni leggi questa discussione: https://www.plcforum.it/f/topic/326513-28012025




Fm353


Messaggi consigliati

Inserito:

Salve a tutti!

Sono alle prime armi con fm353 e gli azionamenti.

Ho acquistato una fm353 come scheda di controllo e un azionamento (non siemens).

Ora fm utilizza un cavo 15 pin per la comunicazione con stepdrive e devo adattarlo con il mio azionamento.

Utilizzo il pin per lo step+, il pin dir+, collegati direttamente sull azionamento, devo mettere anche le varie masse del cavo a comune con l alimentazione dell azionamento??

Qualcuno sa dove posso scaricare un manuale con esempi per la programmazione dell fm???

Grazie mille.


Inserita:

Salve Pigroplc,

L azionamento non e' RTA , comunque nello specifico mi interessa sapere quali pin devo collegare dei 15 ho notato che su 3 pin ho gnd la mia domanda e se devo collegarli a comune con l alimentazione dell azionamento.

Grazie per la risposta.

Inserita:

si, servono come riferimento ai segnali.

pigroplc

Inserita:

Un ultima domanda..

Sai dove posso scaricare il progetto esempio della siemens per l utilizzo di FM353??

Grazie,

Inserita:

qui scarichi il pacchetto (se non disponi già della scheda e relativo CD):

https://support.automation.siemens.com/WW/l...2Easp%3Ftab%3D2

dovrebbe quindi installarsi anche il progetto "FMSTSV_L" nelle biblioteche che contiene i blocchi di interfaccia, quindi con la documentazione di quei blocchi ti crei il tuo applicativo

se chiedi al tuo rivenditore siemens potrebbe forse farti avere qualche esempio fatto dai tecnici di laboratorio, mi sembra che all'epoca mi sia messo io a fare il software di sana pianta senza l'esempio pre-costruito.

pigroplc

Inserita:

Ciao sono sempre io questa e' la prima di molte domande

allora sul pin 1 del cavo ho lo step+ collegato su step+ dell azionamento

sul pin 2 ho la dir+ collegato su dir+ dell azionamento

diciamo che per ora mi interessa camminare e scegliere la direzione

ho 3-4 zeri sui pin del cavo li ho saldati tutti ponticellandoli a comune con l alimentazione dell azionamento.

i blocchi per l utilizzo di fm sono 4:

fc0 inizializzazione

fc1 controllo

fc2 lettura

fc3 gestione errori

A me essendo alle prime armi interessa solo camminare senza tutte le molteplici operazioni che ho a disposizione.

domanda 1

fc0 deve essere richiamata in obX ogni qualvolta devo entrare in comunicazione cn fm??

dall esempio siemens fc0 e legata ad un db che gia contiene nel suo interno le aree di memoria di fm nella quale vado a scrivere parametri.

correggimi se sbaglio..

domanda 2

fc1 deve essere richiamata in obX ogni qualvolta devo entrare in comunicazione cn fm??

dall esempio siemens fc1 e legata ad un db che gia contiene nel suo interno le aree di memoria di fm nella quale vado a scrivere parametri.

correggimi se sbaglio..

dunque a me per far camminare il motore occorrerebbe solo fc1 e fc0 giusto??

quali sono i parametri che consentono l avviamento???

dall esempio siemens in fc0 c'e' la modalita' di avanzamento

in fc1 puo scegliere lo start lo step+ ecc

ma provando a pilotarlo tramite tabella delle variabili non riesco a pilotarlo...ù

dunque o sbaglio sul cavetto ho non setto qualche parametro in fc1 che mi fa camminare.........

In attesa di una tua preziosissima risposta ti ringrazio Anticipatamente. :)

Inserita:

in ob100 lanci fc0:

      CALL  FC     0
       DB_NO  :=3                       // DB number
       CH_NO  :=1                       // Axis nubmer 
       LADDR  :=256                     // FM Address
       RET_VAL:=MW200                   // Return value
in ob82 lanci fc2:
    L     #OB82_MDL_ADDR
      L     "AW_DB_Achse_01".MOD_ADR
      ==I                               // is it the same FM addresse ?
      SPBN  END1
      SET   
      S     M    202.0                  // Readout positive edge
      R     M    202.1                  // Error flag reset

      CALL  "POS_DIAG"                  // FC diagnostic readout
       DB_NO  :=3
       RET_VAL:=MW200
       IN_DIAG:=M202.0

      L     MW   200                    // Error value
      L     B#16#0
      ==I   
      R     M    202.1                  // Error flag reset
      SPB   END1
      S     M    202.1                  // Error flag set
END1: NOP   0
in ob1 oppure in un blocco che gira sempre lanci fc1:
      CALL  FC     1
       DB_NO  :=3                       // DBnummer
       RET_VAL:=#return                 // Return Value

poi giochi con i bit della db3.....

pigroplc

Inserita:

Sai dove posso trovare delucidazioni su tutti i bit della db?

Per capire tutti parametri che ho a disposizione.

Non vorrei abusare della tua pazienza...

Grazie mille. :thumb_yello:

Inserita:

Quando si crea la DB dal progetto dovrebbe crearsi anche la DB con i relativi significati dei singoli bit, senza contare delle spiegazioni del manuale.

in allegato trovi anche il pdf

pigroplc

Inserita:

Allora per tagliare la testa al toro ho caricato l esempio siemens sul controllore.

E sono andato sulle VAT per pilotare l fm dove ho a disposizione il Bit "dbex".go_p per il comando positivo in uscita sul pin 1 dell FM

facendo la prova con il tester dovrei avere 5v "correggimi se sbaglio" invece non ho nulla sull uscita dunque

per l avvio ci sono altri bit che devono essere settati??

esempio ho visto che sull ultimo pin c'e' il "pronto" ; va chiuso ho dovrebbe partire indipendentemente da questo??

:)

Inserita:

copiati questo sorgente che crea una FC parametrizzata fatto all'epoca per la FM453 e funzionante anche per quello che serve a te:

FUNCTION FC 18 : VOID
TITLE =MAIN BLOCK FM_453 Release 2.1
//KNOW_HOW_PROTECT
//Interfaccia realizzata con ANWENDER_DB come da release 2.0 del pacchetto di
//progettazione FM453 release 23.11.00 RF
//
//Aggiunta la gestione OVERRIDE fisso in manuale 18.04.02 RF
AUTHOR : PIGROPLC
VERSION : 0.1


VAR_INPUT
  MANUALE : BOOL;    //Selettore manuale
  AUTOMATICO : BOOL;    //Selettore automatico
  SINCRONIZZAZIONE : BOOL;    //Selettore sincronizzazione
  START : BOOL;    //Start asse
  STOP_NOTAUS : BOOL;    //Stop axis
  STOP_HYDRAULIKAGGREGAT : BOOL;    //Stop Hydraulic unit
  RESET : BOOL;    //Reset errori asse
  JOG_AVANTI : BOOL;    //Comando manuale +
  JOG_INDIETRO : BOOL;    //Comando manuale -
  ENABLE_ON : BOOL;    //Abilitazione Simodrive
  SYNCRO_POS : BOOL;    //Comando sincronizzazione 
  OK_DRIVER : BOOL;    //Simodrive OK
  ALL_STATION : BOOL;    //Stazione in allarme
  EXTRA_POS : BOOL;    //Extracorsa +
  EXTRA_NEG : BOOL;    //Extracorsa -
  OVERRIDE : BYTE;    //Override
  AW_DB : BLOCK_DB;    //Numero della DB_WF
END_VAR
VAR_IN_OUT
  PEH : BOOL;    //Asse in posizione
  AXIS_STOPPED : BOOL;    //Asse fermo
  FEHL : BOOL;    //Asse in errore
  SYNC : BOOL;    //Asse sincronizzato
  POSITION_REACHED : BOOL;    //Posizione raggiunta con funzione M
END_VAR
VAR_TEMP
  Kanalnummer : WORD;    
  Anwender_DB : WORD;    
  fehlercode : WORD;    
END_VAR
BEGIN
NETWORK
TITLE =SWITCHING AXIS MODE
//Switch axis mode, during switching cycle, axis is forced to stop.
      AUF   #AW_DB; 
      L     DBB   24; // Active operating mode
      L     1; 
      <>I  ; 
      U     #MANUALE; // manual selection
      UN    #AUTOMATICO; 
      UN    #SINCRONIZZAZIONE; 
      UN    DBX   25.2; // Axis negative travel
      UN    DBX   25.3; // Axis positive travel
      SPB   HAND; 
//
      L     DBB   24; // Active operating mode
      L     3; 
      <>I  ; 
      UN    #MANUALE; // and syncro selection
      UN    #AUTOMATICO; 
      U     #SINCRONIZZAZIONE; 
      UN    DBX   25.2; // Axis negative travel
      UN    DBX   25.3; // Axis positive travel
      SPB   REFE; 
//
      L     DBB   24; // Active operating mode
      L     6; 
      <>I  ; 
      UN    #MANUALE; // and auto selection
      U     #AUTOMATICO; 
      UN    #SINCRONIZZAZIONE; 
      U     DBX   25.0; //  already syncronized
      UN    DBX   25.2; // Axis negative travel
      UN    DBX   25.3; // Axis positive travel
      SPB   AUT; 
// Cycling with the right switching

      L     DBB   24; // Active operating mode
      L     1; 
      ==I  ; 
      U     #MANUALE; // manual selection
      UN    #AUTOMATICO; 
      UN    #SINCRONIZZAZIONE; 
      SPB   RUN; 
//
      L     DBB   24; // Active operating mode
      L     3; 
      ==I  ; 
      UN    #MANUALE; // and syncro selection
      UN    #AUTOMATICO; 
      U     #SINCRONIZZAZIONE; 
      SPB   RUN; 
//
      L     DBB   24; // Active operating mode
      L     6; 
      ==I  ; 
      UN    #MANUALE; // and auto selection
      U     #AUTOMATICO; 
      UN    #SINCRONIZZAZIONE; 
      SPB   RUN; 
      O     DBX   25.2; // Axis negative travel
      O     DBX   25.3; // Axis positive travel
      =     DBX   15.1; // Axis stop
      SET  ; 
      R     DBX   15.3; // Positive direction
      R     DBX   15.2; // Negative direction
// GOTO end if there isn't the right feedback from FM module
      SPA   COMM; // stop & waiting for axis right mode
HAND: L     1; 
      T     DBB   16; // Operating mode
      T     DBB   17; // Operating mode parameters
      SPA   COMM; // stop & waiting for axis right mode
REFE: L     3; 
      T     DBB   16; // Operating mode
      SPA   COMM; // stop & waiting for axis right mode
AUT:  L     6; 
      T     DBB   16; // Operating mode
      SPA   COMM; // stop & waiting for axis right mode
NETWORK
TITLE =INTERFACE ALWAIS RUNNING 
//This interface is alwais running not depending on WF mode.
//In this side take place override and program number and so on
RUN:  L     #OVERRIDE; 
      U     #AUTOMATICO; 
      SPB   TDBB; 
      L     100; 
TDBB: T     DBB   18; // override 0 - 100 %
      U     #OK_DRIVER; 
      =     DBX   15.7; // drive enable 
      U     #ENABLE_ON; 
      =     DBX   34.0; // Controller enable 
//
      L     DBW   42; 
      L     0; 
      <>I  ; 
      SPB   NEWV; 
      L     2#11111111111000; 
      T     DBW   42; 
      S     DBX   38.0; // and set speed strobe
NEWV: NOP   0; 
//
      U     #START; 
      UN    DBX   38.3; // START MDI BLOCK TRANSFER
      UN    DBX   48.3; // FEEDBACK MDI BLOCK TRANSFER
      S     DBX   38.3; // START MDI BLOCK TRANSFER
      U     DBX   48.3; // FEEDBACK MDI BLOCK TRANSFER
      UN    #START; 
      R     DBX   48.3; // FEEDBACK MDI BLOCK TRANSFER
//

NETWORK
TITLE =MANUAL MODE SELECTION
//If manual is switched on, then this side is working ....
      U     #MANUALE; 
      SPB   MANU; 
      SPA   SINC; 
MANU: O     DBX   25.3; // Positive travel
      O     DBX   23.0; // enable to start
      U     DBX   22.7; // FM parametrized
      U     #STOP_NOTAUS; // Not stop axis
      U     #JOG_AVANTI; 
      UN    #JOG_INDIETRO; 
      U     #EXTRA_POS; // not extra jog tripped
      U     #OK_DRIVER; // Simodrive ready to move
      U     DBX   15.7; // Controller enable 
      UN    DBX   22.3; // Operator / Traversing error
      UN    DBX   22.4; // Data error
      U     #STOP_HYDRAULIKAGGREGAT; // Hydraulik unit ON
      U     DBX   48.0; // IF checkback speed level ON
      UN    DBX   38.0; // and set speed strobe OFF
      =     DBX   15.3; // Positive direction
//
      O     DBX   25.2; // Negative travel
      O     DBX   23.0; // enable to start
      U     DBX   22.7; // FM parametrized
      U     #STOP_NOTAUS; // Not stop axis
      U     #JOG_INDIETRO; 
      UN    #JOG_AVANTI; 
      U     #EXTRA_NEG; // not extra jog tripped
      U     #OK_DRIVER; // Simodrive ready to move
      U     DBX   15.7; // Controller enable 
      UN    DBX   22.3; // Operator / Traversing error
      UN    DBX   22.4; // Data error
      U     #STOP_HYDRAULIKAGGREGAT; // Hydraulik unit ON
      U     DBX   48.0; // IF checkback speed level ON
      UN    DBX   38.0; // and set speed strobe OFF
      =     DBX   15.2; // Negative direction
//
      U     DBX   15.1; // Axis stop
      R     DBX   15.1; // Axis stop
//
      UN    DBX   48.0; // IF not checkback speed level
      UN    DBX   38.6; // Bezungspunkt setzen  
      UN    DBX   38.7; 
      S     DBX   38.0; // THEN set speed strobe
      SPA   COMM; // GO TO WF UPDATE
NETWORK
TITLE =HOMING MODE SELECTION
//If homing is switched on, then this side is working ....
SINC: U     #SINCRONIZZAZIONE; 
      SPB   SYNC; 
      SPA   AUTO; 
SYNC: O     DBX   23.0; // enable to start
      O     DBX   15.0; // syncronization
      U     #SYNCRO_POS; // start sincro      
      UN    DBX   25.0; // already syncronized
      UN    DBX   22.3; // Operator / Traversing error
      UN    DBX   22.4; // Data error
      U     DBX   22.7; // FM parametrized
      UN    DBX   37.5; // Not reset asse in corso
      U     #STOP_NOTAUS; // Not stop axis
      UN    #ALL_STATION; // the station is free of alarms
      U     #OK_DRIVER; // Simodrive ready to move
      U     DBX   15.7; // Controller enable 
      U     #EXTRA_POS; 
      U     #EXTRA_NEG; 
      U     #STOP_HYDRAULIKAGGREGAT; // Hydraulik unit ON
      =     DBX   15.0; //  syncronization
// Stop axis
      ON    #EXTRA_POS; 
      ON    #EXTRA_NEG; 
      ON    #STOP_NOTAUS; // Not stop axis
      ON    #STOP_HYDRAULIKAGGREGAT; // Hydraulik unit ON
      =     DBX   15.1; // Axis stop
      SPA   COMM; // GO TO WF UPDATE
NETWORK
TITLE =AUTOMATIC MODE SELECTION
//If automatic is switched on, then this side is working ....
//MDI function mode is working
// MDI BLOCK SYNTAX COMPOSE
AUTO: L     2#10001; // Position und G funktion
      T     DBB  178; 
      L     2#11; // M funktion und geschwindigkeit
      T     DBB  179; 
      L     91; // G91 funktion
      T     DBB  180; 
      L     0; // Keine G2 gruppe
      T     DBB  181; 
      L     1; // M funktion value
      T     DBB  192; 
      L     0; // Keine M2 und M3 funktion
      T     DBB  193; 
      T     DBB  194; 

      U     #AUTOMATICO; 
      SPB   AUBE; 
      SPA   COMM; 
AUBE: O     DBX   23.0; // enable to start
      O     DBX   15.0; // enable START
      U     #START; 
      UN    #POSITION_REACHED; 
      UN    #ALL_STATION; // the station is free of alarms
      U     #OK_DRIVER; // Simodrive ready to move
      U     DBX   15.7; // Controller enable 
      U     #EXTRA_POS; 
      U     #EXTRA_NEG; 
      U     #STOP_NOTAUS; // Not stop axis
      UN    DBX   38.3; // START MDI BLOCK TRANSFER
      U     DBX   22.7; // FM parametrized
      U     DBX   25.0; // syncronized
      UN    DBX   22.3; // Operator / Traversing error
      UN    DBX   22.4; // Data error
      UN    DBX   27.4; // NOT strobe M function
      UN    DBX   15.4; // not ACK M function
      U     #STOP_HYDRAULIKAGGREGAT; // Hydraulik unit ON
      =     DBX   15.0; // enable START
// Stop axis
      ON    #EXTRA_POS; 
      ON    #EXTRA_NEG; 
      ON    #START; 
      ON    #STOP_HYDRAULIKAGGREGAT; // Hydraulik unit ON
      =     DBX   15.1; // Axis stop

// Axis reached position
      UN    #POSITION_REACHED; 
      U     DBX   27.4; // M function ON
      S     DBX   15.4; // set ACK for M function
      S     #POSITION_REACHED; // set for application software
//
      U     DBX   15.4; // reset ACK when WF reset his 
      UN    DBX   27.4; // strobe for M function
      R     DBX   15.4; 
NETWORK
TITLE =Kanalpruefung mit geberfehler

// Kanalnummer
COMM: L     DBW    2; 
      T     #Kanalnummer; 
      L     1; 
      ==I  ; 
      SPB   EIN; 
      L     #Kanalnummer; 
      L     2; 
      ==I  ; 
      SPB   ZWEI; 
      L     #Kanalnummer; 
      L     3; 
      ==I  ; 
      SPB   TREI; 
      SPA   salt; 
EIN:  L     DBB   78; 
      T     #fehlercode; 
      SPA   salt; 
ZWEI: L     DBNO; 
      L     1; 
      -I   ; 
      T     #Anwender_DB; 
      AUF   DB [#Anwender_DB]; 
      L     DBB   80; 
      T     #fehlercode; 
      SPA   salt; 
TREI: L     DBNO; 
      L     2; 
      -I   ; 
      T     #Anwender_DB; 
      AUF   DB [#Anwender_DB]; 
      L     DBB   82; 
      T     #fehlercode; 
salt: NOP   0; 


NETWORK
TITLE =UPDATE FM COMMAND

      AUF   #AW_DB; 
      U     DBX   25.7; // position reached
      =     #PEH; 
//
      UN    DBX   25.2; // +
      UN    DBX   25.3; // -
      O     DBX   23.0; // axis stopped
      =     #AXIS_STOPPED; 
//
      L     DBW   86; // Error code active for this axis
      L     DBW   90; 
      +I   ; 
      L     DBW   94; 
      +I   ; 
      L     #fehlercode; 
      +I   ; 
      L     0; 
      <>I  ; 
      O     DBX   22.3; // Operator / Traversing error
      O     DBX   22.4; // Data error
      =     #FEHL; // Fehlermeldung 
//
      U     DBX   25.0; // axis syncronized
      =     #SYNC; // axis syncronized
//
      U     #RESET; 
      U     DBX   22.3; // Operator / Traversing error
      UN    DBX   22.4; // Data error
      =     DBX   14.3; // Alarm Acknoledge

      UN    #STOP_HYDRAULIKAGGREGAT; // Hydraulik unit OFF
      U     #SYNC; // axis syncronized
      O    ; 
      U     #RESET; // or hard reset required !!!
      UN    DBX   22.3; // Operator / Traversing error
      U(   ; 
      L     #fehlercode; 
      L     0; 
      <>I  ; 
      O    ; 
      U     DBX   22.4; // Data error
      )    ; 
      S     DBX   37.5; // Channel initialization (hard reset) 
NETWORK
TITLE =Error reset

      L     DBW   86; // Error code active for this axis
      L     DBW   90; 
      +I   ; 
      L     DBW   94; 
      +I   ; 
      L     #fehlercode; 
      +I   ; 
      L     0; 
      <>I  ; 
      UN    DBX   22.3; // Operator / Traversing error
      UN    DBX   22.4; // Data error
      UN    #RESET; 
      UN    DBX   37.5; // Channel initialization (hard reset) 
      SPB   RUEC; 
      SPA   ENDE; 
RUEC: L     0; 
      T     DBW   86; // Error code active for this axis
      T     DBW   90; 
      T     DBW   94; 
ENDE: NOP   0; 
END_FUNCTION

più di così .... te la devo mettere in funzione io!

pigroplc

Inserita:

ah, mi dimenticavo,

se lo usi ti chiedo l'accortezza di lasciare il nome di chi l'ha fatto......

pigroplc

Inserita:

ti ringrazio lo provero' subito.

a me serve per scopo didattico ma se verra' utilizzato risultera sicuramente il tuo nome.

Grazie mille..

:rolleyes:

Inserita:

premetto che ti ringrazio per la tua pazienza...

Ho un errore di compilazione.....?

Inserita:
a me serve per scopo didattico ma se verra' utilizzato risultera sicuramente il tuo nome.

.... a scopo didattico ???? Allora studiati tutto il manuale e impara!

per quanto riguarda il codice sorgente ti crei un altro sorgente e gli metti quello che ti ho postato, altrimenti a mano ti riscrivi il codice (c'è sempre il copia-incolla).

Scusa, ma la frase dello scopo didattico me li ha fatti girare.

pigroplc

Inserita:

non volevo offenderti comunque ti ringrazio lo stesso.

e che leggendo il manuale non e' che sia molto chiaro..

GRAZIE e scusa se ti ho fatto perdere tempo. :unsure:

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