pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/resources/config.xml
@@ -1,74 +1,88 @@
<?xml version="1.0" encoding="UTF-8"?>
<config>
      <server name="通信中间件" showStartInfo="true" company="http://www.dyjs.com"/>
      <!--
      基本配置
      isLowPower: 是否为低功耗
      onlyOneProtocol:在支持多通信协议时,只有RTU上线了,才能识别出该RTU实际用的通信协议,进而用此协议解析上行数据及构造下行命令。
                    如果RTU未曾上线(通信中间件启动后该RTU未曾上线),那么在向它发送下行命令时,不能判断出其采用的协议,也不能构造命令,尤其是低功耗情况下,不上线是正常现象。
                    当只有一个协议情况下,在RTU未曾上线时,也能用此协议构造命令并缓存下来,尤其适合低功耗情况。
                 onlyOneProtocol=true: 通信中间件当前只有一个协议
      downComandMaxResendTimes: 下行命令允许发送的最大次数X,即允许重发X-1
      commandSendInterval: 针对一个RTU,下发命令的时间间隔(秒)
      cachWaitResultTimeout: 命令已经发送达最大次数,仍未收到命令结果,需要在缓存继续等待,其等待最大时长(秒),本系统RTU,对于开关泵命令,其先执行开关泵报,然后再进行命令应答,所以此值 要大一些
      offLineCachTimeout: 不在线缓存的命令最大缓存时长(秒)
      lastUpDataTimeLive: TCP上行数据时刻缓存时长(秒),当达到时长时,TCP上行数据时刻被清空,采用TCP上行数据时刻目的是,阻止上行数据同时下发数据,因为RTU处理不过来(经初次实验,1秒还是有问题,2秒无问题)
      dbDataIdSuffix:数据库数据id生成器的id后缀,0是默认的后缀,一般web系统应用,数据中间件id后缀大于等于1
      cacheUpDownDataWarnCount:上下行数据缓存队列中缓存数据个数的报警量,这个与现实项目所接水表数相关
      cacheUpDownDataMaxCount:上下行数据缓存队列中缓存数据个数的最大值,这个与现实项目所接水表数相关
       -->
      <base
   <server name="通信中间件" showStartInfo="true" company="http://www.dyjs.com"/>
   <!--
    基本配置
    orgTag 机构tag(对应机构tag,和数据源后缀)
    isLowPower: 是否为低功耗
    onlyDealRtus:只处理指定RTU地址设备,其他设备数据丢弃,多个RTU地址用英文逗号隔开,
    onlyOneProtocol:在支持多通信协议时,只有RTU上线了,才能识别出该RTU实际用的通信协议,进而用此协议解析上行数据及构造下行命令。
                     如果RTU未曾上线(通信中间件启动后该RTU未曾上线),那么在向它发送下行命令时,不能判断出其采用的协议,也不能构造命令,尤其是低功耗情况下,不上线是正常现象。
                     当只有一个协议情况下,在RTU未曾上线时,也能用此协议构造命令并缓存下来,尤其适合低功耗情况。
    onlyOneProtocol=true: 通信中间件当前只有一个协议
    downComandMaxResendTimes: 下行命令允许发送的最大次数X,即允许重发X-1
    commandSendInterval: 针对一个RTU,下发命令的时间间隔(秒)
    cachWaitResultTimeout: 命令已经发送达最大次数,仍未收到命令结果,需要在缓存继续等待,其等待最大时长(秒),本系统RTU,对于开关泵命令,其先执行开关泵报,然后再进行命令应答,所以此值 要大一些
    offLineCachTimeout: 不在线缓存的命令最大缓存时长(秒)
    lastUpDataTimeLive: TCP上行数据时刻缓存时长(毫秒),当达到时长时,TCP上行数据时刻被清空,采用TCP上行数据时刻目的是,阻止上行数据同时下发数据,因为RTU处理不过来(经初次实验,1秒还是有问题,2秒无问题)
    dbDataIdSuffix:数据库数据id生成器的id后缀,0是默认的后缀,一般web系统应用,数据中间件id后缀大于等于1
    cacheUpDownDataWarnCount:上下行数据缓存队列中缓存数据个数的报警量,这个与现实项目所接水表数相关
    cacheUpDownDataMaxCount:上下行数据缓存队列中缓存数据个数的最大值,这个与现实项目所接水表数相关
    disconnectedByNoUpDataMinutes:没有上行数据的分钟数,达到这个分钟数,认为RTU断网了,取值范围是2-100
    workReportDealOneByTimes: 工作报太频繁,N次上报处理1次,取值范围是1-100
    intakeAlarmLossMinValue: 触发发送钉钉报警消息的取水口日漏损量的最小值(包括但除0.0外)(小数)
    sendDingDingAlarmMsInterval: 有报警发生时,向钉钉发送消息的间隔时长(分钟)
     -->
   <base
         orgTag="sp"
         isLowPower="false"
         onlyOneProtocol="true"
         onlyDealRtus=""
         onlyOneProtocol="false"
         downComandMaxResendTimes="1"
         commandSendInterval="3"
         cachWaitResultTimeout="60"
         commandSendInterval="2"
         cachWaitResultTimeout="120"
         offLineCachTimeout="86400"
         lastUpDataTimeLive="1"
         lastUpDataTimeLive="500"
         dbDataIdSuffix="0"
         cacheUpDownDataWarnCount="100000"
         cacheUpDownDataMaxCount="110000"
      />
      <!--
      centerAddr: 中心地址,当前,centerAddr未用到
      synchroRtuClock: 是否对RTU校时
      synchroRtuClockTimepieces:当RTU与服务器时钟相差一定毫秒(配置文件是秒钟)后,进行校时
       -->
      <protocol
         disconnectedByNoUpDataMinutes="3"
         workReportDealOneByTimes="5"
         intakeAlarmLossMinValue="1.0"
         sendDingDingAlarmMsInterval="60"
   />
   <!--
    2024-08-22 此配置暂时未应用
    centerAddr: 中心地址,当前,centerAddr未用到
    synchroRtuClock: 是否对RTU校时
    synchroRtuClockTimepieces:当RTU与服务器时钟相差一定毫秒(配置文件是秒钟)后,进行校时
     -->
   <protocol
         centerAddr="1"
         synchroRtuClock="true"
         synchroRtuClockTimepieces="300000"
      />
   />
      <!-- 软件升级 -->
      <updateRtuSoft enable="true">
         <soft1 enable="true" oldVersionName="meter_v2_0,meter_v1_0" >
            <newVersion newVersionName="meter_v3_0" file="rtuSoft/meter_v3_0.txt"></newVersion>
         </soft1>
         <!--
         <soft2 enable="false" oldVersionName="rtu_v1_0,rtu_v2_0,rtu_v3_0" >
            <newVersion newVersionName="rtu_v4_0" file="rtuSoft/rtu_v4_0.txt"></newVersion>
         </soft2>
          -->
      </updateRtuSoft>
      <!--
      支持模块
      短工作时长线程池,线程负责用时较短的工作任务
      short_maxThread: 池中最大线程数为所有CPU核数+1(short池与long池各分一半),若为-1,不受限制 ,设置为0,表示不启动线程池
      short_minThread: 池中最小线程数,若为-1,不受限制,设置为0,表示不启动线程池
      short_freeTimeout: 线程数空闲时长,若池中线程数量大于minThread,且有的线程空闲时长超过freeTimeout,则清除该线程,为了不清除,把minThread与maxThread设置相等
      short_busyTimeout:线程不间断工作时长(单位为秒)超时限,认为线程已经了崩溃,将强制清除,短工作时长设置为5秒
      长工作时长线程池,线程负责用时较长的工作任务,例如数据库存取操作
      long_maxThread: 池中最大线程数为所有CPU核数+1(short池与long池各分一半),若为-1,不受限制,设置为0,表示不启动线程池
      long_minThread: 池中最小线程数,若为-1,不受限制,设置为0,表示不启动线程池
      long_freeTimeout: 线程数空闲时长,若池中线程数量大于minThread,且有的线程空闲时长超过freeTimeout,则清除该线程
      long_busyTimeout:线程不间断工作时长(单位为秒)超时限,若为-1,不受限制
      enableThreadPool:是否启用线程池
       -->
      <support
   <!-- 2024-10-08 此配置暂时未应用
     软件升级 -->
   <updateRtuSoft enable="true">
      <soft1 enable="true" oldVersionName="meter_v2_0,meter_v1_0" >
         <newVersion newVersionName="meter_v3_0" file="rtuSoft/meter_v3_0.txt"></newVersion>
      </soft1>
      <!--
        <soft2 enable="false" oldVersionName="rtu_v1_0,rtu_v2_0,rtu_v3_0" >
            <newVersion newVersionName="rtu_v4_0" file="rtuSoft/rtu_v4_0.txt"></newVersion>
        </soft2>
         -->
   </updateRtuSoft>
   <!--
    支持模块
    短工作时长线程池,线程负责用时较短的工作任务
    short_maxThread: 池中最大线程数为所有CPU核数+1(short池与long池各分一半),若为-1,不受限制 ,设置为0,表示不启动线程池
    short_minThread: 池中最小线程数,若为-1,不受限制,设置为0,表示不启动线程池
    short_freeTimeout: 线程数空闲时长,若池中线程数量大于minThread,且有的线程空闲时长超过freeTimeout,则清除该线程,为了不清除,把minThread与maxThread设置相等
    short_busyTimeout:线程不间断工作时长(单位为秒)超时限,认为线程已经了崩溃,将强制清除,短工作时长设置为5秒
    长工作时长线程池,线程负责用时较长的工作任务,例如数据库存取操作
    long_maxThread: 池中最大线程数为所有CPU核数+1(short池与long池各分一半),若为-1,不受限制,设置为0,表示不启动线程池
    long_minThread: 池中最小线程数,若为-1,不受限制,设置为0,表示不启动线程池
    long_freeTimeout: 线程数空闲时长,若池中线程数量大于minThread,且有的线程空闲时长超过freeTimeout,则清除该线程
    long_busyTimeout:线程不间断工作时长(单位为秒)超时限,若为-1,不受限制
    enableThreadPool:是否启用线程池
     -->
   <support
         short_maxThread="6"
         short_minThread="6"
         short_freeTimeout="60"
