Sergio Bertana
Risposte nei forum create
-
AutorePost
-
Sergio Bertana
Amministratore del forumI blocchi funzione ModemPhoneCall e ModemSMSSend possono essere attivati in parallelo dallo stesso comando, quindi dovendo gestire la chiamata o l’invio di SMS sullo stesso evento, basterà attivare le FB con lo stesso operando.
Nel programma allegato ho gestito la chiamata a 3 numeri di telefono diversi su attivazione di un ingresso digitale Di00M00. Come si vede dalla stampa del programma le 3 FB di gestione chiamata sono tutte attivate dallo stesso ingresso, saranno le FB ad accodarsi automaticamente, terminata la chiamata al primo numero partirà quella al secondo e poi al terzo e così di seguito (Download programma).
Naturalmente se i numeri da chiamare sono tanti è conveniente realizzare un programma in ST che gestisce la sequenzialità delle chiamate agendo su di un unica FB ModemPhoneCall a cui viene passato di volta in volta il numero da chiamare.
Maggio 16, 2012 alle 9:09 am in risposta a: Gestione criteri seriali su porta RS232 da Java su TC65T #37240Sergio Bertana
Amministratore del forumLa prima cosa che posso dire è che i pin DTR e RTS non possono essere pilotati, sono ingressi e possono solamente essere letti. Probabilmente tu ti riferisci ai pin CTS, DCD e DSR che sono pin di output come puoi vedere dallo schemino che allego.
I criteri seraili in nessun dispositivo possono essere programmati in tensione ma possono solo essere definiti nella condizione di attivo e disattivo. E quindi credo che il tuo purtroppo sia riferito alla possibilità di forzarne lo stato. Possibilità che sul modem TC65 è possibile tramite apposite classi java (Vedi documentazione).
Come è noto un segnale RS232 attivo presenta un valore in tensione positivo, mentre un segnale disattivo presenta un valore in tensione negativo rispetto al GND. Il valore di tensione dipende da sistema a sistema e può essere un valore che và da 3 a 15 volt.
Da quanto detto è evidente che settando opportunamente i criteri di uscita seriale del modem potrai disporre delle tensioni +Vcc e -Vcc. Attenzione! si tratta di segnali RS232 quindi la corrente in uscita di questi segnali è molto bassa, può essere utilizzata solo per alimentare dispositivi semplici come ad esempio convertitori di interfaccia.
Maggio 14, 2012 alle 2:05 pm in risposta a: Comporre numero di telefono da variabili numeriche #37239Sergio Bertana
Amministratore del forumUtilizzando la funzione embedded SysVarsnprintf è possibile costruire una variabile stringa di definizione numero telefonico partendo da variabili numeriche che ne definiscono i singoli campi. Ecco nel dettaglio il programma da realizzare:
(* Eseguo controllo su limite valori variabili. *)
IF (ICode > 99) THEN PhoneNr:=’Error’; RETURN; END_IF;
IF (ACode > 999) THEN PhoneNr:=’Error’; RETURN; END_IF;
IF (Number > 999999999) THEN PhoneNr:=’Error’; RETURN; END_IF;(* Print the variable values, merging them into a single string. *)
i:=SysVarsnprintf(ADR(PhoneNr), 3+1, ‘+%d’, UINT_TYPE, ADR(ICode));
i:=SysVarsnprintf(ADR(PhoneNr[LEN(PhoneNr)]), 3+1, ‘%d’, UINT_TYPE, ADR(ACode));
i:=SysVarsnprintf(ADR(PhoneNr[LEN(PhoneNr)]), 9+1, ‘%d’, UDINT_TYPE, ADR(Number));Al termine della esecuzione la variabile PhoneNr di tipo STRING[32] conterrà il numero di telefono con il codice internazione definito in ICode, il prefisso in ACode ed il numero in Number. Se ICode=39, ACode=335, Number=123456 avremo come risultato la stringa +39335123456. Allego stampa e programma con FB in codice sorgente.
Sergio Bertana
Amministratore del forumI convertitori Seriale/Fibra della famigli ATC, sia quelli per fibra multimodale ATC-277MM che quello per fibra monomodale ATC-277SM permettono la realizzazione di connessioni in ring ottico. L’uscita del convertitore potrà essere connessa poi in seriale RS232/422/485 con i tuoi apparati. Così potrai anche avere connessioni miste RS232 ed RS422/485.
Naturalmente nelle connessioni multidrop è indispensabile che sia il protocollo a gestire l’indirizzamento dei vari nodi, il convertitore si limita solo a convertire il media di comunicazione tra la seriale e la fibra ottica.
Per realizzare un ring in fibra dovrai connettere il Tx di un convertitore al Rx dell’altro e così di seguito per tutti i convertitori dell’anello. E’ evidente che in questa configurazione avrai un ramo della connessione (Il Tx dell’ultimo con l’Rx del primo) che si estende per tutta la lunghezza dell’anello, devi verificare che la distanza da coprire non superi la massima ammissibile.
Su fibra monomodale la distanza massima è 20 Km, mentre su fibra multimodale è 2 Km.
Sergio Bertana
Amministratore del forumI due moduli sono perfettamente identici dal punto di vista hardware, la versione Linux Open si programma utilizzando i tools classici di sviluppo nei linguaggi C e/o C++ (Vedi post).
La versione Linux PLC ha il programma Run time per LogicLab e con l’ambiente di sviluppo gratuito LogicLab è possibile programmare utilizzando i 5 linguaggi standard della normativa IEC 61131-3. In questo modo si affianca al precedente modello ARM7 aumentando le prestazioni e le funzionalità.
Nel modello Linux PLC sono presenti una serie di funzioni e blocchi funzioni già predisposti per risolvere una vasta gamma di problematiche oltre a librerie aggiuntive in continua evoluzione. Tra le librerie più interessanti ricordo quella per il supporto al protocollo CAN Open.
Sergio Bertana
Amministratore del forumI terminali operatore Weintek hanno la possibilità di essere configurati in modalità Pass-Through che permette di accedere tramite connessione TCP/IP su rete ethernet ed anche Internet, al PLC connesso in seriale al pannello operatore.
Sul PC viene installata un porta seriale virtuale a cui si connette il software di programmazione del PLC, nello stesso modo in cui si connetterebbe alla porta seriale del PLC reale (Vedi post).
Aprile 27, 2012 alle 6:45 am in risposta a: Indirizzamento variabili su PLC Siemens da terminale #37235Sergio Bertana
Amministratore del forumIl pannello Weintek può accedere a tutta l’area indirizzabile del PLC Siemens, nel manuale connessioni PLC puoi trovare indicazione del range delle variabili indirizzabili.
Le variabili di tipo BOOL (I, Q, M) si indirizzano nel formato dddd(o). (o) indica il bit da 0 a 7, il loro range quindi và da 0000(Bit 0-7) a 4095(Bit 0-7).
Le variabili WORD dalla DB00 alla DB99 si indirizzano nel formato dddd. Si sceglie la DB e poi si indica la word desiderata (Da 0000 a 8192, solo indirizzi pari).
Poi esiste l’indirizzamento di variabili WORD su DBn. Le variabili si indirizzano nel formato DDDDdddd. DDDD indica la DB (Da 0000 a 9999), dddd indica la Word (Da 0000 a 8192, solo indirizzi pari).
Quindi nel tuo caso volendo accedere ad esempio alla WORD 128 della DB1395, nelle proprietà dell’oggetto dovrai scegliere DBn e come indirizzo definire 13950128 (Screenshot).
Sergio Bertana
Amministratore del forumAttualmente la pagina web non ha la possibilità di autenticare l’utente, l’autenticazione utente è possibile solo su accesso da Telnet e da Ftp.
Esistono 4 tipi di utenti, Maintenance, Admin (Psw: Admin), User (Psw: User) e Guest (Psw: Guest). La password di default può essere modificata con il comando Telnet userconfig.
Accedendo al sistema via Telnet con le credenziali di amministratore (Admin), è possibile abilitare/disabilitare l’accesso alla pagina web, comando sysconfig. Dalla versione del firmware SFW167D150 è anche possibile sempre con il comando sysconfig abilitare/disabilitare l’accesso da modbus TCP al sistema. Tutti i comandi gestiti da connessione Telnet sono reperibili sul Manuale riferimento comandi Telnet CPU SlimLine, allego un estratto del manuale.
Sergio Bertana
Amministratore del forumNaturalmente è molto più immediato utilizzare un IDE grafico come CodeLite per lo sviluppo (Vedi post), ed è per questo che forniamo una macchina virtuale VMware con tutto il necessario già installato.
La macchina virtuale viene fornita con l’acquisto del primo modulo CPU, ed è utilizzabile con VMware Player che è scaricabile gratuitamente dal sito VMware.
Sergio Bertana
Amministratore del forumPer sviluppare sulla CPU ARM9 Linux della famiglia SlimLine, occorre disporre di un PC Linux e scaricare il cross compilatore gcc per modulo CPU ARM9 Linux, file “cross-gcc-4.4.1-armv5te-soft.tar.bz2” dal nostro sito. Di seguito riporto passo passo le operazioni necessarie per scrivere un programma hello world.
Decomprimere “cross-gcc-4.4.1-armv5te-soft.tar.bz2” in una dir (es.: Home/showroom/Karo/cross-gcc-4.4.1-armv5te-soft). Aggiungere il path di tale dir al PATH di sistema. Basta editare il file etc/profile (ad esempio con “gedit”) e modificarlo inserendo questa linea export PATH=/home/showroom/Karo/cross-gcc-4.4.1-armv5te-soft/i686-pc-linux-gnu/bin:$PATH, con la quale si aggiunge al path precedente ($PATH) il path dei file bin dell’ambiente di sviluppo SlimLine. Dopo aver salvato, per rendere attivo il nuovo path, da un terminal, occorre digitare source /etc/profile. Ora sempre da terminal verificare se correttamente definito usando il comando printenv. Ora è possibile creare un file Hello.c usando un text editor (Es. gedit).
#include <stdio.h>
int main()
{
printf(“Hello World!”);
return 0;
}Ora da terminal, si può compilare il file Hello.c in con il comando arm-926ejs-linux-gnueabi-gcc Hello.c -g -o Hello che produce il file Hello eseguibile (-g compila in versione debug per debuggarlo con i breakpoints).
Rilevare l’indirizzo IP della scheda e trasferire il file usando un client FTP (es.: Filezilla) accesso anonimous e trasferimento file binario. Trasferirlo nella dir data che è l’unica scrivibile. Da telnet dare i diritti di esecuzione per il file appena caricato chmod 777 Hello e poi eseguire il programma con il comando ./Hello. Si dovrà vedere la scritta Hello World!.
Se si vuole eseguire il debug dell’applicazione, dal telnet occorre dare il comando gdbserver :8888 ./Hello. Dal terminale del PC digitare arm-926ejs-linux-gnueabi-gdb ./Hello e poi target remote xxx.xxx.xxx.xxx:8888 (Dove xxx.xxx.xxx.xxx è l’IP del modulo SlimLine). Per inserire un breakpoint alla linea 5 del file Hello.c, eseguire il comando br Hello.c:5. Ora digitare il carattere c con cui si va prosegue nell’esecuzione del programma in debug.
Sergio Bertana
Amministratore del forumVediamo il significato di ogni filo della fotocellula Omron, dalla documentazione che ho allegato nel post precedente non vi è cenno al colore bianco che tu riporti, ma cercando su Internet penso di poter dire che:
Pin 1, Marrone: Power supply (V+)
Pin 2, Bianco: Mode selection (Lon/Don)
Pin 3, Blù: Power supply (GND)
Pin 4, Nero: UscitaLa fotocellula che tu hai scelto è di tipo PNP, quindi ha una uscita (Pin 4) cha và a V+ quando attiva (LED acceso). Sono corrette le connessioni della alimentazione (Marrone e Blù) ma il Nero và connesso al DI00 ed il DICom và connesso al GND (Insieme al filo Blù).
Il filo bianco scambia il modo di uscita attivo/disattivo se fotocellula illuminata, lo puoi lasciare libero.
Aprile 23, 2012 alle 8:06 am in risposta a: Connessione alimentazione sui dispositivi Ubiquiti #37228Sergio Bertana
Amministratore del forumPer il collegamento dell’alimentatore o del passive PoE al dispositivo occorre utilizzare un normale cavo patch ethernet, compatibile con lo standard EIA/TIA-568A (Utilizzato in Europa) o EIA/TIA-568B (Utilizzato in USA).
Siccome i pins utilizzati per l’alimentazione sono, la coppia 4/5 per il positivo, la coppia 7/8 per il negativo, può essere utilizzato anche un cavo cross ma occorre essere certi che l’inversione dei segnali Tx ed Rx sia accettata dal dispositivo connesso (Tutti i moderni dispostivi si autoadeguano). Schema connessioni cavi patch e crossed.
Attenzione! non utilizzare cavi Gigabit crossover, questo tipo di cavi incrocia la coppia 4/5 con la coppia 7/8, invertendo la polarità della alimentazione sul dispositivo.
Aprile 21, 2012 alle 9:18 am in risposta a: Come scrivere il mio primo programma “HelloWorld” #37227Sergio Bertana
Amministratore del forumEseguita la compilazione de il trasferimento del progetto sulla CPU SlimLine da Telnet è possibile verificare che il file eseguibile sia effettivamente stato trasferito nella directory data del sistema ed abbia tutti gli attributi di esecuzione necessari per essere eseguito. Con il comando ls -l è possibile visualizzare gli attributi del file, ed eventualmente con il comando chmod 777 HelloWorld è possibile assegnare gli attributi di esecuzione.
A questo punto digitando ./HelloWorld seguito da return il programma viene eseguito e la scritta hello world ritornata dal sistema (Screenshot).
Aprile 21, 2012 alle 8:41 am in risposta a: Come scrivere il mio primo programma “HelloWorld” #37226Sergio Bertana
Amministratore del forumPer lo sviluppo dei programmi è necessario utilizzare un PC Linux (Macchina virtuale VMware fornita da Elsist) od un qualunque PC Linux con tutti gli applicativi necessari installati. Da una shell di comandi è possibile connettersi in Telnet con la scheda semplicimente digitando Telnet seguito dall’IP, ci si troverà connessi all’interfaccia comandi della scheda (Screenshot). Con i comamdi ls si può eseguire il listing della directory corrente e con il comando cd data ci si può portare sulla directory data dove sarà trasferito il nostro primo programma.
Per la realizzazione del programma utilizziamo CodeLite, un open-source, cross platform IDE per C/C++. Il programma è la classica stampa della stringa hello world. Forniamo un progetto CodeLite con i files sorgenti, basterà compilarlo per avere nella directory Debug il file HelloWorld da trasferire sulla CPU SlimLine (Download progetto).
Per il trasferimento occorre utilizzare un qualsiasi client FTP (Esempio FileZilla), ma nel nostro progetto di esempio abbiamo configurato CodeLite ad eseguire lui stesso il trasferimento via Ftp al termine della compilazione del progetto. Agendo con il tasto destro del mouse sul nome del progetto e selezionando Settings si aprirà la finestra con i settaggi, nel comando di Post-Build viene invocato il comando Ftp del file eseguibile sulla CPU all’indirizzo IP definito nella directory data (Screenshot).
Sergio Bertana
Amministratore del forumIl blocco funzione sModbusRTUMaster dalla versione SFW054B100 della libreria ePLCUtyLib, ha cambiato nome diventando ModbusRTUMaster_v1. Il funzionamento è perfettamente analogo alla FB precedente, è stato aggiunto un parametro per la definizione del tempo di attesa dopo l’esecuzione del comando Modbus.
Nel caso in cui occorra gestire la comunicazione con molti nodi slaves e/o eseguire molti comandi sullo stesso nodo), anche se è possibile semplicemente accodare i diversi blocchi funzione ModbusRTUMaster_v1 (Uno per ogni nodo o funzione) è preferibile realizzare un apposito blocco funzione che gestisce la comunicazione. Questo permette di semplificare il programma e limitare l’uso della memoria dati necessaria.
Ho realizzato un programma che esegue la lettura degli ingressi e la scrittura delle uscite digitali su di un modulo di I/O remoto TRP-C28M. Nel programma è stato creato un blocco funzione che esegue il comando di lettura ingressi (02 Read Input Status) ed il comando di scrittura uscite (0F: Force Multiple Coils) per un massimo di 16 nodi.
Viene fornito tutto il codice sorgente in modo da permetterne la modifica per adattarlo alle proprie necessità, stampa programma, download sorgente.
-
AutorePost