Sergio Bertana
Risposte nei forum create
-
AutorePost
-
Ottobre 3, 2016 alle 3:45 pm in risposta a: Progetto di startup per connessione HMI a SlimLine #39723
Sergio Bertana
Amministratore del forumIl protocollo ELSIST MODBUS è ancora in fase di modifica, abbiamo dato a Weintek le specifiche ma tra le righe è scappato qualcosa, così consiglio di utilizzare il protocollo MODBUS IDA standard che funziona benissimo…
Sergio Bertana
Amministratore del forumIl codice di sblocco della dimensione del codice và inserito nella pagina web di configurazione (Screenshot). Naturalmente per poterli definire occorrerà eseguire il login con le credenziali di amministratore (Di default Username Admin, password Admin).
Inserito il codice occorre spegnere e riaccendere il modulo, connettendosi con LogicLab si disporrà della nuova dimensione di codice.
Ottobre 1, 2016 alle 6:28 am in risposta a: Progetto di startup per connessione HMI a SlimLine #39719Sergio Bertana
Amministratore del forumIl protocollo Modbus ha per definizione un offset di 1 e questo crea sempre delle cattive interpretazioni, alcuni sistemi ne tengono conto (Come ad esempio lo SlimLine) e sommano 1 all’indirizzo richiesto. Altri sistemi non ne tengono conto ed allora l’indirizzo di richiesta corrisponde esattamente alla variabile.
Nella gestione del terminale Weintek nella impostazione del protocollo Modbus persemplificare la programmazione hanno pensato ad entrambe le gestioni, come vedi dallo screenshot, è possibile selezionare il Modbus normale oppure un Modbus zero base addressing, e solo in questo devi sottrarre 1 all’indirizzo. Se scegli il Modbus normale come vedi in questo topic non occorre sottrarre 1.
Sergio Bertana
Amministratore del forumEcco lo screenshot di un programma che utilizza la funzione SysVarsscanf con diversi tipi di variabili (Download programma). Alle righe 6 e 7 vi è la conversione da stringa a valore REAL e come vedi dalla visualizzazione delle variabili il valore ritornato in RVar è un numero con la virgola.
Settembre 27, 2016 alle 2:54 pm in risposta a: Interfacciamento bus di estensione con PIO commerciali #39715Sergio Bertana
Amministratore del forumIl bus di espansione di tutti i moduli SlimLine è basato su di un bus I2C standard quindi può essere connesso qualsiasi dispositivo I2C a 5 Vdc standard. Nella libreria LogicLab forniamo la funzione SysI2CWrRd (Estratto manuale) che permette di leggere e scrivere dati verso i dispositivi connessi al bus (Topic).
Quindi puoi connettere anche il PIO MPC23008, il problema è che questo tipo di I/O expander ha l’ingresso di reset valido di FALSE, e sicome il segnale RDYO-N del nostro bus di espansione è FALSE quando il sistema è in run, dovrai invertirne lo stato. Ecco perchè abbiamo scelto un PIO con il segnale di reset attivo TRUE.
Se cerchi nel forum troverai molte applicazioni con programmi sorgente di utilizzo di dispositivi I2C standard connessi al nostro bus di espansione.
Sergio Bertana
Amministratore del forumQuesto problema ere già stato trattato in questo topic, riporto la risposta che era stata data.
Può succedere che alcune schede grafiche non supportino le librerie OpenGL, per superare questo problema occorre abilitare il rendering software (Che è più lento). Ecco come fare per abilitarlo. Nella cartella di installazione di EasyBuilderPro vi è il programma DisplaySetting, occorre eseguirlo ed abilitare il rendering software (Screenshot). La nuova impostazione sarà attiva al prossimo riavvio di EasyBuilderPro.
Sergio Bertana
Amministratore del forumAggiungo solo per dare una visione globale delle possibili soluzioni che se introduci tra il terminale ed il display un ns sistema SlimLine, tu puoi con il FB ModbusMaster sullo SlimLine gestire i soli comandi di scrittura verso il display, mentre il terminale dialogando con lo SlimLine potrà gestire sia lettura che scrittura.
Inoltre il FB ModbusMaster con la funzione di spionaggio (Topic) permette in modo semplice di visualizzare il dialogo con il dispositivo.
Sergio Bertana
Amministratore del forumVedi che spiando si inizia a fare luce nella nebbia… Se fai riferimendo al manuale Modbus, vedrai che la stringa inviata dal tasto è un comando 01 Read Coil Status, mentre dando una occhiata al datasheet del display mi sembra che per gestire i coils (Backlight e transistor output) tu posso solo usare il comando di scrittura 05 Force Single Coil.
Ma l’oggetto tasto del terminale non può solo scrivere, normalmente legge anche lo stato del coil ed il tuo display da errore. Penso che per gestire i coils del display dovrai lavorare di macro con OUTPORT.
Credo che anche per i testi sul display dovrai fare la stessa cosa perchè non mi sembra di avere visto comandi di lettura ma solo di scrittura.
Sergio Bertana
Amministratore del forumIntanto metti sempre solo un oggetto, perchè se uno degli oggetti và in errore poi non capisci quali sono quelli giusti e quelli sbagliati.
Poi attento perchè indicano i registri come address 4000x ma in realtà sono ad address 0. Se guardi il datasheet vedrai questo:
0x0010 ( 40017) row 0—Unsigned IntegerMa poi quando riportano la stringa RTU (e li non possono mentire) scrivono:
[Slave ID] [ 0x06] [ 0x00][ 0x10 ] [ 0x40 ] [ 0x3A ] [ CRC Hi ] [ CRC Lo ]Dove vedi che dopo il codice di funzione 0x06 Write single register hanno definito indirizzo 0x0010 come scritto sopra e non 40017. E poi comunque spiate gente spiate… solo guardando cosa passa sulla seriale si capiscono i problemi…
Settembre 22, 2016 alle 3:34 pm in risposta a: Lettura variabili ModBus TCP SlimLine da Modbus Scanner #39708Sergio Bertana
Amministratore del forumIl protocollo Modbus sui sistemi SlimLine gestisce le variabili allocate nella DB 100 indirizzandole con indirizzi a partire da 40000 (E’ previsto anche un alias a indirizzo 20000). In questo topic ed in questo topic trovi altre informazioni al riguardo.
Programmi come il Modbus Scanner che non conosco, di solito viene indicato 40000 per indicare indirizzo “0” con codice di comando 04 Read Input Registers, quindi in realtà tu stai leggendo l’indirizzo “0” e non 40000 ed è per questo che lo SlimLine ti risponde con un codice di errore.
Se guardo lo screenshot dell’errore vedo che di fianco al Poll vi è la stringa “01 03 00 00 00 02” che corrisponde al comando 03 Read Holding Registers, su nodo Modbus 1 a partire da indirizzo 0000 per 2 registri 0002 (4 bytes). Mentre per leggere un REAL (4 BYTES) allocato a MD 100.0 dovresti inviare il comando 01 03 9C 3F 00 02 DA 57.
Come vedi ho aggiunto il CRC che probabilmente nel log è filtrato ma sopratutto devi notare che per leggere all’indirizzo 40000 -> 9C40 in Hex ho inviato l’indirizzo 39999 -> 9C3F in Hex, perchè per definizione modbus ha offset 1. Molti programmi però non ne tengono conto quindi attenzione…
Poi nei numeri a 32 bits DINT, UDINT e REAL devi stare attento alla endianness del dato (Topic).
Sergio Bertana
Amministratore del forumHo dato una occhiata al datasheet del display ed ho visto che deve essere indirizzato con indirizzo nel range 40001÷40016, suporta sia i comandi 0x06 Preset single register che 0x10 Preset multiple registers quindi non dovrebbero esserci problemi a gestirlo.
Hai impostato corretamente il modo seriale (Baud, parità, stop bits)… Hai definito correttamente il nodo modbus (Slave ID)…
Per capire dove è il problema non ti resta che spiare la comunicazione RS485 con un’altra seriale ed uno sniffer (Topic).
Settembre 21, 2016 alle 9:55 am in risposta a: Errore nella migrazione di un progetto CMR-SVR #39706Sergio Bertana
Amministratore del forumNon ho mai avuto notizie di questo problema, prova ad utilizzare proprio un diverso PC che non sia in qualche modo (Visto la saltuarietà) un problema legato all’hardware.
Sergio Bertana
Amministratore del forumE’ un problema legato alla gestione delle stringhe nella nuova versione del compilatore LogicLab, stiamo rilasciando la nuova versione della libreria eLLabLogLib_B200 con alcune modifiche per adeguare le funzioni ed i FB al nuovo compilatore. Nel tuo caso la riga in erorre era
j:=SysVarsnprintf(ADR(StringBf)+StringPs, 2+1, ‘%s’, STRING_TYPE, ‘ |’);
Che nel nuovo FB ho modificato usando la funzione SysLWVarsnprintf in
j:=SysLWVarsnprintf(ADR(StringBf), SIZEOF(StringBf), ‘%s’, STRING_TYPE, ADR(‘ |’));
Come vedi la stringa ‘ |’ nel vecchio compilatore veniva automaticamente riconusciuta come un pointer, nel nuovo compilatore occorre utilizzare l’operando ADR. Allego il nuovo progetto RecipeTest con la nuova versione del FB per il download.
Settembre 7, 2016 alle 12:35 pm in risposta a: FB di comunicazione con inverter Aurora Power One (ABB) #39702Sergio Bertana
Amministratore del forumL’inverter Aurora rende disponibile un registro di stato (Ecco l’estratto del manuale) che credo abbia l’informazione di cui tu hai bisogno. Guardando l’estratto del manuale sembra che nel campo Global State si trovi quella informazione (Condizione 30).
Per acquisire da protocollo l’informazione di stato occorre implementare un apposito comando che attualmente non è implementato, in pratica occorre aggiungere nella liberia un nuovo FB realizzato appositamente. E’ una operazione che è fattibile bisogna contattare il nostro ufficio commerciale.
Sergio Bertana
Amministratore del forumWhen you connect to the system by telnet, by default the standard I/O terminal is the system shell, so no prompt is displayed on the telnet screen. To change the standard I/O terminal you must send the Ctrl+F command according to the IEC61131-3 programming Manual, at the moment this manual is only in Italian, anyway here an abstract in English of the telnet chapter.
After the focus is on the telnet terminal you can send the REBOOT command to the system.
-
AutorePost