Sergio Bertana
Risposte nei forum create
-
AutorePost
-
Ottobre 28, 2013 alle 7:40 am in risposta a: Visualizzazione grafica del livello acqua in un serbatoio #37855
Sergio Bertana
Amministratore del forumIl blocco funzione CPUModuleIO era stato realizzato per i moduli CPU ARM7 versione A, con l’uscita della serie compact e con il firmware SFW184**00 si è deciso di mappare in memoria tutti gli I/O del modulo CPU sia sulla CPU compact che su quelle ARM7, in questo modo la FB CPUModuleIO è diventata obsoleta. Quindi per utilizzare gli I/O del modulo CPU devi indirizzarli come IX 255.x e QX 255.x.
In merito al Modbus ti ricordo che non è possibile da Modbus accedere direttamente agli I/O, ma si può accedere soltanto alla memoria DB100, quindi se vuoi leggere da Modbus gli ingressi e/o gestire le uscite devi appoggiarle su variabili BOOL allocate nella DB100. Ti rimando q questi due topics per ulteriori informazioni Progetto di startup per connessione HMI a SlimLine, Accesso variabili word da terminale Weintek.
Sergio Bertana
Amministratore del forumTi consiglio la lettura di questi due documenti che sono la bibbia del Modbus, Modicon Modbus Protocol Reference Guide, e MODBUS Messaging on TCP/IP Implementation Guide.
Per quanto riguarda Toolly certo puoi usarlo per testare la comunicazione modbus sia in seriale che in TCP, ecco nel mio esempio ho ripreso quanto riportato nel manuale di programmazione SlimLine ed ho acquisito il valore dei 6 registri del RTC.
Ho definito il frame di comando 00 00 00 00 00 06 01 03 00 63 00 06 nella finestra command, ho aperto la connessione con lo SlimLine sulla porta 502 ed inviando comandi consecutivi ecco nella finestra principale la ricezione dei frames di risposta del tipo 00 00 00 00 00 0F 01 03 0C 00 08 00 09 00 09 00 1A 00 0A 07 DD (Screenshot).
Sergio Bertana
Amministratore del forumIl protocollo Modbus gestisce l’accesso sia a variabili BOOL (Inputs e coils) che WORD (Input e holding registers), il frame modbus può essere al massimo 256 bytes di lunghezza. Il supporto al Modbus è nativo nel firmware dello SlimLine quindi basta inviare da un server i frame di interrogazione ed il sistema risponde. I comandi gestiti sono:
16#01 Read coil status (Massimo 250 coils)
16#02 Read input status (Massimo 250 inputs)
16#03 Read holding registers (Massimo 125 registri)
16#04 Read input registers (Massimo 125 registri)
16#06 Preset single register
16#0F Force multiple coils (Massimo 250 coils)
16#10 Preset multiple registers (Massimo 125 registri)Da notare che tutti i comandi operano sulla stessa area di memoria la DB 100, che come indirizzo Modbus viene ofsettata di 40000, per comprendere come sono allocate in memoria le variabili ecco un estratto del manuale. Se si accede a variabili BOOL una o più consecutive si deve indicare l’indirizzo quindi variabile BOOL %MX100.50 ha indirizzo Modbus 40050, mentre per le variabili WORD occorre dividere l’indirizzo per 2, %MW100.100 ha indirizzo Modbus 40050 (Questo topic può interessarti).
Nota! Il protocollo Modbus prevede un offset di 1, se l’indirizzo è 40050 i gestori del protocollo (Credo anche la DLL) inviano nel frame l’indirizzo 40049 ed ecco perché SlimLine somma 1 all’indirizzo ricevuto.
Riguardo al CRC, Modbus prevede un LRC nel Modbus Ascii, un CRC nel Modbus RTU, mentre nel Modbus TCP il controllo del frame è delegato al protocollo TCP. Molto utile nel debug della comunicazione TCP e Wireshark.
Sergio Bertana
Amministratore del forumI have forgot to highlight in the previous post that the USB RNDIS driver works only on devices equipped with the firmware SFW184**00. All the compact CPUs and the CPU ARM7 release B are equipped with this firmware. The RNDIS doesn’t work on ARM7 CPU release A.
All CPU modules can be programmed with LogicLab by using a serial connection, so you can programming them even if the RNDIS doesn’t work. It’s obvious that to operate with FTP and to access to the web server it’s necessary to have a TCP/IP connection, so it’s possible only if you use a CPU module with ethernet or if you install the RNDIS driver on USB connection.
Sergio Bertana
Amministratore del forumThe Force I/O bar it’s not managed it’s always disabled, the real I/Os can be forced by copying them to the watch bar. To force them, they must not be managed by the program. This suggestion is valid for all the variables, is not possible to force a variable that is managed by the program. You force it but the program set it’s value according to the logic, overwriting your forcing (View screenshot).
The PLC run time status bar, is enabled on the devices starting from Device ID “Mps046_XTarget_10_0”. All the compact modules are of this type. You probably use a CPU ARM7 module version A, Device ID “Mps046_XTarget_8_0”, on these devices the bar is not enabled. Anyway this bar is not so useful, it allows only to stop and start the PLC running and display the tasks loop times. The tasks loop times is visible by inserting in the watch window the related variables, you can load them from the SystemVariables.wls watch list file. (View screenshot).
It seems that you connect to a CPU ARM7 module by using Ethernet and try to access to it by FTP is it true ? By reading your report it seems that you are able to operate on the SlimLine files only in reading. The problem could be in the file name, it must be long up to 16 characters (Name plus extension).So filenames like MyFile.txt is ok, but ThisIsMyFile.report is not accepted. Another problem could be in the SDCard formatting, when you format the SDCard you define how many files can be stored on it, if you reach the number of defined files, no more files can be stored.
About the RNDIS we have a lot of installations of it on a Windows 7 (32 and 64 bits) and no customer complain problems. I cannot understand why you report problem on it. Have your Windows system up to date ? Have you tried to change the USB cable ? Can you try to connect it on another PC ?
Ottobre 25, 2013 alle 2:04 pm in risposta a: Visualizzazione grafica del livello acqua in un serbatoio #37848Sergio Bertana
Amministratore del forumSeguendo le tue richieste ho realizzato un semplice programma sullo SlimLine che gestisce una variabile UINT in base allo stato dei 3 ingressi digitali. Non capisco perché hai fissato solo 4 stati quando con 3 ingressi avresti potuto gestire 8 stati (Da 0 a 7). Gestire più stati sarebbe stato utile per avere il bar graph di visualizzazione molto più dettagliato. Il programma sullo SlimLine è questo.
IF NOT(Di00M00) AND NOT(Di01M00) AND NOT(Di02M00) THEN TankStatus:=0; END_IF; (* 000:serbatoio vuoto *)
IF Di00M00 AND NOT(Di01M00) AND NOT(Di02M00) THEN TankStatus:=1; END_IF; (* 001:livello di avaria *)
IF Di00M00 AND Di01M00 AND NOT(Di02M00) THEN TankStatus:=2; END_IF; (* 011:livello minimo *)
IF Di00M00 AND Di01M00 AND Di02M00 THEN TankStatus:=3; END_IF; (* 111:serbatoio pieno *)Mentre sul pannello operatore ho utilizzato un oggetto Word lamp, a cui ho abbinato 3 stati (0, 1, 2, 3) e per ogni stato ho definito una label di visualizzazione dello stato del serbatoio. Sopra alla word lamp ho messo anche un bar graph che visualizza il livello nel serbatoio.
Naturalmente uso gli stessi stati della word lamp, ma se puoi ti consiglio di gestire dal programma SlimLine due variabili UINT, una da 0 a 3 per gli stati ed una da 0 a 7 per il livello. Dal sito della Weintek puoi scaricare tante immagini di serbatoio per dare un impatto grafico più bello alla tua applicazione (Screenshot). Ti allego il programma SlimLine ed il programma del pannello operatore (Download programmi).
Sergio Bertana
Amministratore del forumSe usi una DLL Modbus non dovresti avere problemi, Modbus è un protocollo standard, non capisco cosa intendi per file di configurazione. Quello che occorre sapere è la porta TCP a cui connetterti (Standard è la 502) e l’indirizzo di nodo Modbus (Di default è 1). Poi devi fare riferimento al Manuale programmazione IEC61131-3, al capitolo che riguarda i Protocolli di comunicazione.
Ottobre 25, 2013 alle 8:41 am in risposta a: Notizie, informazioni, programmi protocollo Modbus #37846Sergio Bertana
Amministratore del forumI nostri sistemi SlimLine e Netlog III hanno il protocollo Modbus slave nativo, su tutte le porte seriali (RS232 o RS485) è disponibile di default il protocollo Modbus RTU sulla porta 502 della connessione TCP è disponibile il Modbus TCP. Da pagina web di configurazione (Screenshot) è possibile impostare il tipo di protocollo gestito.
A questo punto se vuoi fare dei test puoi utilizzare Toolly ed inviare le stringhe di test come indicato nel post precedente. Come vedi l’indirizzo di nodo delle stringhe è 255 che è l’indirizzo di default e quindi il sistema risponde qualsiasi sia il suo indirizzo di nodo definito. La porta Ethernet dei sistemi è autosensing, per la connessione puoi utilizzare sia cavo diritto che cross-over.
Come vedi dallo screenshot, è possibile selezionare il protocollo Over IP anche sulle porte seriali, questo permette di connettere alle porte un convertitore Ethernet-Seriale e accedervi da Ethernet.
Ottobre 25, 2013 alle 6:56 am in risposta a: Virtual COM per ATC-2000 compatibilità con Windows 8 #37843Sergio Bertana
Amministratore del forumHo chiesto al nostro fornitore che mi conferma la compatibilità del VirtualCOM Tool 4.1 (Scaricabile dal nostro sito) con i sistemi Windows 8. Ho provato a fare una installazione su di un PC con Windows 8 Pro a 64 bits e come si vede dallo screenshot il programma funziona regolarmente. E come si vede dallo screenshot utilizza la virtual serial port technology della Eltima che è uno dei più utilizzati software di virtualizzazione.
Puoi verificare se la versione del programma da te installata è la stessa che ho utilizzato io ? Eventualmente esegui il download della versione 4.1 dal nostro sito.
Ottobre 16, 2013 alle 2:10 pm in risposta a: Monitoraggio da remoto del valore di temperatura #37841Sergio Bertana
Amministratore del forumLa soluzione al tuo problema può essere trovata in molti modi, vediamoli.
HWg-Ares Sistema monitoraggio GSM/GPRS
Sistema di monitoraggio con modem GSM/GPRS integrato in grado di acquisire dati da sensori 1-wire (temperatura, umidità, tensione, corrente, allagamento ecc.) e da ingressi digitali, e di renderli disponibili su portale web SensDesk utilizzando la rete GSM/GPRS.
SlimLine e modem GSM/GPRS
A differenza degli altri questo è un sistema programmabile PLC, tramite blocchi funzione può gestire ricezione/invio di SMS (Vedi post). Il sistema può anche connettersi ad un server ed inviare i dati via TCP/IP (Vedi post).
HWg-STE Plus
Termometro/igrometro Ethernet dotato di due ingressi digitali protocollo SNMP, interfaccia web ed accesso al portale web gratuito SensDesk di HWg. Per utilizzare questa soluzione occorre disporre di una connessione Internet locale (ADSL o Router).Ottobre 12, 2013 alle 6:15 am in risposta a: Interfaccia web su terminali touch screen Weintek #37840Sergio Bertana
Amministratore del forumL’accesso da client al server VNC del pannello Weintek può avvenire utilizzando due diverse porte, i client VNC (Esempio UltraVNC) utilizzano la porta 5900, mentre il VNC da Java utilizza la porta 5800 (Topic).
Quindi per accedere da IP pubblico con un client VNC devi eseguire un forwarding della porta pubblica xxxx sul IP del terminale porta 5900. Nel tuo programma dovrai definire l’IP pubblico e la porta xxxx, se hai un solo terminale a cui accedere consiglio di eseguire il forwarding della porta pubblica 5900 su IP privato pannello sempre porta 5900, in questo modo utilizzi la porta standard del VNC.
Ma da come hai posto la domanda mi sembra tu voglia utilizzare l’accesso da browser (Quindi VNC Java), in questo caso le porte da ridirigere sono 2. La porta 80 del pannello su cui si appoggia il server web e la porta 5800 utilizzata dal client VNC Java. Quindi ad esempio la porta pubblica 8080 và ridiretta sul pannello porta 80, la porta pubblica 5800 và ridiretta sul pannello porta 5800. Ora da browser basterà digitare l’inidirizzo pubblico seguito dalla porta xxx.xxx.xxx.xxx:8080.
Naturalmente è ovvio che il tuo gestore del servizio Internet deve fornirti un indirizzo IP che può anche essere dinamico (Si risolve con il DynDNS se il router lo supporta) ma deve essere sicuramente un IP pubblico. Alcuni gestori forniscono IP NATtati e quindi non raggiungibili da Internet. Per una verifica prova ad eseguire un ping sull’indirizzo IP pubblico. Altra verifica è che le porte pubbliche che tu utilizzi non siano bloccate dal gestore.
Ottobre 10, 2013 alle 9:49 am in risposta a: Verifica allarme di temperatura su ricezione SNMP Trap #37836Sergio Bertana
Amministratore del forumNon so quale programma utilizzi per intercettare le trap inviate dal Poseidon, ma come vedi anche utilizzando il semplice SNMP Trap Watcher, nella trap inviata è riportato lo stato completo del dispositivo compreso il valore di temperatura (Screenshot).
Per il riferimento ai vari OID presenti nella Trap devi eseguire il download dal Poseidon del file SNMP OID description, cliccando sul link presente nella pagina web del prodotto (Screenshot).
Ottobre 10, 2013 alle 6:41 am in risposta a: Conversione formato con convertitori seriale/fibra #37834Sergio Bertana
Amministratore del forumSi certo è possibile realizzare quello di cui necessiti, il convertitore Seriale/Fibra connesso alla rete RS485 del master invia al convertitore Seriale/Fibra connesso ai due slaves tutti i dati della rete. Essendo una comunicazione ad indirizzo, solo lo slave che ha indirizzo di nodo richiesto risponderà alle interrogazioni.
Se lo slave è uno dei due connessi al convertitore dopo la fibra, risponderà, ed il convertitore invierà la risposta sulla fibra che poi sarà ritrasmessa sulla rete RS485 del master.
Sergio Bertana
Amministratore del forumPer sincronizzare il temporizzatore con lo stato di macchina in funzione (Nel mio esempio è l’ingresso %IX255.1) occorre modificare il ramo:
LDN TBase.Q
ST TBase.IN
JMPC Label (* Salto se tempo non trascorso *)Nel modo:
LD %IX255.1
ANDN TBase.Q
ST TBase.INLDN TBase.Q
JMPC Label (* Salto se tempo non trascorso *)In pratica il timer si attiva solo se ingresso di macchina in funzione è attivo e l’uscita timer è disattiva, mentre il salto alla etichetta si deve sempre effettuare salvo quando il timer ha terminato il conteggio (Questa situazione dura un loop di programma).
Sergio Bertana
Amministratore del forumPer altezza credo tu ti riferisca al campo Tower Height, in questo campo devi indicare l’altezza dell’antenna dal terreno (Screenshot). Tutti i riferimenti altimetrici sono automaticamente presi da Google Hearth.
Nel tuo caso un link tra pianura e montagna è molto favorevole in quanto si presume non vi siano ostacoli tra i due apparecchi essendo la montagna molto in alto. Attenzione solo a non avere edifici e/o grossi alberi in prossimità delle antenne.
-
AutorePost