Vai al contenuto

Sergio Bertana

Risposte nei forum create

Stai visualizzando 15 post - dal 3,676 a 3,690 (di 4,379 totali)
  • Autore
    Post
  • in risposta a: Informazioni sul radiomodem ZigBee ATC-3200 #37205
    Sergio Bertana
    Amministratore del forum

    Certo che è possibile, la comunicazione seriale è indipendente dalla comunicazione radio, quindi puoi mischiare il tipo di interfaccia seriale con la quale ti colleghi all’apparecchio. Puoi tranquillamente, come nel tuo caso, utilizzare una connessione RS422 su un apparecchio ed una connessione RS232 sull’altro apparecchio.

    Nel caso di connessione RS485 su due fili, l’ATC-3200 gestisce anche in automatico la direzione dei dati permettendo la comunicazione in Half-Duplex.

    in risposta a: Client per accesso al server Ftp su SlimLine #37203
    Sergio Bertana
    Amministratore del forum

    Per sicurezza il server FTP sullo SlimLine chiude automaticamente sia la connessione comandi che la connessione dati se non riceve pacchetti per 30 Secondi. Quindi può succedere che lasciando aperto in connessione il client FTP sul proprio PC ma non eseguendo comandi e/o trasferimenti di dati per un tempo superiore a 30 Sec, lo SlimLine provvede a chiudere la connessione.

    In questo caso quando sul client cerco di eseguire un comando ottengo come risposta un errore ed occorre chiudere e riaprire la connessione con lo SlimLine per rispristinare il funzionamento corretto. Come si vede da questo screenshot nella configurazione di alcuni client FTP (Nell’esempio il Total Commander) è possibile impostare l’invio automatico di un comando (Solitamente il NOOP) per mantenere viva la connessione. Naturalmente il tempo di invio deve essere inferiore ai 30 Secondi.

    in risposta a: Esempi programmazione in IEC61131 #37202
    Sergio Bertana
    Amministratore del forum

    I 2 ingressi digitali della CPU come tutti gli ingressi digitali dei moduli di espansione sono optoisolati ed accettano una tensione in ingresso nel range da 10 a 30 Volt. Per il conteggio dei sacchi mi parlavi di utilizzare una fotocellula a sbarramento il cui fascio viene interrotto dal passaggio del sacco.

    Sul mercato esistono moltissimi tipi di fotocellule, non ti posso dare una indicazione precisa, cito ad esempio il sensore a sbarramento E3F2 della Omron (Vedi datasheet).

    Ti consiglio di cercare da un rivenditore di materiale elettromeccanico oppure effettuando una ricerca con il termine sensori fotoelettrici sul sito RS components.

    in risposta a: Gestione protocollo modbus #37200
    Sergio Bertana
    Amministratore del forum

    SlimLine supporta il protocollo modbus in modo nativo, il modbus RTU slave è disponibile standard su tutte le porte seriali sia RS232 che RS485 (Nella versione Full RS485).

    La versione Versione Full RS485 dispone anche della porta ethernet ed è possibile accedere con un comune browser alla configurazione sia dei parametri seriali che dell’indirizzo di nodo modbus (Screenshot).

    Se invece vuoi gestire la comunicazione modbus master basta utilizzare l’apposito blocco funzione sModbusRTUMaster (Estratto manuale). L’utilizzo del blocco funzione è estremamente semplice ed è interamente visibile nell’esempio ladder incluso nel manuale.

    L’argomento comunicazione modbus è ampiamente trattato nel forum, e con la funzione Ricerca testo puoi trovare molti argomenti che lo trattano. (Vedi questi posts 1, 2).

    Ho comunque ripreso il programma di esempio ModbusScambioIO (Download programma) che esegue lo scambio I/O logici tra due sistemi SlimLine. L’esempio contiene due progetti, uno da trasferire sul sistema master (Stampa), ed uno da trasferire sul sistema slave (Stampa).

    Come si vede nel progetto master ho semplicemente accodato due chiamate al blocco funzione sModbusRTUMaster, il primo esegue la lettura degli ingressi dal modulo slave (Con il comando 16#01), il secondo esegue la scrittura delle uscite sul modulo slave (Con il comando 16#0F).

    in risposta a: Gestire uscite logiche con indirizzamento ad indice #37199
    Sergio Bertana
    Amministratore del forum

    L’errore è spiegato con quanto detto sull’imagine di processo, l’emulatore non ha la gestione dell’immagine di processo, pertanto l’indirizzo reale degli I/O è sempre lo stesso per tutte le tasks.

    Lo SlimLine esegue la gestione degli I/O con immagine di processo nella task Slow e nelle altre tasks usa una copia della immagine. Quindi al di fuori della task Slow non è possibile accedere all’indirizzo reale degli I/O, se si esegue il programma in una task diversa ti darà l’errore che mi hai riportato.

    Ho modificato il tuo progetto eseguendo il programma Main nella task Slow, e funziona perfettamente, allego Stampa e Download programma.

    in risposta a: Gestire uscite logiche con indirizzamento ad indice #37197
    Sergio Bertana
    Amministratore del forum

    Per delegare a LogicLab l’onere di gestire correttamente l’immagine di processo (Questo è preferibile su sistemi targets che gestiscono molte tasks concorrenti), si può definire un array di appoggio delle uscite logiche e poi con un programma logico anche in LD appoggiare i dati dall’array di appoggio sulle uscite reali. Nel mio programma di esempio ho definito l’array OImage che contiene l’immagine delle uscite, il ciclo FOR di gestione uscite sarà:

    FOR i:=0 TO 3 DO
      OImage[Serbatoi[i].Uscita]:=Serbatoi[i].IsAperto;
    END_FOR;

    Un appostito programma ladder provvederà poi a copiare l’immagine delle uscite sulle uscite reali. In questo caso come si vede dal programma di esempio è possibile gestire le uscite anche da task Back, mentre l’esempio precedente funziona solo se la gestione delle uscite è nella task Slow la stessa che ne gestisce l’appoggio sulle periferiche. Stampa e Download programma sorgente. Riporto anche lo screenshot del debug del programma.

    in risposta a: Gestire uscite logiche con indirizzamento ad indice #37196
    Sergio Bertana
    Amministratore del forum

    L’argomento è complesso in quanto tira in ballo la gestione della immagine di processo gestita automaticamente da LogicLab. Cerco di spiegare il concetto, nella gestione degli I/O un sistema PLC opera ad immagine di processo, gli ingressi sono copiati in memoria ad inizio loop e le uscite sono gestite a fine loop, questo garantisce che lo stato di un I/O sia stabile per tutto il loop di esecuzione.

    Ma LogicLab gestisce il multitasking, quindi abbiamo più di una task in esecuzione (E solo una delle task gestisce fisicamente gli I/O), per garantire l’immagine di processo sono gestite diverse aree di appoggio I/O, il tutto avviene in modo trasparente al programma utente. Ma l’accesso diretto alla locazione di memoria dell’I/O funziona solo se viene eseguita nella task dove realmente sono gestiti gli I/O, nel caso di SlimLine gli I/O sono gestiti nella task Slow.

    Quindi l’accesso alla locazione di memoria dell’I/O può essere gestita solo nella task Slow, dove per gestire l’indirizzamento ad indice dell’output dei 4 serbatoi puoi realizzare un programma del tipo.

    FOR i:=0 TO 3 DO
      Ptr:=ADR(%QX0.0)+Serbatoi[i].Uscita;
      @Ptr:=Serbatoi[i].IsAperto;
    END_FOR;

    Ti allego la Stampa ed il Download programma sorgente.

    in risposta a: Comunicazione su TCP/IP con protocollo proprietario ascii #37195
    Sergio Bertana
    Amministratore del forum

    Su SlimLine utilizzando il blocco funzione SysSktListen è possibile mettere in ascolto su di una porta TCP un socket e gestire lo scambio dati su di esso. In questo modo è possibile creare una propria gestione di un qualsiasi protocollo usando i metodi classici Sysfopen, Sysfgetc, Sysfputc, SysVarsscanf, SysVarfprintf è possibile ricevere e trasmettere dati sul socket.

    Ho realizzato un programma che mette in ascolto sullo SlimLine un socket sulla porta TCP 2000, connettendosi con un telnet (Esempio il nostro Toolly), alla porta 2000 viene ritornato il messaggio Welcome !.

    Inviando un comando del tipo Sk<CR>, su slim line viene attivata l’uscita indicata da k (Esempio S1<CR> attiva l’uscita 1, S10<CR> attiva l’uscita 10 e così via).

    Inviando un comando del tipo Rk<CR>, su slim line viene disattivata l’uscita indicata da k (Esempio R1<CR> disattiva l’uscita 1, R10<CR> disattiva l’uscita 10 e così via).

    Il programma viene fornito in codice sorgente e può essere facilmente modificato secondo le proprie necessità (Stampa e Download programma).

    in risposta a: Invio di notifiche verso server Syslog #37194
    Sergio Bertana
    Amministratore del forum

    L’estratto manuale presente nel primo post era una versione preliminare e riportava la descrizione di una libreria che è stata fatta appositamente per un cliente (Ho provveduto a sostituirlo con la nuova versione). Con la versione 1.8.0 del pacchetto di installazione LogicLab (Codice PCK033G200) viene rilasciata la libreria eLogLib. In questa libreria troverai il blocco funzione SysLogReport, oltre ad altre funzioni e blocchi funzione per la gestione dei logs. Tutto il software LogicLab e le relative librerie sono scaricabili gratuitamente, ma alcune funzioni e blocchi funzioni sono a pagamento, sul Manuale programmazione IEC61131-3 su sistema SlimLine, troverai l’indicazione per ogni oggetto se è gratuito oppure no. Per poter eseguire il test di funzionamento, tutti gli oggetti protetti funzionano per 30 minuti.

    in risposta a: Simple hours counter, with a value return on string #37191
    Sergio Bertana
    Amministratore del forum

    I’ve developed the HourCounter FB, this FB calculates the work time of a device. The device start signal must be passed to the FB, since the hours counter has to be RETAIN and is not possible to define RETAIN variables in a FB, so the hours counter variable must be a RETAIN variable the address of which must be passed to the FB. 

    The FB returns also a string that reports the working time expressed as: hhhhhhhhhh:mm:ss;

    The example program I made use the logic input %IX0.0 as a device start signal and it’s possible to see the results by debugging the program. Here the print out of the program and the source code.

    in risposta a: Problem with RETAIN variables #37190
    Sergio Bertana
    Amministratore del forum

    Now some suggestions for your program.

    In the Count_marche FB you use the R_TRIG FB, but is easiest to detect the raising edge of Start input, directly in the FB by using a memo variable. Here the code:

    IF (Start <> Pulse) THEN
      Pulse:=Start; (* Pulse on trigger *)
      IF (Start) THEN @Var:=@Var+1; END_IF;
    END_IF;

    In the ladder program you can use the Almaclean input as a normal contact, the -]P[- contact must be used if the FB doesn’t control the raising edge.

    If the FB that have at least an output, you can avoid the EN/ENO junctions by deselecting the EN/ENO icon in the FBD toolbar.

    In the ADR function to avoid the EN/ENO junctions, you can put the function in the ladder and then by using the right button of the mouse select the Properties menu, and deselect the EN/ENO tick.

    Don’t use Network label to comment the ladder rung. There is the Comment icon (*-*) to insert comments in the ladder. The Network label must be used to reach ladder rung in Jump instructions.

    You can download a source program modified.

    in risposta a: Problem with RETAIN variables #37189
    Sergio Bertana
    Amministratore del forum

    In the PR_Almaclean program, it’s used your own FB (Count_marche) to manage the RETAIN variable Alma_M_Count and this it isn’t correct.

    The Count_marche FB, copies its internal value of Count to the variable Count_marche. So when you start the program the value of Count is 0 and this value is copied to the Count_marche variable, this resets its retained value.

    When a FB has to manage RETAIN variables, a pointer must be used, so the FB can directly manage the variable value. In this way when the system is powered, all the RETAIN variables are set to their stored values, and when the FB has to manage them it manages their real values. Here your program modified by using the pointer in a FB (Download program).

    in risposta a: Client per accesso al server Ftp su SlimLine #37188
    Sergio Bertana
    Amministratore del forum

    Oltre a FileZilla come client FTP è possibile utilizzare anche TotalCommander, un file manager per Windows, disponibile in versione gratuita presso il sito del fornitore http://www.ghisler.com.

    Riporto uno screenshot di FileZilla e di TotalCommander così come si presentano quando sono connessi ad un sistema SlimLine.

    in risposta a: Questions about SlimLine system #37187
    Sergio Bertana
    Amministratore del forum

    As you mention, one of the advantages of the IEC61131 norm, is the possibility to use the 5 different program languages, to cooperate in develop the PLC program. So it’s very useful the possibility to create own functions and/or function blocks by using the ST language and then use them in a ladder program.

    This allows, in a development of a complex program, to divide the responsibilities in programming, the experienced programmer can develops functions and function blocks in ST language, while the installer technician, with a more friendly language as the ladder, can adapt the program to the plant. Moreover functions and function blocks can be crypted and reused in different programs.

    About the firmware upload on SlimLine module we know that the Toolly program has some difficulties, so sometime, the upload firmware procedure aborts and it must be repeated. We are working to solve this problem and a new Toolly version will be released.

    About the IP connection it’s a very strange problem, all the configurations are stored in a EEPROM and they are reloaded when the system starts. And as you report the IP after the software upgrade was correctly configured.  Sincerely I don’t know why the system was not reachable by the IP connection (Telnet). Anyway by reconfiguring the IP using the terminal utility of Toolly (By serial connection) has solved the problem.

    About your 2 problems, for the RETAIN variables please see this post. SlimLine accept SDCard up to 2Gb but it manages only 512 Mb on it. The MCIStats command returns information about the SDCard inserted in the system as you can see in this Toolly screenshot.

    To fomat the SDCard you have to use the Format command, the Format s, c command, formats the 2 disks managed by the system (s=”Storage” c=”SDCard”). It’s possible to have up to 12 files in total, you can share this amount of files between the Storage area and the SDCard. So the command Format 2, 10 will enable to create up 2 files in the Storage area and up to 10 in SDCard. You can see the result of Format command by the Dir command as reported in the Toolly screenshot. Attention! After sent the Format command you must confirm it by sending the Y character otherwise the format is not executed.

    After the formatting you can operate on the system by using a FTP client like TotalCommander or Filezilla (See Post).

    in risposta a: Differenze tra i convertitori Ethernet-seriale ATC-1000/2000 #37186
    Sergio Bertana
    Amministratore del forum

    Una differenza importante tra l’ATC-1000 e l’ATC-2000 è il differente comportamento nel funzionamento in UDP.

    ATC-1000, opera sia come server che come client contemporaneamente, permette lo scambio bidirezionale in UDP con un altro prodotto, sia esso un’altro ATC-1000 o altro. Nella pagina web di configurazione UDP (Screenshot), è possibile definire la porta su cui il convertitore accetta i dati UDP (Nel nostro caso la porta 21) i dati ricevuti su questa porta saranno inviati in uscita sulla seriale.

    Ed è possibile definire fino a 10 indirizzi IP di dispositivi con relativa porta a cui il convertitore invia i dati ricevuti dalla porta seriale. Tutti i dati ricevuti verranno inviati a tuti i dispositivi in elenco (Nel nostro caso all’indizzo IP 192.168.0.59 ed all’indizzo IP 192.168.0.100). Questo permette di realizzare reti multicast (Vedi post).

    ATC-2000, opera o come server o come client ma non contemporaneamente, quindi non è possibile in UDP avere uno scambio dati bidirezionale. Esistono due pagine di configurazione web (Screenshot).

    Nella pagina di configurazione UDP Server, è possibile definire la porta UDPO su cui il convertitore è in ascolto, i dati ricevuti su questa porta saranno inviati in uscita sulla seriale.

    Nella pagina di configurazione UDP Client, è possibile definire l’indirizzo IP e la porta del sistema server a cui il convertitore invia i dati ricevuti dalla porta seriale.

Stai visualizzando 15 post - dal 3,676 a 3,690 (di 4,379 totali)