JAVA 通过三菱MC协议 采集设备寄存器地址信息
连接代码
// 实例化对象,指定PLC的ip地址和端口号
MelsecMcNet melsecMc = new MelsecMcNet("172.17.34.73", 1000);
// 如果网络不太理想,配置了两个端口,一个有问题,立即切换另一个的话,可以配置如下的代码
// melsecMc.GetPipeSocket( ).SetMultiPorts( new int[] { 6000, 6001 } );
// 连接对象
OperateResult connect = melsecMc.ConnectServer();
if (!connect.IsSuccess) //用于判断是否连接成功,返回true/false
{
return R.fail("500");
}
// 实际上所有的读写都是返回是否成功的标记的,在实际的开发中,需要严格的判定,怎么判定呢?如下的代码
TSMTDegassing tsmtDegassing = new TSMTDegassing();OperateResultExOne<Short> readD100 = melsecMc.ReadInt16("D110");
if (readD100.IsSuccess) {
// 读取成功,执行除以10的操作
float adjustedValue = readD100.Content / 10.0f; // 使用浮点数以确保精度
tsmtDegassing.setDegassingTemperature(Float.toString(adjustedValue));
} else {
// 读取失败,设置为0
tsmtDegassing.setDegassingTemperature("0");
}
OperateResultExOne<Float> d2001 = melsecMc.ReadFloat("D200");
if (d2001.IsSuccess) {
// 读取成功,这时候获取Content才是正确的值
tsmtDegassing.setDegassingPressure(d2001.Content.toString());
} else {
// 读取失败,如果仍然坚持去获取Content的值,就为0
tsmtDegassing.setDegassingPressure("0");
}
引入pom 依赖
<dependency>
<groupId>com.github.dathlin</groupId>
<artifactId>HslCommunication</artifactId>
<version>3.3.1</version>
</dependency>