# sio.modbus 库模块帮助文档

## sio.modbus 成员列表 <a id="sio.modbus" href="#sio.modbus">&#x23;</a>

Modbus 协议库  

相关库： wsock.tcp.modbusClient （ Modbus TCP 协议 ）。  
相关库： wsock.udp.modbusClient （ Modbus UDP 协议 ）。

### sio.modbus.crc16(data) <a id="sio.modbus.crc16" href="#sio.modbus.crc16">&#x23;</a>
计算 Modbus CRC16 校验值,  
参数为字符串或 buffer,  
返回16位校验值

### sio.modbus.exceptionMessages <a id="sio.modbus.exceptionMessages" href="#sio.modbus.exceptionMessages">&#x23;</a>
Modbus 异常码对照表

### sio.modbus.rtu("COM1",1) <a id="sio.modbus.rtu" href="#sio.modbus.rtu">&#x23;</a>
创建 Modbus RTU 客户端,  
参数 @1 为串口号(字符串或数值)或已打开的 sio.port 对象,  
参数 @2 为从站地址(默认为1),  
成功返回客户端对象,失败返回 null,错误信息

### sio.modbus.rtu() <a id="sio.modbus.rtu" href="#sio.modbus.rtu">&#x23;</a>
[返回对象:SioModbusRtuObject](#SioModbusRtuObject)

## SioModbusRtuObject 成员列表 <a id="SioModbusRtuObject" href="#SioModbusRtuObject">&#x23;</a>

### SioModbusRtuObject.close() <a id="SioModbusRtuObject.close" href="#SioModbusRtuObject.close">&#x23;</a>
关闭串口

### SioModbusRtuObject.ioctl(波特率,数据位,停止位,校验位) <a id="SioModbusRtuObject.ioctl" href="#SioModbusRtuObject.ioctl">&#x23;</a>
设置串口参数,  
波特率默认9600,数据位默认8,停止位默认1,校验位可选"even","odd","none"

### SioModbusRtuObject.maskWriteRegister(地址,AND掩码,OR掩码) <a id="SioModbusRtuObject.maskWriteRegister" href="#SioModbusRtuObject.maskWriteRegister">&#x23;</a>
掩码写寄存器(功能码0x16),  
结果=(当前值 AND 掩码) OR (OR掩码 AND (NOT AND掩码))

### SioModbusRtuObject.port <a id="SioModbusRtuObject.port" href="#SioModbusRtuObject.port">&#x23;</a>
sio.port 串口对象  

[返回对象:SioPortObject](#SioPortObject)

### SioModbusRtuObject.readCoils(起始地址,数量) <a id="SioModbusRtuObject.readCoils" href="#SioModbusRtuObject.readCoils">&#x23;</a>
读线圈状态(功能码0x01),  
返回布尔值数组,失败返回 null,错误信息

### SioModbusRtuObject.readDiscreteInputs(起始地址,数量) <a id="SioModbusRtuObject.readDiscreteInputs" href="#SioModbusRtuObject.readDiscreteInputs">&#x23;</a>
读离散输入(功能码0x02),  
返回布尔值数组,失败返回 null,错误信息

### SioModbusRtuObject.readHoldingRegisters(起始地址,数量) <a id="SioModbusRtuObject.readHoldingRegisters" href="#SioModbusRtuObject.readHoldingRegisters">&#x23;</a>
读保持寄存器(功能码0x03),  
返回16位整数数组,失败返回 null,错误信息

### SioModbusRtuObject.readInputRegisters(起始地址,数量) <a id="SioModbusRtuObject.readInputRegisters" href="#SioModbusRtuObject.readInputRegisters">&#x23;</a>
读输入寄存器(功能码0x04),  
返回16位整数数组,失败返回 null,错误信息

### SioModbusRtuObject.readWriteMultipleRegisters(读起始地址,读数量,写起始地址,写值数组) <a id="SioModbusRtuObject.readWriteMultipleRegisters" href="#SioModbusRtuObject.readWriteMultipleRegisters">&#x23;</a>
读写多个寄存器(功能码0x17),  
返回读取的16位整数数组

### SioModbusRtuObject.responseDelay <a id="SioModbusRtuObject.responseDelay" href="#SioModbusRtuObject.responseDelay">&#x23;</a>
响应延迟(毫秒)

### SioModbusRtuObject.sendRaw(数据,期望长度) <a id="SioModbusRtuObject.sendRaw" href="#SioModbusRtuObject.sendRaw">&#x23;</a>
发送原始请求帧(不含CRC),  
返回原始响应帧

### SioModbusRtuObject.setResponseDelay(毫秒) <a id="SioModbusRtuObject.setResponseDelay" href="#SioModbusRtuObject.setResponseDelay">&#x23;</a>
设置响应延迟时间,默认50毫秒

### SioModbusRtuObject.setSlaveId(从站地址) <a id="SioModbusRtuObject.setSlaveId" href="#SioModbusRtuObject.setSlaveId">&#x23;</a>
设置从站地址(1-247)

### SioModbusRtuObject.setTimeout(毫秒) <a id="SioModbusRtuObject.setTimeout" href="#SioModbusRtuObject.setTimeout">&#x23;</a>
设置通信超时时间,默认1000毫秒

### SioModbusRtuObject.slaveId <a id="SioModbusRtuObject.slaveId" href="#SioModbusRtuObject.slaveId">&#x23;</a>
从站地址

### SioModbusRtuObject.timeout <a id="SioModbusRtuObject.timeout" href="#SioModbusRtuObject.timeout">&#x23;</a>
超时时间(毫秒)

### SioModbusRtuObject.writeMultipleCoils(起始地址,值数组) <a id="SioModbusRtuObject.writeMultipleCoils" href="#SioModbusRtuObject.writeMultipleCoils">&#x23;</a>
写多个线圈(功能码0x0F),  
参数@2为布尔值数组,成功返回true

### SioModbusRtuObject.writeMultipleRegisters(起始地址,值数组) <a id="SioModbusRtuObject.writeMultipleRegisters" href="#SioModbusRtuObject.writeMultipleRegisters">&#x23;</a>
写多个寄存器(功能码0x10),  
参数@2为16位整数数组,成功返回true

### SioModbusRtuObject.writeSingleCoil(地址,值) <a id="SioModbusRtuObject.writeSingleCoil" href="#SioModbusRtuObject.writeSingleCoil">&#x23;</a>
写单个线圈(功能码0x05),  
参数@2为布尔值,成功返回true

### SioModbusRtuObject.writeSingleRegister(地址,值) <a id="SioModbusRtuObject.writeSingleRegister" href="#SioModbusRtuObject.writeSingleRegister">&#x23;</a>
写单个寄存器(功能码0x06),  
参数@2为16位整数,成功返回true
