Sergio Bertana
Risposte nei forum create
-
AutorePost
-
Sergio Bertana
Amministratore del forumEsistomo librerie apposite per gestire il protocollo Modbus da script PHP, il progetto PhpToModbus a cui ti riferisci è un vecchio progetto che dall’import del forum dal vecchio sito al nuovo sito è andato perso.
Ho quindi provveduto a trovare i vecchi files ed a realizzare un nuovo dimostrativo (Download) che permette da script PHP di scrivere via Modbus 2 variabili REAL (4 registri) Dividendo e Divisore, su di un sistema SlimLine. Il programma nello SlimLine esegue la divisione e lo script PHP rilegge i valori scritti ed il risultato della divisione.
Ho testato il tutto su di una piattaforma XAMPP, facilmente gestibile in ambiente Windows.
Attenzione: lo script usa funzioni di comunicazione socket, di default nella installazione XAMPP non sono abilitate, occorre con un editor aprire il file C:\Xampp\php\php.ini e togliere il commento alla linea:
extension=sockets
Sergio Bertana
Amministratore del forumSe l0 ha resettato puoi provare a collegarsi alla porta ETH2 che di default ha indirizzo statico 192.168.100.1.
Se riesci a collegarti puoi reimpostare la porta EH1 e fare ulteriori tests.ù
Se dopo un reset di fabbrica non riesci a collagarti neanche all ETH2 allora il terminale potrebbe essere danneggiato.
Gennaio 3, 2022 alle 2:24 pm in risposta a: Porte da aprire per accesso da remoto a terminale cMT #63036Sergio Bertana
Amministratore del forumSe tu scarichi il documento che trovi nel post che ti ho indicato (Rimetto il link qui) vedi l’elenco completo dello porte comprese quelle per accedere con cMTViewer.
Gennaio 3, 2022 alle 10:00 am in risposta a: Porte da aprire per accesso da remoto a terminale cMT #63019Sergio Bertana
Amministratore del forumTi rimando a questo post.
Ti ricordo comunque che se utilizzi EasyAccess puoi accedere direttamente al pannello senza dover effettuare nessun port forwarding.
Sergio Bertana
Amministratore del forumIntanto una precisazione FBD_ModbusMaster non è una funzione ma è un programma (POU nella specifica IEC-61113).
Quindi immagino che tu abbia creato un nuovo progetto e poi con la procedura di import objects abbia importato il POU dal programma dimostrativo Ptp114b200.
Non mi dici però su che sistema stai eseguendo il progetto, probabilmente visto che hai inserito la libreria eLLabXTargetAdjLib stai utilizzando un sistema XTarget. Ma allora da quale libreria ha importato il FB ModbbusMaster ?
Come vedi dal manuale on line, ora il nuovo FB di gestione protocollo Modbus master si chiama ModbusMaster_v1 e si trova nella libreria eLLabMdbDevsLib. Ti consiglio di utilizzare questo nuovo FB ed eventualmente importare il POU dal Ptp141.
Vedo anche dal report di errore che il nome della funzione SysVsnprintf è riportato tutto in maiuscolo, questo è perchè non hai settato la flag Case sensivity nel progetto (Screenshot). Il consiglio è di settarlo in modo da mantenere il case sui simboli.
Sergio Bertana
Amministratore del forumPer capire la causa della warning occorre rifarsi a come LogicLab gestisce le librerie, ti rimando alla lettura di questo articolo.
Nel tuo progetto tu hai collegato le 3 librerie in errore ed hai lasciato il link associato che punta sulla cartella di installazione C:\Program Files\Elsist\LogicLab\Libraries\ (Screenshot). Ora LogicLab alla apertura del progetto cerca nel link indicato per verificare se esiste una nuova versione della libreria e nel caso lo trovi propone di sostituirla automaticamente.
Ma probabilmente ora tu hai installato la nuova versione in un percorso diverso da quello precedente e così LogicLab non trova piu la cartella ed indica la warning. Ma questo non ha nessun problema sul tuo progetto in quanto nella compilazione si continueranno ad utilizzare le librerie originali. LogicLab quando colleghi una libreria ne esegue comunque la copia all’interno del progetto. Direi che ci sono un paio di cose nel tuo progetto che io rivedrei:
1) Come riporto in moltissimi posts consiglio di mai collegare le librerie ma di importare solo gli oggetti che servono nel proprio progetto, questo per evitare specie nel caso di librerie molto articolate come la eLLabUtyLib di avere sovrapposizioni di definizioni con altre librerie. Inoltre il collegare l’intera libreria come detto obbliga LogicLab ad importarla nel progetto aumentanto notevolmente il codice sorgente a tutto scapito dello spazio sul sistema target e del tempo di download.
2) Se si collegano librerie al progetto (Per alcune librerie è preferibile) consigli sempre di eseguire l’unlink della libreria. E’ preferibile nel caso servise eseguire manualmente l’upgrade piuttosto che farlo automaticamente con il rischio che la nuova libreria abbia un comportamento diverso o abbia dimensioni maggiori di quella che stà funzionando nel progetto magari creandoti problemi con la dimensione del codice.
Sergio Bertana
Amministratore del forumYes you can try to run the project on the MT6103iP, if it works on it you are sure that the project is correct.
But if the project worhs on MT6103iP it has to work also in the SVR-100… if not yoy have probably awrong connection between it and the PLC.
Sergio Bertana
Amministratore del forumCerto che è possibile farla… Nel sistema sono previsti i 3 livelli di accesso Admin, User, Guest.
Nel firmware precedente era possibile avere 1 solo utente per ogni livello di accesso, quindi al massimo 3 utenti, per ogni utente si poteva definire none e password.
Nel nuovo firmware si possono avere fino ad un massimo di 4 utenti, a differenza di prima per ogni utente è possibile definire nome, password e livello di accesso.
Il comando UserConfig -a MyName MyPsw Admin, (-a) aggiunge un nuovo utente definendone il nome e la password e gli assegna il livello di accesso Admin. Può farlo solo un utente con gli stessi diritti o superiori dell’utente da aggiungere.
Il comando UserConfig -r MyName MyPsw, (-r) rimuove l’utente definito. Può farlo solo un utente con gli stessi diritti o superiori dell’utente da rimuovere.
Il fatto che entri senza credenziali mi fà pensare che non hai i corretti diritti sulle directories del disco.
Sergio Bertana
Amministratore del forumSe scarichi il corretto package che contiene anche le pagine web, basta che cancelli tutte le pagine dal disco “C” e le sostituisci con quelle del package. Al termine come scritto un paio di post prima di questo devi:
Dopo avere aggiornato il firmware e caricato le nuove pagine, dare da telnet (Loggandoti come Admin) il comando “CfgCommit -d” che aggiorna i diritti di accesso alle varie directories del sistema seguito dal comando “Reboot”.
Sergio Bertana
Amministratore del forumCon l’ultima versione del firmware abbiamo modificato la gestione degli utenti, ora si basa su 3 livelli di credenziali riportati in ordine decrescente di importanza.
Admin: Amministratore del sistema
User: Utente del sistema
Guest: OspiteL’utente loggandosi come amministratore (Default utente Admin password Admin) potrà operare sulle credenziali degli utenti creando altri utenti ed assegnando loro il relativo livello di accesso.
Ogni utente può definire o rimuovere altri utenti ma solo nell’ambito del proprio livello o dei livelli inferiori al proprio.
Ti rimando al manuale interprete comandi.
Sergio Bertana
Amministratore del forumNon ci sono differenze nel driver di comunicazione tra la famiglia iP e la famiglia cMT, quindi se i parametri di comunicazione sono impostati correttamente deve comunicare.
Eventualmente puoi provare a fare un progetto nuovo solo con la gestione di una variabile BOOL e magari testarlo in simulazione su PC. SE funziona sul simulatore deve funzionare anche sul pannello cMT reale.
In caso non funzioni è sicuramente un problema di cablaggio della connessione RS232.
Sergio Bertana
Amministratore del forumL’errore 10052200 come vedi indica che non si è ricevuta risposta dal server. Ora immagino che tu abbia inzializzato la stringa SNTPServerIP con l’URL del server da contattare vedi il mio esempio.
VAR i : UDINT; (* Auxiliary variable *) SNTPServerIP : STRING[ 32 ] := '0.pool.ntp.org'; (* UTC Date/Time reference *) SNTPReq : SNTPRequest; (* NTP request *) END_VAR IF (SysFirstLoop) THEN SNTPReq.SpyOn:=TRUE; //Spy On SNTPReq.NTPServer:=ADR(SNTPServerIP); //NTP server END_IF; SNTPReq(); IF (SNTPReq.Done) THEN SNTPReq.Query:=FALSE; (* Query On *) IF (SNTPReq.Ok) THEN i:=SysSetUTCDateTime(SNTPReq.UTCTime); END_IF; END_IF;
Importante il program deve essere eseguito nella task di Back.
Se vedi lo spionaggio dovresti vedere qualcosa di simile:
[Admin]> SpyData Spy data active, type "Ctrl-C" to exit... 18:12:29.152433|SNTPRequest:Lg|-------------------------------------------[Start NTP request]- 18:12:29.182338|SNTPRequest:Tx|1B 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ... 00 18:12:29.195978|SNTPRequest:Rx|1C 02 00 E7 00 00 00 A7 00 00 00 17 C1 CC 72 E9 E5 6F 17 82 EA ... 94 18:12:29.197057|SNTPRequest:Lg|RT Delay:13.606 (mS) 18:12:29.197475|SNTPRequest:Lg|---------------------------------------------[End NTP request]-
Naturalmente se il server non risponde non avrai il report di ricezione ma dovresti avere quello di trasmissione.
Sei sicuro di avere impostato correttamente nello SlimLine sia l’indirizzo IP del gateway e del server DNS?
Puoi verificare se lo SlimLine può accedere ad Internet eseguendo da una connessione Telnet un comando di ping verso un server noto.
Sergio Bertana
Amministratore del forumPOsso consigliare di verificare le reti, verificare che non ci sia un altro dispositivo con stesso IP, che le 2 LAN siano su due network diverse e se usate non connesse alla stessa rete fisica…
Sergio Bertana
Amministratore del forumSi la famiglia di terminali serie cMT supporta la programmazione in ambiente CODESYS 3, per utilizzarla occorre acquistare una licenza. In questa nota applicativa istruzioni su come utilizzarlo.
Ricordo che WebVisu non è supportato, Weintek ha EasyBuilderPro il proprio ambiente di sviluppo HMI e non ha interesse a spingere i clienti ad usare WebVisu. Il loro approccio è usare CODESYS come PLC in un terminale dove la visualizzazione grafica è in ambiente EasyBuilder che comunica con il PLC in Ethernet via localhost.
La porta ethernet del CODESYS supporta anche il protocollo Ethercat.
Sergio Bertana
Amministratore del forumCerto che si… anzi è proprio uno dei motivi percui è nata la versione SlimLine equipaggiato con modulo Raspberry.
Girando nel nostro sito di supporto troverai la libreria libeS8CoreMng con esempi di programmazione in C, C++, ed esempi di programmazione in Python.
Ma è anche possibile ed in alcuni casi consigliabile unire programmi in CODESYS o LogicLab a programmi sviluppati altri linguaggi scambiando in dati via TCP in localhost come ad esempio utilizzando il ns server Harlequin sviluppato in NodeJs o programmi sviluppati in NodeRED. Il vantaggio di questa tecnica che puoi gestire tutta la logica degli I/O con un linguaggio PLC delegando ai linguaggi più specifici tutta la programmazione legata a funzioni di gestione dati, comunicazione, ecc…
-
AutorePost