Home › Forum › Obsoleti › SlimLine (CODESYS) › Accesso a variabili Modbus da script PHP
- Questo topic ha 1 risposta, 2 partecipanti ed è stato aggiornato l'ultima volta 8 anni, 10 mesi fa da Sergio Bertana.
-
AutorePost
-
Maggio 19, 2015 alle 1:10 pm #35786PaoloPartecipante
Ho provato a modificare il tuo progetto che ho trovato sul sito per il collegamento Modbus TCP del modulo CPU Codesys ma non riesco ad ottenere i risultati che desidero. Forse faccio prima a spiegare cosa mi serve e vediamo se avetu un qualche esempio già pronto.
Il mio obiettivo è creare una pagina PHP su di un server che legge i dati dal modulo CPU Codesys utilizzando il protocollo modbus TCP. In pratica dovrei acquisire dal PC tramite lo script PHP dei valori di temperatura acquisiti dal sistema SlimLine.
Maggio 19, 2015 alle 1:15 pm #38910Sergio BertanaAmministratore del forumLa domanda và oltre quello che può essere il nostro supporto alla programmazione dei moduli SlimLine, ti serve una risposta articolata e multidisciplinare. Occorre un programmatore Codesys per lo sviluppo del programma sul modulo CPU ed un programmatore Web PHP per quanto riguarda lo script sul server.
Siccome oltre a programmare i PLC (Sia in ambiente Codesys che LogicLab) mi diverto a giocherellare con il PHP, così partendo da quanto fatto in questo topic e dall’ottimo lavoro di Jan Krakora che ha scritto la classe Phpmodbus, mi sono dilettato a costruire una classe per gestire le comunicazioni Modbus TCP.
Ho sviluppato un progetto dimostrativo con un programma su SlimLine Codesys (Stampa programma) che acquisisce la temperatura tramite una Pt1000 e uno script PHP da installare su di un server per l’interrogazione via Modbus TCP (Stampa script).
Come si vede dai programmi sullo SlimLine viene gestito il Modbus slave ed è allocato un buffer di tipo MODBUSDATASTRUCT che può essere gestito da Modbus all’indirizzo 1000. Nel buffer vi è un counter CmdCount incrementato ad ogni comando Modbus ed un valore REAL di temperatura.
Nello script ReadTemp.php viene istanziata una classe Modbus e viene eseguito un comando Read Multiple Registers ad indirizzo 1000 di 4 registri (Uno è CmdCount ad offset 0, uno è un valore Dummy, e due sono il dato di temperatura REAL ad offset 4). I valori acquisiti dallo SlimLine sono poi stampati in echo per la visualizzazione.
A scopo di test viene anche stampato lo stato del comando Modbus (Questa parte può essere omessa dallo script). Allego tutti i programmi sia Codesys che PHP per il download.
-
AutorePost
- Devi essere connesso per rispondere a questo topic.