├── .classpath
├── .project
├── .settings
└── org.eclipse.jdt.core.prefs
├── README.md
├── Reference_jar
├── c3p0-0.9.5.2.jar
├── commons-beanutils-1.8.0.jar
├── commons-collections-3.2.1.jar
├── commons-lang-2.5.jar
├── commons-logging-1.1.1.jar
├── ezmorph-1.0.6.jar
├── json-lib-2.4-jdk15.jar
├── mchange-commons-java-0.2.11.jar
└── mysql-connector-java-5.1.39-bin.jar
├── bin
├── .gitignore
├── c3p0-config.xml
├── cause.properties
├── dao
│ ├── DevControlDao.class
│ ├── PVAnalogQuantityData1Dao.class
│ ├── PVAnalogQuantityData2Dao.class
│ └── PVDigitalQuantityDataDao.class
├── dev.json
├── iec104
│ ├── Apdu$ApciType.class
│ ├── Apdu.class
│ ├── Asdu.class
│ ├── Client$1.class
│ ├── Client$2.class
│ ├── Client$3.class
│ ├── Client.class
│ ├── IeAbstractQuality.class
│ ├── IeQualifierOfInterrogation.class
│ ├── IeQuality.class
│ ├── IeScaled.class
│ ├── IeShortFloat.class
│ ├── IeSinglePointWithQuality.class
│ ├── InformationElement.class
│ ├── InformationObject.class
│ ├── Init$1.class
│ ├── Init$2.class
│ ├── Init$3.class
│ ├── Init.class
│ └── util
│ │ ├── ChangeUtils.class
│ │ └── FileUtils.class
├── jdbc
│ └── C3P0Utils.class
├── model
│ ├── DevControl.class
│ ├── PVAnalogQuantityData1.class
│ ├── PVAnalogQuantityData2.class
│ └── PVDigitalQuantityData.class
├── remote_adjust.json
├── remote_control.json
├── remote_measure.json
├── remote_signal.json
└── typeId.properties
├── projectInstruction
└── picture
│ ├── IEC104主目录结构.png
│ ├── IEC104主站响应发送遥控、遥调命令图.png
│ ├── IEC104帧格式.png
│ ├── IEC104配置文件目录.png
│ ├── IEC主站程序流程图.png
│ ├── I帧格式.png
│ ├── PMA从站遥控、遥调信息接收图.png
│ ├── PMA遥信图.png
│ ├── PMA遥信数据详情.png
│ ├── S帧格式.png
│ ├── U帧格式.png
│ ├── Web对应遥信显示.png
│ ├── Web控制信息命令下发图.png
│ ├── dev.json数据格式.png
│ ├── 主从站建立链路图(PMA).png
│ ├── 主站遥信解析图.png
│ ├── 数据库设备操作类.png
│ ├── 数据库设备模型.png
│ ├── 遥信、遥测json数据格式.png
│ ├── 遥信数据库对应更新.png
│ ├── 遥控、遥调json数据格式.png
│ └── 遥控、遥调定义字典图.png
├── resources
├── cause.properties
├── dev.json
├── remote_adjust.json
├── remote_control.json
├── remote_measure.json
├── remote_signal.json
└── typeId.properties
└── src
├── c3p0-config.xml
├── dao
├── DevControlDao.java
├── PVAnalogQuantityData1Dao.java
├── PVAnalogQuantityData2Dao.java
└── PVDigitalQuantityDataDao.java
├── iec104
├── Apdu.java
├── Asdu.java
├── Client.java
├── IeAbstractQuality.java
├── IeQualifierOfInterrogation.java
├── IeQuality.java
├── IeScaled.java
├── IeShortFloat.java
├── IeSinglePointWithQuality.java
├── InformationElement.java
├── InformationObject.java
├── Init.java
└── util
│ ├── ChangeUtils.java
│ └── FileUtils.java
├── jdbc
└── C3P0Utils.java
└── model
├── DevControl.java
├── PVAnalogQuantityData1.java
├── PVAnalogQuantityData2.java
└── PVDigitalQuantityData.java
/.classpath:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/.project:
--------------------------------------------------------------------------------
1 |
2 |
3 | IEC104
4 |
5 |
6 |
7 |
8 |
9 | org.eclipse.jdt.core.javabuilder
10 |
11 |
12 |
13 |
14 |
15 | org.eclipse.jdt.core.javanature
16 |
17 |
18 |
--------------------------------------------------------------------------------
/.settings/org.eclipse.jdt.core.prefs:
--------------------------------------------------------------------------------
1 | eclipse.preferences.version=1
2 | org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
3 | org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
4 | org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
5 | org.eclipse.jdt.core.compiler.compliance=1.8
6 | org.eclipse.jdt.core.compiler.debug.lineNumber=generate
7 | org.eclipse.jdt.core.compiler.debug.localVariable=generate
8 | org.eclipse.jdt.core.compiler.debug.sourceFile=generate
9 | org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
10 | org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
11 | org.eclipse.jdt.core.compiler.source=1.8
12 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # IEC104_microgrid
2 | iec104协议主站客户端程序,属于[微电网管理系统](https://github.com/msun1996/Microgrid)一部分
3 | ## 一 IEC104协议介绍
4 | ### 1 IEC104简要说明
5 | IEC104是一种基于TCP/IP的电力行业通信协议,主要用于数据远程监控等功能。通信有一般有主要发送数据、接收命令的从站服务端和接收数据、发送命令的主站客户端构成。采用应答式数据传输,一般上行数据为遥信、遥测,下行信息为遥控、遥调。
6 | ### 2 IEC104帧格式
7 | IEC104的通用帧格式如图
8 | 
9 | 其中APCI为控制信息部分,ASDU为存储数据单元,APDU为长度等于APCI+ASDU-2,即减去起始字节和APDU长度字节。
10 | IEC104有3种帧格式,分别为U帧即控制报文帧、S帧即监视帧和I帧即信息传输帧。
11 | 1)U帧:只包括APCI部分,主要有启动帧、停止帧、测试帧。U帧具体格式如图
12 | 
13 | 2)S帧:只包含APCI部分。S帧格式如图
14 | 
15 | 3)I帧:包含APCI+APDU部分。I帧格式如图
16 | 
17 | 发送序号和接收序列号是保证数据完整性的条件。
18 | 类型标识定义发送数据的格式。
19 | 可变结构体定义发送数据信息是有序还是无序,有序即一个信息体地址,元素的对应地址会在此信息地址基础上依次加1。无序即1个地址对应一个元素。
20 | 传输原因定义记录传送的原因,用以对传输数据进行归类。
21 |
22 | ### 3 IEC104规约流程
23 | 1.由客户端向服务器建立连接,同时,发送链路启动帧。
24 | 2.服务端在收到链路启动帧后,向客户端发送启动确认帧。
25 | 3.客户端收到启动确认帧后,发送总召唤命令数据请求帧。
26 | 4.服务端收到总召唤命令数据请求后,发送总召唤命令数据响应帧,然后继续发送总召唤命令数据。总召唤命令数据发送完成后,发送总召唤命令数据结束帧。
27 | 5.客户端在收到总召唤命令数据结束帧后,发送对时请求帧。
28 | 6.服务器收到对时请求帧后,发送对时响应帧。
29 | 7.由服务器主动向客户端发送变化数据帧。同时,收到客户端发送的控制类命令,回复相应的操作结果。
30 | 8.客户端等到下一个数据总召唤命令数据周期,重复第4步之后的流程。
31 | ## 二 IEC104通信主站程序总体设计实现
32 | 根据项目需求和IEC104通信规约设计,主要包括遥信、遥测的解析程序功能,遥控、遥调的组合程序功能,数据库并发操作。涉及技术Java面对对象编程,多线程,socket编程,JDBC数据库操作映射API,C3P0高并发数据库连接池。
33 | 首先设计如图的目录结构:
34 | 
35 | 其中jdbc 库文件存储数据库连接相关配置的类文件,model库文件存储着数据库的对应模型的类结构文件,dao库文件存储着数据库操作的类函数文件,iec104.util存储着程序处理中所用到的工具类,iec104为程序逻辑主体,存储着程序的主要处理类函数文件。
36 | 设计如图的配置文件目录
37 | 
38 | 其中typeId.properties存储着功能类型的数字对应信息汉字关系,cause.properties存储着原因类型数字对应信息汉字关系,用于帧格式解析。remote_signal、remote_measure、remote_control、remote_adjust是存储信息体地址和对应存储数据库字段关系文件,用于将设备状态信息存储到数据库对应数据模型或从对应数据进行数据提取。
39 | 设计主体程序有3部分构成,主程序包括配置信息初始化,Socket端口连接初始化,数据库连接配置初始化,线程定时器初始化,启动链路,接收遥信、遥测帧信息解析缓存到对应对象结构体;定时将缓存在遥信、遥测对象结构体的数据写入数据库;遥控、遥调定时器程序包括根据读取数据库对应数据信息与缓存字典比较,发现变化信息组合帧信息并发送。设计总体流程图如图
40 | 
41 | ## 三 IEC104主站数据库相关程序设计
42 | ### 1 设备数据库模型类实现
43 | IEC104数据库与Web管理系统共用一个数据库,IEC104需建立的数据库模型与web模型的属性、字段都相同,在此基础建立数据库映射操作库model中的映射实现类如图
44 | 
45 | 其中DevControl为存储所有设备信息及其控制部分的映射实现类,PVAnalogQuantotyData1, PVAnalogQuantotyData1,PVDigtialQuantityData为具体设备(光伏逆变器)类的数字信息和模拟量信息映射实现类。
46 | ### 2 IEC104设备数据库操作类实现
47 | model每个类文件会对应数据库操作dao库中一个类文件,dao的类中会记录数据库操作所需要执行的增删改查操作。目录结构如图:
48 | 
49 | 以DevControlDao实现类为例简要说明:
50 | 添加设备实现函数核心sql操作语句
51 | ```
52 | Strning sql = "insert into microgrids_devcontrol (num, dev_type) values(?,?)";
53 | ```
54 | 更新设备类型号码实现函数核心sql操作语句
55 | ```
56 | Strning sql = "update microgrids_devcontrol set dev_type=? where num=?";
57 | ```
58 | 删除设备类实现函数核心sql操作语句
59 | ```
60 | String sql="delete from microgrid_devcontrol where num=?"
61 | ```
62 | 查询设备是否存在函数的核心sql操作语句
63 | ```
64 | String sql="select num from microgrid_devcontrol where num=?"
65 | ```
66 | ### 3 IEC104数据库连接初始化
67 | 数据库为考虑大量数据写入时的性能要求,使用了C3P0数据库连接池的方法来增强数据库操作的性能。其中C3P0连接池初始化获得mysql操作对象的类为jdbc包的C3P0Utils类
68 | ```
69 | public class C3P0Utils {
70 | private static ComboPooledDataSource dataSource = new ComboPooledDataSource("mysql");
71 | public static DataSource getDataSource() {
72 | return dataSource;
73 | }
74 | public static Connection getConnection() {
75 | try {
76 | return dataSource.getConnection();
77 | }catch (SQLException e) {
78 | throw new RuntimeException(e);
79 | }
80 | }
81 | }
82 | ```
83 | 其中,系统会调用主目录下的c3p0-config.xml文件进行数据库初始化配置,包括连接数据库地址,数据库用户和密码。
84 | ## 四 主站核心程序设计
85 | ### 1 主站设备信息初始化
86 | 首先,程序会在初始化完成时加载配置文件dev.json,dev.json数据格式为设备编号,设备名,设备类型编号。(设备类型对应编号在Django model中进行定义,这里写入是为便于Web管理操作)
87 | ```
88 | {
89 | "PVI0101":{"name":"光伏1区光伏逆变器1号", "DEV_TYPE":1},
90 | }
91 | ```
92 | 根据配置文件的设备信息会去更新数据库DevControl中的设备信息,对配置信息存在数据库却不存在的设备使用dao库DevControl类下的addDev方法进行添加,对配置信息中不存在设备数据库却存在的设备使用delDev方法进行删除。根据设备类型编号去创建对应设备遥信,遥测需要的设备信息结构体,以便在后面获取数据存入对应结构体存储。
93 | ### 2 主站遥信、遥测程序设计实现
94 | 首先,程序会在初始化加载remote_signal.json、remote_measure.json、遥信、遥测配置文件,配置信息格式主要为信息体地址,对应数据库字段名,对应数据库表单名,对应数据库设备编号。
95 | ```
96 | {
97 | "14":{"field":"status_down","num":"PVI0101","table_name":"pvdigitalquantitydata","descript":"西科逆变器1_停机","注释":""},
98 | }
99 | ```
100 | 然后,使用多线程Runable类定义遥信、遥测数据写入数据库的方法即将设备对应数据信息结构体(在设备信息初始化中产生)使用对应sql方法写入数据库。使用ScheduledExecutorService类初始化遥信、遥测的多线程定时器得到对象service,再使用service下的scheduleAtFixedRate方法定时执行信息结构体数据写入数据库方法。
101 | 程序在发送完总召唤命令后会一直使用socket的方法去读取从站发送过来的帧数据并进行解析,首先会使用Apdu类下的Apdu方法进行解析,获得帧的启动帧,APDU长度,发送序号,接收序列号,控制域信息,根据控制域信息会进行判断帧类型,即为I帧,S帧,还是U帧。如果是S帧,或U帧获取后基本不做处理,主要会进行I帧解析。再判断是I帧后,会使用Asdu类下的Asdu进行解析,获取帧的类型标识,传输原因,公共地址,可变结构体等信息,然后使用InformationObject类的InformationObject方法去根据帧的类型标识去把数据信息存入到InformationElement,再获取存在信息体地址和数据的InformationObject对象。最后,再使用Client类中handleData方法,根据信息体地址从遥信、遥测配置文件获取其在数据库的表单名,对应字段,对应设备,把信息体对应的数据写入到对应的设备信息结构体中。
102 | 使用PMA软件模拟从站进行遥信测试如下:
103 | 首先启动程序建立链接,并发送总召唤命令,如图
104 |
105 | 从站PMA地址发送地址为14,值为0的遥信数据(逆变器PV0101停机信号),如图
106 |
107 |
108 | 主站接收遥信帧并进行解析,打印解析信息如图
109 |
110 | 数据库对应更新遥调信息所需要修改数据库数据如图
111 |
112 | web管理系统界面PVI0101对应数据信息改变如图
113 |
114 |
115 | ### 3 主站遥控、遥调程序设计实现
116 | 首先,程序会在初始化加载remote_control.json、remote_adjust.json、遥控、遥调配置文件,配置信息格式主要为信息体地址,对应数据库字段名,对应数据库设备编号。
117 | ```
118 | {
119 | "25089":{"field":"active_power","num":"PVI0101","descript":"西科逆变器1_有功功率遥调值","注释":""},
120 | }
121 | ```
122 | 然后,定义存储遥控、遥调信息即地址信息和数据信息实时值的字典(记录实时值,是为了只在数据库数据状态改变的情况下,才会去发送遥控或遥信命令)
123 | ```
124 | // 记录存储遥控、遥调实时值
125 | Map remoteControlValues = new HashMap();
126 | Map remoteAdjustVlaues = new HashMap();
127 | ```
128 | 之后,会使用多线程Runable类定义遥控、遥调信息帧组合并发送的runnable_db_send方法。同样使用ScheduledExecutorService类初始化遥信、遥测的多线程定时器得到对象service_A,再使用service_A下的scheduleAtFixedRate方法定时执行。
129 | Runnable_db_send方法会提取remote_control.json、remote_adjust.json配置文件信息,根据地址信息的字段和编号去数据库对应的表单下去提取数据,对比remoteControlValues、remoteAdjustVlaues字典,如果和字典中信息不同,则更新字典信息并发送遥控、遥调命令。
130 | 使用PMA模拟从站测试如下:
131 | Web管理界面修改逆变器PV0101的控制信息(会更改对应数据库数据),如图
132 |
133 | IEC104主站发送相关遥控、遥调命令,并打印信息,如图
134 |
135 |
136 | PMA从站会接收到IEC104主站的遥控、遥调信息,如图
137 |
138 |
139 | #### 程序参考学习修改自 [huarda / IEC104-1](https://github.com/huarda/IEC104-1)
140 |
--------------------------------------------------------------------------------
/Reference_jar/c3p0-0.9.5.2.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msun1996/IEC104_microgrid/daa120f86a8e896db121546f1d0823e2bf459480/Reference_jar/c3p0-0.9.5.2.jar
--------------------------------------------------------------------------------
/Reference_jar/commons-beanutils-1.8.0.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msun1996/IEC104_microgrid/daa120f86a8e896db121546f1d0823e2bf459480/Reference_jar/commons-beanutils-1.8.0.jar
--------------------------------------------------------------------------------
/Reference_jar/commons-collections-3.2.1.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msun1996/IEC104_microgrid/daa120f86a8e896db121546f1d0823e2bf459480/Reference_jar/commons-collections-3.2.1.jar
--------------------------------------------------------------------------------
/Reference_jar/commons-lang-2.5.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msun1996/IEC104_microgrid/daa120f86a8e896db121546f1d0823e2bf459480/Reference_jar/commons-lang-2.5.jar
--------------------------------------------------------------------------------
/Reference_jar/commons-logging-1.1.1.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msun1996/IEC104_microgrid/daa120f86a8e896db121546f1d0823e2bf459480/Reference_jar/commons-logging-1.1.1.jar
--------------------------------------------------------------------------------
/Reference_jar/ezmorph-1.0.6.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msun1996/IEC104_microgrid/daa120f86a8e896db121546f1d0823e2bf459480/Reference_jar/ezmorph-1.0.6.jar
--------------------------------------------------------------------------------
/Reference_jar/json-lib-2.4-jdk15.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msun1996/IEC104_microgrid/daa120f86a8e896db121546f1d0823e2bf459480/Reference_jar/json-lib-2.4-jdk15.jar
--------------------------------------------------------------------------------
/Reference_jar/mchange-commons-java-0.2.11.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msun1996/IEC104_microgrid/daa120f86a8e896db121546f1d0823e2bf459480/Reference_jar/mchange-commons-java-0.2.11.jar
--------------------------------------------------------------------------------
/Reference_jar/mysql-connector-java-5.1.39-bin.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msun1996/IEC104_microgrid/daa120f86a8e896db121546f1d0823e2bf459480/Reference_jar/mysql-connector-java-5.1.39-bin.jar
--------------------------------------------------------------------------------
/bin/.gitignore:
--------------------------------------------------------------------------------
1 | /iec104/
2 | /dao/
3 | /remote_control.json
4 | /remote_adjust.json
5 |
--------------------------------------------------------------------------------
/bin/c3p0-config.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | com.mysql.jdbc.Driver
6 | jdbc:mysql://116.196.107.225:3306/microgriddata?useSSL=false
7 | microgrid
8 | microgridpasswd
9 |
10 |
11 |
12 | com.mysql.jdbc.Driver
13 | jdbc:mysql://116.196.107.225:3306/microgriddata?useSSL=false
14 | microgrid
15 | microgridpasswd
16 |
17 | 10
18 |
19 | 30
20 |
21 | 100
22 |
23 | 10
24 |
25 | 200
26 |
27 | 3000
28 |
29 | 5
30 |
31 | 0
32 |
33 | 1000
34 |
35 | false
36 |
37 | Test
38 |
39 | false
40 |
41 | 60
42 |
43 | 0
44 |
45 |
--------------------------------------------------------------------------------
/bin/cause.properties:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msun1996/IEC104_microgrid/daa120f86a8e896db121546f1d0823e2bf459480/bin/cause.properties
--------------------------------------------------------------------------------
/bin/dao/DevControlDao.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msun1996/IEC104_microgrid/daa120f86a8e896db121546f1d0823e2bf459480/bin/dao/DevControlDao.class
--------------------------------------------------------------------------------
/bin/dao/PVAnalogQuantityData1Dao.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msun1996/IEC104_microgrid/daa120f86a8e896db121546f1d0823e2bf459480/bin/dao/PVAnalogQuantityData1Dao.class
--------------------------------------------------------------------------------
/bin/dao/PVAnalogQuantityData2Dao.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msun1996/IEC104_microgrid/daa120f86a8e896db121546f1d0823e2bf459480/bin/dao/PVAnalogQuantityData2Dao.class
--------------------------------------------------------------------------------
/bin/dao/PVDigitalQuantityDataDao.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msun1996/IEC104_microgrid/daa120f86a8e896db121546f1d0823e2bf459480/bin/dao/PVDigitalQuantityDataDao.class
--------------------------------------------------------------------------------
/bin/dev.json:
--------------------------------------------------------------------------------
1 | {
2 | "PVI0101":{"name":"光伏1区光伏逆变器1号", "DEV_TYPE":1 },
3 | "PVI0102":{"name":"光伏1区光伏逆变器2号", "DEV_TYPE":1 },
4 | "PVI0201":{"name":"光伏2区光伏逆变器1号", "DEV_TYPE":1 },
5 | "PVI0202":{"name":"光伏2区光伏逆变器2号", "DEV_TYPE":1 },
6 | "HS01":{"name":"高压负荷开关1号(间隔区)", "DEV_TYPE":20 },
7 | "HS1011":{"name":"高压负荷开关1号(光伏1区)", "DEV_TYPE":20 },
8 | "HS1021":{"name":"高压负荷开关1号(光伏2区)", "DEV_TYPE":20 },
9 | "BS101011":{"name":"断路器1号(光伏1区逆变器1)", "DEV_TYPE":22 },
10 | "BS101021":{"name":"断路器1号(光伏1区逆变器2)", "DEV_TYPE":22 },
11 | "BS102011":{"name":"断路器1号(光伏2区逆变器1)", "DEV_TYPE":22 },
12 | "BS102021":{"name":"断路器1号(光伏2区逆变器2)", "DEV_TYPE":22 }
13 | }
--------------------------------------------------------------------------------
/bin/iec104/Apdu$ApciType.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msun1996/IEC104_microgrid/daa120f86a8e896db121546f1d0823e2bf459480/bin/iec104/Apdu$ApciType.class
--------------------------------------------------------------------------------
/bin/iec104/Apdu.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msun1996/IEC104_microgrid/daa120f86a8e896db121546f1d0823e2bf459480/bin/iec104/Apdu.class
--------------------------------------------------------------------------------
/bin/iec104/Asdu.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msun1996/IEC104_microgrid/daa120f86a8e896db121546f1d0823e2bf459480/bin/iec104/Asdu.class
--------------------------------------------------------------------------------
/bin/iec104/Client$1.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msun1996/IEC104_microgrid/daa120f86a8e896db121546f1d0823e2bf459480/bin/iec104/Client$1.class
--------------------------------------------------------------------------------
/bin/iec104/Client$2.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msun1996/IEC104_microgrid/daa120f86a8e896db121546f1d0823e2bf459480/bin/iec104/Client$2.class
--------------------------------------------------------------------------------
/bin/iec104/Client$3.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msun1996/IEC104_microgrid/daa120f86a8e896db121546f1d0823e2bf459480/bin/iec104/Client$3.class
--------------------------------------------------------------------------------
/bin/iec104/Client.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msun1996/IEC104_microgrid/daa120f86a8e896db121546f1d0823e2bf459480/bin/iec104/Client.class
--------------------------------------------------------------------------------
/bin/iec104/IeAbstractQuality.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msun1996/IEC104_microgrid/daa120f86a8e896db121546f1d0823e2bf459480/bin/iec104/IeAbstractQuality.class
--------------------------------------------------------------------------------
/bin/iec104/IeQualifierOfInterrogation.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msun1996/IEC104_microgrid/daa120f86a8e896db121546f1d0823e2bf459480/bin/iec104/IeQualifierOfInterrogation.class
--------------------------------------------------------------------------------
/bin/iec104/IeQuality.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msun1996/IEC104_microgrid/daa120f86a8e896db121546f1d0823e2bf459480/bin/iec104/IeQuality.class
--------------------------------------------------------------------------------
/bin/iec104/IeScaled.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msun1996/IEC104_microgrid/daa120f86a8e896db121546f1d0823e2bf459480/bin/iec104/IeScaled.class
--------------------------------------------------------------------------------
/bin/iec104/IeShortFloat.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msun1996/IEC104_microgrid/daa120f86a8e896db121546f1d0823e2bf459480/bin/iec104/IeShortFloat.class
--------------------------------------------------------------------------------
/bin/iec104/IeSinglePointWithQuality.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msun1996/IEC104_microgrid/daa120f86a8e896db121546f1d0823e2bf459480/bin/iec104/IeSinglePointWithQuality.class
--------------------------------------------------------------------------------
/bin/iec104/InformationElement.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msun1996/IEC104_microgrid/daa120f86a8e896db121546f1d0823e2bf459480/bin/iec104/InformationElement.class
--------------------------------------------------------------------------------
/bin/iec104/InformationObject.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msun1996/IEC104_microgrid/daa120f86a8e896db121546f1d0823e2bf459480/bin/iec104/InformationObject.class
--------------------------------------------------------------------------------
/bin/iec104/Init$1.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msun1996/IEC104_microgrid/daa120f86a8e896db121546f1d0823e2bf459480/bin/iec104/Init$1.class
--------------------------------------------------------------------------------
/bin/iec104/Init$2.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msun1996/IEC104_microgrid/daa120f86a8e896db121546f1d0823e2bf459480/bin/iec104/Init$2.class
--------------------------------------------------------------------------------
/bin/iec104/Init$3.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msun1996/IEC104_microgrid/daa120f86a8e896db121546f1d0823e2bf459480/bin/iec104/Init$3.class
--------------------------------------------------------------------------------
/bin/iec104/Init.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msun1996/IEC104_microgrid/daa120f86a8e896db121546f1d0823e2bf459480/bin/iec104/Init.class
--------------------------------------------------------------------------------
/bin/iec104/util/ChangeUtils.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msun1996/IEC104_microgrid/daa120f86a8e896db121546f1d0823e2bf459480/bin/iec104/util/ChangeUtils.class
--------------------------------------------------------------------------------
/bin/iec104/util/FileUtils.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msun1996/IEC104_microgrid/daa120f86a8e896db121546f1d0823e2bf459480/bin/iec104/util/FileUtils.class
--------------------------------------------------------------------------------
/bin/jdbc/C3P0Utils.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msun1996/IEC104_microgrid/daa120f86a8e896db121546f1d0823e2bf459480/bin/jdbc/C3P0Utils.class
--------------------------------------------------------------------------------
/bin/model/DevControl.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msun1996/IEC104_microgrid/daa120f86a8e896db121546f1d0823e2bf459480/bin/model/DevControl.class
--------------------------------------------------------------------------------
/bin/model/PVAnalogQuantityData1.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msun1996/IEC104_microgrid/daa120f86a8e896db121546f1d0823e2bf459480/bin/model/PVAnalogQuantityData1.class
--------------------------------------------------------------------------------
/bin/model/PVAnalogQuantityData2.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msun1996/IEC104_microgrid/daa120f86a8e896db121546f1d0823e2bf459480/bin/model/PVAnalogQuantityData2.class
--------------------------------------------------------------------------------
/bin/model/PVDigitalQuantityData.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msun1996/IEC104_microgrid/daa120f86a8e896db121546f1d0823e2bf459480/bin/model/PVDigitalQuantityData.class
--------------------------------------------------------------------------------
/bin/remote_adjust.json:
--------------------------------------------------------------------------------
1 | {
2 | "25089":{"field":"active_power","num":"PVI0101","descript":"西科逆变器1_有功功率遥调值","注解":""},
3 | "25090":{"field":"reactive_power","num":"PVI0101","descript":"西科逆变器1_无功功率遥调值","注解":""},
4 | "25091":{"field":"active_power","num":"PVI0102","descript":"西科逆变器2_有功功率遥调值","注解":""},
5 | "25092":{"field":"reactive_power","num":"PVI0102","descript":"西科逆变器2_无功功率遥调值","注解":""},
6 | "25093":{"field":"","num":"","descript":"","注解":""},
7 | "25094":{"field":"","num":"","descript":"","注解":""},
8 | "25095":{"field":"","num":"","descript":"","注解":""},
9 | "25096":{"field":"","num":"","descript":"","注解":""},
10 | "25097":{"field":"powerfactor","num":"PVI0101","descript":"西科逆变器1_功率因数遥调值","注解":""},
11 | "25098":{"field":"powerfactor","num":"PVI0102","descript":"西科逆变器2_功率因数遥调值","注解":""},
12 | "25099":{"field":"","num":"","descript":"","注解":""},
13 | "25100":{"field":"","num":"","descript":"","注解":""}
14 | }
--------------------------------------------------------------------------------
/bin/remote_control.json:
--------------------------------------------------------------------------------
1 | {
2 | "24577":{"field":"switch_status","num":"BS101011","descript":"1#断路器","注解":""},
3 | "24578":{"field":"switch_status","num":"BS101021","descript":"2#断路器","注解":""},
4 | "24579":{"field":"switch_status","num":"HS1011","descript":"高压负荷开关","注解":""},
5 | "24580":{"field":"switch_status","num":"PVI0101","descript":"西科逆变器1_开关机命令","注解":""},
6 | "24581":{"field":"switch_status","num":"PVI0102","descript":"西科逆变器2_开关机命令","注解":""},
7 | "24582":{"field":"","num":"","descript":"","注解":""},
8 | "24583":{"field":"","num":"","descript":"","注解":""},
9 | "24584":{"field":"","num":"","descript":"","注解":""},
10 | "24585":{"field":"","num":"","descript":"","注解":""},
11 | "24586":{"field":"","num":"","descript":"","注解":""},
12 | "24587":{"field":"","num":"","descript":"","注解":""},
13 | "24588":{"field":"","num":"","descript":"","注解":""}
14 | }
--------------------------------------------------------------------------------
/bin/remote_measure.json:
--------------------------------------------------------------------------------
1 | {
2 | "16385":{"field":"","num":"","table_name":"","descript":"","注释":""},
3 | "16386":{"field":"","num":"","table_name":"","descript":"","注释":""},
4 | "16387":{"field":"","num":"","table_name":"","descript":"","注释":""},
5 | "16388":{"field":"","num":"","table_name":"","descript":"","注释":""},
6 | "16389":{"field":"","num":"","table_name":"","descript":"","注释":""},
7 | "16390":{"field":"","num":"","table_name":"","descript":"","注释":""},
8 | "16391":{"field":"","num":"","table_name":"","descript":"","注释":""},
9 | "16392":{"field":"","num":"","table_name":"","descript":"","注释":""},
10 | "16393":{"field":"","num":"","table_name":"","descript":"","注释":""},
11 | "16394":{"field":"","num":"","table_name":"","descript":"","注释":""},
12 | "16395":{"field":"","num":"","table_name":"","descript":"","注释":""},
13 | "16396":{"field":"","num":"","table_name":"","descript":"","注释":""},
14 | "16397":{"field":"","num":"","table_name":"","descript":"","注释":""},
15 | "16398":{"field":"","num":"","table_name":"","descript":"","注释":""},
16 | "16399":{"field":"","num":"","table_name":"","descript":"","注释":""},
17 | "16400":{"field":"","num":"","table_name":"","descript":"","注释":""},
18 | "16401":{"field":"","num":"","table_name":"","descript":"","注释":""},
19 | "16402":{"field":"","num":"","table_name":"","descript":"","注释":""},
20 | "16403":{"field":"","num":"","table_name":"","descript":"","注释":""},
21 | "16404":{"field":"","num":"","table_name":"","descript":"","注释":""},
22 | "16405":{"field":"","num":"","table_name":"","descript":"","注释":""},
23 | "16406":{"field":"","num":"","table_name":"","descript":"","注释":""},
24 | "16407":{"field":"","num":"","table_name":"","descript":"","注释":""},
25 | "16408":{"field":"matrix_volt","num":"PVI0101","table_name":"pvanalogquantitydata1","descript":"西科逆变器1_阵列电压","注释":""},
26 | "16409":{"field":"matrix_cur","num":"PVI0101","table_name":"pvanalogquantitydata1","descript":"西科逆变器1_阵列电流","注释":""},
27 | "16410":{"field":"matrix_power_in","num":"PVI0101","table_name":"pvanalogquantitydata1","descript":"西科逆变器1_阵列输入功率","注释":""},
28 | "16411":{"field":"grid_volt_ab","num":"PVI0101","table_name":"pvanalogquantitydata1","descript":"西科逆变器1_电网AB线电压","注释":""},
29 | "16412":{"field":"grid_volt_bc","num":"PVI0101","table_name":"pvanalogquantitydata1","descript":"西科逆变器1_电网BC线电压","注释":""},
30 | "16413":{"field":"grid_volt_ca","num":"PVI0101","table_name":"pvanalogquantitydata1","descript":"西科逆变器1_电网CA线电压","注释":""},
31 | "16414":{"field":"on_grid_cur_a","num":"PVI0101","table_name":"pvanalogquantitydata1","descript":"西科逆变器1_A相并网电流","注释":""},
32 | "16415":{"field":"on_grid_cur_b","num":"PVI0101","table_name":"pvanalogquantitydata1","descript":"西科逆变器1_B相并网电流","注释":""},
33 | "16416":{"field":"on_grid_cur_c","num":"PVI0101","table_name":"pvanalogquantitydata1","descript":"西科逆变器1_C相并网电流","注释":""},
34 | "16417":{"field":"power_factor_a","num":"PVI0101","table_name":"pvanalogquantitydata1","descript":"西科逆变器1_A相功率因数","注释":""},
35 | "16418":{"field":"power_factor_b","num":"PVI0101","table_name":"pvanalogquantitydata1","descript":"西科逆变器1_B相功率因数","注释":""},
36 | "16419":{"field":"power_factor_c","num":"PVI0101","table_name":"pvanalogquantitydata1","descript":"西科逆变器1_C相功率因数","注释":""},
37 | "16420":{"field":"grid_freq","num":"PVI0101","table_name":"pvanalogquantitydata1","descript":"西科逆变器1_电网频率","注释":""},
38 | "16421":{"field":"on_grid_p","num":"PVI0101","table_name":"pvanalogquantitydata2","descript":"西科逆变器1_并网有功功率","注释":""},
39 | "16422":{"field":"on_grid_q","num":"PVI0101","table_name":"pvanalogquantitydata2","descript":"西科逆变器1_并网无功功率","注释":""},
40 | "16423":{"field":"on_grid_s","num":"PVI0101","table_name":"pvanalogquantitydata2","descript":"西科逆变器1_并网视在功率","注释":""},
41 | "16424":{"field":"day_runtime","num":"PVI0101","table_name":"pvanalogquantitydata2","descript":"西科逆变器1_日运行时间","注释":""},
42 | "16425":{"field":"inv_cabin_temp","num":"PVI0101","table_name":"pvanalogquantitydata2","descript":"西科逆变器1_逆变器机柜温度","注释":""},
43 | "16426":{"field":"","num":"","table_name":"","descript":"","注释":""},
44 | "16427":{"field":"","num":"","table_name":"","descript":"","注释":""},
45 | "16428":{"field":"","num":"","table_name":"","descript":"","注释":""},
46 | "16429":{"field":"","num":"","table_name":"","descript":"","注释":""},
47 | "16430":{"field":"","num":"","table_name":"","descript":"","注释":""},
48 | "16431":{"field":"","num":"","table_name":"","descript":"","注释":""},
49 | "16432":{"field":"","num":"","table_name":"","descript":"","注释":""},
50 | "16433":{"field":"","num":"","table_name":"","descript":"","注释":""},
51 | "16434":{"field":"","num":"","table_name":"","descript":"","注释":""},
52 | "16435":{"field":"","num":"","table_name":"","descript":"","注释":""},
53 | "16436":{"field":"day_gen_power","num":"PVI0101","table_name":"pvanalogquantitydata2","descript":"西科逆变器1_系统日发电量","注释":""},
54 | "16437":{"field":"total_gen_power","num":"PVI0101","table_name":"pvanalogquantitydata2","descript":"西科逆变器1_系统累计发电量","注释":""},
55 | "16438":{"field":"co2_reduce","num":"PVI0101","table_name":"pvanalogquantitydata2","descript":"西科逆变器1_CO2减排量","注释":""},
56 | "16439":{"field":"total_runtime","num":"PVI0101","table_name":"pvanalogquantitydata2","descript":"西科逆变器1_总运行时间","注释":""},
57 | "16440":{"field":"","num":"","table_name":"","descript":"","注释":""},
58 | "16441":{"field":"","num":"","table_name":"","descript":"","注释":""},
59 | "16442":{"field":"","num":"","table_name":"","descript":"","注释":""},
60 | "16443":{"field":"","num":"","table_name":"","descript":"","注释":""},
61 | "16444":{"field":"","num":"","table_name":"","descript":"","注释":""},
62 | "16445":{"field":"","num":"","table_name":"","descript":"","注释":""},
63 | "16446":{"field":"","num":"","table_name":"","descript":"","注释":""},
64 | "16447":{"field":"","num":"","table_name":"","descript":"","注释":""},
65 | "16448":{"field":"","num":"","table_name":"","descript":"","注释":""},
66 | "16449":{"field":"","num":"","table_name":"","descript":"","注释":""},
67 | "16450":{"field":"","num":"","table_name":"","descript":"","注释":""}
68 | }
--------------------------------------------------------------------------------
/bin/remote_signal.json:
--------------------------------------------------------------------------------
1 | {
2 | "1":{"field":"","num":"PVI0101","table_name":"","descript":"","注解":""},
3 | "2":{"field":"","num":"PVI0101","table_name":"","descript":"","注解":""},
4 | "3":{"field":"","num":"PVI0101","table_name":"","descript":"","注解":""},
5 | "4":{"field":"","num":"PVI0101","table_name":"","descript":"","注解":""},
6 | "5":{"field":"","num":"PVI0101","table_name":"","descript":"","注解":""},
7 | "6":{"field":"","num":"PVI0101","table_name":"","descript":"","注解":""},
8 | "7":{"field":"","num":"PVI0101","table_name":"","descript":"","注解":""},
9 | "8":{"field":"","num":"PVI0101","table_name":"","descript":"","注解":""},
10 | "9":{"field":"","num":"PVI0101","table_name":"","descript":"","注解":""},
11 | "10":{"field":"","num":"PVI0101","table_name":"","descript":"","注解":""},
12 | "11":{"field":"","num":"PVI0101","table_name":"","descript":"","注解":""},
13 | "12":{"field":"","num":"PVI0101","table_name":"","descript":"","注解":""},
14 | "13":{"field":"","num":"PVI0101","table_name":"","descript":"","注解":""},
15 | "14":{"field":"status_down","num":"PVI0101","table_name":"pvdigitalquantitydata","descript":"西科逆变器1_停机","注解":""},
16 | "15":{"field":"status_standby","num":"PVI0101","table_name":"pvdigitalquantitydata","descript":"西科逆变器1_待机","注解":""},
17 | "16":{"field":"status_selftest","num":"PVI0101","table_name":"pvdigitalquantitydata","descript":"西科逆变器1_自检","注解":""},
18 | "17":{"field":"status_ongrid","num":"PVI0101","table_name":"pvdigitalquantitydata","descript":"西科逆变器1_并网","注解":""},
19 | "18":{"field":"locking_self","num":"PVI0101","table_name":"pvdigitalquantitydata","descript":"西科逆变器1_闭锁未自锁","注解":""},
20 | "19":{"field":"","num":"PVI0101","table_name":"pvdigitalquantitydata","descript":"西科逆变器1_有无开关机命令","注解":""},
21 | "20":{"field":"emergency_stop","num":"PVI0101","table_name":"pvdigitalquantitydata","descript":"西科逆变器1_急停按下未按下","注解":""},
22 | "21":{"field":"remote_local","num":"PVI0101","table_name":"pvdigitalquantitydata","descript":"西科逆变器1_远程本地","注解":""},
23 | "22":{"field":"reactive_power_compensation","num":"PVI0101","table_name":"pvdigitalquantitydata","descript":"西科逆变器1_夜间无功补偿","注解":""},
24 | "23":{"field":"smoke_alarm","num":"PVI0101","table_name":"pvdigitalquantitydata","descript":"西科逆变器1_烟感报警","注解":""},
25 | "24":{"field":"DC_lightning_protection","num":"PVI0101","table_name":"pvdigitalquantitydata","descript":"西科逆变器1_直流防雷故障","注解":""},
26 | "25":{"field":"AC_lightning_protection","num":"PVI0101","table_name":"pvdigitalquantitydata","descript":"西科逆变器1_交流防雷故障","注解":""},
27 | "26":{"field":"PV_reverse_connection","num":"PVI0101","table_name":"pvdigitalquantitydata","descript":"西科逆变器1_PV反接","注解":""},
28 | "27":{"field":"PV_insulation_resistance","num":"PVI0101","table_name":"pvdigitalquantitydata","descript":"西科逆变器1_PV对地绝缘阻抗异常","注解":""},
29 | "28":{"field":"DC_overvoltage","num":"PVI0101","table_name":"pvdigitalquantitydata","descript":"西科逆变器1_直流过压","注解":""},
30 | "29":{"field":"power_voltage","num":"PVI0101","table_name":"pvdigitalquantitydata","descript":"西科逆变器1_电网电压异常","注解":""},
31 | "30":{"field":"grid_frequency","num":"PVI0101","table_name":"pvdigitalquantitydata","descript":"西科逆变器1_电网频率异常","注解":""},
32 | "31":{"field":"grid_reverse_order","num":"PVI0101","table_name":"pvdigitalquantitydata","descript":"西科逆变器1_电网反序","注解":""},
33 | "32":{"field":"inverter_overload","num":"PVI0101","table_name":"pvdigitalquantitydata","descript":"西科逆变器1_逆变器过载","注解":""},
34 | "33":{"field":"inverter_overheating","num":"PVI0101","table_name":"pvdigitalquantitydata","descript":"西科逆变器1_逆变器过热","注解":""},
35 | "34":{"field":"ambient_temperature_overheating","num":"PVI0101","table_name":"pvdigitalquantitydata","descript":"西科逆变器1_环境温度过热","注解":""},
36 | "35":{"field":"inverter_short_circuit","num":"PVI0101","table_name":"pvdigitalquantitydata","descript":"西科逆变器1_逆变器短路","注解":""},
37 | "36":{"field":"island_protection","num":"PVI0101","table_name":"pvdigitalquantitydata","descript":"西科逆变器1_孤岛保护","注解":""},
38 | "37":{"field":"","num":"","table_name":"","descript":"","注解":""},
39 | "38":{"field":"","num":"","table_name":"","descript":"","注解":""},
40 | "39":{"field":"","num":"","table_name":"","descript":"","注解":""},
41 | "40":{"field":"","num":"","table_name":"","descript":"","注解":""}
42 | }
--------------------------------------------------------------------------------
/bin/typeId.properties:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msun1996/IEC104_microgrid/daa120f86a8e896db121546f1d0823e2bf459480/bin/typeId.properties
--------------------------------------------------------------------------------
/projectInstruction/picture/IEC104主目录结构.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msun1996/IEC104_microgrid/daa120f86a8e896db121546f1d0823e2bf459480/projectInstruction/picture/IEC104主目录结构.png
--------------------------------------------------------------------------------
/projectInstruction/picture/IEC104主站响应发送遥控、遥调命令图.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msun1996/IEC104_microgrid/daa120f86a8e896db121546f1d0823e2bf459480/projectInstruction/picture/IEC104主站响应发送遥控、遥调命令图.png
--------------------------------------------------------------------------------
/projectInstruction/picture/IEC104帧格式.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msun1996/IEC104_microgrid/daa120f86a8e896db121546f1d0823e2bf459480/projectInstruction/picture/IEC104帧格式.png
--------------------------------------------------------------------------------
/projectInstruction/picture/IEC104配置文件目录.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msun1996/IEC104_microgrid/daa120f86a8e896db121546f1d0823e2bf459480/projectInstruction/picture/IEC104配置文件目录.png
--------------------------------------------------------------------------------
/projectInstruction/picture/IEC主站程序流程图.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msun1996/IEC104_microgrid/daa120f86a8e896db121546f1d0823e2bf459480/projectInstruction/picture/IEC主站程序流程图.png
--------------------------------------------------------------------------------
/projectInstruction/picture/I帧格式.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msun1996/IEC104_microgrid/daa120f86a8e896db121546f1d0823e2bf459480/projectInstruction/picture/I帧格式.png
--------------------------------------------------------------------------------
/projectInstruction/picture/PMA从站遥控、遥调信息接收图.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msun1996/IEC104_microgrid/daa120f86a8e896db121546f1d0823e2bf459480/projectInstruction/picture/PMA从站遥控、遥调信息接收图.png
--------------------------------------------------------------------------------
/projectInstruction/picture/PMA遥信图.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msun1996/IEC104_microgrid/daa120f86a8e896db121546f1d0823e2bf459480/projectInstruction/picture/PMA遥信图.png
--------------------------------------------------------------------------------
/projectInstruction/picture/PMA遥信数据详情.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msun1996/IEC104_microgrid/daa120f86a8e896db121546f1d0823e2bf459480/projectInstruction/picture/PMA遥信数据详情.png
--------------------------------------------------------------------------------
/projectInstruction/picture/S帧格式.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msun1996/IEC104_microgrid/daa120f86a8e896db121546f1d0823e2bf459480/projectInstruction/picture/S帧格式.png
--------------------------------------------------------------------------------
/projectInstruction/picture/U帧格式.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msun1996/IEC104_microgrid/daa120f86a8e896db121546f1d0823e2bf459480/projectInstruction/picture/U帧格式.png
--------------------------------------------------------------------------------
/projectInstruction/picture/Web对应遥信显示.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msun1996/IEC104_microgrid/daa120f86a8e896db121546f1d0823e2bf459480/projectInstruction/picture/Web对应遥信显示.png
--------------------------------------------------------------------------------
/projectInstruction/picture/Web控制信息命令下发图.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msun1996/IEC104_microgrid/daa120f86a8e896db121546f1d0823e2bf459480/projectInstruction/picture/Web控制信息命令下发图.png
--------------------------------------------------------------------------------
/projectInstruction/picture/dev.json数据格式.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msun1996/IEC104_microgrid/daa120f86a8e896db121546f1d0823e2bf459480/projectInstruction/picture/dev.json数据格式.png
--------------------------------------------------------------------------------
/projectInstruction/picture/主从站建立链路图(PMA).png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msun1996/IEC104_microgrid/daa120f86a8e896db121546f1d0823e2bf459480/projectInstruction/picture/主从站建立链路图(PMA).png
--------------------------------------------------------------------------------
/projectInstruction/picture/主站遥信解析图.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msun1996/IEC104_microgrid/daa120f86a8e896db121546f1d0823e2bf459480/projectInstruction/picture/主站遥信解析图.png
--------------------------------------------------------------------------------
/projectInstruction/picture/数据库设备操作类.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msun1996/IEC104_microgrid/daa120f86a8e896db121546f1d0823e2bf459480/projectInstruction/picture/数据库设备操作类.png
--------------------------------------------------------------------------------
/projectInstruction/picture/数据库设备模型.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msun1996/IEC104_microgrid/daa120f86a8e896db121546f1d0823e2bf459480/projectInstruction/picture/数据库设备模型.png
--------------------------------------------------------------------------------
/projectInstruction/picture/遥信、遥测json数据格式.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msun1996/IEC104_microgrid/daa120f86a8e896db121546f1d0823e2bf459480/projectInstruction/picture/遥信、遥测json数据格式.png
--------------------------------------------------------------------------------
/projectInstruction/picture/遥信数据库对应更新.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msun1996/IEC104_microgrid/daa120f86a8e896db121546f1d0823e2bf459480/projectInstruction/picture/遥信数据库对应更新.png
--------------------------------------------------------------------------------
/projectInstruction/picture/遥控、遥调json数据格式.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msun1996/IEC104_microgrid/daa120f86a8e896db121546f1d0823e2bf459480/projectInstruction/picture/遥控、遥调json数据格式.png
--------------------------------------------------------------------------------
/projectInstruction/picture/遥控、遥调定义字典图.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msun1996/IEC104_microgrid/daa120f86a8e896db121546f1d0823e2bf459480/projectInstruction/picture/遥控、遥调定义字典图.png
--------------------------------------------------------------------------------
/resources/cause.properties:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msun1996/IEC104_microgrid/daa120f86a8e896db121546f1d0823e2bf459480/resources/cause.properties
--------------------------------------------------------------------------------
/resources/dev.json:
--------------------------------------------------------------------------------
1 | {
2 | "PVI0101":{"name":"光伏1区光伏逆变器1号", "DEV_TYPE":1 },
3 | "PVI0102":{"name":"光伏1区光伏逆变器2号", "DEV_TYPE":1 },
4 | "PVI0201":{"name":"光伏2区光伏逆变器1号", "DEV_TYPE":1 },
5 | "PVI0202":{"name":"光伏2区光伏逆变器2号", "DEV_TYPE":1 },
6 | "HS01":{"name":"高压负荷开关1号(间隔区)", "DEV_TYPE":20 },
7 | "HS1011":{"name":"高压负荷开关1号(光伏1区)", "DEV_TYPE":20 },
8 | "HS1021":{"name":"高压负荷开关1号(光伏2区)", "DEV_TYPE":20 },
9 | "BS101011":{"name":"断路器1号(光伏1区逆变器1)", "DEV_TYPE":22 },
10 | "BS101021":{"name":"断路器1号(光伏1区逆变器2)", "DEV_TYPE":22 },
11 | "BS102011":{"name":"断路器1号(光伏2区逆变器1)", "DEV_TYPE":22 },
12 | "BS102021":{"name":"断路器1号(光伏2区逆变器2)", "DEV_TYPE":22 }
13 | }
--------------------------------------------------------------------------------
/resources/remote_adjust.json:
--------------------------------------------------------------------------------
1 | {
2 | "25089":{"field":"active_power","num":"PVI0101","descript":"西科逆变器1_有功功率遥调值","注解":""},
3 | "25090":{"field":"reactive_power","num":"PVI0101","descript":"西科逆变器1_无功功率遥调值","注解":""},
4 | "25091":{"field":"active_power","num":"PVI0102","descript":"西科逆变器2_有功功率遥调值","注解":""},
5 | "25092":{"field":"reactive_power","num":"PVI0102","descript":"西科逆变器2_无功功率遥调值","注解":""},
6 | "25093":{"field":"","num":"","descript":"","注解":""},
7 | "25094":{"field":"","num":"","descript":"","注解":""},
8 | "25095":{"field":"","num":"","descript":"","注解":""},
9 | "25096":{"field":"","num":"","descript":"","注解":""},
10 | "25097":{"field":"powerfactor","num":"PVI0101","descript":"西科逆变器1_功率因数遥调值","注解":""},
11 | "25098":{"field":"powerfactor","num":"PVI0102","descript":"西科逆变器2_功率因数遥调值","注解":""},
12 | "25099":{"field":"","num":"","descript":"","注解":""},
13 | "25100":{"field":"","num":"","descript":"","注解":""}
14 | }
--------------------------------------------------------------------------------
/resources/remote_control.json:
--------------------------------------------------------------------------------
1 | {
2 | "24577":{"field":"switch_status","num":"BS101011","descript":"1#断路器","注解":""},
3 | "24578":{"field":"switch_status","num":"BS101021","descript":"2#断路器","注解":""},
4 | "24579":{"field":"switch_status","num":"HS1011","descript":"高压负荷开关","注解":""},
5 | "24580":{"field":"switch_status","num":"PVI0101","descript":"西科逆变器1_开关机命令","注解":""},
6 | "24581":{"field":"switch_status","num":"PVI0102","descript":"西科逆变器2_开关机命令","注解":""},
7 | "24582":{"field":"","num":"","descript":"","注解":""},
8 | "24583":{"field":"","num":"","descript":"","注解":""},
9 | "24584":{"field":"","num":"","descript":"","注解":""},
10 | "24585":{"field":"","num":"","descript":"","注解":""},
11 | "24586":{"field":"","num":"","descript":"","注解":""},
12 | "24587":{"field":"","num":"","descript":"","注解":""},
13 | "24588":{"field":"","num":"","descript":"","注解":""}
14 | }
--------------------------------------------------------------------------------
/resources/remote_measure.json:
--------------------------------------------------------------------------------
1 | {
2 | "16385":{"field":"","num":"","table_name":"","descript":"","注释":""},
3 | "16386":{"field":"","num":"","table_name":"","descript":"","注释":""},
4 | "16387":{"field":"","num":"","table_name":"","descript":"","注释":""},
5 | "16388":{"field":"","num":"","table_name":"","descript":"","注释":""},
6 | "16389":{"field":"","num":"","table_name":"","descript":"","注释":""},
7 | "16390":{"field":"","num":"","table_name":"","descript":"","注释":""},
8 | "16391":{"field":"","num":"","table_name":"","descript":"","注释":""},
9 | "16392":{"field":"","num":"","table_name":"","descript":"","注释":""},
10 | "16393":{"field":"","num":"","table_name":"","descript":"","注释":""},
11 | "16394":{"field":"","num":"","table_name":"","descript":"","注释":""},
12 | "16395":{"field":"","num":"","table_name":"","descript":"","注释":""},
13 | "16396":{"field":"","num":"","table_name":"","descript":"","注释":""},
14 | "16397":{"field":"","num":"","table_name":"","descript":"","注释":""},
15 | "16398":{"field":"","num":"","table_name":"","descript":"","注释":""},
16 | "16399":{"field":"","num":"","table_name":"","descript":"","注释":""},
17 | "16400":{"field":"","num":"","table_name":"","descript":"","注释":""},
18 | "16401":{"field":"","num":"","table_name":"","descript":"","注释":""},
19 | "16402":{"field":"","num":"","table_name":"","descript":"","注释":""},
20 | "16403":{"field":"","num":"","table_name":"","descript":"","注释":""},
21 | "16404":{"field":"","num":"","table_name":"","descript":"","注释":""},
22 | "16405":{"field":"","num":"","table_name":"","descript":"","注释":""},
23 | "16406":{"field":"","num":"","table_name":"","descript":"","注释":""},
24 | "16407":{"field":"","num":"","table_name":"","descript":"","注释":""},
25 | "16408":{"field":"matrix_volt","num":"PVI0101","table_name":"pvanalogquantitydata1","descript":"西科逆变器1_阵列电压","注释":""},
26 | "16409":{"field":"matrix_cur","num":"PVI0101","table_name":"pvanalogquantitydata1","descript":"西科逆变器1_阵列电流","注释":""},
27 | "16410":{"field":"matrix_power_in","num":"PVI0101","table_name":"pvanalogquantitydata1","descript":"西科逆变器1_阵列输入功率","注释":""},
28 | "16411":{"field":"grid_volt_ab","num":"PVI0101","table_name":"pvanalogquantitydata1","descript":"西科逆变器1_电网AB线电压","注释":""},
29 | "16412":{"field":"grid_volt_bc","num":"PVI0101","table_name":"pvanalogquantitydata1","descript":"西科逆变器1_电网BC线电压","注释":""},
30 | "16413":{"field":"grid_volt_ca","num":"PVI0101","table_name":"pvanalogquantitydata1","descript":"西科逆变器1_电网CA线电压","注释":""},
31 | "16414":{"field":"on_grid_cur_a","num":"PVI0101","table_name":"pvanalogquantitydata1","descript":"西科逆变器1_A相并网电流","注释":""},
32 | "16415":{"field":"on_grid_cur_b","num":"PVI0101","table_name":"pvanalogquantitydata1","descript":"西科逆变器1_B相并网电流","注释":""},
33 | "16416":{"field":"on_grid_cur_c","num":"PVI0101","table_name":"pvanalogquantitydata1","descript":"西科逆变器1_C相并网电流","注释":""},
34 | "16417":{"field":"power_factor_a","num":"PVI0101","table_name":"pvanalogquantitydata1","descript":"西科逆变器1_A相功率因数","注释":""},
35 | "16418":{"field":"power_factor_b","num":"PVI0101","table_name":"pvanalogquantitydata1","descript":"西科逆变器1_B相功率因数","注释":""},
36 | "16419":{"field":"power_factor_c","num":"PVI0101","table_name":"pvanalogquantitydata1","descript":"西科逆变器1_C相功率因数","注释":""},
37 | "16420":{"field":"grid_freq","num":"PVI0101","table_name":"pvanalogquantitydata1","descript":"西科逆变器1_电网频率","注释":""},
38 | "16421":{"field":"on_grid_p","num":"PVI0101","table_name":"pvanalogquantitydata2","descript":"西科逆变器1_并网有功功率","注释":""},
39 | "16422":{"field":"on_grid_q","num":"PVI0101","table_name":"pvanalogquantitydata2","descript":"西科逆变器1_并网无功功率","注释":""},
40 | "16423":{"field":"on_grid_s","num":"PVI0101","table_name":"pvanalogquantitydata2","descript":"西科逆变器1_并网视在功率","注释":""},
41 | "16424":{"field":"day_runtime","num":"PVI0101","table_name":"pvanalogquantitydata2","descript":"西科逆变器1_日运行时间","注释":""},
42 | "16425":{"field":"inv_cabin_temp","num":"PVI0101","table_name":"pvanalogquantitydata2","descript":"西科逆变器1_逆变器机柜温度","注释":""},
43 | "16426":{"field":"","num":"","table_name":"","descript":"","注释":""},
44 | "16427":{"field":"","num":"","table_name":"","descript":"","注释":""},
45 | "16428":{"field":"","num":"","table_name":"","descript":"","注释":""},
46 | "16429":{"field":"","num":"","table_name":"","descript":"","注释":""},
47 | "16430":{"field":"","num":"","table_name":"","descript":"","注释":""},
48 | "16431":{"field":"","num":"","table_name":"","descript":"","注释":""},
49 | "16432":{"field":"","num":"","table_name":"","descript":"","注释":""},
50 | "16433":{"field":"","num":"","table_name":"","descript":"","注释":""},
51 | "16434":{"field":"","num":"","table_name":"","descript":"","注释":""},
52 | "16435":{"field":"","num":"","table_name":"","descript":"","注释":""},
53 | "16436":{"field":"day_gen_power","num":"PVI0101","table_name":"pvanalogquantitydata2","descript":"西科逆变器1_系统日发电量","注释":""},
54 | "16437":{"field":"total_gen_power","num":"PVI0101","table_name":"pvanalogquantitydata2","descript":"西科逆变器1_系统累计发电量","注释":""},
55 | "16438":{"field":"co2_reduce","num":"PVI0101","table_name":"pvanalogquantitydata2","descript":"西科逆变器1_CO2减排量","注释":""},
56 | "16439":{"field":"total_runtime","num":"PVI0101","table_name":"pvanalogquantitydata2","descript":"西科逆变器1_总运行时间","注释":""},
57 | "16440":{"field":"","num":"","table_name":"","descript":"","注释":""},
58 | "16441":{"field":"","num":"","table_name":"","descript":"","注释":""},
59 | "16442":{"field":"","num":"","table_name":"","descript":"","注释":""},
60 | "16443":{"field":"","num":"","table_name":"","descript":"","注释":""},
61 | "16444":{"field":"","num":"","table_name":"","descript":"","注释":""},
62 | "16445":{"field":"","num":"","table_name":"","descript":"","注释":""},
63 | "16446":{"field":"","num":"","table_name":"","descript":"","注释":""},
64 | "16447":{"field":"","num":"","table_name":"","descript":"","注释":""},
65 | "16448":{"field":"","num":"","table_name":"","descript":"","注释":""},
66 | "16449":{"field":"","num":"","table_name":"","descript":"","注释":""},
67 | "16450":{"field":"","num":"","table_name":"","descript":"","注释":""}
68 | }
--------------------------------------------------------------------------------
/resources/remote_signal.json:
--------------------------------------------------------------------------------
1 | {
2 | "1":{"field":"","num":"PVI0101","table_name":"","descript":"","注解":""},
3 | "2":{"field":"","num":"PVI0101","table_name":"","descript":"","注解":""},
4 | "3":{"field":"","num":"PVI0101","table_name":"","descript":"","注解":""},
5 | "4":{"field":"","num":"PVI0101","table_name":"","descript":"","注解":""},
6 | "5":{"field":"","num":"PVI0101","table_name":"","descript":"","注解":""},
7 | "6":{"field":"","num":"PVI0101","table_name":"","descript":"","注解":""},
8 | "7":{"field":"","num":"PVI0101","table_name":"","descript":"","注解":""},
9 | "8":{"field":"","num":"PVI0101","table_name":"","descript":"","注解":""},
10 | "9":{"field":"","num":"PVI0101","table_name":"","descript":"","注解":""},
11 | "10":{"field":"","num":"PVI0101","table_name":"","descript":"","注解":""},
12 | "11":{"field":"","num":"PVI0101","table_name":"","descript":"","注解":""},
13 | "12":{"field":"","num":"PVI0101","table_name":"","descript":"","注解":""},
14 | "13":{"field":"","num":"PVI0101","table_name":"","descript":"","注解":""},
15 | "14":{"field":"status_down","num":"PVI0101","table_name":"pvdigitalquantitydata","descript":"西科逆变器1_停机","注解":""},
16 | "15":{"field":"status_standby","num":"PVI0101","table_name":"pvdigitalquantitydata","descript":"西科逆变器1_待机","注解":""},
17 | "16":{"field":"status_selftest","num":"PVI0101","table_name":"pvdigitalquantitydata","descript":"西科逆变器1_自检","注解":""},
18 | "17":{"field":"status_ongrid","num":"PVI0101","table_name":"pvdigitalquantitydata","descript":"西科逆变器1_并网","注解":""},
19 | "18":{"field":"locking_self","num":"PVI0101","table_name":"pvdigitalquantitydata","descript":"西科逆变器1_闭锁未自锁","注解":""},
20 | "19":{"field":"","num":"PVI0101","table_name":"pvdigitalquantitydata","descript":"西科逆变器1_有无开关机命令","注解":""},
21 | "20":{"field":"emergency_stop","num":"PVI0101","table_name":"pvdigitalquantitydata","descript":"西科逆变器1_急停按下未按下","注解":""},
22 | "21":{"field":"remote_local","num":"PVI0101","table_name":"pvdigitalquantitydata","descript":"西科逆变器1_远程本地","注解":""},
23 | "22":{"field":"reactive_power_compensation","num":"PVI0101","table_name":"pvdigitalquantitydata","descript":"西科逆变器1_夜间无功补偿","注解":""},
24 | "23":{"field":"smoke_alarm","num":"PVI0101","table_name":"pvdigitalquantitydata","descript":"西科逆变器1_烟感报警","注解":""},
25 | "24":{"field":"DC_lightning_protection","num":"PVI0101","table_name":"pvdigitalquantitydata","descript":"西科逆变器1_直流防雷故障","注解":""},
26 | "25":{"field":"AC_lightning_protection","num":"PVI0101","table_name":"pvdigitalquantitydata","descript":"西科逆变器1_交流防雷故障","注解":""},
27 | "26":{"field":"PV_reverse_connection","num":"PVI0101","table_name":"pvdigitalquantitydata","descript":"西科逆变器1_PV反接","注解":""},
28 | "27":{"field":"PV_insulation_resistance","num":"PVI0101","table_name":"pvdigitalquantitydata","descript":"西科逆变器1_PV对地绝缘阻抗异常","注解":""},
29 | "28":{"field":"DC_overvoltage","num":"PVI0101","table_name":"pvdigitalquantitydata","descript":"西科逆变器1_直流过压","注解":""},
30 | "29":{"field":"power_voltage","num":"PVI0101","table_name":"pvdigitalquantitydata","descript":"西科逆变器1_电网电压异常","注解":""},
31 | "30":{"field":"grid_frequency","num":"PVI0101","table_name":"pvdigitalquantitydata","descript":"西科逆变器1_电网频率异常","注解":""},
32 | "31":{"field":"grid_reverse_order","num":"PVI0101","table_name":"pvdigitalquantitydata","descript":"西科逆变器1_电网反序","注解":""},
33 | "32":{"field":"inverter_overload","num":"PVI0101","table_name":"pvdigitalquantitydata","descript":"西科逆变器1_逆变器过载","注解":""},
34 | "33":{"field":"inverter_overheating","num":"PVI0101","table_name":"pvdigitalquantitydata","descript":"西科逆变器1_逆变器过热","注解":""},
35 | "34":{"field":"ambient_temperature_overheating","num":"PVI0101","table_name":"pvdigitalquantitydata","descript":"西科逆变器1_环境温度过热","注解":""},
36 | "35":{"field":"inverter_short_circuit","num":"PVI0101","table_name":"pvdigitalquantitydata","descript":"西科逆变器1_逆变器短路","注解":""},
37 | "36":{"field":"island_protection","num":"PVI0101","table_name":"pvdigitalquantitydata","descript":"西科逆变器1_孤岛保护","注解":""},
38 | "37":{"field":"","num":"","table_name":"","descript":"","注解":""},
39 | "38":{"field":"","num":"","table_name":"","descript":"","注解":""},
40 | "39":{"field":"","num":"","table_name":"","descript":"","注解":""},
41 | "40":{"field":"","num":"","table_name":"","descript":"","注解":""}
42 | }
--------------------------------------------------------------------------------
/resources/typeId.properties:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/msun1996/IEC104_microgrid/daa120f86a8e896db121546f1d0823e2bf459480/resources/typeId.properties
--------------------------------------------------------------------------------
/src/c3p0-config.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | com.mysql.jdbc.Driver
6 | jdbc:mysql://116.196.107.225:3306/microgriddata?useSSL=false
7 | microgrid
8 | microgridpasswd
9 |
10 |
11 |
12 | com.mysql.jdbc.Driver
13 | jdbc:mysql://116.196.107.225:3306/microgriddata?useSSL=false
14 | microgrid
15 | microgridpasswd
16 |
17 | 10
18 |
19 | 30
20 |
21 | 100
22 |
23 | 10
24 |
25 | 200
26 |
27 | 3000
28 |
29 | 5
30 |
31 | 0
32 |
33 | 1000
34 |
35 | false
36 |
37 | Test
38 |
39 | false
40 |
41 | 60
42 |
43 | 0
44 |
45 |
--------------------------------------------------------------------------------
/src/dao/DevControlDao.java:
--------------------------------------------------------------------------------
1 | package dao;
2 |
3 | import java.sql.Connection;
4 | import java.sql.PreparedStatement;
5 | import java.sql.ResultSet;
6 | import java.sql.SQLException;
7 | import java.util.ArrayList;
8 | import java.util.List;
9 |
10 | import jdbc.C3P0Utils;
11 |
12 | public class DevControlDao {
13 | // 添加设备 输入参数为设备编号和设备的类型号码
14 | public void addDev(String num , Integer dev_type) throws SQLException {
15 | Connection conn = C3P0Utils.getConnection();
16 | String sql = "" +
17 | "insert into microgrids_devcontrol " +
18 | "(num,dev_type)" +
19 | "values(?,?)";
20 | PreparedStatement ptmt = conn.prepareStatement(sql);
21 | ptmt.setString(1, num);
22 | ptmt.setInt(2, dev_type);
23 | ptmt.execute();
24 | conn.close();
25 | }
26 | // 更新设备类型号码
27 | public void updateDev(String num , Integer dev_type) throws SQLException {
28 | Connection conn = C3P0Utils.getConnection();
29 | String sql = "" +
30 | " update microgrids_devcontrol" +
31 | " set dev_type=? " +
32 | " where num=? ";
33 | PreparedStatement ptmt = conn.prepareStatement(sql);
34 | ptmt.setInt(1, dev_type);
35 | ptmt.setString(2, num);
36 | ptmt.execute();
37 | conn.close();
38 | }
39 | // 删除设备 输入设备编号
40 | public void delDev(String num) throws SQLException {
41 | Connection conn = C3P0Utils.getConnection();
42 | String sql = "" +
43 | " delete from microgrids_devcontrol" +
44 | " where num = ?";
45 | PreparedStatement ptmt = conn.prepareStatement(sql);
46 | ptmt.setString(1, num);
47 | ptmt.execute();
48 | conn.close();
49 | }
50 | // 查询返回设备是否存在
51 | public Boolean exit(String num) throws SQLException {
52 | Connection conn = C3P0Utils.getConnection();
53 | String sql = " " +
54 | "select num from microgrids_devcontrol" +
55 | "where num = ?";
56 | PreparedStatement ptmt = conn.prepareStatement(sql);
57 | ptmt.setString(1, num);
58 | ResultSet rs = ptmt.executeQuery();
59 | if (rs.next()) {
60 | conn.close();
61 | return true;
62 | }else {
63 | conn.close();
64 | return false;
65 | }
66 | }
67 | // 查询所有存在设备编号,返回编号集合
68 | public List query() throws SQLException {
69 | List dev_nums = new ArrayList();
70 |
71 | Connection conn = C3P0Utils.getConnection();
72 | String sql = "" +
73 | "select num from microgrids_devcontrol";
74 | PreparedStatement ptmt = conn.prepareStatement(sql);
75 | ResultSet rs = ptmt.executeQuery();
76 | while (rs.next()) {
77 | String dev_num = rs.getString("num");
78 | dev_nums.add(dev_num);
79 | }
80 | conn.close();
81 | return dev_nums;
82 | }
83 | // 查询返回字段整型值(遥控)
84 | public Integer getint(String num, String field) throws SQLException {
85 | Integer value = 0;
86 | Connection conn = C3P0Utils.getConnection();
87 | String sql = "" +
88 | "select " + field + " from microgrids_devcontrol" +
89 | " where num = ?";
90 | PreparedStatement ptmt =conn.prepareStatement(sql);
91 | ptmt.setString(1, num);
92 | ResultSet rs = ptmt.executeQuery();
93 | while (rs.next()) {
94 | value = rs.getInt(field);
95 | }
96 | conn.close();
97 | return value;
98 | }
99 | // 查询返回字段浮点值(遥调)
100 | public Double getdouble(String num, String field) throws SQLException {
101 | Double value = 0.0;
102 | Connection conn = C3P0Utils.getConnection();
103 | String sql = "" +
104 | "select " + field + " from microgrids_devcontrol" +
105 | " where num = ?";
106 | PreparedStatement ptmt =conn.prepareStatement(sql);
107 | ptmt.setString(1, num);
108 | ResultSet rs = ptmt.executeQuery();
109 | while (rs.next()) {
110 | value = rs.getDouble(field);
111 | }
112 | conn.close();
113 | return value;
114 | }
115 | }
116 |
--------------------------------------------------------------------------------
/src/dao/PVAnalogQuantityData1Dao.java:
--------------------------------------------------------------------------------
1 | package dao;
2 |
3 | import java.sql.Connection;
4 | import java.sql.Date;
5 | import java.sql.PreparedStatement;
6 | import java.sql.SQLException;
7 | import java.sql.Types;
8 |
9 | import jdbc.C3P0Utils;
10 | import model.PVAnalogQuantityData1;
11 |
12 | public class PVAnalogQuantityData1Dao {
13 | // 添加 (输入类)
14 | public void addPVAnalogQuantityData1(PVAnalogQuantityData1 pva1) throws SQLException {
15 | Connection connection = C3P0Utils.getConnection();
16 | String sql = ""+
17 | "insert into microgrids_pvanalogquantitydata1" +
18 | "(pv_num, matrix_cur, matrix_volt, grid_volt_ab, grid_volt_bc, grid_volt_ca," +
19 | " on_grid_cur_a, on_grid_cur_b, on_grid_cur_c, power_factor_a, power_factor_b, power_factor_c,timestamp)" +
20 | "values(?,?,?,?,?,?,?,?,?,?,?,?,NOW())";
21 | PreparedStatement ptmt = connection.prepareStatement(sql);
22 | ptmt.setString(1, pva1.getPv_num());
23 | if (pva1.getMatrix_cur() != null) {
24 | ptmt.setDouble(2, pva1.getMatrix_cur());
25 | }else {
26 | ptmt.setNull(2, Types.DOUBLE);
27 | }
28 | if (pva1.getMatrix_volt() != null) {
29 | ptmt.setDouble(3, pva1.getMatrix_volt());
30 | }else {
31 | ptmt.setNull(3, Types.DOUBLE);
32 | }
33 | if (pva1.getGrid_volt_ab() != null) {
34 | ptmt.setDouble(4, pva1.getGrid_volt_ab());
35 | }else {
36 | ptmt.setNull(4, Types.DOUBLE);
37 | }
38 | if (pva1.getGrid_volt_bc() != null) {
39 | ptmt.setDouble(5, pva1.getGrid_volt_bc());
40 | }else {
41 | ptmt.setNull(5, Types.DOUBLE);
42 | }
43 | if (pva1.getGrid_volt_ca() != null) {
44 | ptmt.setDouble(6, pva1.getGrid_volt_ca());
45 | }else {
46 | ptmt.setNull(6, Types.DOUBLE);
47 | }
48 | if (pva1.getOn_grid_cur_a() != null) {
49 | ptmt.setDouble(7, pva1.getOn_grid_cur_a());
50 | }else {
51 | ptmt.setNull(7, Types.DOUBLE);
52 | }
53 | if (pva1.getOn_grid_cur_b() != null) {
54 | ptmt.setDouble(8, pva1.getOn_grid_cur_b());
55 | }else {
56 | ptmt.setNull(8, Types.DOUBLE);
57 | }
58 | if (pva1.getOn_grid_cur_c() != null) {
59 | ptmt.setDouble(9, pva1.getOn_grid_cur_c());
60 | }else {
61 | ptmt.setNull(9, Types.DOUBLE);
62 | }
63 | if (pva1.getPower_factor_a() != null) {
64 | ptmt.setDouble(10, pva1.getPower_factor_a());
65 | }else {
66 | ptmt.setNull(10, Types.DOUBLE);
67 | }
68 | if (pva1.getPower_factor_b() != null) {
69 | ptmt.setDouble(11, pva1.getPower_factor_b());
70 | }else {
71 | ptmt.setNull(11, Types.DOUBLE);
72 | }
73 | if (pva1.getPower_factor_c() != null) {
74 | ptmt.setDouble(12, pva1.getPower_factor_c());
75 | }else {
76 | ptmt.setNull(12, Types.DOUBLE);
77 | }
78 | ptmt.execute();
79 | connection.close();
80 | }
81 | }
82 |
--------------------------------------------------------------------------------
/src/dao/PVAnalogQuantityData2Dao.java:
--------------------------------------------------------------------------------
1 | package dao;
2 |
3 | import java.sql.Connection;
4 | import java.sql.PreparedStatement;
5 | import java.sql.SQLException;
6 | import java.sql.Types;
7 |
8 | import jdbc.C3P0Utils;
9 | import model.PVAnalogQuantityData2;
10 |
11 | public class PVAnalogQuantityData2Dao {
12 | // 添加 (输入类)
13 | public void addPVAnalogQuantityData2(PVAnalogQuantityData2 pva2) throws SQLException {
14 | Connection connection = C3P0Utils.getConnection();
15 | String sql = ""+
16 | "insert into microgrids_pvanalogquantitydata2" +
17 | "(pv_num, on_grid_p, on_grid_q, on_grid_s, inv_cabin_temp, day_gen_power," +
18 | " day_runtime, total_gen_power, total_runtime, co2_reduce,timestamp)" +
19 | "values(?,?,?,?,?,?,?,?,?,?,NOW())";
20 | PreparedStatement ptmt = connection.prepareStatement(sql);
21 | ptmt.setString(1, pva2.getPv_num());
22 | if (pva2.getOn_grid_p() != null) {
23 | ptmt.setDouble(2, pva2.getOn_grid_p());
24 | }else {
25 | ptmt.setNull(2, Types.DOUBLE);
26 | }
27 | if (pva2.getOn_grid_q() != null) {
28 | ptmt.setDouble(3, pva2.getOn_grid_q());
29 | }else {
30 | ptmt.setNull(3, Types.DOUBLE);
31 | }
32 | if (pva2.getOn_grid_s() != null) {
33 | ptmt.setDouble(4, pva2.getOn_grid_s());
34 | }else {
35 | ptmt.setNull(4, Types.DOUBLE);
36 | }
37 | if (pva2.getInv_cabin_temp() != null) {
38 | ptmt.setDouble(5, pva2.getInv_cabin_temp());
39 | }else {
40 | ptmt.setNull(5, Types.DOUBLE);
41 | }
42 | if (pva2.getDay_gen_power() != null) {
43 | ptmt.setDouble(6, pva2.getDay_gen_power());
44 | }else {
45 | ptmt.setNull(6, Types.DOUBLE);
46 | }
47 | if (pva2.getDay_runtime() != null) {
48 | ptmt.setDouble(7, pva2.getDay_runtime());
49 | }else {
50 | ptmt.setNull(7, Types.DOUBLE);
51 | }
52 | if (pva2.getTotal_gen_power() != null) {
53 | ptmt.setDouble(8, pva2.getTotal_gen_power());
54 | }else {
55 | ptmt.setNull(8, Types.DOUBLE);
56 | }
57 | if (pva2.getTotal_runtime() != null) {
58 | ptmt.setDouble(9, pva2.getTotal_runtime());
59 | }else {
60 | ptmt.setNull(9, Types.DOUBLE);
61 | }
62 | if (pva2.getCo2_reduce() != null) {
63 | ptmt.setDouble(10, pva2.getCo2_reduce());
64 | }else {
65 | ptmt.setNull(10, Types.DOUBLE);
66 | }
67 | ptmt.execute();
68 | connection.close();
69 | }
70 | }
71 |
--------------------------------------------------------------------------------
/src/dao/PVDigitalQuantityDataDao.java:
--------------------------------------------------------------------------------
1 | package dao;
2 |
3 | import java.sql.Connection;
4 | import java.sql.PreparedStatement;
5 | import java.sql.ResultSet;
6 | import java.sql.SQLException;
7 | import java.sql.Types;
8 | import java.util.ArrayList;
9 | import java.util.List;
10 | import java.util.Map;
11 |
12 | import jdbc.C3P0Utils;
13 | import model.PVDigitalQuantityData;
14 |
15 |
16 | // 光伏数字变量
17 | public class PVDigitalQuantityDataDao {
18 | // 添加(输入为pv_num)
19 | public void addPVDigitalQuantityData(String pv_num) throws SQLException {
20 | Connection conn = C3P0Utils.getConnection();
21 | String sql = "" +
22 | "insert into microgrids_pvdigitalquantitydata" +
23 | "(pv_num)" +
24 | "values(?)";
25 | PreparedStatement ptmt = conn.prepareStatement(sql);
26 | ptmt.setString(1, pv_num);
27 | ptmt.execute();
28 | conn.close();
29 | }
30 | // 添加(输入为PVD的类)
31 | public void addPVDigitalQuantityData(PVDigitalQuantityData pv) throws SQLException {
32 | Connection conn = C3P0Utils.getConnection();
33 | String sql = "" +
34 | "insert into microgrids_pvdigitalquantitydata" +
35 | "(pv_num,status_down,status_standby,status_selftest,status_ongrid,locking_self,emergency_stop,remote_local,reactive_power_compensation,smoke_alarm," +
36 | "DC_lightning_protection,AC_lightning_protection,PV_reverse_connection,PV_insulation_resistance,DC_overvoltage," +
37 | "power_voltage,grid_frequency,grid_reverse_order,inverter_overload,inverter_overheating,inverter_short_circuit," +
38 | "ambient_temperature_overheating,island_protection)" +
39 | "values(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
40 | PreparedStatement ptmt = conn.prepareStatement(sql);
41 | ptmt.setString(1, pv.getPv_num());
42 | if (pv.getStatus_down() != null) {
43 | ptmt.setInt(2, pv.getStatus_down());
44 | }else {
45 | ptmt.setNull(2, Types.INTEGER);
46 | }
47 | if (pv.getStatus_standby() != null) {
48 | ptmt.setInt(3, pv.getStatus_standby());
49 | }else {
50 | ptmt.setNull(3, Types.INTEGER);
51 | }
52 | if (pv.getStatus_selftest() != null) {
53 | ptmt.setInt(4, pv.getStatus_selftest());
54 | }else {
55 | ptmt.setNull(4, Types.INTEGER);
56 | }
57 | if (pv.getStatus_ongrid() != null) {
58 | ptmt.setInt(5, pv.getStatus_ongrid());
59 | }else {
60 | ptmt.setNull(5, Types.INTEGER);
61 | }
62 | if (pv.getLocking_self() != null) {
63 | ptmt.setInt(6, pv.getLocking_self());
64 | }else {
65 | ptmt.setNull(6, Types.INTEGER);
66 | }
67 | if (pv.getEmergency_stop() != null) {
68 | ptmt.setInt(7, pv.getEmergency_stop());
69 | }else {
70 | ptmt.setNull(7, Types.INTEGER);
71 | }
72 | if (pv.getRemote_local() != null) {
73 | ptmt.setInt(8, pv.getRemote_local());
74 | }else {
75 | ptmt.setNull(8, Types.INTEGER);
76 | }
77 |
78 | if (pv.getReactive_power_compensation() != null) {
79 | ptmt.setInt(9, pv.getReactive_power_compensation());
80 | }else {
81 | ptmt.setNull(9, Types.INTEGER);
82 | }
83 | if (pv.getSmoke_alarm() != null) {
84 | ptmt.setInt(10, pv.getSmoke_alarm());
85 | }else {
86 | ptmt.setNull(10, Types.INTEGER);
87 | }
88 | if (pv.getDC_lightning_protection() != null) {
89 | ptmt.setInt(11, pv.getDC_lightning_protection());
90 | }else {
91 | ptmt.setNull(11, Types.INTEGER);
92 | }
93 | if (pv.getAC_lightning_protection() != null) {
94 | ptmt.setInt(12, pv.getAC_lightning_protection());
95 | }else {
96 | ptmt.setNull(12, Types.INTEGER);
97 | }
98 | if (pv.getPV_reverse_connection() != null) {
99 | ptmt.setInt(13, pv.getPV_reverse_connection());
100 | }else {
101 | ptmt.setNull(13, Types.INTEGER);
102 | }
103 | if (pv.getPV_insulation_resistance() != null) {
104 | ptmt.setInt(14, pv.getPV_insulation_resistance());
105 | }else {
106 | ptmt.setNull(14, Types.INTEGER);
107 | }
108 | if (pv.getDC_overvoltage() != null) {
109 | ptmt.setInt(15, pv.getDC_overvoltage());
110 | }else {
111 | ptmt.setNull(15, Types.INTEGER);
112 | }
113 | if (pv.getPower_voltage() != null) {
114 | ptmt.setInt(16, pv.getPower_voltage());
115 | }else {
116 | ptmt.setNull(16, Types.INTEGER);
117 | }
118 | if (pv.getGrid_frequency() != null) {
119 | ptmt.setInt(17, pv.getGrid_frequency());
120 | }else {
121 | ptmt.setNull(17, Types.INTEGER);
122 | }
123 | if (pv.getGrid_reverse_order() != null) {
124 | ptmt.setInt(18, pv.getGrid_reverse_order());
125 | }else {
126 | ptmt.setNull(18, Types.INTEGER);
127 | }
128 | if (pv.getInverter_overload() != null) {
129 | ptmt.setInt(19, pv.getInverter_overload());
130 | }else {
131 | ptmt.setNull(19, Types.INTEGER);
132 | }
133 | if (pv.getInverter_overheating() != null) {
134 | ptmt.setInt(20, pv.getInverter_overheating());
135 | }else {
136 | ptmt.setNull(20, Types.INTEGER);
137 | }
138 | if (pv.getInverter_short_circuit() != null) {
139 | ptmt.setInt(21, pv.getInverter_short_circuit());
140 | }else {
141 | ptmt.setNull(21, Types.INTEGER);
142 | }
143 | if (pv.getAmbient_temperature_overheating() != null) {
144 | ptmt.setInt(22, pv.getAmbient_temperature_overheating());
145 | }else {
146 | ptmt.setNull(22, Types.INTEGER);
147 | }
148 | if (pv.getIsland_protection() != null) {
149 | ptmt.setInt(23, pv.getIsland_protection());
150 | }else {
151 | ptmt.setNull(23, Types.INTEGER);
152 | }
153 | ptmt.execute();
154 | conn.close();
155 | }
156 | // 更新(输入为pv_num,更新字段,更新值)
157 | public void updatePVDigitalQuantityData(String num,String field, Integer value) throws SQLException {
158 | Connection conn = C3P0Utils.getConnection();
159 | String sql = "" +
160 | " update microgrids_pvdigitalquantitydata " +
161 | " set " + field + "= ? " +
162 | " where pv_num = ?";
163 | PreparedStatement ptmt = conn.prepareStatement(sql);
164 | ptmt.setInt(1, value);
165 | ptmt.setString(2, num);
166 | ptmt.execute();
167 | conn.close();
168 | }
169 | // 更新(输入为PVD的类)
170 | public void updatePVDigitalQuantityData(PVDigitalQuantityData pv) throws SQLException {
171 | Connection conn = C3P0Utils.getConnection();
172 | String sql = "" +
173 | " update microgrids_pvdigitalquantitydata " +
174 | " set status_down=?,status_standby=?,status_selftest=?,status_ongrid=?,locking_self=?,emergency_stop=?,remote_local=?,reactive_power_compensation=?,smoke_alarm=?," +
175 | " DC_lightning_protection=?,AC_lightning_protection=?,PV_reverse_connection=?,PV_insulation_resistance=?,DC_overvoltage=?," +
176 | " power_voltage=?,grid_frequency=?,grid_reverse_order=?,inverter_overload=?,inverter_overheating=?,inverter_short_circuit=?, "+
177 | " ambient_temperature_overheating=?,island_protection=? "+
178 | " where pv_num=?";
179 | PreparedStatement ptmt = conn.prepareStatement(sql);
180 | if (pv.getStatus_down() != null) {
181 | ptmt.setInt(1, pv.getStatus_down());
182 | }else {
183 | ptmt.setNull(1, Types.INTEGER);
184 | }
185 | if (pv.getStatus_standby() != null) {
186 | ptmt.setInt(2, pv.getStatus_standby());
187 | }else {
188 | ptmt.setNull(2, Types.INTEGER);
189 | }
190 | if (pv.getStatus_selftest() != null) {
191 | ptmt.setInt(3, pv.getStatus_selftest());
192 | }else {
193 | ptmt.setNull(3, Types.INTEGER);
194 | }
195 | if (pv.getStatus_ongrid() != null) {
196 | ptmt.setInt(4, pv.getStatus_ongrid());
197 | }else {
198 | ptmt.setNull(4, Types.INTEGER);
199 | }
200 | if (pv.getLocking_self() != null) {
201 | ptmt.setInt(5, pv.getLocking_self());
202 | }else {
203 | ptmt.setNull(5, Types.INTEGER);
204 | }
205 | if (pv.getEmergency_stop() != null) {
206 | ptmt.setInt(6, pv.getEmergency_stop());
207 | }else {
208 | ptmt.setNull(6, Types.INTEGER);
209 | }
210 | if (pv.getRemote_local() != null) {
211 | ptmt.setInt(7, pv.getRemote_local());
212 | }else {
213 | ptmt.setNull(7, Types.INTEGER);
214 | }
215 | if (pv.getReactive_power_compensation() != null) {
216 | ptmt.setInt(8, pv.getReactive_power_compensation());
217 | }else {
218 | ptmt.setNull(8, Types.INTEGER);
219 | }
220 | if (pv.getSmoke_alarm() != null) {
221 | ptmt.setInt(9, pv.getSmoke_alarm());
222 | }else {
223 | ptmt.setNull(9, Types.INTEGER);
224 | }
225 | if (pv.getDC_lightning_protection() != null) {
226 | ptmt.setInt(10, pv.getDC_lightning_protection());
227 | }else {
228 | ptmt.setNull(10, Types.INTEGER);
229 | }
230 | if (pv.getAC_lightning_protection() != null) {
231 | ptmt.setInt(11, pv.getAC_lightning_protection());
232 | }else {
233 | ptmt.setNull(11, Types.INTEGER);
234 | }
235 | if (pv.getPV_reverse_connection() != null) {
236 | ptmt.setInt(12, pv.getPV_reverse_connection());
237 | }else {
238 | ptmt.setNull(12, Types.INTEGER);
239 | }
240 | if (pv.getPV_insulation_resistance() != null) {
241 | ptmt.setInt(13, pv.getPV_insulation_resistance());
242 | }else {
243 | ptmt.setNull(13, Types.INTEGER);
244 | }
245 | if (pv.getDC_overvoltage() != null) {
246 | ptmt.setInt(14, pv.getDC_overvoltage());
247 | }else {
248 | ptmt.setNull(14, Types.INTEGER);
249 | }
250 | if (pv.getPower_voltage() != null) {
251 | ptmt.setInt(15, pv.getPower_voltage());
252 | }else {
253 | ptmt.setNull(15, Types.INTEGER);
254 | }
255 | if (pv.getGrid_frequency() != null) {
256 | ptmt.setInt(16, pv.getGrid_frequency());
257 | }else {
258 | ptmt.setNull(16, Types.INTEGER);
259 | }
260 | if (pv.getGrid_reverse_order() != null) {
261 | ptmt.setInt(17, pv.getGrid_reverse_order());
262 | }else {
263 | ptmt.setNull(17, Types.INTEGER);
264 | }
265 | if (pv.getInverter_overload() != null) {
266 | ptmt.setInt(18, pv.getInverter_overload());
267 | }else {
268 | ptmt.setNull(18, Types.INTEGER);
269 | }
270 | if (pv.getInverter_overheating() != null) {
271 | ptmt.setInt(19, pv.getInverter_overheating());
272 | }else {
273 | ptmt.setNull(19, Types.INTEGER);
274 | }
275 | if (pv.getInverter_short_circuit() != null) {
276 | ptmt.setInt(20, pv.getInverter_short_circuit());
277 | }else {
278 | ptmt.setNull(20, Types.INTEGER);
279 | }
280 | if (pv.getAmbient_temperature_overheating() != null) {
281 | ptmt.setInt(21, pv.getAmbient_temperature_overheating());
282 | }else {
283 | ptmt.setNull(21, Types.INTEGER);
284 | }
285 | if (pv.getIsland_protection() != null) {
286 | ptmt.setInt(22, pv.getIsland_protection());
287 | }else {
288 | ptmt.setNull(22, Types.INTEGER);
289 | }
290 | ptmt.setString(23, pv.getPv_num());
291 | ptmt.execute();
292 | conn.close();
293 | }
294 | // 删除
295 | public void delPVDigitalQuantityData(String pv_num) throws SQLException {
296 | Connection conn = C3P0Utils.getConnection();
297 | String sql = "" +
298 | " delete from microgrids_pvdigitalquantitydata " +
299 | " where pv_num=?";
300 | PreparedStatement ptmt = conn.prepareStatement(sql);
301 | ptmt.setString(1, pv_num);
302 | ptmt.execute();
303 | conn.close();
304 | }
305 | // 条件获取所有数据
306 | public List query(List