MrC Inserito: 10 dicembre 2003 Segnala Inserito: 10 dicembre 2003 Definendo come dato in ingresso alla funzione un array di 24 bool , al richiamo della funziione come faccio a passare il dato ?Ho provato :CALL FB 10, db10IN_ABILITAZIONI := [1,1,1,1,0,0,0,1,1,...] ma questa riga viene rossaFunziona solo dichiarando un array temporaneo nell'OB dove lo richiamo (ad esempio dell'OB1)CALL FB 10, db10IN_ABILITAZIONI := #tmp_arraye al segmento precedente :call sfc 20 SRCBLK := P#DB60.DBX0.0 BYTE 3 <- DB dove ho ancora creato un array di 24 bit che vado ad editare RET_VAL := DSTBLK := #tmp_arrayGrazie
pigroplc Inserita: 11 dicembre 2003 Segnala Inserita: 11 dicembre 2003 premetto, non ho tempo x provare ma provo lo stesso ad aiutarti:la dichiarazione in binario presuppone la sintassi 2#1111111... senza le virgole.se invece nel parametro formale metti una variabile bisogna che a sua volta sia dichiarata come lavariabile utilizzata nel parametro formale, cioè array a bit.Ma sinceramente, non hai un sistema migliore, cioè dichiari una variabile dint e poi elabori i singoli bit dei dati locali all'interno del blocco parametrizzato ??ciao da pigroplc
Federico Milan Inserita: 11 dicembre 2003 Segnala Inserita: 11 dicembre 2003 Credo proprio che il tipo array si comporti come string o date_and_time dove non è possibile avere costanti e quindi lo si deve passare tramite riferimento o varibili temporanee ...ciao
LaRocca Inserita: 11 dicembre 2003 Segnala Inserita: 11 dicembre 2003 Ciao..Come dice Federico, il tipo array é un tipo di dato composto, per cuesto si devi trattare tramite riferimento o con una variabile temporanee, vuole dire usando un SFC 20, 21, o 81.. dipendendo cosa si vuole fare.. comunque, io non lo farei cosi.. puo usare un puntatore variabile (index) sul FB o FC, é usi una DB tipo generale, é il lavoro é piú facile.. unaltra cosa che ho visto sul tuo essempio.. solo é posibile definire 6 dimensioni máximo sul ARRAY occhio!..
MrC Inserita: 12 dicembre 2003 Autore Segnala Inserita: 12 dicembre 2003 Oggi ho fatto un corso siemens , ed ho posto la domanda .Risposta :funziona SOLO con il simbolico :non posso fare :IN ARRAY := db2.dbb0ma IN ARRAY := RICETTA[2].DATIPrevia definizione corretta dei simboli ovviamente
Federico Milan Inserita: 13 dicembre 2003 Segnala Inserita: 13 dicembre 2003 funziona SOLO con il simbolico :non posso fare :IN ARRAY := db2.dbb0ma IN ARRAY := RICETTA[2].DATIè correto infatti essendo un dato composto se usi db2.dbb0 non hai nessuna informazione di che tipo di dato hai e quindi il compilatore non lo accetta ...però puoi sempre fare IN ARRAY := db2.RICETTASe ti posso dare un consiglio, io non passerei mai dati su fc o fb per questioni di tempi e spazio occupato, ma è una scelta personale ... a meno che la funzione che crei non sia standard e una volta creata sia intoccabile ...ciao
JumpMan Inserita: 13 dicembre 2003 Segnala Inserita: 13 dicembre 2003 Se ti posso dare un consiglio, io non passerei mai dati su fc o fb per questioni di tempi e spazio occupato, ma è una scelta personale ... a meno che la funzione che crei non sia standard e una volta creata sia intoccabile ...E' pero' la cosa piu' bella degli FC/FB siemens ! poter creare un blocco da usare in tutti i programmi anche di macchine diverse.Io faccio quasi sempre blocchi standard (intoccabili) da usare anche in futuro, quando funzionano funzionano e non li tocco piu' nemmeno io.Ciao
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