Vai al contenuto

Sergio Bertana

Risposte nei forum create

Stai visualizzando 15 post - dal 2,416 a 2,430 (di 4,264 totali)
  • Autore
    Post
  • in risposta a: Acquisizione encoder da modulo di I/O #38952
    Sergio Bertana
    Amministratore del forum

    L’uscita a Line-Driver non è nient’altro che una doppia uscita push-pull per ognuno dei segnali encoder. In pratica un componente elettronico fa da driver di linea su ognuno dei segnali encoder (A, B, tacca di zero) e per ognuno dei segnali viene presentato in uscita il suo stato reale ed il suo stato negato (A ed ANegato, B e BNegato, C e CNegato). Questa configurazione permette se acquisita da un Line-Receiver di avere la compensazione del rumore e del cross-talk tra i segnali grazie ad una acquisizione differenziale di ognuno di essi. Soluzione indispensabile per lavorare in ambienti “rumorosi” dal punto di vista elettrico, per trasferire segnali ad elevata frequenza e per gestire lunghe tratte di cavi di collegamento, ma se nella tua applicazione l’encoder è vicino alla scheda di acquisizione, e la frequenza dello stesso non è elevata puoi tranquillamente collegare anche un encoder con Line-Driver ad un modulo di espansione I/O (Esempio modulo espansione I/O uscite relè).Come vedi dal manuale del modulo gli ingressi 12, 13, 14 e 15 hanno dei ponticelli (Da LK1 a LK4) che  se inseriti permettono di acquisire segnali a 5V (Quindi puoi anche utilizzare un encoder con Line-driver ad uscita 5V). Naturalmente per attivare l’ingresso occorre che il Line-Driver sia in grado di pilotare una corrente di almeno 5 mA. E’ evidente che non avendo come ingresso sul modulo un Line-Receiver dovrai utilizzare solo i segnali A, B e C dell’encoder lasciando scollegati i relativi segnali negati.

    in risposta a: Differenze tra DB 100.xx, MX, MB, MW, MD #38950
    Sergio Bertana
    Amministratore del forum

    Vengo ora alla domanda sulla visualizzazione in pagina web, quello che tu vedi se capisco correttamente e qualcosa di simile a questo screenshot.

    Questo difetto si manifesta copiando ed incollando nella pagina htm il testo riportato nel manuale di programmazione (Ecco l’estratto). Se si presta attenzione c’è una stranezza (Messa nel manuale appositamente per verificare l’attenzione del lettore). In realtà è il traduttore pdf che ha modificato il simbolo del doppio apice in un carattere doppio apice unicode utf-8. Il browser visualizzando la pagina con un charset=iso-8859-1 sostituisce il carattere con il punto interrogativo, ecco l’estratto pagina corretto.

    in risposta a: Differenze tra DB 100.xx, MX, MB, MW, MD #38949
    Sergio Bertana
    Amministratore del forum

    L’area DB 100 è al momento l’unica area di memoria (Data block) in cui possono essere allocate variabili. Seguendo le specifiche imposte dalla normativa IEC le variabili allocate assumono una rappresentazione che segue il loro tipo, quindi avremo:

    %IX db.i: Ingressi logici (db, datablock i, indice)
    %QX db.i: Uscite logiche (db, datablock i, indice)
    %MX db.i: Memoria a bit (db, datablock i, indice), per variabili BOOL
    %MB db.i: Memoria a byte (db, datablock i, indice), per variabili BYTE, SINT e USINT
    %MW db.i: Memoria a word (db, datablock i, indice), per variabili WORD, INT e UINT
    %MD db.i: Memoria a doppia word (db, datablock i, indice), per variabili DWORD, DINT, UDINT e REAL

    Ma si tratta solo di una convenzione nella rappresentazione dell’indirizzo della variabile, in realtà DB 100, MX 100, MB 100, MW 100 e MD 100 si riferiscono alla stessa area di memoria.

    in risposta a: Realizzare una macro per invio di una eMail #38948
    Sergio Bertana
    Amministratore del forum

    Operazione complessa anche se fattibile, un nostro cliente l’ha realizzata in passato, ma erano tempi in cui i terminali non inviavano le eMail. Ora tutti i terminali hanno nativa la gestione dell’invio di eMail (Topic) tra l’altro molti server utilizzano la crittografia e qui è davvero un’opera immane pensare di poterla realizzare con una macro. Comunque a livello di lavoro accademico può essere utile vedere la potenzialità del linguaggio macro del terminale.

    Venendo la tuo programma ho visto che non puoi utilizzare una variabile che si chiama to[50] dà errore in compilazione. Ho cambiato nome alla variabile ed ho fatto una simulazione utilizzando il nostro Toolly come server. In questo modo è possibile vedere in simulazione cosa il terminale invia al server (Porta 2525) ed inviare risposte al terminale (Screenshot).

    Intanto vedo che le stringhe non sono terminate con CR e LF, il server  di posta richiede la terminazione, poi nel tuo programma non attendi la risposta del server ma metti solo un tempo di attesa e non è detto che sia sufficente. Fermandomi ad un solo comando ecco come terminarlo con CR LF.

    char inizio[30]=”EHLO smtpcorp.com”
    int Lgt

    Lgt=StringLength(inizio[0])
    inizio[Lgt]=13 // CR
    Lgt=Lgt+1
    inizio[Lgt]=10 // LF
    Lgt=Lgt+1
    OUTPORT(inizio[0], “Free Protocol”, Lgt)

    in risposta a: Ricezione dati da radiocomando con protocollo CAN #38947
    Sergio Bertana
    Amministratore del forum

    Intanto devi essere sicuro che la variabile ritornata dal radiocomando sia effettivamente un DINT.

    Ora dovendo acquisire valori espressi su più bytes da sistemi diversi, occorre tenere presente l’endianness dei dati dei due sistemi. L’architettura ARM utilizzata nei sistemi SlimLine è di tipo Little-Endian, quindi il byte meno significativo si trova ad indirizzo più basso rispetto al byte più significativo (Questo topic dà ulteriori informazioni).

    Quindi per acquisire un dato espresso su più bytes puoi fare riferimento alle funzioni LEArrayToVar o BEArrayToVar (Devi utilizzare quella adatta all’endianness del tuo radiocomando). La funzione adatta automaticamente l’endianness del dato a quello del sistema SlimLine.

    In pratica ipotizzando di definire nel programma di prima una variabile Weight di tipo DINT per il valore di peso, ed ipotizzando che il radiocomando invii un dato nel formato Big-Endian dovrai scrivere.

    Ok:=BEArrayToVar(DINT_TYPE, ADR(Weight), ADR(Msg.Data[0]));

    in risposta a: Ricezione dati da radiocomando con protocollo CAN #38945
    Sergio Bertana
    Amministratore del forum

    Come riportato in questo topic per Per utilizzare il CAN occorre inizializzarlo definendo la velocità ed i filtri, tipicamente viene impostato per ricevere tutti i messaggi SysCANSetMode(CAN_125KBIT, 16#00000000, 16#00000000).

    Ora il CAN controller riceve tutti i pacchetti CAN e li memorizza in automatico in un suo buffer di ricezione sarà possibile estrarre dal buffer i messaggi con la funzione SysCANRxMsg(Mask, ID, ADR(Msg)). Naturalmente se se desidera leggere solo i messaggi con un certo ID occorre definire l’ID ed il Mask nella funzione.

    La variabile Msg deve essere di tipo SYSCANMESSAGE e se messaggio ricevuto al suo interno i campi:
    Length: Indica la lunghezza in byte del messaggio CAN ricevuto (Campo Data).
    MsgID: Ritorna l’ID del messaggio, il bit 31 è il bit di FF.
    Data: Array con i dati ricevuti (Vedi Length per la lunghezza).

    Ecco la stampa di un programma minimale per la ricezione di tutti i pacchetti CAN (Download sorgente).

    in risposta a: Perdita configurazione su dispositivi Ubiquiti #38944
    Sergio Bertana
    Amministratore del forum

    L’architettura interna dei dispositivi Ubiquiti non mi è nota ma credo che la configurazione sia memorizzata in una memoria FLASH, a quanto ne sò i dispositivi sono difficilmente apribili e non hanno ne batterie ne power CAP al loro interno. Il problema della riconfigurazione di default alla riaccensione è un problema che ho visto trattato sul forum ufficiale della Ubiquiti dove un tecnico ha risposto.

    Usually a radio resetting is caused by cabling, PoE injector, or noise interference. Replace the cable or use shielded cable if you aren’t already and try to swap out the PoE injector if you have a spare. If the issue persists, as a last resort, you can disable remote reboot in the ‘System’ tab of airOS (put keep in mind to perform a reset if this option is disabled, you need physical access to the radio).

    In pratica inputano il problema a possibili interferenze sul cavo o ad un problema sul PoE injector, da altre parti ho trovato anche un cliente con lo stesso problema che aveva infiltrazioni di acqua nel cavo ethernet. Ricordo che per comodità il pulsante di reset è remotato tramite il cavo sul PoE injector quindi è possibile che disturbi sul cavo o  peggio contatti generati dall’acqua possano simulare un comando di reset e quindi forzino la riconfigurazione del prodotto a default.

    Per provare seguirei il consiglio di disabilitare il comando di reset (Screenshot). Per riportare il sistema alla configurazione di default si dovrà agire dul pulsante di Reset ma attenzione occorre ricordarsi dell’indirizzo IP e delle credenziali di accesso.

    in risposta a: Connessione sensore fumi con termometro IP #38943
    Sergio Bertana
    Amministratore del forum

    Aggiungo che l’STE Plus può essere connesso al portale gratuito SensDesk (Topic) e tramite l’acceso alla dashborad del portale è possibile monitorare lo stato di tutti i sensori (Screenshot).

    in risposta a: Connessione sensore fumi con termometro IP #38942
    Sergio Bertana
    Amministratore del forum

    Il termometro IP HWg-STE Plus dispone di 2 ingressi digitali a cui è possibile connettere contatti puliti, nel tuo caso puoi connettere il contatto in uscita del sensore di fumi (Vedi sito del produttore). Ti allego uno schema di connessione con i codici di ordinazione dei prodotti.

    Connessi i sensori ai due ingressi digitali è possibile da pagina web configurare il testo abbinato all’ingresso e lo stato di normale e di allarme. Indicando in quale condizione l’STE deve inviare la mail di allarme (Screenshot). In presenza della condizione indicata in Alarm Alert, verrà inviata una email con lo stato del sistema (Screenshot).

    in risposta a: Configurazione I/O dopo cambio target su progetto #38941
    Sergio Bertana
    Amministratore del forum

    Il messaggio “__not_found__” (Screenshot) appare nella configurazione PLC quando non è stato scelto nessun target. Ed è ovvio il motivo, CODESYS non può presentare alcuna configurazione hardware in quanto non conosce su che tipo di hardware si sviluppa il progetto. Questione diversa invece quando si cambia il tipo di hardware su un progetto già sviluppato, cambiando target si perde la configurazione PLC, gli eventi associati e le librerie che nel nuovo target non esistono piu. Ecco le informazioni che riporta CODESYS.

    If you change the Target System of an existing CoDeSys Project there are three things which you have to consider:

    1) After changing the Target System the PLC Configuration gets lost. Open the PLC Configuration (in the Ressource Tab) and click on the menu item “Standard Configuration” in the “Extras” menu. Then the PLC Configuration of the new Target System will be loaded.

    2) All Registered Events will get lost. So if you are using Events in your project, you have to assign the event function afresh after changing the target system.

    3) Remove all “old” Libraries in the Library Manager which are left over from the Target System before and does not exist in the new Target System.

    In pratica dopo aver cambiato il target nel progetto, bisogna aprire PLC Configuration (nel Tab Ressource), scegliere nel menù in alto la voce Extras, e clickare sul menù Standard Configuration (Vedi screenshot). In questo modo la configurazione standard del target selezionato verrà caricata.

    in risposta a: Acquisizione encoder da modulo di I/O #38940
    Sergio Bertana
    Amministratore del forum

    Ho reperito dal sito della Elcis oltre al datasheet dell’encoder anche le informazioni sulla elettronica di uscita (Vedi documentazione). Dalla sigla di ordinazione encoder deduco che si tratta di una elettronica di tipo B che come si vede nella documentazione è una classica configurazione Push-Pull con 70 mA di uscita.Non capisco cosa indichi il PRO ma vedo che rispetto alla elettronica H ha in più un componente da 100Ω limitatore della corrente di uscita (Immagino si tratti di un PTC). E ci starebbe il PRO ad indicare che in caso di cortocircuito sulle uscite non si brucerebbe lo stadio di uscita.Stante queste le caratteristiche puoi tranquillamente connetterlo al modulo PCB124 di espansione I/O. Ma siccome mi parli di un encoder da 100 impulsi a 50 giri/min (La frequenza massima è minore di 83 Hz) ti ricordo che per la famiglia LogicLab esiste il FB IOEncoder per l’acquisizione diretta di un encoder dai normali ingressi logici.E se gli I/O sono sufficienti potresti utilizzare il modulo CPU Compact Eth. sia per acquisire l’encoder che per le tue logiche.

    in risposta a: Comunicazione Pass-Through con PLC Panasonic #38939
    Sergio Bertana
    Amministratore del forum

    Il Pass-Trough non richiede ne programmi ne configurazioni, in pratica serve per accedere tramite la connessione ethernet al PLC connesso alla porta seriale del pannello. Viene installata automaticamente una porta seriale virtuale nel PC, a cui si connetterà il tool di programmazione del PLC. Tramite questa porta virtuale il tool di programmazione potrà dialogare con il PLC come se fosse fisicamente conneso al PC (Vedi questo topic per ulteriori informazioni).

    Se il PLC utilizzato comunica già in ethernet non serve utilizzare il Pass-Trough il PC con il tool di programmazione accederà al PLC già con la porta ethernet.

    Diverso è se tu vuoi raggiungere in teleassistenza il tuo PLC tramite una connessione Internet, in tal caso si utilizza l’EasyAccess 2.0 (Topic). Con EasyAccess 2.0 tu avrai la porta ethernet del pannello e quella del PLC come fossero connesse fisicamente al PC e puoi effettuare tutte le operazioni di programmazione e debug. Naturalmente in questo caso se il PLC è connesso in seriale al pannello puoi continuare ad usare il Pass-Trough anche da remoto.

    in risposta a: Accesso da protocollo modbus agli I/O logici #38938
    Sergio Bertana
    Amministratore del forum

    Non è prevista alcuna mappatura su registri Modbus dello stato degli I/O logici. Per gestirli tramite Modbus occorre forzatamente realizzare un programma che ne appoggia lo stato su area DB 100 che è l’unica area attualmente raggiungibile dal protocollo Modbus gestito dal sistema operativo.

    In questo topic un esempio abbinato alla connessione Modbus da parte di un pannello operatore, cito il topic in quanto disponendo di un modulo CPU SlimLine con il programma EasyBuilder Pro (Scaricabile dal sito) è possibile simulare il funzionamento reale del pannello e testare la comunicazione Modbus.

    in risposta a: Gestione I/O logici su SlimLine da pagina web in PHP #38937
    Sergio Bertana
    Amministratore del forum

    In questo topic si trova il sorgente di una classe PHP per la gestione del protocollo Modbus, una soluzione molto più completa delle poche righe che ho scritto nell’esempio precedente.

    in risposta a: Modbus RTU communication between SlimLine & Toshiba VF-AS1 #38936
    Sergio Bertana
    Amministratore del forum

    We’ve managed to make the communication between the two devices; actually we were connecting the plc to the wrong port of the inverter (4-wire RS485 instead of 2-wire RS485) and after a second look we realised that, corrected it and bingo… everything is working perfectly. So to help other people here are the major lines to check:

    The Baud rate, we reconfigured the baudrate of the PLC so it would be in the same range of the inverter.
    Configure the inverter parameters to use the modbus protocol and setting the baud rate, the node (Refer to manual page 40-41).
    For the connection we used a 2-wire RS485 cable, and we should short RXB to TXB and RXA to TXA on the inverter.
    The modbus addresses of the inverter were correct (FD01, FC91…) (Refer to manual page 41, abstract).
    We should add an offset of +1 to the Address in the FB ModbusMaster.

    Thank’s a lot Bertaser for your assistance, and the solutions you gave us to find the problem.

Stai visualizzando 15 post - dal 2,416 a 2,430 (di 4,264 totali)