java 104规约_电网104规约解包(java)

2022-06-24 14:43:34 浏览数 (1)

大家好,又见面了,我是你们的朋友全栈君。

【实例简介】电网104规约解包java代码

项目是围绕电网规约101规约(DL/T634.5101-2002)和104规约(DL/T634.5104-2009),项目基于Java语言。 可以完成规约的内容解析工作和组装工作。可用于实际场景的把发送报文的生成等工作。

【文件目录】

101_104规约解析

├── LICENSE

├── README.md

├── docs

│ ├── 附件1:广东电网配网自动化101规约实施细则(试行).docx

│ ├── 附件2:广东电网配网自动化104规约实施细则(试行).docx

│ └── 附件3:规约解析细则.xlsx

├── iec.iml

├── iec_analysis

│ ├── iec_analysis.iml

│ ├── pom.xml

│ ├── src

│ │ ├── main

│ │ │ └── java

│ │ │ └── com

│ │ │ └── iec

│ │ │ ├── analysis

│ │ │ │ ├── common

│ │ │ │ │ ├── BalancedLinkCode.java

│ │ │ │ │ ├── TransferReason.java

│ │ │ │ │ └── TypeIdentifier.java

│ │ │ │ ├── exception

│ │ │ │ │ ├── CsCheckException.java

│ │ │ │ │ ├── CustomException.java

│ │ │ │ │ ├── IllegalFormatException.java

│ │ │ │ │ ├── LengthException.java

│ │ │ │ │ ├── UnknownLinkCodeException.java

│ │ │ │ │ ├── UnknownTransferReasonException.java

│ │ │ │ │ └── UnknownTypeIdentifierException.java

│ │ │ │ ├── protocol101

│ │ │ │ │ ├── ASDU.java

│ │ │ │ │ ├── Analysis.java

│ │ │ │ │ ├── Control.java

│ │ │ │ │ └── InformationBody

│ │ │ │ │ ├── InfoElement.java

│ │ │ │ │ ├── ParamePreset.java

│ │ │ │ │ ├── SystemCommand.java

│ │ │ │ │ ├── Telecontrol.java

│ │ │ │ │ ├── Telemetry.java

│ │ │ │ │ └── Telesignalling.java

│ │ │ │ └── protocol104

│ │ │ │ ├── ASDU.java

│ │ │ │ ├── Analysis.java

│ │ │ │ ├── ParamePreset104.java

│ │ │ │ ├── Telecontrol104.java

│ │ │ │ ├── Telemetry104.java

│ │ │ │ └── Telesignalling104.java

│ │ │ ├── assemble101

│ │ │ │ ├── ContinuousAddressBuilder.java

│ │ │ │ ├── UnContinuousAddressBuilder.java

│ │ │ │ └── VariableLengthPacket.java

│ │ │ ├── assemble104

│ │ │ │ ├── ContinuousAddressBuilder.java

│ │ │ │ ├── UnContinuousAddressBuilder.java

│ │ │ │ └── VaribleLengthPacket.java

│ │ │ └── utils

│ │ │ └── Util.java

│ │ └── test

│ │ └── java

│ │ └── com

│ │ └── iec

│ │ └── test

│ │ ├── Analysis101Test.java

│ │ └── Analysis104Test.java

│ └── target

│ ├── classes

│ │ └── com

│ │ └── iec

│ │ ├── analysis

│ │ │ ├── common

│ │ │ │ ├── BalancedLinkCode.class

│ │ │ │ ├── TransferReason.class

│ │ │ │ └── TypeIdentifier.class

│ │ │ ├── exception

│ │ │ │ ├── CsCheckException.class

│ │ │ │ ├── CustomException.class

│ │ │ │ ├── IllegalFormatException.class

│ │ │ │ ├── LengthException.class

│ │ │ │ ├── UnknownLinkCodeException.class

│ │ │ │ ├── UnknownTransferReasonException.class

│ │ │ │ └── UnknownTypeIdentifierException.class

│ │ │ ├── protocol101

│ │ │ │ ├── ASDU.class

│ │ │ │ ├── Analysis.class

│ │ │ │ ├── Control.class

│ │ │ │ └── InformationBody

│ │ │ │ ├── InfoElement.class

│ │ │ │ ├── ParamePreset.class

│ │ │ │ ├── SystemCommand.class

│ │ │ │ ├── Telecontrol.class

│ │ │ │ ├── Telemetry.class

│ │ │ │ └── Telesignalling.class

│ │ │ └── protocol104

│ │ │ ├── ASDU.class

│ │ │ ├── Analysis.class

│ │ │ ├── ParamePreset104.class

│ │ │ ├── Telecontrol104.class

│ │ │ ├── Telemetry104.class

│ │ │ └── Telesignalling104.class

│ │ ├── assemble101

│ │ │ ├── ContinuousAddressBuilder.class

│ │ │ ├── UnContinuousAddressBuilder.class

│ │ │ └── VariableLengthPacket.class

│ │ ├── assemble104

│ │ │ ├── ContinuousAddressBuilder.class

│ │ │ ├── UnContinuousAddressBuilder.class

│ │ │ └── VaribleLengthPacket.class

│ │ └── utils

│ │ └── Util.class

│ ├── generated-sources

│ │ └── annotations

│ ├── generated-test-sources

│ │ └── test-annotations

│ └── test-classes

│ └── com

│ └── iec

│ └── test

│ ├── Analysis101Test.class

│ └── Analysis104Test.class

├── iec_interaction

│ ├── iec_interaction.iml

│ └── pom.xml

└── pom.xml

43 directories, 79 files

【核心代码】

Apdu apdu = new Apdu(new DataInputStream(is));

if (apdu.getApciType() == Apdu.ApciType.I_FORMAT) {

Asdu asdu = apdu.getAsdu();

//处理I命令

handleData(asdu.getTypeId(), asdu.getInformationObjects());

//返回S确认命令

int receiveSeqNum = apdu.getSendSeqNumber() 1;

byte[] recNum = new byte[2];

recNum[0] = (byte) (receiveSeqNum << 1);

recNum[1] = (byte) (receiveSeqNum >> 7);

String recStr = ChangeUtils.toHexString(recNum);

os.write(ChangeUtils.hexStringToBytes(“68040100” recStr));

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/151361.html原文链接:https://javaforall.cn

0 人点赞