Sergio Bertana
Risposte nei forum create
-
AutorePost
-
Sergio Bertana
Amministratore del forumLo standard RS485 teoricamente può supportare fino a 32 dispositivi connessi sul bus (con i moderni 485 si arriva tranquillamente a 128 nodi e con alcuni 485 particolari e per questo costosi si arriva sino a 256 nodi).
I drivers 485 hanno come caratteristica di uscita la capacità di pilotare fino a 32 transceivers con impedenza standard, se il transceiver utilizzato sui dispositivi connessi e ad alta impedenza, il numero di devices che un driver può pilotare è dipendente dalla impedenza del transceiver.
Sui nostri sistemi SlimLine ad esempio viene utilizzato il modello LT1785A della Linear technology che ha una elevata impedenza di ingresso e supporta fino a 128 dispositivi (Datasheet).
Nel tuo caso, visto che asserisci di utilizzare dei drivers ad alta impedenza, non esiste sicuramente problema per l’ATC-1000 a pilotare fino al numero di dispositivi che il transceiver dei dispositivi connessi dichiara. Vedi post per ulteriori informazioni.
Sergio Bertana
Amministratore del forumA quanto detto nel post precedente aggiungo un suggerimento per risolvere il parallelo e/o la serie tra rami quando il primo operando del ramo in parallelo/serie è un operando negato. Su statements di OR( e AND( non è possibile effettuare la negazione diretta, occorre caricare l’operando e poi invertirlo con uno statement NOT.
(* ORGR *)
LD %I0.0 (* LODT I 0000 *)
AND %I0.1 (* ANDT I 0001 *)OR( %I0.2 (* LODF I 0002 *)
NOT
ANDN %I0.3 (* ANDF I 0003 *)
) (* ORLR *)ST %Q0.0 (* OUTT O 0000 *)
(* ORGR *)
LD %I0.0 (* LODT I 0000 *)
AND %I0.1 (* ANDT I 0001 *)AND( %I0.2 (* LODF I 0002 *)
NOT
ANDN %I0.3 (* ANDF I 0003 *)
) (* ANDR *)ST %Q0.1 (* OUTT O 0001 *)
Sergio Bertana
Amministratore del forumNon esiste un tool di conversione dal linguaggio RIL (Remoter Instruction List) al linguaggio IL (Instruction List) della IEC61131-3, occorre effettuare la conversione manualmente. Il mio consiglio è di convertire i programmi RIL direttamente in LD (Ladder Diagram) la conversione è più immediata ed i programmi risultano più leggibili perchè visualizzati in modo grafico. Di seguito la conversione di un semplice ramo per dare una idea di come sia possibile effettuarla.
(* ORGR *)
LDN %IX0.0 (* LODF I 0000 *)
AND %IX0.1 (* ANDT I 0001 *)
OR( %IX0.0 (* LODT I 0000 *)
ANDN %IX0.1 (* ANDF I 0001 *)
AND F0001 (* ANDT F 0001 *)
) (* ORLR *)
ANDN F0003 (* ANDF F 0003 *)
ANDN F0004 (* ANDF F 0004 *)
S %Q0.0 (* LTCH O 0000 *)Di seguito la conversione di un ramo che utilizza un timer.
(* ORGR *)
LD %IX0.2 (* LODT I 0002 *)
ST T0000.INLD 1000
ST T0000.PT
CAL T0000 (* OUTM T 0000 KD 0010 *)(* ORGR *)
LD T0000.Q (* LODT T 0000 *)
R %Q0.0 (* UTCH O 0000 *)Allego un programma LogicLab di esempio e la stampa dello stesso, nel programma vi è anche la conversione in LD per comprendere la logica (Download programma).
Attenzione! Nella scrittura in LD non è possibile fare riferimento diretto agli operandi di I/O come nel linguaggio IL, quindi anche per gli I/O sono stati utilizzati degli mnemonici. In LD l’uscita %Q0.0 è stata sostituita con la %Q0.1 per permettere il test del programma sul sistema.
Sergio Bertana
Amministratore del forumLa versione Lite della CPU SlimLine dispone di 2 porte seriali RS232, disponibili su connettore RJ45 ad 8 poli. La versione Full aggiunge la disponibilità di una porta ethernet e di una porta RS485 o CAN. Tutti i modelli dispongono anche di una porta USB client che alla versione attuale del software non è gestita.
Per quanto riguarda la connessione del modulo CPU con la porta seriale del PC è possibile utilizzare un adattatore Null-Modem DB9F/RJ45 unito ad un cavo RJ45 8/8 non schermato della lunghezza desiderata, per ulteriori informazioni sulle porte seriali vedi articolo.
Per la connessione con la porta seriale del terminale operatore occorre rifarsi alla documentazione del terminale, se la connessione è in RS232 basterà connettere opportunamente i segnali RD, TD e GND. Se la connessione è in RS485 basterà collegare i due fili D+ e D-. Se si utilizzano i terminali Weintek da noi distribuiti per la connessione vedi post.
Se si dispone della versione Full è possibile connetterla al PC tramite rete ethernet, basterà utilizzare un comune cavo patch, SlimLine ha una porta ethernet autosensing quindi può essere utilizzato qualsiasi tipo di cavo sia diretto che cross. L’utilizzo della connessione ethernet (Utilizzando uno switch) permette di creare una rete tra il PC, lo SlimLine ed il terminale facilitando la programmazione ed il test senza dover continuamente scollegare e ricollegare cavi. Per l’impostazione dell’indirizzo IP sulla CPU SlimLine si rimanda a questo articolo.
Attenzione, si consiglia l’acquisto (O l’autocostruzione) dell’adattatore seriale anche per le versioni Full, in quanto le eventuali operazioni di upgrade del sistema operativo vedi articolo) sono possibili solo da porta seriale COM0.
Sergio Bertana
Amministratore del forumI sistemi SlimLine supportano il protocollo Modbus sia Ascii che RTU su porta seriale e OverIP su rete ethernet. Il protocollo Modbus è un protocollo libero e molto conosciuto, esistono centinaia di vendors che rendono disponibili server OPC per la connessione in rete Modbus (Vedi sito Modbus.org).
Giugno 24, 2011 alle 9:19 am in risposta a: Verifica conformità del software a specifica Welmec #36813Sergio Bertana
Amministratore del forumCome detto precedentemente, il sistema operativo dello SlimLine esegue un checksum dell’intero programma utente.
In pratica viene eseguita una somma byte per byte di tutta l’area di memoria destinata al programma utente, la somma ritorna una variabile a 32 bits, gli overflows della somma vengono persi. Il cuore dell’algoritmo di calcolo è il seguente:
for(n=0; n<CodeSize; n++)
CheckSum+=(uint32_t)ProgramCode[n];Giugno 23, 2011 alle 4:11 pm in risposta a: Gestione gruppo valvole regolazione flusso per pressa #36811Sergio Bertana
Amministratore del forumNon c’è un blocco funzione per questa operazione, ma ho preso lo spunto per realizzare la funzione FSelector di cui dò codice sorgente che può essere utile per risolvere altre problematiche simili. Fornisco un programma che può essere eseguito sul simulatore per il test della funzione, Download.
VAR_INPUT
Flow : REAL; { DE:”Flow set (%)” }
END_VARFSelector:=0; (* Result *)
IF (Flow >= 50.0) THEN Flow:=Flow-50.0; FSelector:=FSelector OR 16#20; END_IF;
IF (Flow >= 25.0) THEN Flow:=Flow-25.0; FSelector:=FSelector OR 16#10; END_IF;
IF (Flow >= 12.0) THEN Flow:=Flow-12.0; FSelector:=FSelector OR 16#08; END_IF;
IF (Flow >= 6.0) THEN Flow:=Flow-6.0; FSelector:=FSelector OR 16#04; END_IF;
IF (Flow >= 3.0) THEN Flow:=Flow-3.0; FSelector:=FSelector OR 16#02; END_IF;
IF (Flow >= 2.0) THEN Flow:=Flow-2.0; FSelector:=FSelector OR 16#01; END_IF;Giugno 23, 2011 alle 1:42 pm in risposta a: Installazione software virtual COM per convertitore TRP-C37 #36810Sergio Bertana
Amministratore del forumSe il programma che utilizza la porta seriale virtuale non riesce ad effettuare l’impostazione corretta dei parametri di comunicazione, occorre agire da pagina web.
Definendo in un browser l’indirizzo IP del dispositivo, è possibile vederne la pagina web di configurazione (Screenshot),definire i parametri di comunicazione, poi agire sul tasto Apply. Per rendere effettive le impostazioni occorre spegnere e riaccendere il convertitore.
Giugno 23, 2011 alle 12:16 pm in risposta a: Installazione software virtual COM per convertitore TRP-C37 #36809Sergio Bertana
Amministratore del forumPer l’installazione virtual COM occorre scaricare dal ns sito (Zona download in fondo alla pagina del prodotto) il Software VirtualCOM per TRP-C37 (Win7/Vista/Windows2000/XP) ed eseguire il programma VSerPortConsole.exe.
Dalla finestra centrale del programma con il tasto destro del mouse si attiverà un pop-up che permette di aggiungere una porta seriale virtuale. Scegliendo l’opzione Add port verrà installato il programma di virtualizzazione porta seriale.
Installata la porta seriale occorre selezionarla e con il tasto destro del mouse scegliere l’opzione Add Net per attivare la finestra di definizione del dispositivo TRP-C37 a cui collegare la porta seriale virtuale creata (Screenshot). Nei campi previsti occorre definire il tipo di connessione TCP Client, TCP Server o UDP in funzione delle impostazioni effettuate sul convertitore.
Nel mio esempio ho scelto la configurazione TCP Client, e quindi ho definito l’indirizzo IP del convertitore e la porta a cui connettersi.
Terminata l’installazione il programma VirtualSerialPort Console visualizzerà l’elenco di tutte le porte COM installate (Screenshot).
In merito alla etichetta del prodotto TRP-37, non è riportata la C per un refuso tipografico.
Giugno 23, 2011 alle 9:52 am in risposta a: Collegamento inverter PowerOne convertitore Ethernet/Seriale #36808Sergio Bertana
Amministratore del forumQuando è configurato in RS485 l’ATC-1000 funziona in Half-Duplex, la configurazione è nella pagina web riferita all’UART (Screenshot).
Giugno 22, 2011 alle 5:52 am in risposta a: Connessione con I/O distribuiti TRP via modbus RTU #36806Sergio Bertana
Amministratore del forumAggiungo un consiglio, visto che il formato di rappresentazione del S7-200 è uguale a quello dello SlimLine, per avere il valore in REAL basta che tu definisca una variabile REAL all’indirizzo DB100.16 dove FB modbus appoggia i registri letti dal S7-200 per poterla utilizare nel tuo programma senza dover usare la WordToDouble.
MiaVariabile AT %MD100.16 : REAL; { DE:”Variabile REAL letta da S7-200″ }
Giugno 21, 2011 alle 4:40 pm in risposta a: Connessione con I/O distribuiti TRP via modbus RTU #36805Sergio Bertana
Amministratore del forumIl formato utilizzato per le variabili REAL è IEEE 754 come detto in questo post, dai tuoi screenshots si evince che è lo stesso formato usato dal S7-200. Infatti in questo formato di rappresentazione, il valore REAL 2.0 vale in esadecimale 16#40000000 (Come si vede dalla finestra di debug su S7-200).
Attenzione! Nella lettura di variabili a 32 bits tramite modbus occorre prestare attenzione all’endianness dei dati, il protocollo modbus infatti non specifica in che ordine devono essere ritornate le due parti a 16 bits del dato a 32 bits. Quindi è possibile che in alcuni sistema venga ritornata la parte più significativa prima della parte meno significativa o viceversa.
Su SlimLine come già detto in altri posts si utilizza la little-endian che inizia dal byte meno significativo per finire col più significativo, e da quanto vedo è lo stesso tipo di rappresentazione che utilizza Siemens nel S7-200 (Probabilmente utilizza un processore ARM). Infatti se noti nella %MW100.16 che è il primo registro letto da modbus si trova la parte meno significativa del numero e nella %MW100.18 la parte più significativa.
Il tuo errore quindi è solo nella inversione delle word nella conversione WordToDouble.
Giugno 21, 2011 alle 10:17 am in risposta a: Cambio pagina ed altre azioni dopo periodo di inattività #36803Sergio Bertana
Amministratore del forumDal menù Edit -> Parametri di sistema nel tab Generale, è possibile definire le opzioni di salva schermo (Screenshot). E’ possibile definire dopo quanto tempo di inattività (Nessuno tocca lo schermo), si debba disabilitare la retroilluminazione e/o pasare alla visualizzazione di una pagina definita.
Nella pagina definita di salva schermo di solito viene inserito il logo aziendale oppure un disegno, ma può anche essere la pagina principale del progetto a cui si vuole ritornare.
Disabilitando la retroilluminazione lo schermo non è più visibile, ma è possibile riattivarla automaticamente alla comparsa di un allarme.
Sergio Bertana
Amministratore del forumAbbiamo attualmente in sviluppo la versione SFW17C100 del sistema operativo, su questa versione è stato implementato il file system ed il server FTP per l’accesso ai files.
Abbiamo aggiunto funzioni e blocchi funzioni Sysremove, Sysrename, Sysfilelength, Sysfseek per la gestione del file system da programma utente LogicLab (Estratto manuale).
Tutto allo stato attuale è in beta test presso di noi e quindi tutte le informazioni sono da considerarsi prelimimari, purtroppo non ho ancora una data stimata di rilascio.
Giugno 20, 2011 alle 9:29 am in risposta a: Un semplice sistema di controllo accessi con identificazione #36800Sergio Bertana
Amministratore del forumDovendo connettere il lettore al modem, potrei consigliare un lettore RFiD con uscita seriale RS232 esempio il ProxPro Reader modello 5352 con interfaccia seriale della HID (Datasheet).
Ma vorrei capire meglio l’applicazione, se quello che serve è inviare tramite modem il codice della tessera letta dal lettore, occorre che tu scriva in Phyton nel modem tutta la gestione sia della lettura del codice che dell’invio dei dati verso il server.
In alternativa puoi prendere in considerazione l’impiego di una CPU SlimLine (Vedi post precedenti) e realizzare una applicazione per la gestione che a te interessa.
-
AutorePost