工具类:
package com.zg.mylayui.commhelper;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.zg.mylayui.eneities.MyConfig;
import org.springframework.stereotype.Service;
import java.io.*;
/**
* @Auther: Zg
* @Date: 2022/9/9 - 09 - 09 - 9:26
* @Description: com.zg.sboottest.commhelper
* @version: 1.0
*/
//@Builder
//@Data
//@AllArgsConstructor
//@NoArgsConstructor
//@Slf4j
@Service
public class MyJsonConfigTool {
public String jsonStr="D:\\modbuscfg.json";
public void CreatJson( MyConfig config) throws IOException {
// 创建文件对象
File fileText = new File(jsonStr);
ObjectMapper mapper = new ObjectMapper();
// 向文件写入对象写入信息
FileWriter fileWriter = new FileWriter(fileText);
// 写文件
String jsonString = mapper.writerWithDefaultPrettyPrinter().writeValueAsString(config);
fileWriter.write(jsonString);
// 关闭
fileWriter.close();
}
public MyConfig ReadJson() throws IOException {
ObjectMapper mapper = new ObjectMapper();
File file = new File(jsonStr);
String str = getStr(file);
MyConfig myConfig = mapper.readValue(str, MyConfig.class);
return myConfig;
}
public String getStr(File jsonFile){
String jsonStr = "";
try {
FileReader fileReader = new FileReader(jsonFile);
Reader reader = new InputStreamReader(new FileInputStream(jsonFile),"utf-8");
int ch = 0;
StringBuffer sb = new StringBuffer();
while ((ch = reader.read()) != -1) {
sb.append((char) ch);
}
fileReader.close();
reader.close();
jsonStr = sb.toString();
return jsonStr;
} catch (IOException e) {
e.printStackTrace();
return null;
}
}
}
/*
public class DataOutAndInStreamDemo {
public static void main(String[] args) throws IOException {
DataOutputStream dos = new DataOutputStream(new FileOutputStream("D:\\java.txt"));
dos.writeUTF("α");
dos.writeInt(1234567);
dos.writeBoolean(true);
dos.writeShort((short)123);
dos.writeLong((long)456);
dos.writeDouble(99.98);
DataInputStream dis = new DataInputStream(new FileInputStream("D:\\java.txt"));
System.out.println(dis.readUTF());
System.out.println(dis.readInt());
System.out.println(dis.readBoolean());
System.out.println(dis.readShort());
System.out.println(dis.readLong());
System.out.println(dis.readDouble());
dis.close();
dos.close();
}
}
* */
/**
示例//Java程序演示示例
//方法
//DataInputStream-
import java.io.*;
public class ReadIntOfDIS {
public static void main(String[] args) throws IOException {
InputStream is_stm = null;
DataInputStream dis_stm = null;
FileOutputStream fos_stm = null;
DataOutputStream dos_stm = null;
int[] i_arr = {
100,
200,
300,
400,
500
};
try {
//实例化FileInputStream-
//DataInputStream-, FileOutputStream
//和DataOutputStream-
fos_stm = new FileOutputStream("C:\\Users\\Preeti Jain\\Desktop\\programs\\includehelp.txt");
dos_stm = new DataOutputStream(fos_stm);
//循环写入每个int直到结束
for (int val: i_arr) {
//通过使用writeInt()方法isto-
//写一个整数到
//DataOutputStream dos_stm-
dos_stm.writeInt(val);
}
is_stm = new FileInputStream("C:\\Users\\Preeti Jain\\Desktop\\programs\\includehelp.txt");
dis_stm = new DataInputStream(is_stm);
//循环读取可用数据直到结束
while (dis_stm.available() > 0) {
//通过使用readInt()isto方法读取
//整数
int in = dis_stm.readInt();
System.out.println("dis_stm.readInt(): " + in );
}
} catch (Exception ex) {
System.out.println(ex.toString());
} finally {
//要释放链接的系统资源
//这些流
if (is_stm != null)
is_stm.close();
if (dis_stm != null)
dis_stm.close();
if (dos_stm != null)
dos_stm.close();
if (fos_stm != null)
fos_stm.close();
}
}
}
输出结果dis_stm.readInt(): 100
dis_stm.readInt(): 200
dis_stm.readInt(): 300
dis_stm.readInt(): 400
dis_stm.readInt(): 500
*/
配置类:
package com.zg.mylayui.eneities;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import java.util.List;
/**
* @Auther: Zg
* @Date: 2022/9/9 - 09 - 09 - 9:14
* @Description: com.zg.sboottest.entities
* @version: 1.0
*/
@Builder
@Data
@AllArgsConstructor
@NoArgsConstructor
@Slf4j
public class MyConfig {
private String ip;
private String port;
private String slaveNo;
private String address;
private List<ActualData> actualDatas;
}
实体类:
package com.zg.mylayui.eneities;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date;
/**
* @Auther: Zg
* @Date: 2022/9/8 - 09 - 08 - 11:42
* @Description: com.zg.sboottest.entities
* @version: 1.0
*/
@Builder
@Data
@AllArgsConstructor
@NoArgsConstructor
@Accessors(chain = true)
public class ActualData {
@TableId(type = IdType.AUTO)
private Integer id;
private String name;
private String description;
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
private Date createTime;
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
private Date insertTime;
private String varAddress;
private String varType;
private String scale;
private String value;
}
读取:
package com.zg.mylayui.commhelper;
import com.digitalpetri.modbus.FunctionCode;
import com.digitalpetri.modbus.codec.Modbus;
import com.digitalpetri.modbus.master.ModbusTcpMaster;
import com.digitalpetri.modbus.master.ModbusTcpMasterConfig;
import com.digitalpetri.modbus.requests.ReadHoldingRegistersRequest;
import com.digitalpetri.modbus.requests.WriteSingleRegisterRequest;
import com.digitalpetri.modbus.responses.ModbusResponse;
import com.digitalpetri.modbus.responses.ReadHoldingRegistersResponse;
import com.zg.mylayui.eneities.ActualData;
import com.zg.mylayui.eneities.MyConfig;
import com.zg.mylayui.vo.BarVO;
import io.netty.buffer.ByteBuf;
import io.netty.util.ReferenceCountUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import javax.annotation.PostConstruct;
import java.io.IOException;
import java.nio.ByteBuffer;
import java.nio.ByteOrder;
import java.util.List;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutionException;
/**
* @Auther: Zg
* @Date: 2022/9/6 - 09 - 06 - 8:35
* @Description: com.zg.modbusmaster.modbus
* @version: 1.0
*/
@Component
@Slf4j
public class ModbusHelper implements ImodbusHelper {
/**
* modubs从站ID
*/
private Integer slaveNo;
/**
* 寄存器数量
*/
private Integer quantity;
/**
* 起始地址
*/
private Integer address;
/**
* 成功代码
*/
public static final String SUCCESS_CODE = "0x000000";
/**
* 与modubs连接异常
*/
public static final String COON_FAIL_CODE = "0x000001";
/**
* 向modubs发送命令执行异常
*/
public static final String EXEC_FAIL_CODE = "0x000002";
/**
* 数据写入失败
*/
public static final String WRITE_FAIL_CODE = "0x000004";
private ModbusTcpMaster modbusTcpMaster;
public List<ActualData> actualDatas;
public BarVO barVOS;
public List<ActualData> getActualDatas() {
return actualDatas;
}
public void setActualDatas(List<ActualData> actualDatas) {
this.actualDatas = actualDatas;
}
@Autowired
MyJsonConfigTool configTool;
public ModbusTcpMaster getModbusTcpMaster() {
return modbusTcpMaster;
}
//@PostConstruct
@Override
public String Conn() throws IOException {
if (modbusTcpMaster == null) {
MyConfig myConfig = configTool.ReadJson();
actualDatas = myConfig.getActualDatas();
//Ip
String Ip = myConfig.getIp();
//端口
Integer Port = Integer.parseInt(myConfig.getPort());
//从站号
slaveNo = Integer.parseInt(myConfig.getSlaveNo());
//寄存器数量
quantity = actualDatas.size();
//起始地址
address = Integer.parseInt(myConfig.getAddress());
ModbusTcpMasterConfig config = new ModbusTcpMasterConfig.Builder(Ip).setPort(Port).build();
modbusTcpMaster = new ModbusTcpMaster(config);
log.info("初始化成功。。。。。。。。。");
//System.out.println("初始化成功。。。。。。。。。");
return SUCCESS_CODE;
}
return COON_FAIL_CODE;
}
@Override
public String DisConn() {
if (modbusTcpMaster != null) {
modbusTcpMaster.disconnect();
}
Modbus.releaseSharedResources();
return SUCCESS_CODE;
}
/**
* @param varAddress 寄存器地址
* @param value 写入值
* @description: 写HoldingRegister数据
* @return: 结果值
*/
@Override
public String writeHoldingRegisters(Integer varAddress, Integer value) throws ExecutionException, InterruptedException {
ModbusResponse modbusResponse;
if (modbusTcpMaster==null){
return null;
}
// 发送单个寄存器数据,一般是无符号16位值:比如10
CompletableFuture<ModbusResponse> future = modbusTcpMaster.sendRequest(new WriteSingleRegisterRequest(varAddress, value), slaveNo);
//获取写入的响应流
modbusResponse = future.get();
if (modbusResponse == null) {
System.out.println("FCSC-ExternalConnection WriteHoldingRegisters:modbusResponse is null ");
return WRITE_FAIL_CODE;
}
//获取写入的响应FunctionCode
FunctionCode functionCode = modbusResponse.getFunctionCode();
System.out.println("FCSC-ExternalConnection functionCode=" + functionCode + " value=" + value);
if (functionCode == FunctionCode.WriteSingleRegister) {
return SUCCESS_CODE;
} else {
return WRITE_FAIL_CODE;
}
}
@Override
public byte[] readHoldingRegisters() throws ExecutionException, InterruptedException {
if (modbusTcpMaster==null){
return null;
}
CompletableFuture<ReadHoldingRegistersResponse> future = modbusTcpMaster
.sendRequest(new ReadHoldingRegistersRequest(address, quantity), slaveNo);
ReadHoldingRegistersResponse readHoldingRegistersResponse = future.get();
if (readHoldingRegistersResponse != null) {
ByteBuf buf = readHoldingRegistersResponse.getRegisters();
byte[] bytes = new byte[buf.capacity()];
buf.readBytes(bytes, 0, buf.capacity());
// System.out.println("bytes=" + Arrays.toString(bytes));
// for (int i = 0; i< bytes.length;i+=2){
// byte temp;
// temp = bytes[i];
// bytes[i]=bytes[i+1];
// bytes[i+1]=temp;
// }
return bytes;
}
ReferenceCountUtil.release(readHoldingRegistersResponse);
return null;
}
// byte数组转short数组
public short[] byteArray2ShortArray(byte[] data) {
short[] retVal = new short[data.length / 2];
for (int i = 0; i < retVal.length; i++)
retVal[i] = (short) ((data[i * 2] & 0xff) << 8 | (data[i * 2 + 1] & 0xff));
return retVal;
}
// short数组转byte数组
public byte[] ShortArray2byteArray(short[] s) {
byte[] targets = new byte[s.length * 2];
for (int i = 0; i < s.length; i++) {
int[] offsets = {0, 8};
targets[i * 2] = (byte) ((s[i] >>> offsets[0]) & 0xff);
targets[i * 2 + 1] = (byte) ((s[i] >>> offsets[1]) & 0xff);
}
return targets;
}
public short bytesToShort(byte[] bytes) {
return ByteBuffer.wrap(bytes).order(ByteOrder.LITTLE_ENDIAN).getShort();
}
//byte数组转float数组
public float[] byteArray2FloatArray1(byte[] buffer) {
float[] target = new float[buffer.length / 4];
for (int i = 0; i < target.length; i++) {
byte[] tmp_buf = {buffer[i * 4], buffer[i * 4 + 1], buffer[i * 4 + 2], buffer[i * 4 + 3]};
target[i] = ByteBuffer.wrap(tmp_buf).order(ByteOrder.LITTLE_ENDIAN).getFloat();
}
return target;
}
//float数组转byte数组
public byte[] FloatArray2byteArray(float[] buffer) {
byte[] targets = new byte[buffer.length * 4];
for (int i = 0; i < buffer.length; i++) {
int fbit = Float.floatToIntBits(buffer[i]);
targets[i * 4] = (byte) (fbit >> 0);
targets[i * 4 + 1] = (byte) (fbit >> 8);
targets[i * 4 + 2] = (byte) (fbit >> 16);
targets[i * 4 + 3] = (byte) (fbit >> 24);
}
return targets;
}
}
json文件
{
"ip" : "127.0.0.1",
"port" : "502",
"slaveNo" : "1",
"address" : "0",
"actualDatas" : [ {
"id" : 1,
"name" : "aBLineVoltage_PLC",
"description" : "ABLineVoltage_PLC",
"createTime" : "",
"insertTime" : "",
"varAddress" : "0",
"varType" : "Short",
"scale" : "0.1",
"value" : ""
}, {
"id" : 2,
"name" : "bCLineVoltage_PLC",
"description" : "BCLineVoltage_PLC",
"createTime" : "",
"insertTime" : "",
"varAddress" : "1",
"varType" : "Short",
"scale" : "0.1",
"value" : ""
}, {
"id" : 3,
"name" : "aCLineVoltage_PLC",
"description" : "ACLineVoltage_PLC",
"createTime" : "",
"insertTime" : "",
"varAddress" : "2",
"varType" : "Short",
"scale" : "0.1",
"value" : ""
}, {
"id" : 4,
"name" : "aPhaseVoltage_PLC",
"description" : "APhaseVoltage_PLC",
"createTime" : "",
"insertTime" : "",
"varAddress" : "3",
"varType" : "Short",
"scale" : "0.1",
"value" : ""
}, {
"id" : 5,
"name" : "bPhaseVoltage_PLC",
"description" : "BPhaseVoltage_PLC",
"createTime" : "",
"insertTime" : "",
"varAddress" : "4",
"varType" : "Short",
"scale" : "0.1",
"value" : ""
}, {
"id" : 6,
"name" : "cPhaseVoltage_PLC",
"description" : "CPhaseVoltage_PLC",
"createTime" : "",
"insertTime" : "",
"varAddress" : "5",
"varType" : "Short",
"scale" : "0.1",
"value" : ""
}, {
"id" : 7,
"name" : "aPhaseCurrent_PLC",
"description" : "APhaseCurrent_PLC",
"createTime" : "",
"insertTime" : "",
"varAddress" : "6",
"varType" : "Short",
"scale" : "0.1",
"value" : ""
}, {
"id" : 8,
"name" : "bPhaseCurrent_PLC",
"description" : "BPhaseCurrent_PLC",
"createTime" : "",
"insertTime" : "",
"varAddress" : "7",
"varType" : "Short",
"scale" : "0.1",
"value" : ""
}, {
"id" : 9,
"name" : "cPhaseCurrent_PLC",
"description" : "CPhaseCurrent_PLC",
"createTime" : "",
"insertTime" : "",
"varAddress" : "8",
"varType" : "Short",
"scale" : "1",
"value" : ""
}, {
"id" : 10,
"name" : "allActivePower_PLC",
"description" : "AllActivePower_PLC",
"createTime" : "",
"insertTime" : "",
"varAddress" : "9",
"varType" : "Short",
"scale" : "1",
"value" : ""
},
{
"id" : 11,
"name" : "aActivePower_PLC",
"description" : "AActivePower_PLC",
"createTime" : "",
"insertTime" : "",
"varAddress" : "10",
"varType" : "Short",
"scale" : "1",
"value" : ""
}, {
"id" : 12,
"name" : "bActivePower_PLC",
"description" : "BActivePower_PLC",
"createTime" : "",
"insertTime" : "",
"varAddress" : "11",
"varType" : "Short",
"scale" : "1",
"value" : ""
}, {
"id" : 13,
"name" : "cActivePower_PLC",
"description" : "CActivePower_PLC",
"createTime" : "",
"insertTime" : "",
"varAddress" : "12",
"varType" : "Short",
"scale" : "1",
"value" : ""
}, {
"id" : 14,
"name" : "allReactivePower_PLC",
"description" : "AllReactivePower_PLC",
"createTime" : "",
"insertTime" : "",
"varAddress" : "13",
"varType" : "Short",
"scale" : "1",
"value" : ""
}, {
"id" : 15,
"name" : "aReactivePower_PLC",
"description" : "AReactivePower_PLC",
"createTime" : "",
"insertTime" : "",
"varAddress" : "14",
"varType" : "Short",
"scale" : "1",
"value" : ""
}, {
"id" : 16,
"name" : "bReactivePower_PLC",
"description" : "BReactivePower_PLC",
"createTime" : "",
"insertTime" : "",
"varAddress" : "15",
"varType" : "Short",
"scale" : "1",
"value" : ""
}, {
"id" : 17,
"name" : "cReactivePower_PLC",
"description" : "CReactivePower_PLC",
"createTime" : "",
"insertTime" : "",
"varAddress" : "16",
"varType" : "Short",
"scale" : "1",
"value" : ""
}, {
"id" : 18,
"name" : "allPowerFactor_PLC",
"description" : "AllPowerFactor_PLC",
"createTime" : "",
"insertTime" : "",
"varAddress" : "17",
"varType" : "Short",
"scale" : "1",
"value" : ""
}, {
"id" : 19,
"name" : "aPowerFactor_PLC",
"description" : "APowerFactor_PLC",
"createTime" : "",
"insertTime" : "",
"varAddress" : "18",
"varType" : "Short",
"scale" : "1",
"value" : ""
}, {
"id" : 20,
"name" : "bPowerFactor_PLC",
"description" : "BPowerFactor_PLC",
"createTime" : "",
"insertTime" : "",
"varAddress" : "19",
"varType" : "Short",
"scale" : "1",
"value" : ""
},
{
"id" : 21,
"name" : "cPowerFactor_PLC",
"description" : "CPowerFactor_PLC",
"createTime" : "",
"insertTime" : "",
"varAddress" : "20",
"varType" : "Short",
"scale" : "0.1",
"value" : ""
}, {
"id" : 22,
"name" : "aBLineVoltage_Power",
"description" : "ABLineVoltage_Power",
"createTime" : "",
"insertTime" : "",
"varAddress" : "21",
"varType" : "Short",
"scale" : "0.1",
"value" : ""
}, {
"id" : 23,
"name" : "bCLineVoltage_Power",
"description" : "BCLineVoltage_Power",
"createTime" : "",
"insertTime" : "",
"varAddress" : "22",
"varType" : "Short",
"scale" : "0.1",
"value" : ""
}, {
"id" : 24,
"name" : "aCLineVoltage_Power",
"description" : "ACLineVoltage_Power",
"createTime" : "",
"insertTime" : "",
"varAddress" : "23",
"varType" : "Short",
"scale" : "0.1",
"value" : ""
}, {
"id" : 25,
"name" : "aPhaseVoltage_Power",
"description" : "APhaseVoltage_Power",
"createTime" : "",
"insertTime" : "",
"varAddress" : "24",
"varType" : "Short",
"scale" : "0.1",
"value" : ""
}, {
"id" : 26,
"name" : "bPhaseVoltage_Power",
"description" : "BPhaseVoltage_Power",
"createTime" : "",
"insertTime" : "",
"varAddress" : "25",
"varType" : "Short",
"scale" : "0.1",
"value" : ""
}, {
"id" : 27,
"name" : "cPhaseVoltage_Power",
"description" : "CPhaseVoltage_Power",
"createTime" : "",
"insertTime" : "",
"varAddress" : "26",
"varType" : "Short",
"scale" : "0.1",
"value" : ""
}, {
"id" : 28,
"name" : "aPhaseCurrent_Power",
"description" : "APhaseCurrent_Power",
"createTime" : "",
"insertTime" : "",
"varAddress" : "27",
"varType" : "Short",
"scale" : "0.1",
"value" : ""
}, {
"id" : 29,
"name" : "bPhaseCurrent_Power",
"description" : "BPhaseCurrent_Power",
"createTime" : "",
"insertTime" : "",
"varAddress" : "28",
"varType" : "Short",
"scale" : "0.1",
"value" : ""
}, {
"id" : 30,
"name" : "cPhaseCurrent_Power",
"description" : "CPhaseCurrent_Power",
"createTime" : "",
"insertTime" : "",
"varAddress" : "29",
"varType" : "Short",
"scale" : "1",
"value" : ""
},
{
"id" : 31,
"name" : "allActivePower_Power",
"description" : "AllActivePower_Power",
"createTime" : "",
"insertTime" : "",
"varAddress" : "30",
"varType" : "Short",
"scale" : "1",
"value" : ""
}, {
"id" : 32,
"name" : "aActivePower_Power",
"description" : "AActivePower_Power",
"createTime" : "",
"insertTime" : "",
"varAddress" : "31",
"varType" : "Short",
"scale" : "1",
"value" : ""
}, {
"id" : 33,
"name" : "bActivePower_Power",
"description" : "BActivePower_Power",
"createTime" : "",
"insertTime" : "",
"varAddress" : "32",
"varType" : "Short",
"scale" : "1",
"value" : ""
}, {
"id" : 34,
"name" : "cActivePower_Power",
"description" : "CActivePower_Power",
"createTime" : "",
"insertTime" : "",
"varAddress" : "33",
"varType" : "Short",
"scale" : "1",
"value" : ""
}, {
"id" : 35,
"name" : "allReactivePower_Power",
"description" : "AllReactivePower_Power",
"createTime" : "",
"insertTime" : "",
"varAddress" : "34",
"varType" : "Short",
"scale" : "1",
"value" : ""
}, {
"id" : 36,
"name" : "aReactivePower_Power",
"description" : "AReactivePower_Power",
"createTime" : "",
"insertTime" : "",
"varAddress" : "35",
"varType" : "Short",
"scale" : "1",
"value" : ""
}, {
"id" : 37,
"name" : "bReactivePower_Power",
"description" : "BReactivePower_Power",
"createTime" : "",
"insertTime" : "",
"varAddress" : "36",
"varType" : "Short",
"scale" : "1",
"value" : ""
}, {
"id" : 38,
"name" : "cReactivePower_Power",
"description" : "CReactivePower_Power",
"createTime" : "",
"insertTime" : "",
"varAddress" : "37",
"varType" : "Short",
"scale" : "1",
"value" : ""
}, {
"id" : 39,
"name" : "allPowerFactor_Power",
"description" : "AllPowerFactor_Power",
"createTime" : "",
"insertTime" : "",
"varAddress" : "38",
"varType" : "Short",
"scale" : "1",
"value" : ""
}, {
"id" : 40,
"name" : "aPowerFactor_Power",
"description" : "APowerFactor_Power",
"createTime" : "",
"insertTime" : "",
"varAddress" : "39",
"varType" : "Short",
"scale" : "1",
"value" : ""
},
{
"id" : 41,
"name" : "bPowerFactor_Power",
"description" : "BPowerFactor_Power",
"createTime" : "",
"insertTime" : "",
"varAddress" : "40",
"varType" : "Short",
"scale" : "1",
"value" : ""
}, {
"id" : 42,
"name" : "cPowerFactor_Power",
"description" : "CPowerFactor_Power",
"createTime" : "",
"insertTime" : "",
"varAddress" : "41",
"varType" : "Short",
"scale" : "1",
"value" : ""
}, {
"id" : 43,
"name" : "Var43",
"description" : "Short43",
"createTime" : "",
"insertTime" : "",
"varAddress" : "42",
"varType" : "Short",
"scale" : "1",
"value" : ""
}, {
"id" : 44,
"name" : "Var44",
"description" : "Short44",
"createTime" : "",
"insertTime" : "",
"varAddress" : "43",
"varType" : "Short",
"scale" : "1",
"value" : ""
}, {
"id" : 45,
"name" : "Var45",
"description" : "Short45",
"createTime" : "",
"insertTime" : "",
"varAddress" : "44",
"varType" : "Short",
"scale" : "1",
"value" : ""
}, {
"id" : 46,
"name" : "Var46",
"description" : "Short46",
"createTime" : "",
"insertTime" : "",
"varAddress" : "45",
"varType" : "Short",
"scale" : "1",
"value" : ""
}, {
"id" : 47,
"name" : "Var47",
"description" : "Short47",
"createTime" : "",
"insertTime" : "",
"varAddress" : "46",
"varType" : "Short",
"scale" : "1",
"value" : ""
}, {
"id" : 48,
"name" : "Var48",
"description" : "Short48",
"createTime" : "",
"insertTime" : "",
"varAddress" : "47",
"varType" : "Short",
"scale" : "1",
"value" : ""
}, {
"id" : 49,
"name" : "Var49",
"description" : "Short49",
"createTime" : "",
"insertTime" : "",
"varAddress" : "48",
"varType" : "Short",
"scale" : "1",
"value" : ""
}, {
"id" : 50,
"name" : "Var50",
"description" : "Short50",
"createTime" : "",
"insertTime" : "",
"varAddress" : "49",
"varType" : "Short",
"scale" : "1",
"value" : ""
},{
"id" : 51,
"name" : "Var51",
"description" : "Short51",
"createTime" : "",
"insertTime" : "",
"varAddress" : "50",
"varType" : "Short",
"scale" : "1",
"value" : ""
}, {
"id" : 52,
"name" : "Var52",
"description" : "Short52",
"createTime" : "",
"insertTime" : "",
"varAddress" : "51",
"varType" : "Short",
"scale" : "1",
"value" : ""
}, {
"id" : 53,
"name" : "Var53",
"description" : "Short53",
"createTime" : "",
"insertTime" : "",
"varAddress" : "52",
"varType" : "Short",
"scale" : "1",
"value" : ""
}, {
"id" : 54,
"name" : "Var54",
"description" : "Short54",
"createTime" : "",
"insertTime" : "",
"varAddress" : "53",
"varType" : "Short",
"scale" : "1",
"value" : ""
}, {
"id" : 55,
"name" : "Var55",
"description" : "Short55",
"createTime" : "",
"insertTime" : "",
"varAddress" : "54",
"varType" : "Short",
"scale" : "1",
"value" : ""
}, {
"id" : 56,
"name" : "Var56",
"description" : "Short56",
"createTime" : "",
"insertTime" : "",
"varAddress" : "55",
"varType" : "Short",
"scale" : "1",
"value" : ""
}, {
"id" : 57,
"name" : "Var57",
"description" : "Short57",
"createTime" : "",
"insertTime" : "",
"varAddress" : "56",
"varType" : "Short",
"scale" : "1",
"value" : ""
}, {
"id" : 58,
"name" : "Var58",
"description" : "Short58",
"createTime" : "",
"insertTime" : "",
"varAddress" : "57",
"varType" : "Short",
"scale" : "1",
"value" : ""
}, {
"id" : 59,
"name" : "Var59",
"description" : "Short59",
"createTime" : "",
"insertTime" : "",
"varAddress" : "58",
"varType" : "Short",
"scale" : "1",
"value" : ""
}, {
"id" : 60,
"name" : "Var60",
"description" : "Short60",
"createTime" : "",
"insertTime" : "",
"varAddress" : "59",
"varType" : "Short",
"scale" : "1",
"value" : ""
},
{
"id" : 61,
"name" : "Var61",
"description" : "Short61",
"createTime" : "",
"insertTime" : "",
"varAddress" : "60",
"varType" : "Short",
"scale" : "1",
"value" : ""
}, {
"id" : 62,
"name" : "Var62",
"description" : "Short62",
"createTime" : "",
"insertTime" : "",
"varAddress" : "61",
"varType" : "Short",
"scale" : "1",
"value" : ""
}, {
"id" : 63,
"name" : "Var63",
"description" : "Short63",
"createTime" : "",
"insertTime" : "",
"varAddress" : "62",
"varType" : "Short",
"scale" : "1",
"value" : ""
}, {
"id" : 64,
"name" : "Var64",
"description" : "Short64",
"createTime" : "",
"insertTime" : "",
"varAddress" : "63",
"varType" : "Short",
"scale" : "1",
"value" : ""
}, {
"id" : 65,
"name" : "Var65",
"description" : "Short65",
"createTime" : "",
"insertTime" : "",
"varAddress" : "64",
"varType" : "Short",
"scale" : "1",
"value" : ""
}, {
"id" : 66,
"name" : "Var66",
"description" : "Short66",
"createTime" : "",
"insertTime" : "",
"varAddress" : "65",
"varType" : "Short",
"scale" : "1",
"value" : ""
}, {
"id" : 67,
"name" : "Var67",
"description" : "Short67",
"createTime" : "",
"insertTime" : "",
"varAddress" : "66",
"varType" : "Short",
"scale" : "1",
"value" : ""
}, {
"id" : 68,
"name" : "Var68",
"description" : "Short68",
"createTime" : "",
"insertTime" : "",
"varAddress" : "67",
"varType" : "Short",
"scale" : "1",
"value" : ""
}, {
"id" : 69,
"name" : "Var69",
"description" : "Short69",
"createTime" : "",
"insertTime" : "",
"varAddress" : "68",
"varType" : "Short",
"scale" : "1",
"value" : ""
}, {
"id" : 70,
"name" : "Var70",
"description" : "Short70",
"createTime" : "",
"insertTime" : "",
"varAddress" : "69",
"varType" : "Short",
"scale" : "1",
"value" : ""
}
]
}