国产亚洲精久久久久久无码77777,国产成人AV性色在线影院,亚洲另类色区欧美日韩图片,色又黄又爽18禁免费视频,久久久久亚洲av成人网人人网站,极品yin荡人妻合集h,夜夜夜高潮夜夜爽夜夜爰爰,国产内射老熟女aaaa∵,亚洲日韩精品欧美一区二区,中文字幕人妻av一区二区

MODBUS讀取的整數(shù)數(shù)據(jù)如何按位取值?

作者:領(lǐng)祺@玉嬌龍 日期:2023-02-04 閱讀量:

按位取值是指該測(cè)點(diǎn)的數(shù)據(jù)類型為16位有/無符號(hào)、32位有/無符號(hào)時(shí),將讀到的值按BIT位解析,起始位終止位相同時(shí),表示解析1位數(shù)據(jù),值為0或1;起始位和終止位根據(jù)數(shù)據(jù)類型不同,最小0,最大31;

例如讀到的值為十進(jìn)制的10,那么將其轉(zhuǎn)換為二進(jìn)制為0000 1010,其第0位(起始位和終止位都配置成0)0,第1為1,第2位為0,第3位為1。

杭州領(lǐng)祺科技智能物聯(lián)網(wǎng)關(guān)支持MODBUS采集、轉(zhuǎn)發(fā)、監(jiān)聽,支持485串口MODBUS異構(gòu)組網(wǎng),支持多上位機(jī)WEB組態(tài)同時(shí)接收信息,支持MODBUS和M-BUS協(xié)議轉(zhuǎn)換,MODBUS TCP MODBUS RTU等各種協(xié)議轉(zhuǎn)換、混采。

在線幫助文檔

https://dingiiot.com/help-doc/drive_page/modbus-rtu%E9%87%87%E9%9B%86/

設(shè)備地址:從設(shè)備的地址編號(hào)

CRC校驗(yàn):用來確認(rèn)接收消息完整性和正確性

Java代碼取值實(shí)現(xiàn)

網(wǎng)上有許多開源的modbos工具包,例如modbus4j、jamod等。這里選用jamod,以Modbus RTU通訊為例

maven依賴如下,同時(shí)需要在C://Windows//System32目錄下,放入RXTXcomm.jar、rxtxParallel.dll、rxtxSerial.dll三個(gè)文件,用來實(shí)現(xiàn)串口通信

net.wimpi

jamod

1.2

創(chuàng)建和串口的連接

public class ModBusConnection {

public static SerialConnection getSerialConnection() throws Exception {

SerialParameters parameters = new SerialParameters();

// 串口名稱

parameters.setPortName("COM2");

// 波特率

parameters.setBaudRate(9600);

// 數(shù)據(jù)位8位

parameters.setDatabits(SerialPort.DATABITS_8);

// 停止位2位

parameters.setStopbits(SerialPort.STOPBITS_2);

// 無奇偶校驗(yàn)位

parameters.setParity(SerialPort.PARITY_NONE);

// rtu模式,取代默認(rèn)的ascii模式

parameters.setEncoding("rtu");

SerialConnection connection = new SerialConnection(parameters);

connection.open();

return connection;

}

}

創(chuàng)建request取數(shù)工具類

