Risposte nei forum create
-
AutorePost
-
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.
Sergio Bertana
Amministratore del forumIl funzionamento del server Modbus TCP/IP sul modulo SlimLine Raspbery è identico a quello degli altri moduli SlimLine.
Il server è aperto di default sulla porta 502 e risponde con nodo Modbus 1, si può accedere a tutta l’area DB100 indicando indirizzo Modbus 40000.
Naturalmente il server Modbus è attivo solo se il run time LogicLab è in esecuzione.
Sergio Bertana
Amministratore del forumQual’è il codice del tuo sistema, e la versione del firmware?
Il FB SysTCPClient è indispensabile per la connessione, hai verificato che Toolly eseguito da un’altro PC apra la porta a cui il FB SysTCPClient si connette?
Se ti connetti in Telnet allo SlimLine e dai il comando Arp vedi l’IP del PC a cui ti connetti.
[Admin]> arp IP:192.168.1.110 MAC:00-0C-29-E6-AD-E4 [30 (Sec)] 1 ARP entrie(s) found
Luglio 15, 2022 alle 10:29 am in risposta a: Attivazione EasyAcess su pannello presso cliente #66268Sergio Bertana
Amministratore del forumMentre per l’attivazione EasyAccess 2.0 con Activation Card (Vedi topic) occorre rilevare l’Hardware key del pannello ed il codice dellla Activation Card, per l’attivazione delle licenze preinstallate (Vedi topic) occorre disporre dell’Hardware key del Session ID e Password.
Per rilevare turri i dati occore visualizzare la pagina 76 del pannello, se nel tuo programma non è prevista la visualizazione di questa pagina (Cosa sempre consigliata, anche per diagnostica) puoi creare un progetto (O aggiungere al progetto attuale) la possibilità di visualizzare la pagina 76.
Crei un progetto caricabile da chiavetta USB che puoi inviare al cliente, il cliente dovrà semplicemente trasferire il file su pen drive USB (Max 32Gb, Formattazione FAT32), inserirla a terminale acceso, verrà richiesta conferma di aggiornamento programma con la possibilità di selezionare il file. Confermato verrà eseguito il nuovo programma, ed accedendo alla pagina 76 il cliente potrà comunicarti Session ID e Password.
Sergio Bertana
Amministratore del forumIl fatto che il FB SysPing non riesca a raggiungere il PC è indicativo, intanto hai verificato se il PC risponde alle richieste di ping?
Se il PC risponde alle rischieste di ping allora c’è un problema di configurazione di rete, il mask delle reti è 255.255.255.0?
Visto che lo SlimLine ha indirizzo 192.168.0.1 potrebbe essere l’indirizzo definito anche nelle configurazioni come gateway di rete lo hai verificato?
Prova a cambiare indirizzo IP dello SlimLine, inoltre puoi provare a connetterti alla porta del tuo PC (Quella impostata nel FB SysTCPClient) da un’altro PC utilizzando la funzione TCPClient dell’utility Terminal di Toolly e verificare che la connessione sia possibile. Questo per verificare che il firewall del PC renda accessibile la porta definita.
-
AutorePost