Sergio Bertana
Risposte nei forum create
-
AutorePost
-
Sergio Bertana
Amministratore del forumL’impostazione della word LW-9903 può essere fatta da pulsante o da macro in automatico e serve quando si vuole attivare il pass through verso il PLC tramite connessione seriale, quindi puoi connetterti al terminale da remoto e poi gestire il set della word.
Ma ti ricordo che il pass through non funziona con la connessione in MPI.
Sergio Bertana
Amministratore del forumIl pass through sui pannelli Weintek permette di connettersi tramite rete ethernet in locale e tramite connessione con EasyAccess da remoto al PLC connesso al pannello in seriale.
Ma quando parliamo di MPI parliamo di S7-300 solitamente, in questo caso purtroppo devo dirti di no non riusciamo ad usare la connessione pass through nè da porta ethernet locale nè da connessione remota in EasyAccess.
Sergio Bertana
Amministratore del forum1) Il pannelli serie iE non supportano dongle USB, devi avere una connessione Internet disponibile, quindi o ti connetti alla rete aziendale del cliente oppure utilizzi un router con SIM. SE vuoi utilizzare un dongle USB direttamente nel pannello devi scegliere la famiglia cMT.
2) Non c’e bisogno di nessun tutorial, nella pagina del prodotto in download troverai delle guide per la configurazione e cercando nel forum troverai altre utili informazioni. Eseguita la configurazione del servizio EasyAccess potrai connetterti al pannello dal tuo PC direttamente con l’indirizzo IP che verrà automaticamente assegnato al pannello. Impostando il pass through potrai definire un qualsiasi indirizzo IP della rete del pannello remoto per avere quell’indirizzo mappato nel tuo PC. Così se indichi l’indirizzo del PLC potrai accedervi direttamente con il TIA portal.
3) Con EasyAccess hai a disposizione 1Gb al mese sul singolo HMI, ogni mese il contatore si azzera, attualmente non ci sono limiti temporali.
Novembre 25, 2020 alle 11:29 am in risposta a: Inviare dati JSON in GET o POST ad un servizio REST #58315Sergio Bertana
Amministratore del forumAggiungo su un post separato perchè merita un approfondimendo la gestione della autenticazione, ho visto che hai definito l’Header che non hai terminato con <CR><LF>
HTTP.Header:=ADR('Authorization: Bearer GlzdHJpYnV0b3I6MmU1Y2JiMmQzMjZhNGMyNGRjYzgxN2UxNGFkZDI2OTliYTJmOGZkMDg4YTBlYzlmYjJlYzlkZmE5YWY4ZGJiOA==');E scrivi che hai definito valore convertito in base64 per Utente e Password, ma Authorization: Bearer si utilizza per autorizzazione con token, per l’autenticazione con utente e password si utilizza Authorization: Basic che deve essere calcolata in Base64 definendo username e password separate da “:”.
Quindi ad esempio l’utente Root con password MyPassword codificando con un codificatore on-line la stringa Root:MyPassword, avremo:
HTTPRq.Header:=ADR('Authorization: Basic Um9vdDpNeVBhc3N3b3Jk$r$n');Come vedi termino la stringa con il <CR><LF>.
Novembre 25, 2020 alle 11:14 am in risposta a: Inviare dati JSON in GET o POST ad un servizio REST #58314Sergio Bertana
Amministratore del forumVedo alcuni errori nella tua richiesta, il campo HostAddress deve essere definito solo con l’indirizzo IP o l’URL del server, quindi nel tuo caso ADR(‘192.168.101.240’). Il valore della porta 8080 lo hai già definito correttamente nel campo HostPort.
Il campo HostName identifica il nome host nel caso di servizi multihosting, nel tuo caso è corretto settarlo uguale a HostAddress.
Non hai definito il campo Page che identifica la pagina (O meglio lo script) a cui inviare i dati. Nel tuo caso mi sembra tu abbia scritto delle regole di rewrite in htaccess sul tuo sito, quindi in Page potresti scrivere “v2.0.0/status”.
Meglio sarebbe avere uno script che accetti i parametri in GET o POST ed avere un parametro che identifica la richiesta (Esempio Job=GetStatus) in questo modo con lo stesso script puoi gestire più comandi. In questo caso la richiesta andrebbe definita nel parametro Header.
Quello che visualizzi in Watch purtroppo è un BUG di LogicLab che non visualizza il valore stinga di una variabile pointer. Ma un GRANDISSIMO aiuto al debug lo puoi avere dallo spionaggio.
Sergio Bertana
Amministratore del forumSe utilizzi il counter hardware non occorre campionare velocemente gli ingressi digitali ci pensa il circuito hardware a gestire il conteggio. Come dici tu la necessità di campionare velocemente gli ingressi digitali serve solo nel caso utilizzi un conteggio software o l’FB IOEncoder di acquisizione encoder su I/O.
La quadratura encoder è una feature implementata nel core Cortex M7 ma che al momento non è ancora gestita dal nostro sistema.
Sergio Bertana
Amministratore del forumAttualmente non è ancora gestita l’acquisizione encoder sul modulo CPU CortexM7.
Certo puoi utilizzare un ingresso di counter per acquisisre uno dei canali dell’encoder ed eseguirne il conteggio. Se usi il counter del modulo CPU potrai acquisire segnali fino ad un massimo di 10kHz, ma attenzione utilizzando un solo ingresso senza la quadratura quando l’encoder si arresta a cavallo della tacca rischi di avere un conteggio anche se in trealtà l’encoder è fermo.
Sergio Bertana
Amministratore del forumPer la conversione di numeri in stringa si utilizzano le funzioni SysVsnprintf e SysCVsnprintf, in base alla definizione impostata nel segnaposto avrai una stringa con il valore decimale o esadecimale.
Ti ho preparato un esempio (Screenshot) dove ci sono due tipi di soluzione al tuo problema, nel primo caso stampo i 4 bytes accodando il risultato della stampa in una stringa.
Nel secondo caso ho creato una variabili DWORD con il valore dei 4 bytes e poi ne ho effettuato la stampa.
Sergio Bertana
Amministratore del forumAnche sui sistemi ARM è possibile impostare il tempo di loop della task Fast a 100uS, naturalmente devi controllare che ad eseguire il codice non venga impiegato un tempo molto vicino (Se non addirittura superiore) al tempo di loop, variabile SysTFastExTm.
Se è molto vicino non viene lasciato al processore molto tempo per eseguire la task Slow e la Back i cui tempi di esecuzione si allungheranno di conseguenza. Se è superiore si perderanno esecuzioni della task ma comunque il programma continuerà ad essere eseguito.
Nota, Siccome l’accesso ai moduli su bus di estensione richiede tempi dell’ordine dei 200uS nel caso siano eseguiti FB di accesso alle schede periferiche, se il tempo di loop della task Fast è inferiore ai 500uS questi FB sono automaticamente disabilitati, continuano a funzionare solo se agiscono sul modulo CPU, indirizzo di modulo 255.
Novembre 19, 2020 alle 10:46 am in risposta a: Come gestire motori passo/passo con i vostri prodotti #58264Sergio Bertana
Amministratore del forumLa prima considerazione è che la frequenza massima generabile dall’uscita PWM come puoi leggere nei post precedenti è di 2kHz, quindi devi verificare se soddisfa le tue necessità.
I moduli CPU Cortex hanno 2 uscite PWM indipendenti, quindi per gestire più motori devi parallelare su tutti i drivers il clock ed abilitare con una uscita specifica per ogni driver il driver che deve comandare il motore.
Quindi se nella tua applicazione non hai mai più di 2 motori che si muovono contemporaneamente, o se puoi muovere più motori contemporaneamente con lo stesso segnale di clock direi che è possibile.
Novembre 17, 2020 alle 10:33 am in risposta a: Inversione automatica senso di rotazione motore #58257Sergio Bertana
Amministratore del forumUna possibile soluzione è quella di programmare un uscita come funzione overload e collegarla ad un ingresso digitale con funzione jog. Vediamo il funzionamento:
Al superamento della corrente impostata, si attiva l’uscita che comanda l’ingresso di jog e mantiene lo stato per 20 secondi. Di seguito i parametri:
P05.02: 5 Ingresso S2 funzione Jog indietro
P05.17: 20 Tempo mantenimento funzione ingresso S2
P06.03: 14 Uscita con funzione overload
P11.09: Soglia di corrente oltre la quale l’inverter va in overload (% riferita agli A nominali motore)
P11.10: Tempo di tolleranza superamento soglia overloadNovembre 17, 2020 alle 10:23 am in risposta a: Inviare dati JSON in GET o POST ad un servizio REST #58254Sergio Bertana
Amministratore del forumDa quello che dici credo tu abbia fatto un copia incolla dell’esempio riportato nel manuale, come vedi quell’esempio utilizza diversi blocchi funzioni:
FIFOFile_v1; RESTClient_v3; HTTPClient_v2; JSONDecode_v2; JSONEncode_v1;
Quindi una volta eseguito il copia incolla come indicato qui, devi anche importare nel tuo progetto tutti gli oggetti (Funzioni e blocchi funzione) richiesti dalle varie librerie, vedi capitolo Importazione oggetto in questa pagina.
Sergio Bertana
Amministratore del forumNo purtroppo il suono ripetuto continuamente e/o intermittente può solo essere quello del buzzer che è predefinito nel terminale.
Sergio Bertana
Amministratore del forumRicordo che la pagina 4 Common Window è visualizzata sempre sotto a ogni altra pagina, quindi se hai messo oggetti in questa pagina saranno visibili anche in qualsiasi altra pagini tu visualizzi.
Ma non credo sia questo il tuo problema, piuttosto nella pagina dove vedi gli oggetti sovrapposti credo tu abbia definito come Underlay window l’altra pagina (Vedi screenshot).
Novembre 11, 2020 alle 10:29 am in risposta a: Gestire display LCD SainSmart compatibile Arduino #58199Sergio Bertana
Amministratore del forumGli oggetti come la SysGetAnInp sono embedded quindi vanno solo istanziati, mentre per gli altri oggetti li devi importare dalla relativa libreria. A quanto dici tu hai inserito nel progetto l’intera libreria eLLabUtyLib, come soluzione può essere utilizzata ma per le librerie come la eLLabUtyLib è preferibile solo importare gli oggetti che ti servono per non appesantire il programma sorgente con oggetti inutili (Vedi articolo).
Se la libreria è stata importata correttamente come dici non capisco il problema, per usare le FB occorre istanziarle, cioè creare una variabile di tipo del FB da utilizzare e poi inserire nel programma la variabile creata.
-
AutorePost