class ModbusMaster {
private $sock;
public $host = "192.168.1.1";
public $port = "502";
public $client = "";
public $client_port = "502";
public $status;
public $timeout_sec = 5; // Timeout 5 sec
public $endianness = 0; // Endianness codding (little endian == 0, big endian == 1)
public $socket_protocol = "UDP"; // Socket protocol (TCP, UDP)
//这里的参数该怎么填写,主要是端口和ip。
//比如我现在想用本地电脑php程序和板子通讯,这里的ip和端口该填什么,哪个是电脑ip,哪个是板子ip,对应的端口怎么来的 /**
* readMultipleRegisters
*
* Modbus function FC 3(0x03) - Read Multiple Registers.
*
* This function reads {@link $quantity} of Words (2 bytes) from reference
* {@link $referenceRead} of a memory of a Modbus device given by
* {@link $unitId}.
*
*
* @param int $unitId usually ID of Modbus device
* @param int $reference Reference in the device memory to read data (e.g. in device WAGO 750-841, memory MW0 starts at address 12288).
* @param int $quantity Amounth of the data to be read from device.
* @return false|Array Success flag or array of received data.
*/
function readMultipleRegisters($unitId, $reference, $quantity){
//还有就是这个函数的几个参数怎么来的,后面两个好理解,$unitId这个设备id哪里来的
//下面是硬件上需要设置的参数,如果知道怎么设置,求指教,我也是一直在模式着设参数,小白一个。
public $host = "192.168.1.1"; 对应设备的IP地址
public $port = "502"; 好像是自身的端口号。
public $client = "";
public $client_port = "502"; 对应设备的上的端口号,modbus协议一般都是502端口,当然也可以改为其他端口,但是需要和设备上的端口号对应
public $status;
public $timeout_sec = 5; // Timeout 5 sec
public $endianness = 0; // Endianness codding (little endian == 0, big endian == 1)
public $socket_protocol = "UDP"; // Socket protocol (TCP, UDP)
function readMultipleRegisters($unitId, $reference, $quantity) //unitd modbus从站的站号,对应设备上的 '本机地址'
//reference 表示modbus地址
//quantity 读多少个modbus地址的个数
例子: readMultipleRegisters(10, 11, 12) 表示从站号为10的从站,从4X00011开始读10个数
//////////////////////////////////////////////////////////////////////////////////////////////////
另外需要注意,在原作者的文件ModbusMaster.php中,多个地方需要修改为
$aa = new IecType; //类实例化,
$buffer2 .= $aa->iecBYTE(3); // 这种调用模式
/////////////////////////////////////////////////////////////////////////////////////////////////
<?php
require_once dirname(__FILE__) . '/../../Phpmodbus/ModbusMasterTcp.php';
require_once dirname(__FILE__) . '/../config.php';$test_host_ip = "127.0.0.1"; $test_bind_client_ip = "192.192.15.113";
// Create Modbus object$modbus = new ModbusMasterTcp($test_host_ip);// Data to be writen - BYTE$data = array(55, 32, 1, 77, 33);
$dataTypes = array("BYTE", "BYTE", "BYTE", "BYTE", "BYTE");// Write data - FC 16
$modbus->writeMultipleRegister(25, 100, $data, $dataTypes);// Read data - FC3$recData = $modbus->readMultipleRegisters(25, 100, 10);var_dump($recData);