public class ModBusUtil {

/**

* 讀寫 boolean類型 function code 01

* @param connection con

* @param param param

* @return BitVector

*/

public static BitVector readCoils(SerialConnection connection, ModBusRequest param) throws Exception {

ReadCoilsRequest request = new ReadCoilsRequest(param.getAddressNo(), param.getWordCount());

request.setUnitID(param.getSlaveId());

ReadCoilsResponse response = (ReadCoilsResponse) getResponse(connection, request);

return response.getCoils();

}

/**

* 只讀 boolean類型 function code 02

* @param connection con

* @param param param

* @return BitVector

*/

public static BitVector readInputDiscretes(SerialConnection connection, ModBusRequest param) throws Exception {

ReadInputDiscretesRequest request = new ReadInputDiscretesRequest(param.getAddressNo(), param.getWordCount());

request.setUnitID(param.getSlaveId());

ReadInputDiscretesResponse response = (ReadInputDiscretesResponse) getResponse(connection, request);

return response.getDiscretes();

}

/**

* 讀寫 int類型 function code 03

* @param connection con

* @param param param

* @return InputRegister

*/

public static InputRegister[] readMultipleRegisters(SerialConnection connection, ModBusRequest param) throws Exception {

ReadMultipleRegistersRequest request = new ReadMultipleRegistersRequest(param.getAddressNo(), param.getWordCount());

request.setUnitID(param.getSlaveId());

ReadMultipleRegistersResponse response = (ReadMultipleRegistersResponse) getResponse(connection, request);

return response.getRegisters();

}

/**

* 只讀 int類型 function code 04

* @param connection con

* @param param param

* @return InputRegister

*/

public static InputRegister[] readInputRegisters(SerialConnection connection, ModBusRequest param) throws Exception {

// 寄存器地址編號(hào) 屬性數(shù)據(jù)數(shù)量

ReadInputRegistersRequest request = new ReadInputRegistersRequest(param.getAddressNo(), param.getWordCount());

// 從設(shè)備編號(hào)

request.setUnitID(param.getSlaveId());

ReadInputRegistersResponse response = (ReadInputRegistersResponse) getResponse(connection, request);

return response.getRegisters();

}

/**

* 獲取response

* @param connection con

* @param request req

* @return ModbusResponse

*/

private static ModbusResponse getResponse(SerialConnection connection, ModbusRequest request) throws Exception {

ModbusSerialTransaction transaction = new ModbusSerialTransaction(connection);

transaction.setRequest(request);

transaction.execute();

return transaction.getResponse();

}

}

main方法測(cè)試類

public class SerialPortTest {

public static void main(String[] args) throws Exception {

SerialConnection connection = ModBusConnection.getSerialConnection();

ModBusRequest param = new ModBusRequest();

// 從設(shè)備id編號(hào)

param.setSlaveId(1);

// 寄存器地址編號(hào) 這邊使用了function 01,addressNo=0表示寄存器地址為00001

param.setAddressNo(0);

// 讀取數(shù)據(jù)個(gè)數(shù)

param.setWordCount(1);

InputRegister[] registers = ModBusUtil.readInputRegisters(connection, param);

for (InputRegister register : registers) {

System.out.println(register.getValue());

}

connection.close();

}

}





分享到:

熱門標(biāo)簽

換一組
亚洲人色婷婷成人网站在线观看| 98在线视频噜噜噜国产| 在免费jizzjizz高清在线播放| 国产尤物av尤物在线观看| 亚洲欧洲色图片网站| 日韩人妻少妇一区二区三区| yy111111少妇无码理论片| 国产太嫩了在线观看| 国产无遮挡裸体免费久久| 伊人久久大香线蕉av网禁呦| 午夜福利影院不卡影院| 天堂а√在线中文在线| 欧美成人免费| 国产成人拍国产亚洲精品| 国产乱久久亚洲国产精品| 三年在线观看免费观看大全| 无码 人妻 在线 视频| 亚洲成a人片在线观看中| 狠狠躁夜夜躁人人爽天天开心婷婷| 国产免费一区二区三区最新不卡| 开心五月婷婷激情综合| 国产欧美日韩免费看AⅤ视频| 国产亚洲精品2021自在线| 丁香综合在线| 国产精品67人妻无码久久| 日韩在线 | 中文| 精品素人AV无码不卡在线观看| 中文无码高潮到痉挛在线视频| 国产国产裸模裸模私拍视频| 少妇无码AV无码专区| 特级做a爰片毛片免费69| 精品无码人妻一区二区三区| 国产欧美日韩高清在线不卡| 欧美黑人少妇视频在线免费 | 欧美不卡在线视频| 国产在线精品一区二区不卡| 丝袜国产一区av在线观看| 久久精品成人免费看| 日韩精品中文字幕人妻| 亚洲最大在线观看| 欧美成人家庭影院|