Vai al contenuto

Sergio Bertana

Risposte nei forum create

Stai visualizzando 15 post - dal 1,801 a 1,815 (di 4,367 totali)
  • Autore
    Post
  • in risposta a: Come eseguire conversione di protocollo #40041
    Sergio Bertana
    Amministratore del forum

    Non abbiamo un convertitore che esegua la conversione tra ModbusTCP e COMLI, però se hai esperienza di programmazione con un modulo CPU SlimLine puoi facilmente svilupparti il convertitore che ti serve. Nel forum puoi trovare degli spunti di programma che ti possono aiutare a sviluppare il tuo programma di conversione. Ad  esempio in questo topic viene spiegato come realizzare un semplice protocollo di comunicazione. Il suggerimento è di realizzare un FB che esegue la conversione di protocollo (Come ad esempio il nostro ModbusTCPGateway), in questo topic ne viene spiegato l’utilizzo.

    Molto utile al tuo scopo può essere questo topic, dove viene spiegato come realizzare un FB di conversione tra protocollo Modbus RTU e Ascii.

    in risposta a: Effettuare il Ping di un indirizzo IP statico su internet #40040
    Sergio Bertana
    Amministratore del forum

    Non esiste una funzione specifica che permetta di conoscere il MAC address dei dispositivi in rete, ma tra le novità del nuovo sistema operativo SFW198C000 del modulo CPU Cortex M7, è prevista la possibilità di connettersi via TCP al local host (127.0.0.1) che può essere usato dalle applicazioni per comunicare con lo stesso sistema su cui sono in esecuzione.

    Questo permette di utilizzare il FB SysTCPClient per connettersi alla porta 23 (Telnet) dello stesso modulo CPU, in questo modo con il FB CLIManager (Topic) potrai autenticarti ed utilizzare il comando arp per conoscere i MAC address relativi agli indirizzi IP presenti in tabella ARP. Eseguendo il FB SysIPReach puoi forzare l’inserimento in tabella arp dell’indirizzo IP che desideri. Ecco un esempio di risposta al comando ARP (Ho oscurato alcuni numeri).

    [Admin]> arp
    IP:192.168.0.xxx MAC:00-xx-8C-xx-25-78 [118 (Sec)]
    IP:192.xxx.0.33 MAC:74-xx-EA-BC-36-xx [120 (Sec)]
    IP:192.168.xxx.xxx MAC:00-50-xx-C3-C4-xx [120 (Sec)]
    3 ARP entrie(s) found

    in risposta a: Variabile RETAIN da visualizzare in un watch #40038
    Sergio Bertana
    Amministratore del forum

    Probabilmente hai dichiarato la variabile ma non l’hai utilizzata in nessun program, nella compilazione LogicLab verifica che le variabili dichiarate siano effettivamente utilizzate e se non lo sono non le alloca risparmiando memoria. Naturalmente non essendo allocate le variabili non esistono fisicamente e quindi non possdono essere visualizzate nella finestra di watch.

    Linko questo topic che non centra con la visualizzazione in watch ma che spiega il funzionamento delle variabili RETAIN. Mentre in questo topic sono riportate informazioni sui limiti della finestra di watch.

    in risposta a: Acquisizione segnali digitali ed analogici #40037
    Sergio Bertana
    Amministratore del forum

    Per la gestione degli ingressi analogici si utilizza il FB SysGetAnInp, per la gestione delle uscite analogiche si utilizza il FB SysSetAnOut. Devi definire come parametro l’indirizzo hardware (Impostato con i dip switches) del modulo ed il canale da gestire. Nel parametro Mode per gli ingressi è possibile definire il modo di acquisizione (Corrente, tensione, temperatura, resistenza), per le uscite il tipo di uscita (Corrente, tensione).

    Aggiungo una nota per quanto riguarda gli I/O digitali, il sistema operativo li gestisce in immagine di processo allocandoli automaticamente nei data block di ingresso e di uscita. Quindi basta mappare gli ingressi come %IXmc e %QXmc per le uscite (m:Indirizzo di modulo, c:Canale), quindi l’ingresso 5 del modulo con indirizzo 1 sarà %IX1.5 mentre l’uscita 7 del modulo 4 sarà %QX4.7. Da ricordare che l’indirizzo modulo della CPU è 255, quindi l’ingresso 1 del modulo CPU sarà %IX255.1.

    Anche per gli I/O digitali è comunque possibile acquisire/gestire direttamente il valore utilizzando il FB SysGetPhrDI per la lettura degli ingressi e SysSetPhrDO per la gestione delle uscite. Consiglio la lettura di: topic, topic, topic.

    in risposta a: Modbus TCP su server remoto via DynDNS #40036
    Sergio Bertana
    Amministratore del forum

    No purtroppo nei terminali Weintek è possibile impostare solo l’indirizzo IP del server Modbus, non è possibile impostare degli URLs. Puoi però come dici giustamente tu utilizzare un ns sistema SlimLine per questo scopo, vediamo le diverse possibilità.

    Utilizzo FB ModbusMaster  (Estratto manuale): Istanzi una o più FB ModbusMaster che tramite FB TCPClient interrogano via ModbusTCP i tuoi dispositivi definendone l’URL, i dati letti o da scrivere dai/verso i dispositivi verranno appoggiati su variabili dello SlimLine ed il pannello Weintek agirà su di esse connettendosi via IP. Nel forum trovi molti esempi di utilizzo del FB ModbusMaster.

    Utilizzo FB DataStreamExch (Estratto manuale), Istanzi una o più FB DataStreamExch_v1, questo FB connette tra di loro due stream di comunicazione, su di uno attivi un server TCP e sull’altro connetti un TCPClient che connetterai definendone l’URL al tuo dispositivo remoto. Sul  pannello Weintek definirai uno i più PLC che in realtà saranno sempre lo SlimLine ma definendo diverse porte TCP potrai dialogare con i tuoi dispositivi remoti. Questa soluzione è molto valida perchè in pratica permette al pannello di cumunicare direttamente con il dispositivo remoto.

    in risposta a: Funzione di conversione array ASCII #40035
    Sergio Bertana
    Amministratore del forum

    Il tuo array di numeri in realtà altro non è che una stringa, quindi basta semplicemente utilizzare la funzione SysVarsscanf, come vedi nel progetto ArrayToNumber che ti allego (Download) utilizzo la funzione passando l’indirizzo dell’array, e la funzione mi ritorna il numero su di  una variabile UINT. Allego lo screenshot del programma in simulazione su PC c on l’ambiente SimuLab integrato in LogicLab (Topic).

    in risposta a: Indicazioni sulla distanza massima bus I2C #39970
    Sergio Bertana
    Amministratore del forum

    Non diamo una distanza massima per il bus I2C, per la distanza molto dipende dal “rumore” elettrico in cui il cavo di bus si trova, è chiaro che in un laboratorio dove non vi sono disturbi posso allungare anche di molto il cavo, mentre in un ambiente industriale (Ambiente dove i nostri prodotti operano abitualmente) devo utilizzare distanze inferiori.

    Il cavo di estensione di 1 mt è un cavo terminale quindi ne puoi usare solo 1 al termine del blocco di moduli (Tutti interconnessi tra di loro con i cavi di estensione). Proprio per migliorare l’immunità ai disturbi il cavo da 1 mt è un cavo twistato, volendo utilizzare cavi di lunghezza superiore consiglio di utilizzare sempre un cavo twistato e magari inserilo in una calza di schermo.

    in risposta a: Connettere dispositivi I2C al bus di espansione SlimLine #39967
    Sergio Bertana
    Amministratore del forum

    Non diamo una distanza massima per il bus I2C, tra i nostri cavi di espansione puoi trovare anche il cavo da 1 metro. Naturalmente questi sono cavi terminali quindi ne puoi usare solo 1 al termine del blocco di moduli (Tutti interconnessi tra di loro con i cavi di estensione).Detto questo per la distanza molto dipende dal “rumore” elettrico in cui il cavo di bus si trova, è chiaro che in un laboratorio dove non vi sono disturbi posso allungare anche di molto il cavo, mentre in un ambiente industriale (Ambiente dove  i nostri prodotti operano abitualmente) devo stare molto più attento (Topic).

    in risposta a: Come iniziare con la programmazione #40034
    Sergio Bertana
    Amministratore del forum

    Nel forum trovi degli esempi di programmi che funzionano con il simulatore (Vedi topic, topic, topic) e nei topics che ti ho riportato troverai informazioni utili sull’uso di SimuLab che è l’ambiente di simulazione di LogicLab. Anche se le risposte ad alcune tue domande sono già in questi topics vediamo le risposte.

    Di solito le variabili sui dichiarano di tipo Auto, per il debug utilizzo la finestra di watch in LogicLab o i pannelli di SimuLab, semplicemente trascinando la variabile all’interno della finestra o del pannello. Le variabili si allocano definendo l’indirizzo solo per gli I/O reali o per le variabili che devono essere raggiunte da un sistema esterno, pannello operatore (Vedi topic) o SCADA che si allocano nella DB100 (Vedi topic).

    Gli I/O del modulo CPU sono allocati anche loro mella immagine di processo, vanno dichiarati come Data block 255. Quindi avremo %IX255.0 per l’ingresso 0 e poi di seguito, e QX255.0 per l’uscita 0 e poi di seguito (Vedi topic).

    La spunta Memory è proprio per allocare le variabili che devono essere accessibili da Modbus, al momento l’unica memoria accessibile è il Data block (DB) 100.

    in risposta a: Gestire segnale RTS della porta seriale RS232 #40033
    Sergio Bertana
    Amministratore del forum

    I segnali di controllo presenti sul connettore RJ45 delle porte seriali RS232 dei nostri moduli SlimLine e Netsyst sono:

    Pin 3: DTR (Segnale in uscita)
    Pin 7: CTS (Segnale in ingresso)
    Pin 8: RTS (Segnale in uscita)

    In realtà i segnali DTR e RTS sono connessi tra di loro. Per la gestione di questi segnali vi sono delle funzioni apposite. SysSetSerialDTR permette di attivare/disattivare il segnale DTR e di conseguenza anche RTS. SysGetSerialCTS permette di acquisisre lo stato del segnale CTS.

    Aggiungo una nota per quanto riguarda il segnale DTR, il FB SysSerialPort permette di definire il comportamento del segnale DTR, permettendo di invertirne lo stato e di gestirlo in modo automatico con o senza l’interposizione di tempi. Quindi il comportamento del segnale dipende da come lo hai impostato nella apertura della porta. Lo puoi attivare definendo DTRManagement:=DTR_ON, oppure disattivare definendo DTRManagement:=DTR_OFF, oppure farlo gestire automaticamente dal sistema definendo DTRManagement:=DTR_AUTO_WO_TIMES o DTRManagement:=DTR_AUTO_W_TIMES.

    La gestione automatica è prevista per poter abilitare il driver in trasmissione nelle comunicazioni RS485 multidrop e/o per attivare la trasmissione nelle comunicazioni con radiomodem. Quindi se lo vuoi gestire tu da porogramma non devi abilitare la gestione automatica altrimenti questa prevale sulla tua funzione SysSetSerialDTR.

    in risposta a: Connettere dispositivi I2C al bus di espansione SlimLine #40031
    Sergio Bertana
    Amministratore del forum

    Il bus di espansione dei sistemi SlimLine e dei sistemi Netsyst è un bus I2C standard, quindi è possibile interfacciare qualsiasi dispositivo con interfaccia I2C. Il bus opera con una frequenza di 400KHz quindi i dispositivi devono supportare questa frequenza di comunicazione.

    Nella libreria di funzioni supportate da LogicLab vi è la funzione SysI2CWrRd (Estratto manuale) che permette di leggere e scrivere dati verso i dispositivi connessi al bus. Nel forum trovi parecchi topics che trattano l’argomento con progetti di esempio per la gestione di moduli commerciali. In questo topic, un programma per gestire un PIO PCF8574. In questo topic un programma per gestire display LCD SainSmart compatibile Arduino.

    Probabilmente la tua confusione è nata da questo post dove si tratta l’argomento opposto, ossia la possibilità di gestire i nostri moduli di espansione da un modulo CPU I2C master proprietario. In questo caso anche se il bus I2C è standard il protocollo di comunicazione tra la CPU ed i moduli di espansione è una soluzione proprietaria di cui non forniamo le specifiche.

    in risposta a: Gestione di molte ricette con grandi quantità di dati #40029
    Sergio Bertana
    Amministratore del forum

    Per la gestione del ricettario ti rimando a questa Knowledge dove puoi trovare sicuramente uno spunto interessante. Come vedi nel progetto riportato viene utilizato un pannello operatore per operare su files di ricetta presenti nel file system di un sistema SlimLine. Nella mia risposta considero di utilizzare un modulo MPS054A100 con la nuova versione del sistema operativo (Che rilasceremo a breve e che incrementa notevolmente le capacità del sistema). Se utilizzi una SDCard come directory di memorizzazione dei files di ricetta puoi sicuramente contenere più di 300 files, ma puoi anche utilizzare l’FB FTPClient per trasferire i files di ricetta su di un server FTP.

    Veniamo ora alla dimensione di ogni ricetta, 3500 strutture composte da un valore (Utilizzerei un UDINT) e da un numero (Utilizzerei un UINT) richiedono 21 Kbytes di memoria. La DB 100 non ha tutta questa dimensione disponibile e lo stesso Modbus standard non prevede la gestione di un’area così grande. Io consiglio di allocare dinamicamente un’area di memoria (Funzione RMalloc) e istanziando un FB ModbusSlave permettere di accedere a tutta l’area di memoria allocata. Poco importa che l’area non sia ritentiva tanto con il FB FileMemoryDump la trasferirai nel file system. Tu chiedi file di tipo csv, è fattibile ma dovrai realizzare tu un FB che trasferisce la struttura di ricetta in un file di tipo csv (Vedi topic).

    Naturalmente nessun problema a gestire gli I/O logici, lo SlimLine è nato per questo, mentre per la connessione remota ti consiglio un router UMTS o LTE.

    in risposta a: Sviluppo di protocolli basati su Ethernet e CAN #40028
    Sergio Bertana
    Amministratore del forum

    Per quanto riguarda la Ethernet, il sistema operativo mette a disposizione una serie di FB per la gestione. I FB SysTCPServer e SysTCPClient permettono di gestire comunicazioni TCP sia server che client. I FB SysUDPServer e SysUDPClient permettono di gestire comunicazioni UDP sia server che client. Tutti questi FB ritornano uno stream di comunicazione (Di tipo FILEP) a cui è possibile collegare un FB di gestione del protocollo.

    Ed è proprio collegando il FB ModbusMaster al SysTCPClient e il FB ModbusSlave al SysTCPServer che viene gestito il protocollo Modbus TCP/IP, allo stesso modo alcuni clienti hanno sviluppato un loro prorio protocollo. Per quanto riguarda il protocollo EtherNet/IP purtroppo al momento non abbiamo un FB di gestione, ma avendone la conoscenza è possibile sviluppare autonomamente una FB per la gestione.

    Per la gestione del CAN, le funzioni SysCANRxMsg e SysCANTxMsg permettono di ricevere ed inviare messaggi CAN, anche qui abbiamo clienti che hanno implementato svariati protocolli di comunicazione. Nel campo nautico congiuntamente con un cliente abbiamo sviluppato una comunicazione con il protocollo SAE J1939 per il controllo di motogeneratori.

    Per il protocollo DeviceNet non abbiamo FB specifiche, ma vale la stessa risposta data precedentemente se si ha la conoscenza del protocollo è possibile sviluppare autonomamente una FB per la gestione.

    in risposta a: Ottimizzatore impianto di riscaldamento #39971
    Sergio Bertana
    Amministratore del forum

    Abbiamo diversi casi in cui nostri clienti hanno utilizzato i nostri sistemi SlimLine per la gestione domotica ed in particolare modo per la gestione della climatizzazione della casa. Il più semplice è la gestione della caldaia con curva climatica (Topic). Un altro esempio è l’utilizzo di termostati ambiente connessi in seriale (Topic). Con un pannello operatore touch puoi gestire una impostazione accurata delle temperature (Screenshot). Per la gestione dei differenti orari in base alle festività, puoi vedere questo topic dove è possibile impostare i giorni festivi su un file CSV. Abbiamo sensori di temperatura, umidità e CO2 gestibili con connessione seriale, o più semplicemente è possibile utilizzare sensori di temperatura tutti connessi in parallelo su di un bus 1-Wire per acquisisre in modo economico la temperatura nelle varie stanze. Tutto questo per quanto riguarda la possibilità di gestione, ma venendo alla tua domanda, non ho una esperienza specifica sull’algoritmo di regolazione per avere una temperatura di benessere. Però mi è capitato tra le mani questo articolo che potrebbe essere pertinente, che riassumo. Ho potuto constatare una riduzione dei consumi del 15 percento circa, tenendo la caldaia sempre accesa (anche di notte) mantenendo nel contempo la temperatura di mandata molto bassa (il minimo necessario per avere i 20 gradi in casa), rispetto al funzionamento discontinuo che per vincere velocemente le inerzie termiche richiede temperature di mandata superiori. Le temperature di mandata inferiori tra l’altro riducono notevolmente l’effetto “baffi” neri di polvere depositata dall’aria. Con la caldaia sempre accesa il sistema di riscaldamento non deve vincere nessuna inerzia e la temperatura di mandata è regolata per contrastare solamente le perdite di calore verso l’esterno. Per dare un’idea, con T esterna a 10 gradi, l’acqua hai termosifoni viene inviata a circa 30 gradi. A 0 gradi esterni, l’acqua viene inviata a 45 gradi.

    in risposta a: Riconoscere da programma la presenza del pen drive USB #40027
    Sergio Bertana
    Amministratore del forum

    Puoi controllare il valore della LW-9076 (32bit) : USB disk current free space (K bytes), Se diversa da 0 il pen drive USB è connesso al terminale.

Stai visualizzando 15 post - dal 1,801 a 1,815 (di 4,367 totali)