Sergio Bertana
Risposte nei forum create
-
AutorePost
-
Gennaio 13, 2021 alle 1:28 pm in risposta a: EasyBuilderPro, modifica multipla attributi oggetti #58780
Sergio Bertana
Amministratore del forumMettendo a video la visualizzazione delle librerie shape ed immagine come da screenshot, puoi selezionare più oggetti e poi con un doppio click sulla nuova immagine da usare saranno tutte cambiate.
Gennaio 13, 2021 alle 12:21 pm in risposta a: Realizzare una comunicazione TCP/IP con protocollo libero #58777Sergio Bertana
Amministratore del forumSui terminali Weintek direi che la soluzione FreeProtocol sia corretta, eventualmente da verificare l’uso dell’INPORT, di questi ce ne sono 3 differenti a seconda del tipo di risposta che può arrivare.
Proverei con inport2 in modo da poter non definire il numero di byte che mi aspetto ma tenendo aperta la lettura per x ms quindi analizzarli.
[Description] Read data from a communication port. After the data is read, if there's no upcoming data during the designated time interval, the function returns. [Usage] INPORT2(response[start], device_name, receive_len, wait_time) note : the length of data being recieved is written into receive_len (unit : byte). [Example] short wResponse[6], receive_len, wait_time=20 INPORT2(wResponse[0], "Free Protocol", receive_len, wait_time) //wait_time's unit : millisecond if receive_len >= 6 then SetData(wResponse[0], "Local HMI", LW, 0, 6) //set responses to LW0 end ifAggiungo, visto che produciamo PLC che utilizzando un sistema SlimLine con il FB SysTCPClient puoi gestire la connessione al server e poi hai le classiche funzione Sysfread, Sysfwrite, SysVsscanf, SysVfprintf, ecc.. per gestire il tuo protocollo in piena libertà.
Sergio Bertana
Amministratore del forumSe si parla di pagine base, basta andare a scrivere il valore della pagina che si vuole aprire (Quindi chiudendo quella attuale) su una LW libera ed impostarla nelle funzioni PLC come cambio pagina.
Se invece parliamo di una pagina di pop up da chiudersi è meglio richiamarli come pagina diretta o indiretta quindi andare ad azzerare il bit o la word di richiamo cosi da chiuderla.
Sergio Bertana
Amministratore del forumNon conosco il prodotto in questione ma immagino che il prodotto sia un server Modbus e tu debba connetterti come client. Quindi puoi utilizzare il FB TCPClient per aprire la connessione TCP verso il dispositivo, poi passerai il File in uscita come parametro al FB ModbusMaster che potrai parametrizzarlo in base al codice funzione ed indirizzo Modbus necessario.
In fondo alla pagina di manuale del FB ModbusMaster c’è il programma ST_ModbusMaster_v1 che puoi copiare ed importare in un tuo progetto LogicLab che è già pronto con tutto quello che serve, in realtà c’è anche la gestione da porta seriale che puoi cancellare.
Se le variabili Modbus da leggere/scrivere su dispositivo sono molte e distanti tra di loro e quindi richiedono l’utilizzo di più pacchetti Modbus ti consiglio di abbinare il FB ACModbus che ti semplifica il lavoro.
Sergio Bertana
Amministratore del forumNon è possibile creare cartelle sul file system da programma, l’unico modo per creare nuove cartelle è utilizzando una connessione FTP al sistema. Dal client FTP potrai gestire completamente il file system creando e cancellando cartelle, rinominando file e cartelle.
Le cartelle create potranno poi essere accessibili da programma con la funzione Sysfopen in cui definirai il percorso completo del file da aprire o da creare (Nel caso lo apri in write od in append).
Sergio Bertana
Amministratore del forum- Usando i TAGS per pagine html…
E’ vero che per gestire variabili da pagina web utilizzando il server HTTP del sistema devi allocare le variabili in DB100, ma puoi definire la tua struttura dati che poi allocherai nella DB100 rendendone posibile l’accesso da pagine web e questo senza creare doppioni. - Potrei usare il blocco HTTPServer…
Se utilizzi il FB HTTPServer devi agganciarlo ad una porta libera, volendo utilizzare la 80 devi definire una porta diversa per il server HTTP del sistema. Potrai così utilizzare il FB per visualizzare tutte le tue pagine e gestire lo scambio dati in AJAX. - Qual è il modo migliore…
Per passare molti dati alla pagina web certo il modo migliore è utilizzare il FB HTTPServer che ti permette di definire in completa libertà le stringhe da inviare al browser.
Sergio Bertana
Amministratore del forumNon riesco a spiegarmi il motivo del tuo problema, giorni fà ti ho mandato una eMail in privato chiedendoti di chiamarmi al telefono per aprire una sessione TeamViewer per vedere il problema direttamente sul tuo sistema.
Magari è finita nello spam, se vuoi contattami per telefono così vediamo di capire il problema.
Sergio Bertana
Amministratore del forumNaturalmente avendo la necessità di dover comunicare con più drivers devi forzatamente utilizzare una connessione in RS485. Meglio in questo caso sarebbe stato utilizzare un modulo CPU MPS054B110 che ha già l’interfaccia RS485 isolata ed essendo basato su CPU CortexM7 avresti anche una maggiore velocità di esecuzione ed un maggior spazio di programma. Visto che disponi di un MPS053 puoi eventualmente utilizzare un convertitore RS232/Rs485 con i vari adattatori per RJ45 per lo scopo.
Certo devi tenere presente quale è la velocità richiesta nella comunicazione, tenendo conto che il massimo baud rate e 115200 (ca 10000 caratteri al secodo) e nel protocollo Modbus oltre ai dati ci sono i controlli ed ad ogni pacchetto vi è un pacchetto di risposta con tutti i tempi relativi per gestirli.
Sergio Bertana
Amministratore del forumNel parsing dei TAGs è importante la posizione delle virgole e degli spazi, devi scrivere la TAG nel modo:
Intero: <!--["%d", UINT, 10]-->
Così vedrai che tutto ti funzionerà.
Sergio Bertana
Amministratore del forumVista la dipendenza delle pagine web dalla versione del firmware del sistema abbiamo realizzato e distribuiamo un package che contiene tutto quello che serve per eseguire l’upgrade del sistema puoi trovare le informazioni sull’upgrade dei sistemi ed eseguire il download del package dalle pagine relative sia ai sistemi basati su ARM7 che CortexM7.
Aggiungo che dopo avere aggiornato il firmware e caricato le nuove pagine, devi dare da telnet (Loggandoti come Admin) il comando “CfgCommit -d” che aggiorna i diritti di accesso alle varie directories del sistema seguito dal comando “Reboot”. Puoi verificare nella pagina Security come sono settati i diritti.
C:/Web - Anonymous - Admin C:/Web/webpages - Guest - Admin
Attenzione che il comando resetta a default l’indirizzo IP, sui sistemi Cortex si attiva il client DHCP ed aspetta l’indirizzo dal server. Se non c’è server DHCP va in IP di fallback 192.168.0.122. Per vedere che indirizzo IP assume il sistema utilizza la funzione Discovery di Toolly.
Per le impostazioni occorre agire sull’icona ingranaggio come da screenshot.
Sergio Bertana
Amministratore del forumPer quanto riguarda la visualizzazione della TAG dici che hai allocato una variabile REAL nella DB100.0 allora avresti dovuto mettere indirizzo variabile a 0 non 100. Il DB100 è di default devi solo indicare l’indirizzo. Prova a modificare il file htm così:
<!--["%.3f",REAL,0]-->
Sergio Bertana
Amministratore del forumLa gestione delle TAGs utente (Quelle relative alle variabili allocate in DB100) per compatibilità con il passato è rimasta esattamente uguale alla precedente.
Abbiamo modificato le TAGs di sistema che nelle vecchie versioni di firmware non erano documentate ed erano utilizzate esclusivamente nelle nostre pagine di sistema.
Ora abbiamo aggiunto le definizioni dei SYS_ID che possono essere utilizzati sia nelle pagine web che da programma utente con la funzione SysOSIDValue.
Sergio Bertana
Amministratore del forumHai già inserito correttamente i blocchi di codice formattato…
Per farlo si edita il post in modalità testo e si include il blocco di codice nei TAGs “<pre>Testo da includere</pre>.
Per quanto riguarda la gestione Ajax delle pagine nelle nuove pagine web abbiamo già introdotto una serie di funzioni richiamabili che alleggeriscono il lavoro. La tecnica che abbiamo utilizzato è di avere una pagina con estensione html che contiene la visualizzazione dei valori ed una pagina dello stesso nome con estensione htm che contiene i TAGs che saranno sostituiti dal server con i relativi valori. Se tu guardi le pagine web dello SlimLine troverai questa tecnica e nelle pagine htm troverai qualcosa tipo questo:
{"OSID_TELNET_SVR_EN" : <!--[OSID_TELNET_SVR_EN]-->, "OSID_TELNET_SVR_PORT" : <!--[OSID_TELNET_SVR_PORT]-->, "OSID_WEB_SVR_EN" : <!--[OSID_WEB_SVR_EN]-->}Quelli che vedi sono TAGs che ritornano e permettono di impostare variabili di sistema qui trovi l’elenco.
Ora siamo chiusi e non riesco a farti un esempio, al rientro preparerò un esempio esplicativo.
Sergio Bertana
Amministratore del forumNon ho capito bene quello che vuoi fare, l’argomento è un pò complicato vedo di spiegarlo magari inserendo più posts di risposta. Inizaimo con una gestione non in Ajax, quindi se vuoi un rinfresco della pagina la devi ricaricare dal browser. Ti riporto il listato di un programma che permette la visualizzazione e l’input da pagina web di variabili.
VAR i : UDINT; (* Auxiliary variable *) IString AT %MX100.100 : STRING[ 15 ]; (* Stringa in input *) IVar AT %MX100.116 : UINT; (* Variabie in input *) OString AT %MX100.118 : STRING[ 31 ]; (* Stringa risultato *) END_VAR // ----------------------------------------------------------------------------- // Di seguito il contenuto della pagina "Test.htm" da trasferire sullo SlimLine // nella directory "C:\Web". // // E' visualizzata in un campo input la stringa "ISting" allocata a DB100.100. // E' visualizzata in un campo input la variabile "IVar" allocata a DB100.116. // E' visualizzata in un campo <div> la stringa di concatenazione del risultato. // ----------------------------------------------------------------------------- /* <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <title>SlimLine - Simple page</title> </head> <body"> <div><!--['%s', STRING, 118]--></div> <form id="MyForm" name="MyForm" method="post" action="Test.htm"> Stringa: <input name="STRING 100 15" type="text" size="10" maxlength="16" value="<!--['%s', STRING, 100]-->"></br> Valore: <input name="UINT 116" type="text" size="10" maxlength="10" value="<!--['%d', UINT, 116]-->"></br> <input type="submit" id="MyButton" value="Save"/> </form> </body> </html> */ // ----------------------------------------------------------------------------- i:=SysVsnprintf(ADR(OString), SIZEOF(OString), ADR('Result:%s'), STRING_TYPE, ADR(IString)); i:=SysCVsnprintf(ADR(OString), SIZEOF(OString), ADR(' - %d'), UINT_TYPE, ADR(IVar)); // [End of file]Metto in evidenza che il tipo file deve essere .htm, perchè solo nei files con questa estensione vengono sostituiti i TAGs.
Le variabili stringa sono definite di lunghezza 15 e 31 perchè ricordo che al termine delle stringhe è automaticamente aggiunto il codice tappo 16#00 che allunga di 1 byte la lunghezza definita.
Per impostare i parametri da pagina web utilizzo un form che invia i valori in POST, nelle variabili stringa nei campi di inputazione occorre definire la lunghezza masima questo per evitare di “sforare” la dimensione in memoria.
Sergio Bertana
Amministratore del forumCerto che è possibile eseguire l’aggiornamento (Vedi articolo) basta scaricare dal sito il package per l’upgrade a XUnified che contiene sia il sistema operativo che le pagine web aggiornate.
Se includi nel progetto la libreria eLLabXUnifiedAdjLib potrai compilare il tuo programma senza fare modifiche. Altrimenti dovrai sostituire gli oggetti rinominati nel passaggio da XTarget ad XUnified.
- Usando i TAGS per pagine html…
-
AutorePost