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