Vai al contenuto
PLC Forum


Modifica A Programma S7


gravino

Messaggi consigliati

ciao a tutti,

devo modificare un segmento in un programma per s7 , ho una cpu 315 2dp, non dispongo di nessuna copia del programma, volevo sapere come tutelarmi da eventuali errori :( qualcuno puo spiegarmi come effettuare un back up di tutto il sistema, da poter utilizzare in caso di errore per far funzionare nuovamante la macchina , dispongo di software step 7 5.4 e purtroppo di nessuna esperienza , ringrazio anticipatamente per ogni aiuto

Link al commento
Condividi su altri siti


apri simatic manager crea un progetto nuovo collegati col cavo di programmazione e fai l'upload (carica stazione nel PG). Salvi ed il tuo backup è pronto.

Link al commento
Condividi su altri siti

grazie per l'immediata risposta rddiego, ma ho ancora qualche dubbio su come operare (nessuna esperienza):rolleyes: quando creo un nuovo progetto l'assistente mi chiede il tipo di cpu ; devo selezionare 315 DP oppure no ? il cavo del pc adapter devo collegarlo alla porta MPI o sul connettore sinec del profibus ? che tipo di impostazione devo usare per il pc adapter ? dispongo di un pc adapter usb 6es7972-0cb20-0xa0 posso usarlo anche con microwin 4 su qualsiasi cpu s7 200?

Link al commento
Condividi su altri siti

apri simatic

file --> nuovo..

inserisci un nome che preferisci

tipo = progetto

destinazione = dove vuoi

premi OK

inserisci --> stazione --> Simatic 300

Collegamento del cavo di programmazione

collega il cavo alla porta MPI della CPU

strumenti --> impostazione interfaccia PG/PC

seleziona PC Adapter (Auto)

premi OK

[ modifica delle seguenti.........]

premi OK

( se provando non si collega prova con PC Adapter (MPI) )

Upload del programma

sistema di destinazione --> Carica stazione nel PG

telaio = 0

posto connettore = 2 (tipicamente è così)

Stazione di destinazione = locale

premi "visualizza"

ti compare la tua CPU

seleziona la cpu

premi OK

inizierà a caricarti la configurazione hardware poi il software (DB.. OB.. FB.. FC..)

quando ha terminato il tuo back-up è pronto e salvato

il cavo USB non l'ho mai usato quindi non saprei, ma ho usato dei convertitori USB/seriale232 e non ho avuto problemi

attenzione che s7200 utilizza il protocollo PPI quindi non so se il tuo cavo potrà andar bene per entrambi i sistemi

Link al commento
Condividi su altri siti

grazie ancora rddiego sei stato molto chiaro domani provo :rolleyes: questa sera ho provato con il simulatore ma non penso sia lo stesso perchè dopo l'upload non trovo nulla nella cartella blocchi ......

Link al commento
Condividi su altri siti

ciao rddiego ho seguito le tue istruzioni e sono riuscito a fare il back up grazie tanto , ma quando apro il programma nell4albero a sinistra ci sono due cpu; la numero 1 che ho inserito tramite inserisci>stazione>Simatic 300; più la numero 2 che é stata scaricata con il back up, é normale oppure se volessi reinserire il programma nel plc devo cancellare la cpu1?

Link al commento
Condividi su altri siti

Facendo l'upload si carica tutto, configurazione hardware compresa.

Cancella la cpu che avevi inserito tu nel progetto.

Nell'altra cpu troverai anche il programma, ovviamente senza documentazione.

Link al commento
Condividi su altri siti

qualcuno puo aiutarmi a decifrare questi segmenti sto provando con il manuale awl ma non ci riesco :(

CALL #STAT0

IN0 :=FALSE

IN1 :=M50.0

IN2 :=TRUE

IN3 :=E5.4

IN4 :=A4.0

IN5 :=10

OUT6:=M50.5

OUT7:=M51.2

IO8 :=A4.0

UN #STAT0.STAT1.STAT2

U T 8

= M 50.0

più precisamente cosa sono i vari STATe IN0: IN1: .............OUT6.......IO8

Link al commento
Condividi su altri siti

Tu hai prelevato il programma dalla cpu, quindi hai perso tutti i nomi che erano stati assegnati a merker, variabili e a tutto il resto.

Comunque c'è il richiamo ad una funzione, alla quale vengono passati 6 parametri in ingresso (IN0-IN5), 2 parametri in uscita (OUT6-OUT7) ed un parametro in ingresso/uscita (IO8).

Link al commento
Condividi su altri siti

grazie batta , hai ragione purtroppo non posso fare di meglio l'unica cosa che conosco e che devo inserie un ritardo sulla disattivazione dell'uscita 4.0, questa uscita comanda un elettrovalvola pneumatica , l'unica cosa che vedo quando apro un blocco con l'editor awl , è che ci sono fb121 e fb122 con affianco la scritta ventiel (valvole in olandese) dentro fb 121 trovo questo segmento

U #IN4

UN #IN5

U #IO9

UN #STAT14.STAT19

UN #TEMP23.TEMP24.TEMP26

= #OUT7

in alto nella sezione contenuto di:"Ambiente\interfaccia\OUT" se clicco su OUT7 posso leggere tipo di dati bool indirizzo 4.0 valore iniziale false

non riesco a capire se sono nel punto giusto oppure no ?

altrimenti come posso fare a trovare l'uscita sopra citata ?

grazie ancora per il tuo aiuto, non ho nessuna esperienza e qui in Belgio non ci sono colleghi che parlano l'italiano così devo cercare di fare tutto da autodidatta

Link al commento
Condividi su altri siti

innanzitutto parti a cercare la tua uscita A4.0 non andare a naso tra le FC, FB etc.

Genera i riferimenti incrociati

Strumenti --> Dati di Riferimento --> Visualizza

Una volta aperta la schermata

visualizza --> riferimenti incrociati

se vuoi fai un filtro lasciando solo le uscite

cerca l'uscita A4.0

verifica nella colonna "Accesso" dove hai la lettera W (dovresti avere di norma un solo accesso in scrittura)

clicca due volta sul "punto di applicazione" e ti si aprira la routine desiderata.

Se il ritardo alla disinserzione è richiesto sempre senza altre condizioni, tranquillamente io farei:

al posto di A4.0 metto un merker disponibile

con quel merker avvio un timer libero del tipo SA (ritardo alla disinserzione)

con il timer attivo A4.0

Se invece trovi la scrittura di A4.0 in più punti bisogna un po' vedere com'è e ragionarci un attimo. Oltretutto se il cliente vuole porre delle condizioni affinchè il ritardo non agisca sempre ma solo in certe condizioni... bisogna studiare la cosa a meno che non influisca molto sull'impianto.... Insomma non sarà una cosa difficile , anzi..

Link al commento
Condividi su altri siti

grazie per l'aiuto rddiego, seguendo tutte le tue istruzioni sono arrivato fino ad A4.0, ma nella colonna accesso trovo due righe una con la lettera R e l'altra con le letter RW ma per entrambi il punto di applicazione è:seg1 istr.1 /call vado al punto di applicazione e trovo questo

CALL #STAT0

IN0 :=FALSE

IN1 :=M50.0

IN2 :=TRUE

IN3 :=E5.4

IN4 :=A4.0

IN5 :=10

OUT6:=M50.5

OUT7:=M51.2

IO8 :=A4.0

quindi seguendo i tuoi consigli dovrei fare questo ?

CALL #STAT0

IN0 :=FALSE

IN1 :=M50.0

IN2 :=TRUE

IN3 :=E5.4

IN4 :=M300.0

IN5 :=10

OUT6:=M50.5

OUT7:=M51.2

IO8 :=A4.0

poi in un altro segmento

U M 300.0

L S5T#2S

SA T 100

e poi ancora

U T 100

= A 4.0

il tutto all'interno di FB1

ho scelto M300.0 perche nella colonna simboli di riferimenti incrociati l'ultima MW utilizzata è la 267 per il timer 100 in qunato l'ultimo timer è 89

non so se sto percorrendo la strada giusta ma grazie a voi comincio a vedere un pò di luce e a distrcarmi leggermente meglio in STEP7

grazie ancora

Link al commento
Condividi su altri siti

credo di aver commesso un errore nel precedente post

CALL #STAT0

IN0 :=FALSE

IN1 :=M50.0

IN2 :=TRUE

IN3 :=E5.4

IN4 := M300.0 non qui ma

IN5 :=10

OUT6:=M50.5

OUT7:=M51.2

IO8 :=A4.0

CALL #STAT0

IN0 :=FALSE

IN1 :=M50.0

IN2 :=TRUE

IN3 :=E5.4

IN4 :=A4.0

IN5 :=10

OUT6:=M50.5

OUT7:=M51.2

IO8 :=M 300.0 credo che questo sia corretto

U M 300.0

L S5T#2S

SA T 100

U T 100

= A 4.0

avevo dimenticato di scriver che il segmento originale lo trovo in FB1

e poi gli altri due segmenti

Link al commento
Condividi su altri siti

Fondamentalmente è corretto.

Unica cosa da valutare bene è che l'uscita A4.0 prima, ed il merker M300.0 poi, vengono passati alla funzione "STAT0" anche come parametro in ingresso.

Devi capire quindi se per il corretto funzionamento "STAT0" deve fare riferimento allo stato reale dell'uscita, oppure allo stato di M300.0.

Senza sapere cosa devi fare è impossibile dare una risposta.

Altra strada potrebbe essere la seguente: se la funzione "STAT0" è richiamata in un solo posto (quindi solo per la gestione di A4.0), potresti gestire il ritardo all'interno della funzione stessa; invece se "STAT0" è richiamata più volte, ma devi modificare solo la gestione di A4.0, potresti fare una copia di "STAT0", modificarla aggiungendo il timer, ed usarla solo per la gestione di A4.0.

Questo solo se è importante valutare lo stato reale di A4.0 anziché del merker ausiliario M300.0, altrimenti va bene la prima soluzione.

Link al commento
Condividi su altri siti

a questo punto devi aprire la funzione #Stat0 e guardare cosa fa con A4.0 all'interno. Cioè controlla le variabili IN4 e IO8... ma così a naso e molto fiducioso non mi sembra che la soluzione che hai postato possa crearti problemi...

Link al commento
Condividi su altri siti

buonasera e grazie ad entrambi per le risposte, come faccio ad aprire #Stat0 ? aprendo il programma ho cambiato nell'albero a sinistra dell'editor la visaulizzazione da Elementi di programma a Struttura di richiamo, viene fuori che a FB1 e subordinato DB1 provo a disegnare

FB1,DB1

I

I---FB120

I

I------DB120

apro quindi DB1 e trovo:

0.0 stat:in STAT0.IN0 BOOL FALSE FALSE

0.1 stat:in STAT0.IN1 BOOL FALSE TRUE

0.2 stat:in STAT0.IN2 BOOL FALSE TRUE

0.3 stat:in STAT0.IN3 BOOL FALSE FALSE

0.4 stat:in STAT0.IN4 BOOL FALSE TRUE

2.0 stat:in STAT0.IN5 INT 0 10

4.0 stat:out STAT0.OUT6 BOOL FALSE TRUE

4.1 stat:out STAT0.OUT7 BOOL FALSE TRUE

6.0 stat:in_out STAT0.IO8 BOOL FALSE TRUE

e poi altri dati, ma credo che questi solo siano di mio interesse

in DB120 trovo

+0.0 stat0 struct

in FB120 segmenti con richiami a i vari #in1 ecc...

a questo punto mi sono perso non so più che fare :(

Link al commento
Condividi su altri siti

i DB (data block) ora non ti interessano. Devi aprire FB1 e verificare tutte le istruzioni che interessano le variabili IN4 e IO8.

L'albero che tu descrivi, rappresenta la struttura del programma e cioè che in FB1 viene richiamata la rputine FB120. Inoltre l'albero ti dice che alle routines sono rispettivamente associate le db d'istanza DB1 e DB120. Ma ora ti è poco utile saperlo..

A questo punto devi vedere bene cosa viene fatto con le variabili

DB1.DBX0.4 (= IN4 ) e DB1.DBX6.0 (= IO8 )

In particolar modo vedi come e dove viene scritta la variabile IO8 (probabilmente in un punto solo). Inoltre verifica come viene utilizzata la veriabile IN4 (sola lettura) che è mi sembra una specie di feedback del comando.

Il tuo problema è che se dovessi adottare la modifica proposta di appoggiarti al merker M300.0 per ritardare l'azione dell'uscita A4.0 succede che quando M300.0 sarà =0 l'uscita A4.0 sarà =1 ancora per il tempo impostato. In questo caso M300.0 lavorerà esattamente come l'uscita A4.0 ha fatto fino ad adesso quindi ti serve verificare che con M300.0 =0 (solo in quel frangente durante il conteggio del tempo) non si eseguano istruzione pericolose per l'impianto (sequenze dove è strettamente necessaria la chiusura di quella valvola) o istruzioni che disturbino questa nuova logica (per esempio un allarme di mancata chiusura)...

Sto assolutamente sparando a caso quindi di' tu come stanno le cose..

Se non vedi problemi di questo tipo la tua modifica è già bella che fatta e vai così

Link al commento
Condividi su altri siti

aprendo FB1 trovo 4 segmenti ed in ognuno in:4 e io8 vengono incrementati di 1 provo ad allegare i segmenti

CALL #STAT0

IN0 :=FALSE

IN1 :=M50.0

IN2 :=TRUE

IN3 :=E5.4

IN4 :=A4.0

IN5 :=10

OUT6:=M50.5

OUT7:=M51.2

IO8 :=A4.0

CALL #STAT18

IN0 :=FALSE

IN1 :=M50.1

IN2 :=TRUE

IN3 :=E5.5

IN4 :=A4.1

IN5 :=20

OUT6:=M50.6

OUT7:=M51.3

IO8 :=A4.1

CALL #STAT36

IN0 :=FALSE

IN1 :=M50.2

IN2 :=TRUE

IN3 :=E5.6

IN4 :=A4.4

IN5 :=30

OUT6:=M50.7

OUT7:=M51.4

IO8 :=A4.4

CALL #STAT54

IN0 :=FALSE

IN1 :=M50.3

IN2 :=TRUE

IN3 :=E5.7

IN4 :=A4.3

IN5 :=40

OUT6:=M51.0

OUT7:=M51.5

IO8 :=A4.3

CALL #STAT72

IN0 :=FALSE

IN1 :=M50.4

IN2 :=TRUE

IN3 :=E6.0

IN4 :=A91.0

IN5 :=50

OUT6:=M51.1

OUT7:=M51.6

IO8 :=A91.0

domani controllo sullo schema elettrico i collegamenti con i vari ingressi. comunque si tratta di una macchina forma scatole e il pistone serve appunto a tenere il le varie parti del fondo unite in attesa che la colla si secchi

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