Location: PHPKode > scripts > ModbusTcp > modbustcp/ModbusTcp.php
<?

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 = 0 : true;
!isset($nbreRegistre) ? $nbreRegistre = 125 : true;
!isset($typeRegistre) ? $typeRegistre = "400001" : true;

if ( $regDebut < 1 ) $regDebut = 0;
if ( $nbreRegistre < 1 ) $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 == 1 ){
	if ( $ToggleValue == "0" ) {
		$Plc->WriteCoil( $Adresse, true );
	} else {
		$Plc->WriteCoil( $Adresse, false );
	}
}

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 == 1 ){
	echo "<pre align='left' bgcolor='#FFFFFF'>";
	show_source( basename( $_SERVER['PHP_SELF'] ) );
}

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

?>
Return current item: ModbusTcp