Vai al contenuto
PLC Forum


Fb Con In Di Tipo Array - Come passare questo dato ?


Messaggi consigliati

Inserito:

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, db10

IN_ABILITAZIONI := [1,1,1,1,0,0,0,1,1,...] ma questa riga viene rossa

Funziona solo dichiarando un array temporaneo nell'OB dove lo richiamo (ad esempio dell'OB1)

CALL FB 10, db10

IN_ABILITAZIONI := #tmp_array

e 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_array

Grazie


Inserita:

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 la

variabile 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

Inserita:

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

Inserita:

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

unaltra cosa che ho visto sul tuo essempio.. solo é posibile definire 6 dimensioni máximo sul ARRAY occhio!.. :blink:

Inserita:

Oggi ho fatto un corso siemens , ed ho posto la domanda .

Risposta :

funziona SOLO con il simbolico :

non posso fare :

IN ARRAY := db2.dbb0

ma

IN ARRAY := RICETTA[2].DATI

Previa definizione corretta dei simboli ovviamente

Inserita:
funziona SOLO con il simbolico :

non posso fare :

IN ARRAY := db2.dbb0

ma

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

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

ciao

Inserita:
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

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