Administrator
2024-07-24 f844554d994465a14e93b0334c2677a37876d7eb
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/Server.java
@@ -130,10 +130,29 @@
      try {
         ///////////////
         //基本配置
         ServerProperties.orgTag = this.conf.getSetAttrTxt(this.doc, "config.base", "orgTag", null, false, null) ;
         if(ServerProperties.orgTag==null || ServerProperties.orgTag.trim().equals("")){
            throw new Exception("机构tag不能为空") ;
         }
         ServerProperties.isLowPower = conf.getSetAttrBoolean(doc, "config.base", "isLowPower", null, null) ; 
         if(ServerProperties.isLowPower == null){
            ServerProperties.isLowPower = false ;
         }
         String onlyDealRtus = conf.getSetAttrTxt(doc, "config.base", "onlyDealRtus", null, true, null) ;
         if(onlyDealRtus == null || onlyDealRtus.trim().equals("")){
            ServerProperties.onlyDealRtusTest = false ;
         }else{
            onlyDealRtus = onlyDealRtus.replaceAll(",", ",") ;
            onlyDealRtus = onlyDealRtus.replaceAll(" ", "") ;
            ServerProperties.onlyDealRtus = onlyDealRtus.split(",") ;
            if(ServerProperties.onlyDealRtus != null && ServerProperties.onlyDealRtus.length > 0){
               ServerProperties.onlyDealRtusTest = true ;
            }else{
               ServerProperties.onlyDealRtusTest = false ;
            }
         }
         //在支持多通信协议时,只有RTU上线了,才能识别出该RTU实际用的通信协议,进而用此协议解析上行数据及构造下行命令。
         //如果RTU未曾上线(通信中间件启动后该RTU未曾上线),那么在向它发送下行命令时,不能判断出其采用的协议,也不能构造命令,尤其是低功耗情况下,不上线是正常现象。
         // 当只有一个协议情况下,在RTU未曾上线时,也能用此协议构造命令并缓存下来,尤其适合低功耗情况。
@@ -147,11 +166,11 @@
         //针对一个RTU,下发命令的时间间隔
         ServerProperties.commandSendInterval = conf.getSetAttrPlusInt(doc, "config.base", "commandSendInterval", null, 1, 40, null) * 1000L ;
         //命令已经发送达最大次数,仍未收到命令结果,需要在缓存继续等待,其等待最大时长
         ServerProperties.cachWaitResultTimeout = conf.getSetAttrPlusInt(doc, "config.base", "cachWaitResultTimeout", null, 10, 60, null) * 1000L ;
         ServerProperties.cachWaitResultTimeout = conf.getSetAttrPlusInt(doc, "config.base", "cachWaitResultTimeout", null, 10, 360, null) * 1000L ;
         //不在线缓存的命令最大缓存时长
         ServerProperties.offLineCachTimeout = conf.getSetAttrPlusInt(doc, "config.base", "offLineCachTimeout", null, 15, 172800, null) * 1000L ;
         //TCP上行数据时刻缓存时长,当达到时长时,TCP上行数据时刻被清空,采用TCP上行数据时刻目的是,阻止上数据同时下发数据,因为RTU处理不过来
         ServerProperties.lastUpDataTimeLive = conf.getSetAttrPlusInt(doc, "config.base", "lastUpDataTimeLive", null, 0, 5, null) * 1000L ;
         ServerProperties.lastUpDataTimeLive = conf.getSetAttrPlusInt(doc, "config.base", "lastUpDataTimeLive", null, 0, 5000, null) * 1L ;
         //数据库数据id生成器的id后缀,0是默认的后缀,一般web系统应用,数据中间件id后缀大于等于1
         ServerProperties.dbDataIdSuffix = conf.getSetAttrInt(doc, "config.base", "dbDataIdSuffix", null, 0, 99, null);
         //上下行数据缓存队列中缓存数据个数的报警量,这个与现实项目所接水表数相关
@@ -161,13 +180,19 @@
         if(ServerProperties.cacheUpDownDataMaxCount <= ServerProperties.cacheUpDownDataWarnCount){
            throw new Exception("cacheUpDownDataMaxCount必须大于cacheUpDownDataWarnCount") ;
         }
         //没有上行数据的分钟数,达到这个分钟数,认为RTU断网了,取值范围是2_100
         //没有上行数据的分钟数,达到这个分钟数,认为RTU断网了,取值范围是2-100
         ServerProperties.disconnectedByNoUpDataMinutes =  0L + conf.getSetAttrPlusInt(doc, "config.base", "disconnectedByNoUpDataMinutes", null, 1, 100, null) ;
         if(ServerProperties.disconnectedByNoUpDataMinutes < 1 || ServerProperties.disconnectedByNoUpDataMinutes > 100){
            throw new Exception("disconnectedByNoUpDataMinutes取值必须是1~100") ;
         }
         ServerProperties.disconnectedByNoUpDataMinutes = ServerProperties.disconnectedByNoUpDataMinutes * 60 * 1000 ;
         //工作报太频繁,N次上报处理1次,取值范围是1-100
         ServerProperties.workReportDealOneByTimes =  conf.getSetAttrPlusInt(doc, "config.base", "workReportDealOneByTimes", null, 1, 100, null) ;
         if(ServerProperties.workReportDealOneByTimes < 1 || ServerProperties.workReportDealOneByTimes > 100){
            throw new Exception("workReportDealOneByTimes取值必须是1~100") ;
         }
         //设置ID生成器的后缀
         IDLongGenerator.setSuffix(ServerProperties.dbDataIdSuffix.intValue());