Sergio Bertana
Risposte nei forum create
-
AutorePost
-
Sergio Bertana
Amministratore del forumQuando compare questo problema è utile verificare che non sia aperto un altro simulatore o che non si sia chiuso male (nei servizi attivi verificare che non sia ancora attivo qualche processo come com.exe o gui. Exe).
Allego per il download una FAQ di Weintek relativa al problema.
Sergio Bertana
Amministratore del forumL’errore FGetOSpace [0x00000000] indica che alla funzione FGetOSpace è stato passato un file pointer null.
Mi dà l’idea che il server FTP abbia chiuso la connessione e quindi il file pointer del TCPClient che deve inviare i dati al server essendo stata chiusa la connessione è eNULL.
Puoi provare a spiare la connessione con Wireshark per vedere se si riesce a capire qualcosa di più.
Il fatto che sono stati inviati oltre 53Kb di dati indica che alcuni pacchetti di dati sono stati regolarmente scambiati (Ipotizzando 1Kb a pacchetto i due sistemi si sono scambiati una 5oina di pacchetti).
Sergio Bertana
Amministratore del forumLa chiave di progetto serve proprio a proteggere il progetto, se non viene impostata dall’utente il progetto è bloccato ed il terminale non dialoga con i PLC.
La chiave di progetto è un numero a 32 bits, come si vede dallo screenshot si imposta nella impostazioni generali del progetto, di default il programma suggerisce la classica “111111”.
Eseguendo il progetto sul pannello compare il pop-up Device no response, per sloccarlo occorre impostare nella LW-9046, 47 il numero a 32 bit definito nella chiave di progetto.
Nel mio esempio ho inserito una lampada connessa al LB-9046, che si attiva se la chiave di progetto non è corretta. Poi ho inserito due inputazioni numeriche a 32 bits sulla LW-9046. Quella in inputazione è mascherata cosi non è visibile poi a destra ne ho inserita una in visualizzazione.
Ora se caricato il progetto imposto il valore definito (Default 111111) poi riavvio il pannello il programma funzionerà. Non sarà più necessario impostare la chiave di progetto.
Quindi se si vuole ribloccare il progetto occorrerà caricare il progetto definendo una nuova chiave di progetto.
Sergio Bertana
Amministratore del forumAggiungo che per la scelta del termistore puoi cercare nel web troverai parecchi costruttori di NTC compatibili con i valori gestiti dal modulo.
Il valore impostabile 10KOhm, 3KOhm, 1KOhm, ecc sono riferiti alla resistenza del termistore a 25°C.
Per esempio ho riporto il datasheet del modello ETP-OP-150-10K3A1B della Variohm, e come vedi corrisponde alla curva relativa alla impostazione 10K-2 Ohm.
Sergio Bertana
Amministratore del forumIl modulo Yotta A-1019 dispone di 8 ingressi analogici a 16 bits. Gli ingressi possono essere configurati per acquisizioni in corrente 0/4-20mA, per acquisizione termocoppie e per acquisire termistori.
In base al tipo di segnale da acquisire oltre alla configurazione software (Yotta utility) occorre configurare i ponticelli interni al modulo, aprirlo e posizionarli nel modo:
- AA On, BB Off: 0/4-20mA (Standard)
- AA Off, BB On: Termistore
- AA Off, BB Off: Termocoppia
In modalita termistore è possibile configurare la lettura di diversi tipi di termistore, nell’help del programma Yotta utility si trovano le indicazione dei valori resistivi dei vari tipi di termistore alle varie temperature (Screenshot).
Come vedi dalle tabelle i valori sono molto diversi da quelli delle Pt100 e Pt1000 standard.
Febbraio 25, 2022 alle 11:23 am in risposta a: Suggerimenti su come eseguire il parsing di una stringa #64024Sergio Bertana
Amministratore del forumProvo 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]
Sergio Bertana
Amministratore del forumC’è 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.
Febbraio 24, 2022 alle 5:49 pm in risposta a: Connessione pannello cMT-3072XH con PLC SE TM241 in ethernet #64003Sergio Bertana
Amministratore del forumProva a disattivare l’accesso utente sul PLC.
Questa impostazione è da fare sul software Machine expert.
Sergio Bertana
Amministratore del forumAl 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).
Sergio Bertana
Amministratore del forumYes 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).
Sergio Bertana
Amministratore del forumIn 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.
Sergio Bertana
Amministratore del forumNon 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.
Febbraio 16, 2022 alle 4:50 pm in risposta a: Configurazione dongle USB 3G/4G su Weintek cMT3072x #63929Sergio Bertana
Amministratore del forumSe 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.
Sergio Bertana
Amministratore del forumUnfortunately 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.
Sergio Bertana
Amministratore del forumIl 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.
-
AutorePost