whyclj
2020-09-19 a12d2836a6c08cb457afb0abdd89b734e0cbb03d
添加设备连接状态记录查询
7个文件已修改
104 ■■■■■ 已修改文件
Motor_MonitorServer/src/com/modbus/data/MyModbusMaster.java 49 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Motor_MonitorServer/src/com/modbus/data/MyModbusUtils.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Motor_MonitorServer/src/com/motor/conn/Motor_SocketClient_Thread.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Motor_MonitorServer/src/com/motor/conn/Motor_Task_SQL.java 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Motor_MonitorServer/src/com/sql/Sql_Mysql.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Motor_MonitorServer/src/com/version_inf/version_inf.txt 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Motor_MonitorServer/src/main/main_MonitorServer_Motor.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Motor_MonitorServer/src/com/modbus/data/MyModbusMaster.java
@@ -1,18 +1,17 @@
package com.modbus.data;
import com.serotonin.modbus4j.BatchRead;
import com.serotonin.modbus4j.BatchResults;
import com.serotonin.modbus4j.ModbusMaster;
import com.serotonin.modbus4j.code.DataType;
import com.serotonin.modbus4j.ip.IpParameters;
public class MyModbusMaster {
    public final static int SLAVEID_DEFAULT = 2;
    
    public final static int MAX_ERROR_COUNT = 2;        //最大连续错误计数
    public final static int LOSE_CONNECT_COUNT = 20;    //通讯中断最大计数
    private ModbusMaster master;
    private int errcount;                                //错误计数    错误连续超过三个时重新获取master
    private int totalerr;                                //总的错误计数            //用于判别设备是否掉线
    private int totalerr = 31;                            //总的错误计数[默认失去连接]    用于判别设备是否掉线
    private String target_ip;                            //目标ip
    private int slaveId;                                //设备ID
    
@@ -86,6 +85,13 @@
        
    }
    
    public int getConnectState() {
        if(this.totalerr < LOSE_CONNECT_COUNT) {
            return 1;
        }
        return 0;
    }
    public int getTotalerr() {
        return totalerr;
    }
