Sergio Bertana

Risposte nei forum create

Stai visualizzando 15 post - dal 1,156 a 1,170 (di 4,507 totali)
  • Autore
    Post
  • in risposta a: Note rilascio upgrade sistemi Cortex M7 PCK051**** #60735
    Sergio Bertana
    Amministratore del forum

    Purtropo a volte è più rapido lo sviluppatore a sviluppare nuove versioni di sistema operativo del webmaster a riportarne le note di rilascio.

    In questo caso dalla versione PCK051A050 alla PCK051A070 passano 2 versioni in cui sono state fatte modifiche minori per correggere alcuni BUGs sulla gestione del disco.

    In particolare modo si è prevista la possibilità di gestire nuovi phyter ethernet e si sono aggiunti nuovi comandi utilizzati dal nostro sistema ATE di test automatico.

    In sostanza nulla di eclatante ma vista la correzzione dei BUGs se usi il file system vale comunque la pena eseguire l’upgrade.

    Sergio Bertana
    Amministratore del forum

    Ho sentito Weintek, mi dicono di utilizzare sul pannello il protocollo Panasonic FP/KW, e di verificare sul PLC le impostazioni della porta di comunicazione che deve essere impostata con il protocollo Mewtocol.

    Naturalmente devi verificare che le impostazioni di comunicazione (Baud rate, parità, nr bit) siano corrispondenti tra il pannello ed il PLC. E verificare anche in numero di stazione impostato.

    Altro consiglio è di realizzare un semplice progetto con un solo oggetto (Esempio un pulsante toggle) e verificare se la connessione  con il PLC funziona. Per comodità ti consiglio di testare il progetto direttamente su PLC con la simulazione On-Line. Naturalmente dovrai collegare la porta RS232 del PC al PLC.

    in risposta a: Cubatura area gestita da Arananet4 sensore qualità aria #60721
    Sergio Bertana
    Amministratore del forum

    In merito alla domanda, ho sentito il fornitore che mi informa che per questi dispositivi è improprio parlare di metri quadri o metri cubi di copertura, perchè la concentrazione di CO2 in un ambiente non segue regole precise e sopratutto non si distribuisce uniformemente nell’ambiente.

    Quindi non vi è a priori una dimensione massima, clienti che hanno installato il prodotto e tra questi ci sono moltissime scuole lo hanno utilizzato sia nelle aule didattiche che nei locali piu spaziosi come palestre, mense od aule magne.

    Per una acquisizione ottimale del CO2 consiglio di seguire i suggerimenti per il montaggio riportati in questo articolo.

    Il fornitore aggiunge che è a conoscenza di installazioni in ambienti anche di 150-200 metri quadri per singolo sensore, con soddisfazione del cliente. Tuttavia, non si tratta di un dato che il fornitore ritiene non avere senso mettere nella documentazione tecnica.

    La dimensione dell’ambiente monitorabile da un sensore dipende dal tipo di uso del locale, dalla frequentazione, dalla forma, dalla posizione di porte e finestre, e dal punto in cui si sceglie di mettere il sensore stesso.

    in risposta a: Variabili ritentive su Raspberry con LogicLab #60690
    Sergio Bertana
    Amministratore del forum

    Si certo, la gestione delle variabili ritentive è gestito dal run time LogicLab, attualmente abbiamo reso ritentiva un’area di 2048 bytes per le variabili definite RETAIN ed i soliti 2048 bytes nell’area DB100 da 2048 a 4095.

    Siccome il backup è eseguito su di un file per evitare di stressare l’SDCard viene eseguito ogni 20 secondi.

    in risposta a: Indirizzo IP gateway con DHCP Server attivo #60686
    Sergio Bertana
    Amministratore del forum

    Se guardi attentamente l’esempio riportato nel manuale riferito al FB CLIClient, vedrai che il programma si connette all’localhost porta 23.

        TCPClient.PeerAdd:=ADR('127.0.0.1'); //Peer address
        TCPClient.PeerPort:=23; //Peer port

    Quindi lo SlimLine emula una connessione Telnet (Proprio come faresti con Toolly) a se stesso e dopo essersi autenticato invia il comando IFConfig. Il comando ritorna tutte le informazioni di connessione e la prima occorrenza del campo Gateway, riporta proprio l’indirizzo IP assegnato dal server DHCP. Ecco il codice che esegue l’invio del comando e acquisisce l’indirizzo.

            // ---------------------------------------------------------------------
            // SEND COMMAND
            // ---------------------------------------------------------------------
            // Send the RMalloc statistics request command, every answer row ends
            // with  so they are wait.
    
            10:
            CLI.CStr:=ADR('IFConfig$r'); CLI.PStr:=ADR('[Admin]>'); CLI.EAStr:=NULL; CLI.CSend:=TRUE;
            IF NOT(CLI.EOL) THEN RETURN; END_IF;
            CLI.CSend:=FALSE; //Command send
    
            // Reads the gateway IP.
    
            IF NOT(SysVsscanf(SysStrFind(CLI.ABPtr, ADR('Gateway:............ '), FIND_GET_END), ADR('%s'), STRING_TYPE, ADR(Gateway))) THEN ErrorNr:=50; END_IF;
            CaseNr:=0; //Program case

    Includo il progetto WhoIsTheGateway per il download.

    in risposta a: Configurazione HWg-SMS-GW3 gateway SMS #60684
    Sergio Bertana
    Amministratore del forum

    Oltre ad inviare SMS è anche possibile eseguire la chiamata, facendo suonare il telefono, questo può essere comodo per avvertire il destinatario dell’arrivo di un SMS oppure per gestire un heartbeat di funzionamento.

    Il chiamato sentirà squillare il telefono e vedrà il numero del chiamante, se non risponde alla chiamata questa dopo alcuni secondi viene interrotta. In caso di risposta la chiamata viene interrotta immediatamente.

    Per eseguire la chiamata si utilizzanlo le stesse tecniche viste per l’invio di SMS ma si sostituisce il comando con Call e non si definisce il testo.

    http:\\xxx.xxx.xxx.xxx\values.xml?Cmd=Call&Nmr=00420123456789
    in risposta a: Configurazione HWg-SMS-GW3 gateway SMS #60683
    Sergio Bertana
    Amministratore del forum

    Utilizzando il programma Wget è possibile inviare SMS direttamente da linea di comando ecco un esempio.

    C:\>wget "http://192.168.1.99/values.xml?Cmd=SMS&Nmr=12345678&Text=Hello World!"
    --2021-07-28 10:00:38--  http://192.168.1.99/values.xml?Cmd=SMS&Nmr=12345678&Text=Hello%20World!
    Connecting to 192.168.1.99:80... connected.
    HTTP request sent, awaiting response... 200 Ok
    Length: unspecified [text/xml]
    Saving to: 'values.xml@Cmd=SMS&Nmr=12345678&Text=Hello World!'
    
    values.xml@Cmd=SMS&Nmr=335217     [ <=>                                              ]     118  --.-KB/s    in 0s
    
    2021-07-28 10:00:38 (2,07 MB/s) - 'values.xml@Cmd=SMS&Nmr=12345678&Text=Hello World!' saved [118]
    
    C:\>
    in risposta a: Configurazione HWg-SMS-GW3 gateway SMS #60682
    Sergio Bertana
    Amministratore del forum

    Il modo più semplice per inviare SMS utilizzando HWg-SMS-GW3 Gateway SMS è utilizzando il metodo HTTP GET da un comune browser.

    L’HTTP GET è un metodo in cui tutti i parametri vengono passati direttamente nell’URL, viene spesso utilizzato per applicazioni semplici perché consente un semplice debug ed è facile da codificare. Da un browser si invoca semplicemente l’indirizzo del dispositivo con i parametri necessari, esempio:

    http:\\xxx.xxx.xxx.xxx\values.xml?Cmd=SMS&Nmr=00420123456789&Text=Hello World!

    Si riceverà in risposta un documento xml del tipo:

    <?xml version="1.0" encoding="utf-8"?>
    <Root>
      <QueueAddResponse>
        <Rslt>1</Rslt>
        <ID>1</ID>
      </QueueAddResponse>
    </Root>
    in risposta a: Comandi AT su Ethernet con connessione TCP/IP #60681
    Sergio Bertana
    Amministratore del forum

    Il modo più semplice ed economico per gestire l’invio di comandi AT da connessione Ethernet è di utilizzare un convertitore Ethernet/Seriale come questo abbinato ad un modem come questo.

    Ma se vuoi avere una soluzione più compatta puoi utilizzare un router come ad esempio WL-R220L che grazie al suo sistema operativo OpneWRT permette di essere configurato per la gestione dei comandi AT da connessione ethernet (Vedi topic).

    Se vuoi invece un sistema di invio SMS gestibile da richieste HTTP puoi utilizzare HWg-SMS-GW3 interamente gestibile da interfaccia web, basterà inviare al dispositovo richieste HTTP in GET od in POST con il numero a cui inviare ed il testo del messaggio da inviare. Una comoda pagina web permette di inviare messaggi direttamente da browser (Vedi topic).

    in risposta a: Indirizzo IP gateway con DHCP Server attivo #60676
    Sergio Bertana
    Amministratore del forum

    Effettivamente come dici nella pagina web occorre sempre definire dei valori per i campi IP, Mask, Gateway anche se hai selezionato l’acquisizione da server DHCP.

    In merito al valore ritornato dalla funzione SysOSIDValue con il valore di OSID, OSID_ETH0_GATEWAY, effettivamente viene ritornato il valore definito da pagina web e non quello acquisito dal server DHCP. Esistono altri OSID che al momento sono gestiti solo da pagina web per le informazioni che ti occorrono. Rilasceremo in prossime versioni del firmware questi nuovi OSID.

    Come workaround per il tuo problema ti consiglio di dare una occhiata al FB CLIClient, come vedi dall’esempio è possibile realizzare un semplice programma che si connette in telnet a localhost ed inviando il comando IFConfig acquisisce tutte le informazioni che ti occorrono.

    [Admin]> ifconfig
    ------------------------------------------------------------------------[eth0]--
    Actual settings:
    Description:........ On board ethernet controller
    Status:............. Ready (DHCP)
    Linked:............. 1
    Up:................. 1
    MAC address:........ 70-B3-D5-4C-97-29
    IP address:......... 192.168.1.24
    Subnet mask:........ 255.255.254.0
    Gateway:............ 192.168.0.1
    MTU:................ 1500
    DNS Prim. IP addr.:. 192.168.0.3
    DNS Sec. IP addr.:.. 8.8.8.8
    DHCP server:........ 192.168.0.3
    DHCP lease time:.... 172800 seconds
    DHCP expire time:... 172774 seconds
    
    Config settings:
    MAC address:........ 70-B3-D5-4C-97-29
    IP address:......... 1.1.1.1
    Subnet mask:........ 255.255.255.0
    Gateway:............ 1.1.1.1
    MTU:................ 1500
    DNS Prim. IP addr.:. 8.8.8.8
    DNS Sec. IP addr.:.. 8.8.4.4
    DHCP:............... 1
    DHCP on DNS:........ 1

    Tutti i valori della sezione Actual settings sono quelli assegnati dal server DHCP.

    in risposta a: Utilizzo del timer in un programma #60673
    Sergio Bertana
    Amministratore del forum

    Elsist per l’ambiente di sviluppo LogicLab mette a disposizione svariate librerie con funzioni e blocchi funzione per gli usi più svariati, l’elenco completo diviso per categorie si trova qui.

    Esistono diversi FB per la gestione timer, il piu utilizzato cioè il timer ritardato alla eccitazione si chiama eTON e questa è la sua pagina di manuale. Come vedi dal manuale il FB si trova nella libreria eLLabStdLib, quindi puoi collegare la libreria oppure importare l’oggetto nel tuo progetto (In questo tutorial video spieghiamo la differenza).

    Nel manuale in fondo alla pagina si trovano anche degli esempi di utilizzo del timer in diversi linguaggi, l’esempio in linguaggio ladder và ricreato nel tuo progetto, mentre gli esempi nei linguaggi testuali possono essere direttamente copiati ed incollati nel tuo progetto (Vedi spiegazione).

    Ma se noti in testa ad ogni esempio è indicato il programma dimostrativo che lo contiene (Per il timer è il Ptp115).

    Visto che stai iniziando con LogicLab ti consiglio di guardare i nostri video tutorial.

    in risposta a: Utilizzare FB HttpClient per connessione in HTTPS #60669
    Sergio Bertana
    Amministratore del forum

    Stiamo lavorando sulla crittografia SSL, in pratica stiamo modificando tutti i FBs che gestiscono protocolli per permettere di inserire il FB SysTLSClient tra il FB di gestione connessione e quello di gestione protocollo permettendo così connessioni criptate sui vari protocolli HTTP, SMTP, MQTT, FTP, ecc.

    Sul manuale on-line che tu hai citato c’è già indicata questa possibilità sul protocollo HTTP ma al momento non l’abbiamo ancora rilasciata.

    Nella roadmap rilasceremo il FB SysTLSClient iniziando dal modulo SlimLine basato su Raspberry, speriamo di rilasciarlo prima del periodo di ferie estive.

    Stiamo valutando il porting anche sui moduli basati su processori Cortex ma abbiamo problemi di velocità nella esecuzione dei calcoli, quindi al momento non siamo ancora in grado di indicare se sarà possibile avere il porting e se si, quando sarà disponibile.

    in risposta a: Visualizzare su pagina web stato variabili usando puntatori #60661
    Sergio Bertana
    Amministratore del forum

    Essendo i nostri sistemi basati su architettura a 32 bits un puntatore (Pointer, indicato come @xxxx) occupa 4 bytes di memoria e se allocato in DB100 và allocato sempre ad indirizzi divisibili per 4.

    Come correttamente hai fatto notare il server web agisce solo su variabili allocate in DB100, ma se tu allochi un pointer il server web non ha previsto la visualizzazione del valore della variabile a cui il pointer punta. Quindi se lo visualizzi come DWORD vedresti l’indirizzo della variabile ma non il suo valore.

    Quindi il modo corretto è di appoggiare gli ingressi su variabili BOOL. Ti consiglio di allocare un array di variabili BOOL nella DB100 e poi con un semplice ciclo FOR potrai trasferire dall’array di pointer alle variabili in DB100. E così saranno accessibili da web server agli indirizzi 100.32, 100.33, ecc.

    VAR
    i : UDINT; (* Auxiliary variable *)
    G_DoorStatus : ARRAY[0..31] OF @BOOL; (* Door status BOOL pointer *)
    A_DoorStatus AT %MX100.32 : ARRAY[0..31] OF BOOL; (* Door status BOOL variable *)
    END_VAR
    FOR i:=0 TO (SIZEOF(G_DoorStatus)/SIZEOF(G_DoorStatus[0]))-1 DO
        A_DoorStatus[i]:=@G_DoorStatus[i];
    END_FOR;

    Come in tutti isistemi PLC gli I/O sono gestiti in immagine di processo, e siccome il task real time è lo slow l’immagine di processo è eseguita in task slow. Quando ti riferisci a variabili di I/O in task diverse dall slow LogicLab crea automaticamente una immagine di processo virtuale per garantire che lo stato delle variabili sia costante per tutta l’esecuzione del task.

    Se ti riferisci a variabili di I/O con il loro indirizzo (Esempio %IX0.0) in task diverse, se visualizzi in debug l’indirizzo vedrai che per lo stesso I/O si hanno indirizzi diversi per ogni task sarà LogicLab a trasferirne il valore automaticamente. Ma attenzione il trasferimento del valore nella immagine di processo virtuale delle task diverse dalla slow avviene solo se LogicLab si accorge che la variabile è utilizzata quindi vedi lo scenario.

    VAR
        MyBOOL : BOOL; (* BOOL value *)
        MyBOOLADR : @BOOL; (* BOOL pointer *)
    END_VAR
        MyBOOL:=%IX0.0; //LogicLab si accorge che è usata
        MyBOOLADR:=ADR(%IX0.0); //LogicLab non si accorge che è usata

    Quindi affinchè il tuo programma funzioni ti consiglio di eseguirlo in task slow.

    in risposta a: Protocollo Ethernet/IP su serie cMT #60652
    Sergio Bertana
    Amministratore del forum

    Premesso che non conosco l’Ethernet/IP in quanto tutti i nostri prodotti lavorano con protocollo Modbus/TCP ho tentato di capirne un po di più e ti consiglio di fare queste prove. Intanto imposta un dispositivo con protocollo ODVA General Ethernet/IP (Implicit messaging).

    Come vedi dallo screenshot questa impostazione ti permette di definire i registri con il loro indirizzo. Ora riferendomi al manuale vedo che il peso lordo è riportato nel formato Big endian nei bytes 3, 4, 5, 6 (Indirizzi 1, 2 registri input a 16 bit) quindi quando imposti l’oggetto di vsualizzazione numerica definirai nel campo indirizzo il valore Input, 1 e come formato 32bit unsigned, potrebbe anche essere 32bit signed.

    Ora potrebbe esserci un problema, il formato considerato dal pannello potrebbe essere Little endian e quindi vedresti un numero errato. Allora dovrai scomporre il valore a 32 bits in 2 interi a 16 bits, leggi il registro input 1 e input 2 e con una macro componi il valore a 32 bits moltiplicando il valore del registro input 1 per 65536 sommando poi il valore del registro 2.

    in risposta a: Connessione a webserver remoto tramite blocco HTTP codesys #60646
    Sergio Bertana
    Amministratore del forum

    Purtroppo non ho esperienza cosi approfondita di CODESYS, per i nostri prodotti programmabili con LogicLab abbiamo sviluppato librerie apposite sia per il DNS (Vedi DNSRequest) che per le richieste HTTP (Vedi HTTPClient).

    Da quello che  scrivi vedo un possibile errore nell’URL che passi al blocco DNS_Client, credo che devi indicare solo l’URL senza il resto https:/ /httpbin.org.

    Quando ti colleghi al tuo webserver intendi un web server pubblico e quindi raggiungibile da internet oppure privato aziendale, perchè in tal caso meglio usare l’IP diretto.

Stai visualizzando 15 post - dal 1,156 a 1,170 (di 4,507 totali)