package com.data.Comm;
|
|
import com.data.Central_Control;
|
import com.data.Central_RT_Data;
|
import com.data.Central_ST_Data;
|
import com.data.Motor_inf;
|
import com.modbus.data.MyModbusMaster;
|
import com.modbus.data.MyModbusUtils;
|
import com.serotonin.modbus4j.BatchRead;
|
import com.serotonin.modbus4j.BatchResults;
|
import com.sql.MysqlConnPool;
|
|
public class Central_Data_SocketClient_Thread implements Runnable{
|
public static int Dev_Type_LineScreen = 10004; //½ø³öÏ߯Á
|
public static int Dev_Type_DcDistribute = 10005; //Ö±Á÷Ö÷Åä
|
|
private MysqlConnPool pool;
|
private Motor_inf motor;
|
private MyModbusMaster master;
|
|
public Central_Data_SocketClient_Thread(MysqlConnPool pool, Motor_inf motor) {
|
this.motor = motor;
|
this.pool = pool;
|
|
master = new MyModbusMaster(motor.getDev_ip(), MyModbusMaster.SLAVEID_DEFAULT);
|
}
|
|
@Override
|
public void run() {
|
int run_count = 0;
|
while(true) {
|
try {
|
if(run_count % 2 == 0) {
|
if(Dev_Type_DcDistribute == motor.getDev_id()) {
|
//¶ÁȡֱÁ÷Ö÷ÅäÐÅÏ¢
|
readDcDistributinf(motor.stdata);
|
Central_DataParsing_Thread_SQL.insertOrUpdateTb_Central_Monitor_Sys_St(pool, motor.stdata);
|
}else {
|
//¶ÁÈ¡½ø³öÏ߯ÁÊý¾ÝÐÅÏ¢
|
readLineScreeninf(motor.rtdata);
|
Central_DataParsing_Thread_SQL.insertOrUpdateTb_Central_Monitor_Sys_Rt(pool, motor.rtdata);
|
}
|
}
|
|
Central_DataParsing_Thread_SQL.queryTb_Central_Monitor_Sys_Control(pool, motor.control);
|
if(motor.control.control_en) {
|
writeControlInf(motor.control);
|
|
Central_DataParsing_Thread_SQL.updateTb_Central_Monitor_Sys_Control(pool,motor.control);
|
}
|
|
motor.conn_state = master.getConnectState();
|
if(run_count > 999909) {
|
run_count = 0;
|
}
|
run_count ++;
|
Thread.sleep(200);
|
} catch (Exception e) {
|
e.printStackTrace();
|
}
|
}
|
}
|
|
/**
|
* ¿ØÖÆÖ¸¶¨µÄ½Úµã
|
* @param control
|
*/
|
private void writeControlInf(Central_Control control) {
|
|
switch(control.getOp_cmd()) {
|
case Central_Data_ComBase.CMD_SwitchClose_1st:{
|
//
|
if(MyModbusUtils.writeCoil(1, true, master)) {
|
control.setOp_cmd(Central_Data_ComBase.CMD_SwitchClose_1st_ACK);
|
}
|
}break;
|
case Central_Data_ComBase.CMD_SwitchOpen_1st:{
|
if(MyModbusUtils.writeCoil(2, true, master)) {
|
control.setOp_cmd(Central_Data_ComBase.CMD_SwitchOpen_1st_ACK);
|
}
|
}break;
|
case Central_Data_ComBase.CMD_SwitchClose_2st:{
|
if(MyModbusUtils.writeCoil(3, true, master)) {
|
control.setOp_cmd(Central_Data_ComBase.CMD_SwitchClose_2st_ACK);
|
}
|
}break;
|
case Central_Data_ComBase.CMD_SwitchOpen_2st:{
|
if(MyModbusUtils.writeCoil(4, true, master)) {
|
control.setOp_cmd(Central_Data_ComBase.CMD_SwitchOpen_2st_ACK);
|
}
|
}break;
|
case Central_Data_ComBase.CMD_SwitchClose_3st:{
|
if(MyModbusUtils.writeCoil(5, true, master)) {
|
control.setOp_cmd(Central_Data_ComBase.CMD_SwitchClose_3st);
|
}
|
}break;
|
case Central_Data_ComBase.CMD_SwitchOpen_3st:{
|
if(MyModbusUtils.writeCoil(6, true, master)) {
|
control.setOp_cmd(Central_Data_ComBase.CMD_SwitchOpen_3st_ACK);
|
}
|
}break;
|
case Central_Data_ComBase.CMD_SwitchClose_4st:{
|
if(MyModbusUtils.writeCoil(7, true, master)) {
|
control.setOp_cmd(Central_Data_ComBase.CMD_SwitchClose_4st_ACK);
|
}
|
}break;
|
case Central_Data_ComBase.CMD_SwitchOpen_4st:{
|
if(MyModbusUtils.writeCoil(8, true, master)) {
|
control.setOp_cmd(Central_Data_ComBase.CMD_SwitchOpen_4st_ACK);
|
}
|
}break;
|
case Central_Data_ComBase.CMD_SwitchClose_5st:{
|
if(MyModbusUtils.writeCoil(9, true, master)) {
|
control.setOp_cmd(Central_Data_ComBase.CMD_SwitchClose_5st_ACK);
|
}
|
}break;
|
case Central_Data_ComBase.CMD_SwitchOpen_5st:{
|
if(MyModbusUtils.writeCoil(10, true, master)) {
|
control.setOp_cmd(Central_Data_ComBase.CMD_SwitchOpen_5st_ACK);
|
}
|
}break;
|
}
|
}
|
|
/**
|
* ¶ÁȡֱÁ÷Ö÷ÅäÐÅÏ¢
|
* @param stdata
|
*/
|
public void readDcDistributinf(Central_ST_Data stdata) {
|
BatchRead<Integer> batch = stdata.createBatchRead(master);
|
BatchResults<Integer> res = MyModbusUtils.readMutilRegisters(batch, master);
|
stdata.putBatchResult(res);
|
}
|
|
/**
|
* ¶ÁÈ¡½ø³öÏ߯ÁÐÅÏ¢
|
* @param stdata
|
*/
|
public void readLineScreeninf(Central_RT_Data rtdata) {
|
BatchRead<Integer> batch = rtdata.createBatchRead(master);
|
BatchResults<Integer> res = MyModbusUtils.readMutilRegisters(batch, master);
|
rtdata.putBatchResult(res);
|
}
|
|
}
|