@@ -127,40 +133,5 @@
    public String toString() {
        return "MyModbusMaster [SLAVEID_DEFAULT=" + SLAVEID_DEFAULT + ", master=" + master + ", errcount=" + errcount
                + ", target_ip=" + target_ip + ", slaveId=" + slaveId + "]";
    }
    public static void main(String[] args) {
        MyModbusMaster master = new MyModbusMaster("192.168.2.22", 2);
        //float t1 = MyModbusUtils.readShortToFloat(MyModbusUtils.readHoldingRegister(1119, DataType.TWO_BYTE_INT_SIGNED, master));
        BatchRead<Integer> batch = new BatchRead<Integer>();
        batch.addLocator(0,MyModbusUtils.createBaseLocator(58, DataType.TWO_BYTE_INT_SIGNED, master));                //加载功率给定        58
        batch.addLocator(1,MyModbusUtils.createBaseLocator(364, DataType.TWO_BYTE_INT_SIGNED, master));                //加载转矩给定        364
        batch.addLocator(2,MyModbusUtils.createBaseLocator(366, DataType.TWO_BYTE_INT_UNSIGNED_SWAPPED, master));    //加载电机转速限制    366
        batch.addLocator(3,MyModbusUtils.createBaseLocator(367, DataType.TWO_BYTE_INT_SIGNED, master));                //加载电机转矩限制    367
        batch.addLocator(4,MyModbusUtils.createBaseLocator(505, DataType.TWO_BYTE_INT_UNSIGNED, master));            //加载步长            505
        batch.addLocator(5,MyModbusUtils.createBaseLocator(1006, DataType.TWO_BYTE_INT_UNSIGNED, master));            //加载电机水冷进水风温1006
        batch.addLocator(6,MyModbusUtils.createBaseLocator(1008, DataType.TWO_BYTE_INT_UNSIGNED, master));            //加载电机水冷出水风温1008
        batch.addLocator(7,MyModbusUtils.createBaseLocator(1096, DataType.TWO_BYTE_INT_SIGNED, master));            //加载电机电流        1096
        batch.addLocator(8,MyModbusUtils.createBaseLocator(1099, DataType.TWO_BYTE_INT_SIGNED, master));            //加载电机功率        1099
        batch.addLocator(9,MyModbusUtils.createBaseLocator(1101, DataType.TWO_BYTE_INT_SIGNED, master));            //加载电机转速        1101
        batch.addLocator(10,MyModbusUtils.createBaseLocator(1103, DataType.TWO_BYTE_INT_SIGNED, master));            //加载电机电压        1103
//        batch.addLocator(11,MyModbusUtils.createBaseLocator(1119, DataType.TWO_BYTE_INT_SIGNED, master));            //加载电机绕组温度1    1119
//        batch.addLocator(12,MyModbusUtils.createBaseLocator(1120, DataType.TWO_BYTE_INT_SIGNED, master));            //加载电机绕组温度2    1120
//        batch.addLocator(13,MyModbusUtils.createBaseLocator(1121, DataType.TWO_BYTE_INT_SIGNED, master));            //加载电机绕组温度3    1121
//        batch.addLocator(14,MyModbusUtils.createBaseLocator(1122, DataType.TWO_BYTE_INT_SIGNED, master));            //加载电机轴承温度1    1122
//        batch.addLocator(15,MyModbusUtils.createBaseLocator(1123, DataType.TWO_BYTE_INT_SIGNED, master));            //加载电机轴承温度2    1123
//        batch.addLocator(16,MyModbusUtils.createBaseLocator(1250, DataType.TWO_BYTE_INT_SIGNED, master));            //加载电机出口温度    1250
//        batch.addLocator(17,MyModbusUtils.createBaseLocator(1124, DataType.TWO_BYTE_INT_SIGNED, master));            //加载电机进口温度    1124
        batch.addLocator(18,MyModbusUtils.createBaseLocator(1251, DataType.TWO_BYTE_INT_SIGNED, master));            //加载电机转矩        1251
        batch.addLocator(19,MyModbusUtils.createBaseLocator(5680, master));                                            //加载电机启动        5680
        batch.addLocator(20,MyModbusUtils.createBaseLocator(5681, master));                                            //加载电机停机        5681
        batch.addLocator(21,MyModbusUtils.createBaseLocator(8000, master));                                            //加载            8000
        batch.addLocator(22,MyModbusUtils.createBaseLocator(8001, master));                                            //减载            8001
        batch.addLocator(23,MyModbusUtils.createBaseLocator(8040, master));                                            //手动加载            8040
        batch.addLocator(24,MyModbusUtils.createBaseLocator(16005, master));                                        //加载电机紧停        16005
        batch.addLocator(25,MyModbusUtils.createBaseLocator(17082, master));                                        //加载电机风机状态    17082
        BatchResults<Integer> res = MyModbusUtils.readMutilRegisters(batch, master);
        System.out.println(res.getValue(0));
    }
}
Motor_MonitorServer/src/com/modbus/data/MyModbusUtils.java
@@ -147,10 +147,18 @@
 
    public static BatchResults<Integer> readMutilRegisters(BatchRead<Integer> batch,MyModbusMaster master){
        batch.setContiguousRequests(false);
        boolean isSuccess = true;
        try {
            return master.getMaster().send(batch);
        } catch (ModbusTransportException | ErrorResponseException e) {
            e.printStackTrace();
            isSuccess = false;
        } finally {
            if(isSuccess) {
                master.clearError();
            }else {
                master.addErrorCount();
            }
        }
        return null;
    }
