- 1. 核心类
- 2. Daten流程
- 3. 单元测试
GitHub:https://github.com/infiniteautomation/modbus4j
由Infinite Automation Systems和Serotonin Software用Java编写的ModbusVereinbarung的高性能和易用性实现。支持ASCII,RTU,TCP和UDP传输作为从属或主用,自动BitteUnterteilung区和AntwortDatentypAnalyse。
现在可以使用最新版本的公共Maven存储库,将其添加zupom.xml中
<repositories>
<repository>
<releases>
<enabled>false</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
<id>ias-snapshots</id>
<name>Infinite Automation Snapshot Repository</name>
<url>https://maven.mangoautomation.net/repository/ias-snapshot/</url>
</repository>
<repository>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>false</enabled>
</snapshots>
<id>ias-releases</id>
<name>Infinite Automation Release Repository</name>
<url>https://maven.mangoautomation.net/repository/ias-release/</url>
</repository>
</repositories>
依赖项信息为:
<dependency>
<groupId>com.infiniteautomation</groupId>
<artifactId>modbus4j</artifactId>
<version>3.0.3</version>
</dependency>
核心类
- 主机Master及其子类:主机的入口,Daten流的起点和终点。
- Daten端口类StreamTransport:负责Daten的写入和读出。
- Modbus消息类ModbusMessage及其子类:支持Modbus定义的各种方法(FunctionCode)
- 收发Daten控制类MessageControl:支持 timeout、retries,默认200ms,1次。
- 收发等待室WaitingRoom:负责同步收发逻辑。
- 输出Request消息类:OutgoingRequestMessage 及其子类。
- 收zuResponse消息类:IncomingResponseMessage 及其子类。
- Analyse类MessageParser:负责Analyse收zu的消息。
- VereinbarungDatentyp定义:DataType
- VereinbarungFunktionscode定义:FunctionCode
- VereinbarungRegister.范围:RegisterRange
Daten流程
- 透过
ModbusFactory创建对应的Master对象。 - 封装需要Senden Sie的指令,比如
ReadHoldingRegistersRequest,这是一个读Register.指令,指定Register-Adresse和Länge即可。 Master对象将这个ReadHoldingRegistersRequest转化为OutgoingRequestMessage对象,然后传输给MessageControl。- 透过驱动层,
MessageControl将这个OutgoingRequestMessage写入对应的通讯硬件外设(Die Serie、网口等),并等待返回DatenIncomingResponseMessage。 - 如果没有等zu,就返回null,并提醒超时。
- 如果等zu了Wirksam返回,则
MessageControl利用MessageParser将IncomingResponseMessage转化为对应ModbusResponse返回给上层。
单元测试
在modbus4j/src_test/定义了一系列单元测试方法,跟踪Von denenRelated方法,即可了解modbusVereinbarung的实际运作流程。
Antwort veröffentlichen