@@ -78,56 +92,57 @@
         long_freeTimeout="60"
         long_busyTimeout="-1"
         enableThreadPool="true"
      />
      <!--
      资源模块
      rtuLogDir:RTU日志文件存储目录(相对目录)
      rtuLogFileMaxSize:RTU日志文件最大字节数(KB)
      rtuLogFileMaxCount:RTU日志文件最大文件数
      monitorInterval:Rtu状态监视间隔(分钟)
      saveDbInterval:Rtu状态存数据库间隔(分钟)
       -->
      <resource
   />
   <!--
    资源模块
    rtuLogDir:RTU日志文件存储目录(相对目录)
    rtuLogFileMaxSize:RTU日志文件最大字节数(B)
    rtuLogFileMaxCount:RTU日志文件最大文件数
    monitorInterval:Rtu状态监视间隔(分钟)
    saveDbInterval:Rtu状态存数据库间隔(分钟)
     -->
   <resource
         rtuLogDir="rtuLogs/"
         rtuLogFileMaxSize="1000000"
         rtuLogFileMaxSize="100000"
         rtuLogFileMaxCount="2"
         monitorInterval="2"
         saveDbInterval="10"
      />
      <!--
      port:rmi服务端口号
      context:rmi服务上下文
       -->
      <rmi enable="true"
         port="65400"
         context="rtuMw"
      />
      <!--
      sleepBigBusy:主线程大忙时每次执行间隔时长(毫秒)
      sleepSmallBusy:主线程小忙时每次执行间隔时长(毫秒)
      queueWarnSize: 缓存队列节点数警告数量
      queueMaxSize: 缓存队列节点数最大数量
       -->
      <core
   />
   <!--
    2024-08-22 此配置暂时未应用
    port:rmi服务端口号
    context:rmi服务上下文
     -->
   <rmi enable="true"
       port="65400"
       context="rtuMw"
   />
   <!--
    sleepBigBusy:主线程大忙时每次执行间隔时长(毫秒)
    sleepSmallBusy:主线程小忙时每次执行间隔时长(毫秒)
    queueWarnSize: 缓存队列节点数警告数量
    queueMaxSize: 缓存队列节点数最大数量
     -->
   <core
         sleepBigBusy="100"
         sleepSmallBusy="500"
         queueWarnSize="100000"
         queueMaxSize="300000"
      />
      <!--
      port:端口
      processors: Mina IO 处理上下行数据的线程数,一般是CPU总核数+1
      idle: 发呆时长(秒)
       -->
      <tcp enable="true"
         port="60000"
         processors="3"
         idle="10"
      />
   />
   <!--
    port:端口
    processors: Mina IO 处理上下行数据的线程数,一般是CPU总核数+1
    idle: 发呆时长(秒)
     -->
   <tcp enable="true"
       port="62000"
       processors="3"
       idle="10"
   />
</config>