Stefano
Risposte nei forum create
-
AutorePost
-
Stefano
PartecipanteLascio la mia personalissima opinine: l’applicazione è di domotica e presumo che l’intento sia rilevare la temperatura in ambienti o qualcosa di simile.
Esistono in commercio dei moduli, con a bordo un sensore combinato di umidità e temperaura, uscita Modbus 485 o CAN BUS, a prezzi veramente accessibili.
Usando una soluzione simile ti arriva alla CPU un dato digitale già pronto per l’elaborazione. Il cablaggio che devi fare è un bus dati che poi è possibile utilizzare anche per far colloquiare altri moduli o altre CPU.
Maggio 8, 2017 alle 1:50 pm in risposta a: Gestire motori passo passo con un sistema SlimLine #39934Stefano
PartecipanteLeggendo la documentazione vedo che il blocco SysSetPWMOut gestisce il generatore hardware di PWM del modulo CPU.
E’ disponibile solo un canale PWM sul modulo CPU o anche su altri moduli di espansione.PS sarebbe utile uno specchietto riassuntivo delle “funzioni speciali” disponibili sui vari ingressi/uscite di tutta la serie di CPU e moduli di espansione (Es. Pwm, counter, lettore encoder ecc ecc). Questo faciliterebbe la scelta delle apparecchiature in fase di progetto.
Stefano
PartecipanteÈ possibile settare delle variabili in DB 100.0 in modo che siano in RW per il programma ma in RO per l’accesso modbus ?
Maggio 6, 2017 alle 7:45 am in risposta a: Libreria per lettura variabili Modbus da diversi dispositivi #39932Stefano
PartecipanteÈ possibile eseguire ModbusMsCore nella task back e SAModbusCmd in altre task, oppure devono essere obbligatoriamente tutte in back ?
Stefano
PartecipanteImpostando un valore nel campo INIT di una variabile posta in area di memoria ritenutiva DB100 questo ha qualche effetto sulla variabile? C’è qualche condizione per cui la variabile assume il valore di INIT ?
Stefano
PartecipanteSto proseguendo con il progetto del termoregolatore e mi sorgono alcune domande:
1) Le termocoppie sono utilizzabili solo sul modulo espansione I/O Analogico oppure anche sul modulo 20 I/O mixed signal?
2) Il sistema andrà a comandare delle resistenze di potenza tramite un relè statico SSR e dovrei usare un modulo con uscite statiche. Nella CPU Compact LogicLab è indicato, per le uscite statiche, TOn:4mS max, TOff:1mS max. Questo esattamente cosa sta ad indicare ?
Stefano
PartecipanteSto facendo delle prove, in simulazione soltanto, con il blocco PID. La taratura dei parametri non mi è ancora del tutto chiara. Ma ci sto lavorando. Mi lasciano perplessi i paramtri OMin ed OMax.
Sto simulando un riscaldatore a resistenza, quindi PWM da 0 a 100. Impostando OMin ed OMax rispettivamente a 0 ed a 100 accade che l’uscita, una volta raggiunto lo zero non risale più.
Impostando OMin a -1 o -100, a parità di KP, IT, DT, vedo che OUT continua a variare in base all’input Non ho testato su un target reale, quindi non so se è un comportamento animalo della simulazione o meno.
Gennaio 9, 2017 alle 1:41 pm in risposta a: Comunicazione Modbus RTU tra MT6070iP e Pixsys ATR243 #39813Stefano
PartecipanteHo fatto alcune prove ma sembra che il dispositivo tratti le funzioni 3x e 4x in sola lettura. Ora valuterò se utilizzare il data transfer oppure cambiare gli indirizzi.
Comunque, come sempre, grazie per il rapido e chiaro aiuto!
Stefano
PartecipanteGrazie per la dritta. Il progetto fa grosso modo quello che avevo in mente.
Attualmente sto utilizzando EasyBuilder 8000 e un pannello MT6070iP. Mi risulta che questi pannelli siano programmabili solo con EasyBuilder 8000 o erro ? Non mi sono mai posto il problema di installare EasyBuilderPro per questo motivo.
Stefano
PartecipanteMi permetto un suggerimento, parlando da informatico…
Se il sistema non deve essere accessibile da chiunque, ma solo da un ristretto gruppo di persone per telegestione/assistenza, è meglio non esporre le apparecchiature direttamente verso internet ma utilizzare una VPN. Il modo migliore per la realizzazione della VPN poi dipende dalla connessione a internet, router ecc ecc…
Stefano
PartecipanteLa differenza tra il FB IOEncoder e SysGetEncoder, se non ho capito male è che la prima gli ingressi ‘normali’ (con conseguenti problemi di timing dovuti al ciclo macchina), mentre la seconda usa la gestione hardware presente nel modulo di espansione. Corretto ?
Stefano
PartecipanteCiao a tutti, la cosa è fattibile ma è stata pensata nella maniera sbagliata, bisogna girarci attorno. Ci sono due sistemi: uno usando convertitori RS232/RS422 e uno usando una coppia di ATC-1000 (anche se è un pò un accrocchio).
Metodo 1 – Convertitore RS232/RS422
Premessa -> Assumiamo che i PC siano windows XP
Pannello di controllo -> Connessioni di rete
Selezionare “Crea nuova connessione” – > “Installazione di una connessione avanzata” -> “Connetti direttamente ad un altro computer”.A questo punto si sceglie se “Guest” oppure “Host”. Un PC va Guest e l’altro host. Poi si continua con le configurazioni richeste dall’installazione guidata.
Metodo 2 – ATC-1000
Connettere i due ATC-1000 con la connessione 422.
Configurarli con la massima velocità seriale possibile in relazione alla lunghezza del cavo.
Configurarli entrambi come TCP SERVEROra collegarsi da ogni PC collegarsi in telnet con il relativo dispositivo, scrivere nel terminale e verificare che compaia correttamente quanto scritto sul terminale remoto (ovviamente fare anche la prova inversa).
Installare OpenVPN sui due PC (https://openvpn.net/index.php/open-source/downloads.html) e configurarli come “TCP CLIENT” e farli puntare ad IP/PORTA del relativo ATC-1000 (Vedere la documentazione di OpenVPN per i dettagli).
Se questo non funzionasse va ribaltata un pò la configurazione: Un ATC-1000 va messo come TCP SERVER e l’altro come TCP CLIENT (che punti all’IP del PC relativo). Nel sito ove ATC-1000 è server impostare OpenVpn come TCP CLIENT (che punta al’IP dell’ATC-1000 relativo), nel sito ove ATC-1000 è TCP client OpenVpn va messo come TCP SERVER.
Stefano
PartecipanteGrazie mille, ora funziona tutto come da specifiche. Avevo interpretato la nota relativa al reset di una azione in modo differente.
Stefano
PartecipanteHo esaminato il programma di esempio, funziona ma è leggermente diverso dallo scenario descitto da me. Esempio:
– Creiamo un programma SFC chiamato Main.
– All’interno di questo creiamo una azione in linguaggio SFC (chiamiamola subSFC)La mia esigenza è applicare il flag _RESET_SFC dal programma “Main” in modo da resettare lo step “subSFC”. Se all’interno di “subSFC” applico il flag “Main_RESET_SFC” il compilatore non da errori e quando il flag diventa true il programma “Main” si resetta. Stessa cosa se all’interno di “Main” setto a true il flag “Main_RESET_SFC”.
Se all’interno di “Main” setto il flag “subSFC_RESET_SFC” il compilatore da errore. Idem se lo facco all’interno di “subSFC”. Ho provato anche con costrutti tipo “Main.subSFC_RESET_SFC” oppure “NomePasso.subSFC_RESET_SFC” o anche “NomeAzione.subSFC_RESET_SFC” (quindi “subSFC.subSFC_RESET_SFC”) ma il compilatore segnala sempre un errore.
Stefano
PartecipanteHo parlato troppo presto. Funzionava perchè avevo lasciato i miei costrutti di reset.
Se dichiaro la variabile tra le locali, o tra le globali, il compilatore passa i controlli ma poi nell’esecuzione del programma non avviene il reset.
-
AutorePost