Login   Register  
PHP Classes
elePHPant
Icontem

File: ModbusTcp.php

Recommend this page to a friend!
Stumble It! Stumble It! Bookmark in del.icio.us Bookmark in del.icio.us
  Classes of fuchs yves  >  ModbusTcp  >  ModbusTcp.php  
File: ModbusTcp.php
Role: Application script
Content type: text/plain
Description: Complet script to read in a PLC
Class: ModbusTcp
 

Contents

Class file image Download
<?

error_reporting 
(E_ALL);
extract($_REQUEST);

ob_start(); // Bufferisation de tous les 'echo, print....'

echo "<HTML><HEAD>";
echo 
"<TITLE>LECTURE MODBUS/TCP</TITLE></HEAD>";


echo 
"<BODY bgcolor='#7189AB'>";

$RegistreMax 125;

!isset(
$regDebut) ? $regDebut true;
!isset(
$nbreRegistre) ? $nbreRegistre 125 true;
!isset(
$typeRegistre) ? $typeRegistre "400001" true;

if ( 
$regDebut $regDebut 0;
if ( 
$nbreRegistre $nbreRegistre 125;

if ( isset (
$ChangePage) ) {
    if ( 
$nbreRegistre $RegistreMax $nbreRegistre $RegistreMax;
    if ( 
$ChangePage == ">>" $regDebut += $nbreRegistre;
    if ( 
$ChangePage == "<<" $regDebut -= $nbreRegistre;
}


// -----------------------------------------------------------------------------------
//                       PROGRAMME        PRINCIPAL
// -----------------------------------------------------------------------------------

$tabTypeReg = array ( "400001""300001""100001""000001" );

echo 
"<p align='center'><font color='#FFFFFF' size='5' face='Verdana'><b>LECTURE MODBUS/TCP</font>";
echo 
"<p align='center'><font color='#FFFFFF' size='5' face='Verdana'><a href='http://195.6.140.177' target='_blank'><b>dans PLC SCHNEIDER a l'adresse 195.6.140.177</a></font>";

echo 
"<form action='".$_SERVER['PHP_SELF']."' method='POST'>";

echo 
"<p align='center'><font color='#FFFFFF' size='2' face='Verdana'>";
echo 
"TYPE : <select name='typeRegistre' size='1'>\n";
    foreach( 
$tabTypeReg as $value ) {
        if ( 
$typeRegistre == $value ) {
            echo 
"<option selected>$value</option>\n";
        } else {
            echo 
"<option>$value</option>\n";
        }
    }
echo 
"</select>\n<br><br>";

echo 
"DEBUT : <input type='text' name='regDebut' value = '" .$regDebut"' size='5'><br>\n";
echo 
"NBRE  : <input type='text' name='nbreRegistre' value = '" .$nbreRegistre"' size='5'><br><br>\n";
echo 
"<input type='submit' value='<<' name='ChangePage'><input type='submit' value='SUBMIT'><input type='submit' value='>>' name='ChangePage'>\n";

echo 
"</FORM>";

echo 
"<hr>";
echo 
"<p align='left'><b>Le " .  date"d/m/Y H:i:s") ."</b></br>";

echo 
"<p align='center'>\n";

echo 
"<table border='0' cellpadding='1' cellspacing='0' bgcolor='#CCCC99'>\n";

//*********  EN-TETE du TABLEAU  ************
echo "<tr>\n";
    echo 
"<td align='center' bgcolor='#CC6633'><font color='#FFFFFF' size='1' face='Verdana'>ADRESSE</font></td>\n";
    echo 
"<td></td>\n";
    echo 
"<td align='center' bgcolor='#CC6633'><font color='#FFFFFF' size='1' face='Verdana'>DECI.</font></td>\n";

  if ( 
$typeRegistre == "400001" or $typeRegistre == "300001" ) {
         echo 
"<td></td>\n";
        echo 
"<td align='center' bgcolor='#CC6633'><font color='#FFFFFF' size='1' face='Verdana'>BINAIRE</font></td>\n";
      echo 
"<td></td>\n";
        echo 
"<td align='center' bgcolor='#CC6633'><font color='#FFFFFF' size='1' face='Verdana'>HEXA</font></td>\n";
      echo 
"<td></td>\n";
        echo 
"<td align='center' bgcolor='#CC6633'><font color='#FFFFFF' size='1' face='Verdana'>ASCII</font></td>\n";
    }
echo 
"</tr>\n";

$cell_color="#FFFFFF";
$item_txt_color="#000000";

require_once 
"class_ModbusTcp.php";

$Plc = new ModbusArray;
$Plc->SetAdIpPLC ("195.6.140.177");
//$Plc->SetDebug();
//$Plc->SetSimulation();


if ( !isset($toggle) ) $toggle 0;

if ( 
$toggle == ){
    if ( 
$ToggleValue == "0" ) {
        
$Plc->WriteCoil$Adressetrue );
    } else {
        
$Plc->WriteCoil$Adressefalse );
    }
}

switch ( 
$typeRegistre ) {
    case 
"400001":
        
$temp =  $Plc->ReadModbus( (string)("400001" $regDebut), $nbreRegistre );
    break;
    case 
"300001":
        
$temp =  $Plc->ReadModbus( (string)("300001" $regDebut), $nbreRegistre );
    break;
    case 
"100001":
        
$temp =  $Plc->ReadModbus( (string)("100001" $regDebut), $nbreRegistre );
    break;
    case 
"000001":
        
$temp =  $Plc->ReadModbus( (string)("000001" $regDebut), $nbreRegistre );
    break;
    default:
        
$temp =  $Plc->ReadModbus( (string)("400001" $regDebut), $nbreRegistre );
    break;
}

$bgcolor '#FFFFFF' ;
$cptrRegistre 0;

foreach( 
$temp as $key => $value) {

    list( 
$value_1$value_2 ) = $Plc->WordToBytes( (int)$value ); //Pour l'affichage en ASCII

    
$cptrRegistre++;

    
$cell_color == '#FFFFFF' $cell_color '#ECECEC' $cell_color '#FFFFFF';

  if ( 
$typeRegistre == "000001" or $typeRegistre == "100001" ) {
        if ( 
$value ) {
            
$cell_color '#66FF00' ;
        }
    }

    echo 
"<tr>\n";
        echo 
"<td align='left' bgcolor='".$cell_color."' nowrap><font color='#000000' size='2' face='Verdana'>[".$key."] </font></td>\n";
        echo 
"<td></td>\n";

    if ( 
$typeRegistre == "000001" ) {
            echo 
"<td align='right' bgcolor='".$cell_color."' nowrap><font color='#0000FF' size='2' face='Verdana'><a title='Toggle bit' href=".basename$_SERVER['PHP_SELF'] )."?toggle=1&Adresse=".$key."&ToggleValue=".$value."&typeRegistre=".$typeRegistre."&regDebut=".($regDebut)."&nbreRegistre=".$nbreRegistre."><b>".$value."</b></a></font></td>\n";
        } else {
            echo 
"<td align='right' bgcolor='".$cell_color."' nowrap><font color='#0000FF' size='2' face='Verdana'><b>".$value."</b></font></td>\n";
        }

        if ( 
$typeRegistre == "400001" or $typeRegistre == "300001" ) {
           echo 
"<td></td>\n";
            echo 
"<td align='right' bgcolor='".$cell_color."' nowrap><font color='#0000FF' size='2' face='Verdana'><b>".decbin($value)."</b></font></td>\n";
           echo 
"<td></td>\n";
           echo 
"<td align='right' bgcolor='".$cell_color."' nowrap><font color='#0000FF' size='2' face='Verdana'><b>".strtoupper(dechex($value))."</b></font></td>\n";
        echo 
"<td></td>\n";
            echo 
"<td align='right' bgcolor='".$cell_color."' nowrap><font color='#0000FF' size='2' face='Verdana'><b>&nbsp;".$value_1.$value_2."</b></font></td>\n";
        }

    echo 
"</tr>\n";
}

echo 
"</table>\n";

$Plc->ModClose();
unset (
$Plc);

echo 
"<div bgcolor='#FFFFFF'><pre>";

echo 
"<br><a href=".basename($_SERVER['PHP_SELF'])."?show=1>Show Source</a><br>";

if ( !isset(
$show) ) $show 0;
if ( 
$show == ){
    echo 
"<pre align='left' bgcolor='#FFFFFF'>";
    
show_sourcebasename$_SERVER['PHP_SELF'] ) );
}

echo 
"\n</BODY></HTML>";

?>