Vai al contenuto

Sergio Bertana

Risposte nei forum create

Stai visualizzando 15 post - dal 766 a 780 (di 4,276 totali)
  • Autore
    Post
  • in risposta a: Suggerimenti su come eseguire il parsing di una stringa #64024
    Sergio Bertana
    Amministratore del forum

    Provo a buttare giù un’idea utilizzando lo funzioni SysStrFind e SysVsscanf. Ecco il programma StringParse, spero possa servire come base di partenza.

    PROGRAM StringParse
    VAR
        Pos : @BYTE; (* Position *)
        Error : USINT; (* Error number *)
        SString : @STRING; (* Source string *)
        Value : ARRAY[0..3] OF USINT; (* Valiue *)
    END_VAR
    
    // *****************************************************************************
    // PROGRAM "StringParse"
    // *****************************************************************************
    // 01G01$1,0002,0,0,0,0,0,0#1,0001,0,0,0,0,0,0#1,000E,5,5,5,5,0,0#1,0004,0,0,0,0,0,0$71
    //
    // Quello che dovrei ottenere è una cosa del tipo
    // 1,0002,0,0,0,0,0,0
    // 1,0001,0,0,0,0,0,0
    // 1,000E,5,5,5,5,0,0
    // 1,0004,0,0,0,0,0,0
    // 
    // Per poi estrapolare 
    // 0002 e 0 per memorizzarli come 2 e 0
    // 0001 e 0 per memorizzarli come 1 e 0
    // 000E e 5 per memorizzarli come 14 e 5
    // 0004 e 0 per memorizzarli come 4 e 0
    // -----------------------------------------------------------------------------
    
        SString:=ADR('01G01$1,0002,0,0,0,0,0,0#1,0001,0,0,0,0,0,0#1,000E,5,5,5,5,0,0#1,0004,0,0,0,0,0,0$71'); //Source string
    
        // Cerco "$1,"
    
        Pos:=SysStrFind(SString, ADR('$1,'), FIND_MODE#FIND_GET_END); //Position
        IF (Pos = eNULL) THEN Error:=10; RETURN; END_IF;
           IF NOT(SysVsscanf(Pos, ADR('%d'), USINT_TYPE, ADR(Value[0]))) THEN Error:=11; RETURN; END_IF;
    
        // Cerco successiva ","
    
        Pos:=SysStrFind(Pos, ADR(','), FIND_MODE#FIND_GET_END); //Position
        IF (Pos = eNULL) THEN Error:=20; RETURN; END_IF;
           IF NOT(SysVsscanf(Pos, ADR('%d'), USINT_TYPE, ADR(Value[1]))) THEN Error:=21; RETURN; END_IF;
    
        // Cerco "#1,"
    
        Pos:=SysStrFind(SString, ADR('#1,'), FIND_MODE#FIND_GET_END); //Position
        IF (Pos = eNULL) THEN Error:=30; RETURN; END_IF;
           IF NOT(SysVsscanf(Pos, ADR('%d'), USINT_TYPE, ADR(Value[2]))) THEN Error:=31; RETURN; END_IF;
    
        // Cerco successiva ","
    
        Pos:=SysStrFind(Pos, ADR(','), FIND_MODE#FIND_GET_END); //Position
        IF (Pos = eNULL) THEN Error:=40; RETURN; END_IF;
           IF NOT(SysVsscanf(Pos, ADR('%d'), USINT_TYPE, ADR(Value[3]))) THEN Error:=41; RETURN; END_IF;
    
        // ... Eccetera
    
    // [End of file]
    in risposta a: Datalogger con connessione FTP #64016
    Sergio Bertana
    Amministratore del forum

    C’è un bug nel firmware, il comando viene accettato solo se l’utente si è loggato come User.

    Quindi dovresti loggarti come utente User (User:User come credenziali di default se versione firmware precente alla SFW198E000).

    Per le versioni successive occore definire un utente con credenziali User utilizzando il comando UserConfig.

    in risposta a: Connessione pannello cMT-3072XH con PLC SE TM241 in ethernet #64003
    Sergio Bertana
    Amministratore del forum

    Prova a disattivare l’accesso utente sul PLC.

    Questa impostazione è da fare sul software Machine expert.

    in risposta a: Gestione uscite PWM su sistemi SlimLine #63982
    Sergio Bertana
    Amministratore del forum

    Al momento sui nostri sistemi SlimLine abbiamo la possibilità di gestire solo 2 uscite PWM in hardware, le uscite sono presenti sui moduli CPU MPS054 e MPS056. L’hardware di gestione permette di generare frequenze elevate (Fino a 100Khz) ma l’hardware di uscita presente sul modulo (OptoMOS) taglia la frequenza massima a 2Khz. Per la configurazione dei PWM out gestiti in hardware è previsto il FB SysSetPWMOut.

    All’interno dell’ambiente LogicLab è possibile gestire programmi in una Task fast (Eseguita ogni 1mS), il tempo di esecuzione può essere modificato e portato fino a 100uS con il FB SysSetTaskLpTime. Utilizzando il FB PWMOut è possibile gestire all’interno di questa task uscite digitali per generare segnali PWM.

    4 PWM out su modulo CPU:  essendo le uscite presenti sul modulo possiamo scendere con il tempo di esecuzione task a 200uS, la frequenza massima gestibile in uscita è di 2500Hz. Come si vede dallo screenshot a causa della “granulosità” della esecuzione 5000 volte al secondo si ha un errore sulla frequenza tanto più elevato quanto ci avviciniamo alla  frequenza massima di 500Hz.

    16 PWM out su modulo PCB124B100:  Dovendo gestire il modulo di espansione (L’accesso al bus richiede ca 250 uS) non si può scendere con il con il tempo di esecuzione task. Eseguendo la task ogni 1mS la frequenza massima gestibile in uscita è di 500Hz. Come si vede dallo screenshot gestendo 16 uscite con FB PWMOut a causa della “granulosità” della esecuzione 1000 volte al secondo si ha un errore sulla frequenza tanto più elevato quanto ci avviciniamo alla  frequenza massima. Il tempo di esecuzione task è di 108uS con un massimo di 430uS, quindi si potrebbe anche impostare un tempo di esecuzione task inferiore diminuendo la granulosità.

    Se anzichè usare l’FB PWMOut gestisco le uscite sincrone con l’esecuzione della task ho una frequenza molto più precisa (Screenshot) ma avrò variazioni solo a multipli del tempo di esecuzione task (500, 250, 167, 125, 100, 83, 71, 62.5, 55.5, 50… Hz).

    in risposta a: Caratteristiche di memoria dei sistemi #63940
    Sergio Bertana
    Amministratore del forum

    Yes it’s true there’s a mismatch in the product data.

    To extend the data memory to 20 Kb it’s possible to buy the CPU program code extension option (See here).

    in risposta a: Datalogger con connessione FTP #63936
    Sergio Bertana
    Amministratore del forum

    In effetti è strano, mi sembra di capire che il server FTP è lo stesso per tutti i sistemi, ma i vari SlimLine sono su reti e connessioni diverse.

    Non mi dici se dai sistemi che funzionano hai provato ad inviare un file di grosse dimensioni.

    Potresti provare ad impostare un MTU sull aconessione ad un valore inferiore al valore di default che è 1500. Perchè molte volte nella rete dei dispositivi che gestiscono la connessione ad Internet ci sono dispositivi che hanno problemi con MTU di 1500. Per impostare l’MTU utilizza il comando IfConfig 0 -mtu 1024 (Od inferiore) vedi manuale.

    in risposta a: Datalogger con connessione FTP #63932
    Sergio Bertana
    Amministratore del forum

    Non trovi l’errore nella pagina elenco errori perchè abbiamo rilasciato una nuova versione della libreria eLLabNetworkLib (La puoi scaricare dal sito) con una nuova versione del FB FTPClient.

    L’errore 10063215 adesso è diventato 10063415 ed identifica un errore dovuto al fatto che su comando Store durante il trasferimento del file sul server il server ha chiuso la comunicazione.

    in risposta a: Configurazione dongle USB 3G/4G su Weintek cMT3072x #63929
    Sergio Bertana
    Amministratore del forum

    Se il dongle USB DLink ha ultimo firmware lavora come thetering. Occorre verificare:

    LW-11380 (16bit) : stop (set 0)/start (set 1) connection (USB tethering)

    LW-11381 (16bit) : connection status (0:no device, 1:disconnect, 2:connected, 3:fail, 4:OS not support, 5:HMI not support) (USB tethering)

    Se la LW 11381 è 1 è indica che è stata riconosciuta dal pannello, basterà mettere a 1 la LW 11380.

    in risposta a: Caratteristiche di memoria dei sistemi #63927
    Sergio Bertana
    Amministratore del forum

    Unfortunately there’s an error on the product data. The MPS056A320 has only 12Kb of data memory.

    LogicLab report 8Kb because there’s 8Kb of memory available for the LogicLab’s linker and additional 4Kb are for the DB100 area. This area is preallocated in the system and it’s not reported by LogicLab.

    But remind over the 12Kb there’s also additional 4Kb that can be used by allocating buffers on it with the SysMAlloc function. And up to 32Kb that can be used by allocating buffers on it with the SysRMAlloc function.

    It’s possible to buy an option that extends memory up to 255Kb of code and 20Kb of data memory (16Kb for LogicLab’s linker and 4Kb for DB100 area). The availbale area for the malloc functions  still remain unchanged.

    in risposta a: Error T8199 durante upload progetto su target #63915
    Sergio Bertana
    Amministratore del forum

    Il grosso vantaggio dell’RNDIS (Remote Network Driver Interface Specification) è che permette di avere una connessione in rete TCP utilizzando una semplice connessione USB.

    Purtroppo con il RNDIS ci è già successo con alcuni PC ci siano dei problemi. In effetti sulle nuove linee di prodotti stiamo abbandonandolo spostandoci verso la connessione ethernet.

    in risposta a: Error T8199 durante upload progetto su target #63909
    Sergio Bertana
    Amministratore del forum

    Per vedere la versione del firmware devi connetterti in telnet alla porta 23 (Screenshot).

    Accedendo in telnet hai la possibiltà di gestire tutti i comandi supportati dall’interprete comandi. Il manuale si riferisce all’ultima versione del firmware disonibile sui sistemi CortexM7 è possibile che alcuni comandi non siano supportati sul tuo sistema ARM7.

    in risposta a: Attivazione pannello diagnostico su pannello cMT #63905
    Sergio Bertana
    Amministratore del forum

    Si certo è possibile abilitare la diagnostica sul programma in funzione sul pannello, direi che è stata pensata apposta per questo.

    Con il Diagnoser è possibile eseguire debug sui protocolli di comunicazione con i PLC, sui pacchetti MQTT, e sopratutto è possibile eseguire il debug delle macro inserendo brakpoints sulla esecuzione.

    Per utilizzarlo occorre abilitarlo nel progetto EasyBuilder menù System Parameters->Remote, poi dalla finestra di cMTViewer sarà possibile attivarlo con il tasto destro del mouse (Screenshot).

    in risposta a: Error T8199 durante upload progetto su target #63902
    Sergio Bertana
    Amministratore del forum

    Mi puoi dire che versione hai di firmware, eventualmente prova ad eseguire l’upgrade all’ultima versione XTarget_12 o XUnified (Vedi articolo).

    Ti ricordo che se usi XUnified devi probabilmente aggiornare tutti gli oggetti di libreria e/o aggiungere nel progetto la libreria eLLabXUnifiedAdjLib  (Vedi articolo).

    in risposta a: Error T8199 durante upload progetto su target #63896
    Sergio Bertana
    Amministratore del forum

    Stai scaricando sul target solo il programma compilato oppure anche i sorgenti ?

    Vedi informazioni in questo topic.

    in risposta a: Error T8199 durante upload progetto su target #63811
    Sergio Bertana
    Amministratore del forum

    Il modello di CPU non ha porta ethernet, come ti colleghi alla CPU, utilizzi il cavo USB con l’RNDIS oppure la seriale?

    Quanto ti connetti al modulo CPU su LogicLab in basso adestra compare la scritta CONNECTED in verde?

    Hai impostato il sistema corretto nelle impostazioni di LogicLab Project->Select Target?

Stai visualizzando 15 post - dal 766 a 780 (di 4,276 totali)