Motor_MonitorServer/src/com/motor/conn/Motor_SocketClient_Thread.java
@@ -83,6 +83,8 @@
                    //System.err.println((end.getTime()-start.getTime()));
                }
                //System.err.println(Com.getDateTimeFormat(new Date(), Com.DTF_YMDhms));
                Motor_Task_SQL.insertOrUpdateMotor_ControlTable(conn_pool, control);
                if(runCount%10 == 0) {
                    //更新当前设备ip
                    master.setTarget_ip(motor.motor_ip);
Motor_MonitorServer/src/com/motor/conn/Motor_Task_SQL.java
@@ -7,6 +7,7 @@
import java.util.List;
import com.base.Com;
import com.modbus.data.MyModbusMaster;
import com.modbus.historydata.Motor_HistoryData_Record_Thread_SQL;
import com.motor.alarm.Motor_Alarm;
import com.motor.data.Load_motor_state;
@@ -513,4 +514,37 @@
            sql.close_con();
        }
    }
    /**
     *     插入或更新当前设备的连接状态
     * @param pool
     * @param dev_id
     * @param master
     */
    public static void insertOrUpdateDeviceConnectState(MysqlConnPool pool,int dev_id,MyModbusMaster master) {
        String sql_str_sel = " SELECT * FROM "+Sql_Mysql.Tb_Device_ConnectState+" WHERE dev_id = " + dev_id;
        String sql_str_ins = " INSERT INTO "+Sql_Mysql.Tb_Device_ConnectState+"(dev_id,connect_en,record_time) values("+dev_id+","+master.getConnectState()+",'"+Com.getDateTimeFormat(new Date(), Com.DTF_YMDhms)+"');";
        String sql_str_upd = " UPDATE "+Sql_Mysql.Tb_Device_ConnectState+" SET connect_en = "+master.getConnectState()+",record_time='"+Com.getDateTimeFormat(new Date(), Com.DTF_YMDhms)+"' WHERE dev_id = " + dev_id;
        Sql_Mysql sql = new Sql_Mysql(pool.getConn());
        ResultSet res = null;
        try {
            res = sql.sqlMysqlQuery(sql_str_sel);
            if(res.next()) {
                sql.sqlMysqlExecute(sql_str_upd);
            }else {
                sql.sqlMysqlExecute(sql_str_ins);
            }
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            if(res != null) {
                try {
                    res.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
                sql.close_con();
            }
        }
    }
}
Motor_MonitorServer/src/com/sql/Sql_Mysql.java
@@ -33,6 +33,8 @@
    final public static String DB_DynamicSystem = "`db_dynamicsystem`";
    final public static String DB_Elemachinery = "`db_elemachinery`";
    final public static String DB_Motor_Realhistory = "`db_motor_realhistory`";
    final public static String DB_Electric2MWSystem = "`db_electric2mwsystem`";
    //--------------------------------------------------------------------------------------------//
    public final static String TB_HardDevSmsState = "tb_hard_dev_sms_state";
    //--------------------------------------------------------------------------------------------//
@@ -169,6 +171,8 @@
    public final static String Tb_Devalarm_History = DB_Elemachinery + ".tb_devalaram_history";                //电机历史告警记录表
    public final static String Tb_Motor_Readdata = DB_Motor_Realhistory + ".tb_motor_readdata_";            //电机历史实时记录表
    
    public final static String Tb_Device_ConnectState = DB_Electric2MWSystem+".tb_device_connectstate";                //设备通讯状态表
    //--------------------------------------------------------------------------------------------//
    //--------------------------------------------------------------------------------------------//
    public Connection mysql_con;
Motor_MonitorServer/src/com/version_inf/version_inf.txt
@@ -2,4 +2,7 @@
    电机加载通讯程序
    
V1.102 at 2020-08-05 lijun
    添加历史实时数据记录功能
    添加历史实时数据记录功能
V1.202 at 2020-09-19 lijun
    添加设备连接状态记录功能
Motor_MonitorServer/src/main/main_MonitorServer_Motor.java
@@ -22,7 +22,7 @@
    /**************************************************************************/
    /**************************************************************************/
    public final static boolean app_debug = false;
    public final static double m_VersionNum = 1.102;
    public final static double m_VersionNum = 1.202;
    public final static String m_Version = "Welcome To Use main_MonitorServer_Motor V" 
                                            + m_VersionNum ;
    /**************************************************************************/