Vai al contenuto
PLC Forum


Siemens Step7 Sotto Sistema Di Controllo Versione


Paolo_G

Messaggi consigliati

Ciao a tutti!

A lavoro mi è stato richiesto di lavorare con i sorgenti di step7.

La mia "natura informatica" mi ha portato a pensare che avendo i sorgenti perche' non usare anche un sistema di controllo versione (CVS, Subversion, Git o altri) per avvantaggiarsi delle funzioni che questi programmi apportano?

La "storia di una logica" soprattutto per quelle logiche che possono raggiungere anche alcuni decenni di lavoro, credo sia una cosa abbastanza utile!

Armato di tanta pazienza, ho cercato di capire un po' com'e' strutturato un progetto STEP7. Ho aperto TUTTI i file DBF con il DBFEdit e dopo un po' di parolacce credo di aver trovato il bandolo della matassa.

Le informazioni sono contenute nei 3 file DBF:

(1) [prjS7Dir]/HOMESAVE7/S7HSTATX/HOBJECT1.DBF

(2) [prjS7Dir]/s7asrcom/S7CNTREF.DBF

(3) Per ogni PLC presente nel progetto [prjS7Dir]/s7asrcom/000000XX/S7CONTAI.DBF dove XX è un codice esadecimale

STEP1:

Estraggo dal file (1): ID, Name and UNITTYP.

Ogni Unittyp=1122305 é un PLC inserito nel progetto.

Ordino i dati in base all'ID (ordine crescente).

Ad Es:

Name | ID | UNITTYP

PLC2 | 4 | 1122305

PLC1 | 10 | 1122305

STEP2:

Gli ID nel file (2) sono i nomi delle cartelle dei file sorgenti.

L'ID è indicato nel formato decimale; trasformandolo in esadecimale su 8 digit si ottiene il nome della directory.

Es:

ID=1 (decimale) => 1 (Hex) => nome della cartella è "00000001"

ID=14 (decimale) => E (Hex) => nome della cartella è "0000000E"

Ordino anche questa tabella in base agli ID in ordine crescente.

STEP3:

Se si montano assieme le informazioni ORDINATE dei due step sopra, si ottiene la corrispondenza tra il nome del PLC presente nel progetto e il nome della cartella dei sorgenti:

Name (STEP1)| ID (STEP2) | => Source folder

PLC2 | 1 | ==> 00000001

PLC1 | 14 | ==> 0000000E

STEP4:

Nel file (3) ci sono le informazioni per ottenere i nomi dei file in formato "human readable" dal formato numerico di step7

Es.:

Name | FileName |

FBTest | 000001C.awl |

FCProva | 000004b.scl |

A questo punto si hanno tutte le informazioni che servono per fare l'export dei sorgenti suddivisi per PLC.

Ad esempio copiando(e quindi esportando) tutti i files contenuti nella directory

[prjS7Dir]/s7asrcom/00000001/ (quindi riferito alla logica del PLC2 (vedi STEP3))

nella directory

[prjS7Dir]/exportPLC2/

andando poi a rinominarli con i nomi "human readable" presenti nella tabella dello STEP4, si ottiene l'export di tutti i file del PLC.

Sembra complicato ma in realta' lo è solo un po'! :)

Ho aggiuto questa funzionalita' alla nuova versione (la v3.0) di un vecchio progetto su sourceforge che praticamente eseguiva solo lo STEP4, richiedendo una configurazione manuale iniziale:

Adesso, invece una volta scaricata la libreria per leggere i DBF è possibile eseguire un batch per l'export tramite il seguente comando senza nessun tipo di configurazione:

java -classpath javadbf-version.jar;AutoExportPlcName-version.jar autoExport.AutoExportPlcName ./PLCPrj ./exportPLCSource
dove:
  PLCPrj -> è la certella del progetto step7
  exportPLCSource -> la directory dove eseguire l'export
Oppure in alternativa c'e' una semplicissima (per il momento :) ) interfaccia grafica richiamabile con:
java -classpath javadbf-version.jar -jar autoExport-version.jar

Il sistema funziona indistintamente sia con il progetto aperto e/o attivo sia avendo il Simatic Manager chiuso.

Questo è il punto in cui sono arrivato adesso:

- in modo automatico è possibile DOCUMENTARE OGNI MODIFICA ALLA LOGICA NELL'ARCO TEMPORALE DELLA SUA VITA.

- è possibile avere un repository centrale di ogni logica per sapere i rapporti di derivazione tra una logica e l'altra.

Tempo permettendo sto implementando anche la funzione inversa (import): partendo dai file sorgenti ri-ottenere i file nel formato step7 in modo da poterli confrontare prima di inserire le modifiche all'interno del progetto.

Questa funzione e' gia' testata e inclusa nel vecchio progetto che pero' adesso va richiamata per ogni PLC.

Implementata anche questa funzionalita', si darebbe il via alla possibilita' di trasformare il progetto step7 in COLLABORATIVO.

Se a qualcuno interessa l'argomento e/o vuole consigliarmi qualcosa e/o vuole prendere parte allo sviluppo di qualche nuova funzione, mi contatti.

Saluti

PaoloG

Modificato: da Paolo_G
Link al commento
Condividi su altri siti


L'argomento è interessante, noi già usiamo un software per il controllo delle versioni, e persare di avere un sistema pensato ad ok per lo step7 magari adderittura integrato sarebbe una figata, date però le mie conoscenze di software PC il mio contributo temo può essere soltanto morale.

Buon lavoro e bell'idea a parer mio da continuare a sviluppare.

:thumb_yello::thumb_yello:

Link al commento
Condividi su altri siti

noi già usiamo un software per il controllo delle versioni

Per le logiche? come si chiama?

persare di avere un sistema pensato ad ok per lo step7 magari adderittura integrato

Integrarlo nell'editor, la vedo abbastanza dura... non saprei da che parte cominciare a fare una cosa del genere pero' l'idea mi piace! :)

Per il momento in ditta, usiamo un piccolo script esterno lanciato a mano ogni volta che si vuole eseguire un avanzamento della versione.

date però le mie conoscenze di software PC il mio contributo temo può essere soltanto morale

Grazie, meglio che niente, no!?!?! :thumb_yello:

Ciao

Paolo

Link al commento
Condividi su altri siti

Il software che usiamo è Tortoise SVN.

Posso chiederTi come lo usate? Noi inizialmente, avevamo messo la directory del progetto sotto svn. Per come è strutturato un progetto step7 pero', ogni piccola modifica cambia tantissimi file. Che pero' alla lunga "distrae" dalle vere modifiche ai file di logica.

Da li è nata l'idea di estrarre i file sorgenti e di mettere sotto versione solo questi + uno zip del progetto completo(nel caso di modifiche all'hardware, simboli,etc).

Per il momento questa soluzione ci sta dando parecchie soddisfazioni! :-)

Ciao

Paolo

Link al commento
Condividi su altri siti

Infatti il sistema non è ottimale per lo step 7, basta anche solo aprire il progetto per vederlo, senza fare modifiche o salvare che subito ti dice che non sei aggiornato.

Per usarlo quando lavoro su un progetto nessun problema, ogni tot tempo posto le modifiche, se invece devo solo guardare un progetto senza fare modifiche lo esporto in un cartella temporanea dove posso controllare il progetto poi lo cestino, cosi cerco di evitare continui post inutili.

Link al commento
Condividi su altri siti

  • 1 year later...
  • 1 year later...
  • 1 year later...

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