fbossio
Risposte nei forum create
-
AutorePost
-
fbossio
PartecipanteCapisco, in realtà facendo qualche prova ho notato che il trigger (su variabile pannello) effettivamente funziona, mi vengono però fermate le azioni da un successivo controllo variabile su PLC. La logica è la seguente:
Trigger variabile a pannello (funzionante) -> attendi valore ON su PLC (ON da molto prima del trigger pannello mi serve per discriminare un device o un altro) -> mostra popup.
il popup non mi viene mai lanciato ne con variabile PLC ON ne OFF (ritardo di attesa max 3000ms) mentre dovrebbe fermarlo solo se la variabile PLC booleana è false.
Sto sbagliando qualche impostazione forse?
fbossio
PartecipanteHo individuato il problema nel dettaglio.
La scrittura fallisce nel momento in cui le stringhe non sono mai state visualizzate a pannello, ma se visualizzo prima le stringhe e poi eseguo a query allora tutto funziona correttamente.
Per risolvere il problema ho inserito le stringhe che mi servivano in pagina principale fuori dai bordi di visualizzazione e la query funziona come se le avessi visualizzate.
fbossio
PartecipanteAggiungo un dettaglio, in simulazione offline il simulatore non mi permette di scrivere stringhe su variabili PLC anche scrivendole io manualmente.
Scrivendo i dati su LW gli output si vedono correttamente e da subito, il problema si presenta quindi solo alla prima esecuzione della query in questione e solo su pannello e PLC fisico.
fbossio
PartecipanteNel DB le stringhe in questione sono dichiarate come VARCHAR(45) e vengono scritti massimo 8 caratteri al suo interno, nel PLC le stringhe sono definite come STRING[20] e nel pannello come string(10) ho testato anche mettendo tutti valori a 20 tra i tre ma il problema rimane.
Quello che mi dà più grattacapi è perché alla prima esecuzione non vengono scritti i valori ma alle successive si.
fbossio
PartecipanteLa query funziona correttamente e visualizzo nella finestra di visualizzazione query il risultato che mi aspetto, quello che succede però è che i primi due campi (int uno su PLC e uno su HMI) vengono scritti, alla prima stringa il dato non viene scritto e rimane il tag di PLC vuoto.
Alla seconda esecuzione invece tutto funziona correttamente con stessa la stessa identica query.
fbossio
PartecipanteGrazie mille, ho fatto aprire la connessione agli ip suggeriti e con la porta indicata (il cliente vede le richieste e sono garantite).
Il comportamento del popup tuttavia non è cambiato Error 1, session ID zero password zero
Il pannello è un cMT3162X(V2).
Quale potrebbe essere la causa?
fbossio
PartecipanteGrazie mille, in italiano è tradotto in maniera un pò criptica
fbossio
PartecipanteAbbiamo già tentato di lavorare su un array di BOOL su PLC ma da EasyDiagnoser si vedeva una scansione per indice (nessun errore segnalato) e i tempi di risposta erano addirittura peggiori.
Al momento stiamo lavorando trasmettendo i dati da un array di word da PLC a local word e poi utilizzando le LW_bit (che invece funzionano con scansione singola) ma i tempi di risposta in questo modo sono di circa 5 secondi con solo 1000 allarmi delle 2000 che ci servirebbero.
In un altra risposta ho allegato immagine di easydiagnoser
fbossio
PartecipanteChiedo scusa, il PLC in questione è un M241 Schneider non saprei se utilizza OPCUA come protocollo.
Le variabili sono già in array consecutivo, ma abbiamo notato che riducendone il numero si velocizza di molto l’attivazione.
Aggiungo che visualizzando da EasyDiagnoser trovo appunto che ogni allarme ha un suo scanning a polling, come posso abilitare uno scanning singolo per tutti gli allarmi?
fbossio
Partecipantegrazie mille, è un dettaglio che mi frega spesso
fbossio
PartecipanteSi è esattamente la stessa cosa che volevo fare io, ma se si inserisce uno spazio vuoto tra i due valori viene salvato sulla LW solo il primo campo, se non si inserisce lo spazio in mezzo.
fbossio
PartecipanteProblema risolto, lascio la macro corretta qui per chiunque ne avesse bisogno, è stato necessario aggiungere uno StringCopy vuoto tra i due campi altrimenti il secondo campo viene scartato come descritto sopra.
macro_command main() int xp, yp char x[5] = "", ext[11] = "" GetDataEx(xp,"Local HMI",LW,1221,1) GetDataEx(yp,"Local HMI",LW,1224,1) DEC2ASCII(xp, x[0], 5) StringCopy(x[0], ext[0]) DEC2ASCII(yp, x[0], 5) StringCopy(" ", ext[5]) StringCopy(x[0], ext[6]) SetData(ext[0],"Local HMI",LW,1021,11) end macro_command
fbossio
PartecipanteModificando la macro ottengo un comportamento ancora più strano, il contenuto delle due celle di origine viene scritto sul campo di destinazione ma se carico il contenuto del campo di destinazione sul database tramite query MySQL solo il primo viene salvato, dalla diagnostica è possibile vedere il contenuto del campo LW-1021 uguale a “0000” mentre in visualizzazione è “0000 0000”. Si tratta di un errore del pannello?
Questa la macro che utilizzo al momento:
macro_command main() int xp, yp char x[4] = "", ext[9] = "" GetDataEx(xp,"Local HMI",LW,1221,1) GetDataEx(yp,"Local HMI",LW,1224,1) DEC2ASCII(xp, x[0], 4) StringCopy(x[0], ext[0]) DEC2ASCII(yp, x[0], 4) StringCopy(x[0], ext[5]) SetData(ext[0],"Local HMI",LW,1021,9) end macro_command
fbossio
PartecipanteSto provando a comunicare con il puntatore tramite Free protocol ma non riesco ad avere risposta dal dispositivo, ne su pannello ne dall’accensione del laser.
Questo è il codice con cui sto lavorando
macro_command main() short wResponse[2], receive_len char byCommand[9] bool stato GetData(stato, “Local HMI”, LB, 1, 1) if stato then StringCopy(“LASER ON”, byCommand[0]) SetData(byCommand[0], “Local HMI”, LW, 1000, 9) OUTPORT(byCommand[0], “Free Protocol”, 9)// send 4 bytes end if if not stato then StringCopy(“LASER OFF”, byCommand[0]) SetData(byCommand[0], “Local HMI”, LW, 1000, 9) OUTPORT(byCommand[0], “Free Protocol”, 9)// send 4 bytes end if DELAY(1000) INPORT(wResponse[0], “Free Protocol”, 2, receive_len)// read 144 words if receive_len >= 1 then SetData(wResponse[0], “Local HMI”, LW, 145, 2)// set responses to LW0 end if end macro_command
fbossio
PartecipanteGrazie mille veramente un errore da pivello il mio
-
AutorePost