liurunyu
2023-11-20 fb31efc4c1efee99164dc83f6f67f1f609d1ba40
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
<?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 
         -->
        <base 
            isLowPower="false"
            onlyOneProtocol="true"
            downComandMaxResendTimes="1"
            commandSendInterval="3"
            cachWaitResultTimeout="60"
            offLineCachTimeout="86400"
            lastUpDataTimeLive="1"
            dbDataIdSuffix="1"
        />
        
        <!-- 
        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_minThread: 池中最小线程数 
        short_freeTimeout: 线程数空闲时长,若池中线程数量大于minThread,且有的线程空闲时长超过freeTimeout,则清除该线程,为了不清除,把minThread与maxThread设置相等
        short_busyTimeout:线程不间断工作时长(单位为秒)超时限,认为线程已经了崩溃,将强制清除,短工作时长设置为5秒 
        长工作时长线程池,线程负责用时较长的工作任务,例如从Redis中取缓存的RTU上行数据
        long_maxThread: 池中最大线程数,若为-1,不受限制
        long_minThread: 池中最小线程数 
        long_freeTimeout: 线程数空闲时长,若池中线程数量大于minThread,且有的线程空闲时长超过freeTimeout,则清除该线程
        long_busyTimeout:线程不间断工作时长(单位为秒)超时限,若为-1,不受限制 
        enableThreadPool:是否启用线程池
         -->
        <support
            short_maxThread="100"
            short_minThread="5"
            short_freeTimeout="60"
            short_busyTimeout="5"
            long_maxThread="200"
            long_minThread="0"
            long_freeTimeout="60"
            long_busyTimeout="-1"
            enableThreadPool="true"
        />
            
        <!-- 
        资源模块
        rtuLogDir:RTU日志文件存储目录(相对目录)
        rtuLogFileMaxSize:RTU日志文件最大字节数(KB)
        rtuLogFileMaxCount:RTU日志文件最大文件数
        monitorInterval:Rtu状态监视间隔(分钟)
        saveDbInterval:Rtu状态存数据库间隔(分钟)
         -->
        <resource
            rtuLogDir="rtuLogs/"
            rtuLogFileMaxSize="1000000"
            rtuLogFileMaxCount="2"
            monitorInterval="2"
            saveDbInterval="10"
        />
        
            
        <!-- 
        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"
        />
 
</config>