# wsock.tcp.modbusClient 库模块帮助文档

<details>  <summary>示例</summary>  <p>

示例：

~~~aardio
import wsock.tcp.modbusClient;

//创建 Modbus TCP 客户端
var client = wsock.tcp.modbusClient("127.0.0.1", 502, 1);

//连接服务器（可选指定超时秒数）
var ok, err = client.connect(3);
if(!ok){
	print("连接失败:", err);
	return;
}

print("已连接到 Modbus TCP 服务器");

//读取保持寄存器
var registers, err = client.readHoldingRegisters(0, 10);
if(registers){
	print("保持寄存器值:");
	for(i=1;#registers){
		print("  地址", i-1, "=", registers[i]);
	}
}
else {
	print("读取失败:", err);
}

//写入单个寄存器
var ok, err = client.writeSingleRegister(0, 1234);
print("写入寄存器:", ok ? "成功" : err);

//读取线圈状态
var coils, err = client.readCoils(0, 8);
if(coils){
	print("线圈状态:");
	for(i=1;#coils){
		print("  线圈", i-1, "=", coils[i]);
	}
}

//写入多个寄存器
var ok, err = client.writeMultipleRegisters(10, [100, 200, 300]);
print("写入多个寄存器:", ok ? "成功" : err);

//关闭连接
client.close();
~~~

</p></details>

## wsock.tcp.modbusClient 成员列表 <a id="wsock.tcp.modbusClient" href="#wsock.tcp.modbusClient">&#x23;</a>

Modbus TCP 协议库。  

相关库： wsock.udp.modbusClient （ Modbus UDP 协议 ）。  
相关库： sio.modbus （ Modbus RTU 串口协议 ）。

### wsock.tcp.modbusClient.exceptionMessages <a id="wsock.tcp.modbusClient.exceptionMessages" href="#wsock.tcp.modbusClient.exceptionMessages">&#x23;</a>
Modbus 异常码对照表

## WsockTcpModbusObject 成员列表 <a id="WsockTcpModbusObject" href="#WsockTcpModbusObject">&#x23;</a>

### WsockTcpModbusObject.client <a id="WsockTcpModbusObject.client" href="#WsockTcpModbusObject.client">&#x23;</a>
wsock.tcp.client 对象  

