lupusimprobus Inserito: 11 luglio 2008 Segnala Inserito: 11 luglio 2008 Buongiorno a tutti e grazie in anticipo per il tempo che mi dedicherete.Plc Siemens Serie 300 (principalmente 314C-2DP e 315).Ho 10 DB che contengono i dati di altrettante attrezzature che posso collegare alla macchina principale.In base all'attrezzatura collegate copio il contenuto del DB corrispondente in un DB di lavoro.Un esempio del codice è il seguente: A I 0.0 // Carica archivio 1 FP M 0.0 // Fronte di salita // Archivio 1 // Carico 10 word dall'archivio 1 (ovvero dal DB10) // e le copio nell'archivio di lavoro (ovvero nel DB20) JNB M001 CALL SFC 20 SRCBLK :=P#DB10.DBX 0.0 WORD 10 RET_VAL:=LW10 DSTBLK :=P#DB20.DBX 0.0 WORD 10M001: NOP 0 A I 0.1 // Carica archivio 2 FP M 0.1 // Fronte di salita // Archivio 2 // Carico 10 word dall'archivio 2 (ovvero dal D11) // e le copio nell'archivio di lavoro (ovvero nel DB20) JNB M002 CALL SFC 20 SRCBLK :=P#DB11.DBX 0.0 WORD 10 RET_VAL:=LW10 DSTBLK :=P#DB20.DBX 0.0 WORD 10M002: NOP 0 A I 0.n // Carica archivio n FP M 0.n // Fronte di salita // Archivio n // Carico 10 word dall'archivio n // e le copio nell'archivio di lavoro (ovvero nel DB20) JNB M00n CALL SFC 20 SRCBLK :=P#DBn.DBX 0.0 WORD 10 RET_VAL:=LW10 DSTBLK :=P#DB20.DBX 0.0 WORD 10M00n: NOP 0Questo tipo di approccio funziona perfettamente (infatti lo sto utilizzando :-D ) ma ora cerco qualcosa di più performante in quanto caricare tanti FC20 quanti sono gli archivi mi pare uno spreco di risorse.Veniamo quindi alla domanda per cui sto scrivendoDomanda 1:E' possibile indicizzare il numero del DB nel parametro SRCBLK dell'SFC20?Qualcosa del tipo: L 1 T MW10 JNB M001 CALL SFC 20 SRCBLK :=P#DB[MW10].DBX 0.0 WORD 10 RET_VAL:=LW10 DSTBLK :=P#DB20.DBX 0.0 WORD 10 M001: NOP 0Domanda 2:Nel codice seguente: L 20 OPN DB 10 T DBW 0Vi è un modo di indicizzare il numero del DB?Qualcosa del tipo: L 10 T MW 12 // Numero del DB da aprire L 20 OPN DB [MW12] // Apro il DB contenuto in MW12 (in questo caso il DB10) T DBW 0Grazie ancora per la pazienza e l'aiuto.Valerio Gallo
dcomerlati Inserita: 11 luglio 2008 Segnala Inserita: 11 luglio 2008 Devi usare i puntatori. Ti scrivo un codice per poi guardarlo e adeguarlo al tuo caso:Con gli ingressi fisici(E0.0...) scrivi in una MW il numero di DB da cui prelevare i dati e li metti in una MW(es:MW10) UN E 0.0 SPB A001 L P#0.0 LAR1 L P#0.0 LAR2 L 0 T MB 255M001: AUF[MW10] L DBW [AR1,P#0.0] AUF DB 20 T DBW [AR2,P#0.0] L MB 255 INC 1 T MB 255 L P#2.0 +AR1 L P#2.0 +AR2 L MB 255 L 10 <I SPB M001A001: NOP 0Procedi nello stesso modo per gli altri archivi da aprire e scaricare in DB20.Ciao Dario
Luca Bab Inserita: 11 luglio 2008 Segnala Inserita: 11 luglio 2008 Domanda 1 Si , ma non come lo hai scrittodevi parametrizzare tuttoDomanda 2Si , quello che hai scritto e' correttoLuca
Messaggi consigliati
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 accountAccedi
Hai già un account? Accedi qui.
Accedi ora