mrsunday Inserito: 5 aprile 2015 Segnala Inserito: 5 aprile 2015 Salve a tutti, Tia portal V13 SP1, Cpu 313C, per la 313C sapete se esiste l'equivalente del comando S_MOVE valido per il 1200 (ed immagino anche 1500) ? o si può indicizzare il BLKMOV tipo: CALL BLKMOV blk_type:=Any SRCBLK :=P#DB260.DBX [#indice] BYTE 34 RET_VAL :=#"ret val" DSTBLK := P#DB250.DBX0.0 BYTE 34 Non so se si può fare o se sbaglio sintassi ma se scrivo come sopra (#indice è una Dint temporanea) non me lo accetta. Ciò che devo fare è estrarre un nome da un array di stringhe in funzione di un determinato evento grazie a tutti.
walterword Inserita: 5 aprile 2015 Segnala Inserita: 5 aprile 2015 non puoi indicizzare come stai facendo La blockmove , SFC20 (almeno la ricordo cosi ) , prende come sorgente l'indirizzo iniziale di un'area di memoria e la trasferisce su un'altra area a partire dall'indirizzo indicato per una quantità di N° bytes, , nel tuo caso 34 Per cui ovunque tu punti si riferisce a byte , stai attento a non sforare le aree di memoria altrimenti va in stop la cpu Il P# e' un po come la "&" del C , carica l'indirizzo .... Poi c'e' la SFC21 che puoi usarla per inizializzare un'area di memoria , sempre a partire da un indirizzo a byte di una struttura dati piu o meno complessa .Per esempio mettere a zero un'intera area di memoria , questa lavora tipo la memset(...) del C
ken Inserita: 6 aprile 2015 Segnala Inserita: 6 aprile 2015 http://www.plcforum.it/f/topic/150893-dati-in-formato-any/ è per step 7 classico ma funziona anche su TIA
batta Inserita: 6 aprile 2015 Segnala Inserita: 6 aprile 2015 Se devi scrivere righe di programma per costruirti il puntatore ANY e poi usare BLKMOV, tanto vale creare direttamente una funzione per copiare direttamente le vaiabili interessate. Se poi lavori con array, tutto diventa facilissimo se lo fai in SCL.
mrsunday Inserita: 6 aprile 2015 Autore Segnala Inserita: 6 aprile 2015 grazie per le info, per il momento tra una nevicata e l'altra ( qua a Praga succede) ho risolto in questa maniera: estraggo a blocchi di byte le varie parti della stringa che mi interessa e la ricompongo dove intendo visualizzare il nome, sembra funzioni. ////////////////////////////////////////////////////////////// // trasmissione nome allarme//////////////////// AUF "DB 260 storico" L DBD [ #"index 1"] T "DB 260 storico".name_1[1] AUF "DB 260 storico" L DBD [ #"index 2"] T "DB 260 storico".name_1[2] AUF "DB 260 storico" L DBD [ #"index 3"] T "DB 260 storico".name_1[3] AUF "DB 260 storico" L DBD [ #"index 4"] T "DB 260 storico".name_1[4] AUF "DB 260 storico" L DBD [ #"index 5"] T "DB 260 storico".name_1[5] AUF "DB 260 storico" L DBD [ #"index 6"] T "DB 260 storico".name_1[6] // richiamo i 24 byte che compongono la stringa in una sola stringa CALL BLKMOV blk_type:=Any SRCBLK :="DB 260 storico".name_1 RET_VAL :=#"ret val" DSTBLK :="DB 260 storico".storico[1]
walterword Inserita: 7 aprile 2015 Segnala Inserita: 7 aprile 2015 si , dipende tutto da come dichiari le variabili nel DB , se sono array di strutture per esempio funziona
batta Inserita: 7 aprile 2015 Segnala Inserita: 7 aprile 2015 Se tutte le variabili sono sempre in "DB 260 storico" non serve continuare a ripetere l'istruzione AUF DB 260 storico"
mrsunday Inserita: 10 giugno 2015 Autore Segnala Inserita: 10 giugno 2015 rispolvero l'argomento avendo trovato questo file nel sito della Siemens. Si tratta di un FC che permette di muovere dati usando un indice. dbdbcpy_dbdbcmp.pdf
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