[返回对象:tcpclientObject](https://www.aardio.com/zh-cn/doc/library-reference/wsock/tcp/client.html#tcpclientObject)

### WsockTcpModbusObject.close() <a id="WsockTcpModbusObject.close" href="#WsockTcpModbusObject.close">&#x23;</a>
关闭连接

### WsockTcpModbusObject.connect() <a id="WsockTcpModbusObject.connect" href="#WsockTcpModbusObject.connect">&#x23;</a>
连接服务器,成功返回 true,失败返回 null,错误信息

### WsockTcpModbusObject.connect(超时秒数) <a id="WsockTcpModbusObject.connect" href="#WsockTcpModbusObject.connect">&#x23;</a>
连接服务器,可指定超时时间(秒),成功返回 true

### WsockTcpModbusObject.host <a id="WsockTcpModbusObject.host" href="#WsockTcpModbusObject.host">&#x23;</a>
服务器地址

### WsockTcpModbusObject.isConnected() <a id="WsockTcpModbusObject.isConnected" href="#WsockTcpModbusObject.isConnected">&#x23;</a>
检查是否已连接,返回布尔值

### WsockTcpModbusObject.maskWriteRegister(地址,AND掩码,OR掩码) <a id="WsockTcpModbusObject.maskWriteRegister" href="#WsockTcpModbusObject.maskWriteRegister">&#x23;</a>
掩码写寄存器(功能码0x16),  
结果=(当前值 AND 掩码) OR (OR掩码 AND (NOT AND掩码))

### WsockTcpModbusObject.port <a id="WsockTcpModbusObject.port" href="#WsockTcpModbusObject.port">&#x23;</a>
服务器端口

### WsockTcpModbusObject.readCoils(起始地址,数量) <a id="WsockTcpModbusObject.readCoils" href="#WsockTcpModbusObject.readCoils">&#x23;</a>
读线圈状态(功能码0x01),  
返回布尔值数组,失败返回 null,错误信息

### WsockTcpModbusObject.readDiscreteInputs(起始地址,数量) <a id="WsockTcpModbusObject.readDiscreteInputs" href="#WsockTcpModbusObject.readDiscreteInputs">&#x23;</a>
读离散输入(功能码0x02),  
返回布尔值数组,失败返回 null,错误信息

### WsockTcpModbusObject.readHoldingRegisters(起始地址,数量) <a id="WsockTcpModbusObject.readHoldingRegisters" href="#WsockTcpModbusObject.readHoldingRegisters">&#x23;</a>
读保持寄存器(功能码0x03),  
返回16位整数数组,失败返回 null,错误信息

### WsockTcpModbusObject.readInputRegisters(起始地址,数量) <a id="WsockTcpModbusObject.readInputRegisters" href="#WsockTcpModbusObject.readInputRegisters">&#x23;</a>
读输入寄存器(功能码0x04),  
返回16位整数数组,失败返回 null,错误信息

### WsockTcpModbusObject.readWriteMultipleRegisters(读起始地址,读数量,写起始地址,写值数组) <a id="WsockTcpModbusObject.readWriteMultipleRegisters" href="#WsockTcpModbusObject.readWriteMultipleRegisters">&#x23;</a>
读写多个寄存器(功能码0x17),  
返回读取的16位整数数组

### WsockTcpModbusObject.sendRaw(PDU数据,期望长度) <a id="WsockTcpModbusObject.sendRaw" href="#WsockTcpModbusObject.sendRaw">&#x23;</a>
发送原始 PDU 数据,  
返回原始响应 PDU

### WsockTcpModbusObject.setSlaveId(从站地址) <a id="WsockTcpModbusObject.setSlaveId" href="#WsockTcpModbusObject.setSlaveId">&#x23;</a>
设置从站地址(1-247),setUnitId 的别名

### WsockTcpModbusObject.setTimeout(毫秒) <a id="WsockTcpModbusObject.setTimeout" href="#WsockTcpModbusObject.setTimeout">&#x23;</a>
设置通信超时时间,默认1000毫秒

### WsockTcpModbusObject.setUnitId(单元标识符) <a id="WsockTcpModbusObject.setUnitId" href="#WsockTcpModbusObject.setUnitId">&#x23;</a>
设置单元标识符(1-255)

### WsockTcpModbusObject.timeout <a id="WsockTcpModbusObject.timeout" href="#WsockTcpModbusObject.timeout">&#x23;</a>
超时时间(毫秒)

### WsockTcpModbusObject.transactionId <a id="WsockTcpModbusObject.transactionId" href="#WsockTcpModbusObject.transactionId">&#x23;</a>
当前事务ID

### WsockTcpModbusObject.unitId <a id="WsockTcpModbusObject.unitId" href="#WsockTcpModbusObject.unitId">&#x23;</a>
单元标识符

### WsockTcpModbusObject.writeMultipleCoils(起始地址,值数组) <a id="WsockTcpModbusObject.writeMultipleCoils" href="#WsockTcpModbusObject.writeMultipleCoils">&#x23;</a>
写多个线圈(功能码0x0F),  
参数@2为布尔值数组,成功返回true

### WsockTcpModbusObject.writeMultipleRegisters(起始地址,值数组) <a id="WsockTcpModbusObject.writeMultipleRegisters" href="#WsockTcpModbusObject.writeMultipleRegisters">&#x23;</a>
写多个寄存器(功能码0x10),  
参数@2为16位整数数组,成功返回true

### WsockTcpModbusObject.writeSingleCoil(地址,值) <a id="WsockTcpModbusObject.writeSingleCoil" href="#WsockTcpModbusObject.writeSingleCoil">&#x23;</a>
写单个线圈(功能码0x05),  
参数@2为布尔值,成功返回true

### WsockTcpModbusObject.writeSingleRegister(地址,值) <a id="WsockTcpModbusObject.writeSingleRegister" href="#WsockTcpModbusObject.writeSingleRegister">&#x23;</a>
写单个寄存器(功能码0x06),  
参数@2为16位整数,成功返回true

## wsock.tcp 成员列表 <a id="wsock.tcp" href="#wsock.tcp">&#x23;</a>

### wsock.tcp.modbusClient("192.168.1.1",502,1) <a id="wsock.tcp.modbusClient" href="#wsock.tcp.modbusClient">&#x23;</a>
创建 Modbus TCP 客户端,  
参数 @1 为服务器 IP 或域名,  
参数 @2 为端口号(默认502),  
参数 @3 为单元标识符(默认为1),  
返回客户端对象

### wsock.tcp.modbusClient() <a id="wsock.tcp.modbusClient" href="#wsock.tcp.modbusClient">&#x23;</a>
[返回对象:WsockTcpModbusObject](#WsockTcpModbusObject)
