Sergio Bertana
Risposte nei forum create
-
AutorePost
-
Sergio Bertana
Amministratore del forumEcco le risposte alle domande sul prodotto HWg-STE2 R2, sperando di essere esaustivo.
- Si certamente il prodotto può essere utilizzato in modalità stand-alone. Si può accedere da browser ed oltre alla configurazione è possibile visualizzare i valori attuali delle variabili acquisite. Impostando soglie di allarmi il dispositivo è in grado di inviare eMail su allarme. Ricordo che oltre al portale SensDesk a pagamento c’è anche il portale HWg-cloud gratuito (Vedi articolo).
- No usandolo in modalità stand-alone il dispositivo è completamente configurabile da pagina web e non richiede alcun software aggiuntivo.
- Il sistema invia nativamente eMail su condizioni di allarme, per inviare SMS è necessario utilizzare un HWg-SMS-GW3. Il gateway è perfettamente compatibile con SIM Italiane.
- E’ possibile connettersi al dispositivo con il protocollo SNMP per acquisire in tempo reale i valori dei vari senmsori collegati. E’ anche disponibile una pagina XML che ritorna tutte le informazioni.
Agosto 3, 2022 alle 2:22 pm in risposta a: FreeProtocol macro communication, INPORT buffer limit #66725Sergio Bertana
Amministratore del forumUnfortunately the INPORT and INPORT3 have the same limit of 1024 bytes. If the TCP packet is longer than the limit the exceeding bytes are lost.
I’ve no suggestions how to solve your problem to receive long packets with the Weintek terminal.
Just for your informations we manufacture a programmable devices (PLC) that can easily manage TCP communications and probably can be used to solve the problem. For example the MPS056 can be used.
By using the SysTCPServer and SysTCPClient you can manage TCP connection, in the programming manual you can find all the available program object
Sergio Bertana
Amministratore del forumQuindi stai leggendo l’indirizzo 2 quindi abbiamo bypassato il problema dell’offset -1.
Ma sei sicuro che il tuo dispositivo accetti il comando 3x (Read Holding register) magari vuole il codice 4x.
Io proverei a connettermi con un simulatore Modbus (Esempio quello del ns programma Toolly).
Eventualmente se hai due convertitori seriali RS485, puoi anche spiare sempre con Toolly i pacchetti Modbus scambiati dal programma che funziona, così ti rendi conto.
Agosto 3, 2022 alle 11:31 am in risposta a: Utilizzare file download progetto via USB o SDCard #66709Sergio Bertana
Amministratore del forumPer eseguire l’upload da SDCard o da Pen drive devi creare il file da EasyBuilderPro (Menù Project->Build Download Files), ti viene richiesta la cartella dove memorizzare il file di progetto. Nel caso di pannello cMT verrà creato un file di nome project.cxob.
Ora copiare il file su SDCard o su Pen Drive (Si consiglia di utilizzare dispositivi formattati FAT32 e di dimensione massimo 16Gb). Poi inserire il dispostivo nel pannello a pannello acceso e si attiverà la finestra con la selezione del file da caricare. Nello screenshot ecco le varie fasi.
Inserendo il Pen drive a pannello acceso si attiverà la finestra 3, che permette di scegliere l’operazione da eseguire proseguendo poi nelle varie sequenze.
Nel caso in cui non si attivasse, verificare dopo il login accedendo al menù Generale (1) se è abilitata la voce Popup download (2).
Sergio Bertana
Amministratore del forumPer la scrittura di file CSV puoi dare una occhiata al FB StringToLogFile, dove trovi anche esempi di alcuni datalogger.
Nella documentazione del FB FTPClient trovi un esempio di datalogger con trasferimento automatico su server FTP del file CSV.
Per la lettura da file CSV, nella documenatzione della funzione SysStrFind trovi il programma TagFinder che potrebbe esserti utile come traccia.
In questo topic trovi un vecchio programma che implementa un FB per la lettura di una cella da file CSV.
Sergio Bertana
Amministratore del forumPosso pensare al classico problema dell’offset sull’indirizzamento Modbus.
Quando si fanno le prove con Mobus conviene sempre utilizzare indirizzi superiori allo 0, poi al limite ti accorgi che tu chiedi l’indirizzo 1 in realtà vai a leggere l’indirizzo 0.
Nella specifica originale (E così fà anche il terminale Weintek) quando definisci l’indirizzo del registro in realtà viene richiesto l’indirizzo definito -1. Quindi se tu hai scelto di acquisire l’indirizzo 0 in realtà viene richiesto l’indirizzo -1 ed il tuo dispositivo risponde con un codice di eccezione. Se vedi nelle possibilità di scelta del protocollo Modbus c’è anche l’opzione zero base addressing, che elimina l’offset.
Per le variabili a 16 bits non hai problemi perchè Modbus utilizza il fomato Big-endian, ma nelle variabili a 32 bits come le FLOAT32 potresti avere un problema nell’endianness, vedi le impostazioni nel protocollo (Screenshot).
Per le variabili float inoltre il pannello utilizza il formato IEE754, che è quello più utilizzato ma se la tua scheda utilizza un’altro formato potresti avere problemi di visualizzazione dei valori.
Sergio Bertana
Amministratore del forumIl FB ModbusSlave può operare su un unico banco di memoria di cui nel parametro Buffer occorre passare l’indirizzo di allocazione e nel parametro Size la dimensione. Per rispondere alla tua domanda l’unica soluzione possibile è di definire una struttura dati che contiene le due variabili che vuoi pubblicare.
MODBUSDATA: STRUCT VarToMB1 : ARRAY[0..9] OF BYTE; VarToMB2 : ARRAY[0..9] OF BYTE; END_STRUCT;
Poi dichiari una variabile VarMB di tipo MODBUSDATA e ne passi l’indirizzo al parametro Buffer del FB.
VAR VarMB : MODBUSDATA; (* Modbus data *) END_VAR Mdb.Buffer:=ADR(VarMB); //Modbus buffer address Mdb.Size:=SIZEOF(VarMB); //Modbus buffer sizeAttenzione all’allineamento, sai che i sistemi ARM hanno allineamento ad indirizzo multiplo 2 per le variabili a due bytes ed indirizzo multiplo 4 per le variabili 4 bytes. Quindi se le variabili in struttura sono ad 1 byte BOOL o BYTE vengono accodate ma se sono a 2 bytes o 4 bytes il compilatore inserisce bytes liberi per correggerne l’allineamento.
Sergio Bertana
Amministratore del forumSi certo immagino la difficoltà di utilizzare nuove librerie, se dai una occhiata al manuale programmazione LogicLab puoi verificarne la fattibilità.
Riguardo al connettore USB, è possibile utilizzarlo solo per connettere una memoria di massa, noi consigliamo il mini Lettore/scrittore micro SD-Card USB. Tieni comunque presente che il modulo ha già uno slot micro SD-Card integrato.
Sergio Bertana
Amministratore del forumSi quel modello di CPU utilizzava CODESYS 2 ed è fuori produzione da un certo tempo.
Attualmente abbiamo a catalogo il modello MPS055 che può essere programmato oltre che con LogicLab anche con CODESYS 3.
Purtroppo essendo basata su modulo Raspberry non è al momento fornibile dato i ben noti problemi che affliggono la diponibiltà del modulo.
Non sò quanto sia complesso il programma ed in quale linguaggio è scritto, ma se è un linguaggio testuale IL o ST, non è complesso il porting in ambiente LogicLab, dove puoi utilizzare il modulo CPU MPS054.
Luglio 27, 2022 alle 4:37 pm in risposta a: Come posso gestire gli I/O dell’inverter da Modbus #66603Sergio Bertana
Amministratore del forumIl registro Modbus 300A ritorna lo stato degli ingressi logici (Uno per ogni bit del registro).
Il registro Modbus 300B ritorna lo stato delle uscite logiche (Una per ogni bit del registro)Per gli ingressi logici è possibile disabilitarne le funzioni vedi parametri P05.00~P05.09.
Per le uscite logiche è possibile disabilitarne le funzioni vedi parametri P06.01~P06.05.Sergio Bertana
Amministratore del forumSe hai impostato a 12 il numero di connessioni nella pagina Servers su IPServer[0] e nella pagina Protocols il Modbus [3] è connesso a IPServer[0] il sistema accetta fino a 12 connessioni simultanee. Quindi pùo gestire i 9 terminali e la connessione da LogicLab. Ora visto che mi dici che hai problemi vediamo alcuni comandi che puoi dare da Telnet per indagare.
NETStat: Riporta l’elenco delle connessioni attive, dovresti vedere tutte le connessioni Modbus sulla porta 502 attive e ancora la porta in listening per altre connessioni.
[Admin]> NetStat Id Proto Local Address Foreign Address Status [00] TCP 0.0.0.0:502 0.0.0.0:0 LISTENING [01] TCP 0.0.0.0:21 0.0.0.0:0 LISTENING [02] TCP 192.168.0.181:23 192.168.1.110:65123 ESTABLISHED [03] TCP 192.168.0.181:502 192.168.1.110:65120 ESTABLISHED [04] TCP 192.168.0.181:502 192.168.1.110:65146 ESTABLISHED
RMStats: Visualizza la memoria rilocabile disponibile. Può essere che nel tuo programma già stai utilizzando troppa memoria rilocabile e non c’è nè abbastanza per allocare tutte le istanze Modbus.
SysLog: Riporta il log degli errori.
Nel caso ci fossero dei limiti che al momento non riesco a spiegarmi abbiamo altre soluzioni per risolvere il problema, ma prima vorrei capire come mai non funziona la configurazione attuale.
Sergio Bertana
Amministratore del forumPer la descrizione degli errori occorre andare alla pagina Elenco errori. Inserendo l’errore ne viene riportata la descrizione. Nel tuo caso è:
CRC errato in frame RTU risposta a comando
Sembra che ad un comando Modbus inviato dallo SlimLine l’inverter abbia risposto con un frame contenente un CRC errato.
Dubito che il CRC inviato sia errato, propenderei piuttosto per disturbi che alterano i dati scambiati su RS485 tra SlimLine e Inverter.
Hai utilizzato un cavo schermato e twistato per il cablaggio della linea RS485?
Gli inverter hanno il filtro di rete?
Sergio Bertana
Amministratore del forumIntanto ti consiglio di scaricare la Guida connessioni PLC e dare una occhiata alle informazioni sulla connessione dei PLC Siemens S7-1200/S7-1500 (Siemens S7-1200/S7-1500 Absolute Addressing Ethernet).
Ti consiglio infatti di realizzare un semplice progetto con un solo oggetto pulsante toggle riferito ad una variabile BOOL assoluta del PLC. Provando il progetto in simulazione con EasyBuilderPro se il PC si connette al PLC con il TIA portal sei sicuro che la connesione di rete è corretta. Verifica che su TIA portal nel configuratore Hw della CPU nelle proprietà CPU meccanismi di collegamento sia attivato il GET/PUT.
Quando tutto funziona in simulazione potrai scaricare il progetto sul pannello reale e se le configurazioni di rete sono corrette il progetto funziona sicuramente.
Sergio Bertana
Amministratore del forumAnche se non mi è molto chiaro quello che ti serve, di solito quando si opera con numeri REAL si utilizza sempre nei calcoli la massima risoluzione, il valore viene troncato solo in visualizzazione, dove le funzioni SysVfprintf e SysVsnprintf permettono appunto di definire quante cifre visualizzare (Segnaposti del formato printf).
Ma se per qualche motivo vuoi troncare i decimali di un numero REAL devi utilizzare la funzione eRound.
Sergio Bertana
Amministratore del forumDa quanto ho capito non avete sviluppato voi l’applicazione che gira sui PLC. Probabile che chi ha sviluppato l’applicazione per proteggerla abbia cambiato le credenziali di accesso. Per cui vanno chieste le credenziali a chi ha sviluppato l’applicazione.
Proprio per garantire la sicurezza delle applicazioni non abbiamo previsto un modo per riportare i PLC a default se non si conoscono le credenziali di accesso. Nel caso si desiderasse resettarli alla condizioni di fabbrica, perdendo però il programma esistente, è possibile inviarceli in manutenzione (Aprendo un RMA).
Per il terzo se non lampeggia il led di RUN, potrebbe aver perso il firmware e quindi anche l’applicazione. Per ricaricare il firmware vedi articolo al capitolo “Aggiornamento tramite seriale Rs232 o USB”.
Per informazione ti rimando all’articolo che illustra le procedure di backup e restore, ma come detto prima è necessario conoscre le credenziali di accesso.
-
AutorePost