113 lines
2.9 KiB
Plaintext
113 lines
2.9 KiB
Plaintext
---
|
||
id: 20005
|
||
title: Dlt645
|
||
---
|
||
|
||
import useBaseUrl from "@docusaurus/useBaseUrl";
|
||
import Tag from "@site/src/components/Tag.js";
|
||
import Highlight from '@site/src/components/Highlight.js';
|
||
|
||
|
||
## 定义
|
||
|
||
程序集:[ThingsGateway.Foundation.Dlt645](https://www.nuget.org/packages/ThingsGateway.Foundation.Dlt645)
|
||
|
||
## 一、说明
|
||
|
||
**ThingsGateway.Foundation.Dlt645**是对于Dlt645-2007协议的封装类库
|
||
|
||
支持多个通讯链路:Tcp/Udp/SerialPort
|
||
|
||
## 二、Dlt645-2007主站
|
||
|
||
1、创建Dlt645Master
|
||
|
||
```
|
||
/// <summary>
|
||
/// 新建链路
|
||
/// </summary>
|
||
/// <returns></returns>
|
||
public IChannel GetChannel()
|
||
{
|
||
TouchSocketConfig touchSocketConfig = new TouchSocketConfig();
|
||
return touchSocketConfig.GetSerialPortWithOption(new("COM1")); //直接获取串口对象
|
||
//return touchSocketConfig.GetChannel(ChannelTypeEnum.SerialPortClient, null, null, new("COM1"));//通过链路枚举获取对象
|
||
}
|
||
|
||
/// <summary>
|
||
/// 新建协议对象
|
||
/// </summary>
|
||
/// <param name="channel"></param>
|
||
/// <returns></returns>
|
||
public IProtocol GetProtocol(IChannel channel)
|
||
{
|
||
var client = new Dlt645_2007Master(channel);
|
||
client.Station = "311111111114";//表号
|
||
return client;
|
||
}
|
||
```
|
||
2、读写操作
|
||
|
||
|
||
```
|
||
Dlt645MasterTest dlt645MasterTest = new Dlt645MasterTest();
|
||
var channel = dlt645MasterTest.GetChannel();
|
||
var protocol = dlt645MasterTest.GetProtocol(channel);
|
||
var data = await protocol.ReadDoubleAsync("02010100"); //读取A相电压
|
||
|
||
```
|
||
|
||
`02010100`是Dlt645中的地址表示方式,代表A相电压,请查看相关协议文档,可在源码附件中找到文档
|
||
|
||
- 基本地址
|
||
|
||
|
||
| 地址 | 说明 |
|
||
| ---------------| --------------------------|
|
||
| 02010100 | 读取02010100(A相电压) |
|
||
|
||
参考DLT2007协议文档数据标识,可在插件源码中找到附件
|
||
|
||
- 站号(可选)
|
||
|
||
当需要指定站号地址时可使用,举例:
|
||
|
||
| 地址 | 说明 |
|
||
| ---------------| --------------------------|
|
||
| s=111111111111;02010100 | 读取02010100 ,设备地址为111111111111 |
|
||
|
||
- Dtu注册(可选)
|
||
|
||
当需要指定Dtu客户端可使用,举例:
|
||
|
||
| 地址 | 说明 |
|
||
| ---------------| --------------------------|
|
||
| id=12;40001 | 读取03功能码 ,设备地址为默认,Dtu注册包为"12",注意是UTF8格式 |
|
||
|
||
|
||
3、其他方法
|
||
|
||
修改密码
|
||
|
||
```
|
||
var result = await protocol.WritePasswordAsync(level, oldPassword, newPassword);
|
||
```
|
||
|
||
更改表号
|
||
|
||
```
|
||
var result = await protocol.WriteDeviceStationAsync(station);
|
||
```
|
||
|
||
修改波特率
|
||
|
||
```
|
||
var result = await protocol.WriteBaudRateAsync(baudRate);
|
||
```
|
||
|
||
读取表号
|
||
|
||
```
|
||
var result = await protocol.ReadDeviceStationAsync;
|
||
```
|