1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
<?xml version="1.0" encoding="UTF-8"?>
<config>
    <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,下发命令的时间间隔(秒)
    fastCommandSendInterval: 针对一个RTU,下发快速命令(如升级命令)的时间间隔(毫秒),此配置作用力受下面配置项lastUpDataTimeLive限制
    cacheWaitResultTimeout: 命令已经发送达最大次数,仍未收到命令结果,需要在缓存继续等待,其等待最大时长(秒),本系统RTU,对于开关泵命令,其先执行开关泵报,然后再进行命令应答,所以此值 要大一些
    offLineCacheTimeout: 不在线缓存的命令最大缓存时长(秒)
    lastUpDataTimeLive: TCP上行数据时刻缓存时长(毫秒),当达到时长时,TCP上行数据时刻被清空,采用TCP上行数据时刻目的是,阻止上行数据同时下发数据,因为RTU处理不过来
    dbDataIdSuffix:数据库数据id生成器的id后缀,0是默认的后缀,一般web系统应用,数据中间件id后缀大于等于1
    cacheUpDownDataWarnCount:上下行数据缓存队列中缓存数据个数的报警量,这个与现实项目所接水表数相关
    cacheUpDownDataMaxCount:上下行数据缓存队列中缓存数据个数的最大值,这个与现实项目所接水表数相关
    disconnectedByNoUpDataMinutes:没有上行数据的分钟数,达到这个分钟数,认为RTU断网了,取值范围是2-100
    workReportDealOneByTimes: 工作报太频繁,N次上报处理1次,取值范围是1-100
    intakeAlarmLossMinValue: 触发发送钉钉报警消息的取水口日漏损量的最小值(包括但除0.0外)(小数)
    sendDingDingAlarmMsInterval: 有报警发生时,向钉钉发送消息的间隔时长(分钟)
     -->
    <base
            orgTag="mj"
            isLowPower="false"
            onlyDealRtus=""
            onlyOneProtocol="false"
            downComandMaxResendTimes="1"
            commandSendInterval="3"
            fastCommandSendInterval="500"
            cacheWaitResultTimeout="120"
            offLineCacheTimeout="86400"
            lastUpDataTimeLive="500"
            dbDataIdSuffix="0"
            cacheUpDownDataWarnCount="100000"
            cacheUpDownDataMaxCount="110000"
            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"
    />
 
    <!-- RTU 消息中心
    enable: 模块是否启动
    notifyInterval: 消息通知间隔(秒)
    -->
    <msCenter enable="true"
              notifyInterval="5"
    />
 
    <!-- RTU 软件升级
    enable: 模块是否启动
    openNoUpgrade: 阀开(泵开)不执行升级
    lastOpenMaxGoOn: 阀开(泵开)状态设置以来持续最长时间(秒钟),超过这个时间认为状态无效(这个时长取决于工作报间隔)
    noOneRtuUpgradeMaxDuration:升级任务设置后,无一设备升级最大时长(秒),超过这个时长,认为升级任务完成,取值范围是5分钟~60分钟
    runningAndIdleDuration:rtu升级启动后进入升级中状态,但某种情况下RTU不再通信了,一直处于等待状态,等待达到一定时长(秒,一般与noOneRtuUpgradeMaxDuration相等)认为升级失败(一包死或多包死),取值范围是5分钟~60分钟
    failTryTimes:升级失败后(针对的是在线进行了升级下发命令),重新偿试升级次数,当设置为0时表示不重新偿试升级
    ugMaxRtuAtOnce:为了缓解通信中间件的压力,同时支持升级的RTU台数,当设置为0时表示不受限制
    rtuOffLineWaitDuration: rtu离线,等待其升级的时长(秒),超过这个时间,设置其升级失败,且设置升级任务完成
    notifyStateInterval: 升级状态通知间隔(秒)
    notifyTimesAfterOver: 升级结束后,再向web服务系统通知状态的次数
    -->
    <upgrade enable="true"
             openNoUpgrade="true"
             lastOpenMaxGoOn="1800"
             noOneRtuUpgradeMaxDuration="1200"
             runningAndIdleDuration="1200"
             failTryTimes="2"
             ugMaxRtuAtOnce="5000"
             rtuOffLineWaitDuration="1800"
             notifyStateInterval="2"
             notifyTimesAfterOver="1"
    />
 
 
    <!--
    支持模块
    短工作时长线程池,线程负责用时较短的工作任务
    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"
            short_busyTimeout="5"
            long_maxThread="6"
            long_minThread="6"
            long_freeTimeout="60"
            long_busyTimeout="-1"
            enableThreadPool="true"
    />
 
    <!--
    资源模块
    rtuLogDir:RTU日志文件存储目录(相对目录)
    rtuLogFileMaxSize:RTU日志文件最大字节数(B)
    rtuLogFileMaxCount:RTU日志文件最大文件数
    monitorInterval:Rtu状态监视间隔(分钟)
    saveDbInterval:Rtu状态存数据库间隔(分钟)
     -->
    <resource
            rtuLogDir="rtuLogs/"
            rtuLogFileMaxSize="1000000"
            rtuLogFileMaxCount="3"
            monitorInterval="2"
            saveDbInterval="10"
    />
 
 
    <!--
    2024-08-22 此配置暂时未应用
    port:rmi服务端口号
    context:rmi服务上下文
     -->
    <rmi enable="true"
         port="65400"
         context="rtuMw"
    />
 
    <!--
    coreInterval:主线程每次执行间隔时长(毫秒)
    queueWarnSize: 缓存队列节点数警告数量
    queueMaxSize: 缓存队列节点数最大数量
     -->
    <core
            coreInterval="100"
            queueWarnSize="100000"
            queueMaxSize="300000"
    />
 
    <!--
    port:端口
    processors: Mina IO 处理上下行数据的线程数,一般是CPU总核数+1
    idle: 发呆时长(秒)
     -->
    <tcp enable="true"
         port="61000"
         processors="3"
         idle="10"
    />
 
</config>