2025-10-09
C#
00

产品介绍

ADF400L系列多用户电能表支持Modbus TCP协议通信,通过以太网接口可以实现远程数据读取。该系列电表最多支持:

  • 12路三相或36路单相直接接入测量
  • 12路三相互感器接入测量
  • 直接接入和互感器接入的混合测量

通信配置

硬件连接

  • 通信接口:以太网接口(CE功能)
  • 通信协议:Modbus TCP

通信参数设置

通过寄存器配置:

  • 使能CE以太网:地址0x0964,写入1使能
  • 通信协议选择:地址0x0908,写入0选择Modbus协议

数据读取示例

读取三相电压

C#
// 读取三相电压(0.1V) const ushort UA_ADDR = 0x033F; // A相电压 const ushort UB_ADDR = 0x0340; // B相电压 const ushort UC_ADDR = 0x0341; // C相电压 // 读取结果需除以10转换为V double Ua = ReadHoldingRegister(UA_ADDR) / 10.0; double Ub = ReadHoldingRegister(UB_ADDR) / 10.0; double Uc = ReadHoldingRegister(UC_ADDR) / 10.0;
2025-10-09
C#
00

项目准备

首先需要安装必要的 NuGet 包:

XML
<PackageReference Include="Vosk" Version="0.3.38" /> <PackageReference Include="NAudio" Version="2.2.1" />

image.png

2. 下载语音模型

  1. 访问 Vosk 模型下载页面
HTML
https://alphacephei.com/vosk/models
![](https://secure2.wostatic.cn/static/d7wAiBNg5i631tYeLN4maY/image.png?auth_key=1759958257-VZt3CiMe8rpNVcnYd2frp-0-2520134a849cadfa53ba765ba1f7743a)

2. 下载中文模型 中文 或其他语言模型

image.png 3. 解压模型文件到项目目录下的 Models 文件夹

2025-10-09
C#
00

简介

WebSocket-sharp 是一个功能强大的 C# WebSocket 库,支持 WebSocket 客户端和服务器端的实现。它具有以下主要特性:

  • 完全支持 RFC 6455 协议规范
  • 支持客户端和服务器端实现
  • 支持消息压缩扩展
  • 支持安全连接(SSL/TLS)
  • 支持 HTTP 认证
  • 支持查询字符串、Origin 头和 Cookies
  • 支持 HTTP 代理服务器连接
  • 支持 .NET Framework 3.5 及更高版本

安装方式

手动构建

  1. 使用 MonoDevelop 打开 websocket-sharp.sln
  2. 构建 websocket-sharp 项目
  3. 将生成的 websocket-sharp.dll 添加到你的项目引用中

NuGet 安装

使用 NuGet Package Manager Console:

PowerShell
PM> Install-Package WebSocketSharp.core

image.png

2025-10-09
C#
00

实现原理

速度曲线规划的实现原理基于三个连续的运动阶段,通过精确控制加速度和速度来实现平滑的运动过程。

在匀加速阶段,物体从静止状态以恒定加速度Amax加速,直到达到最大速度Vmax;随后进入匀速阶段,物体保持最大速度Vmax匀速运动;最后是匀减速阶段,以相同的加速度Amax减速直至停止。整个过程的关键参数包括最大速度Vmax(决定运动的快慢)、最大加速度Amax(控制加减速的剧烈程度)以及目标位置Pf(确定运动的终点)。这些参数共同决定了运动的特性和总时长,确保运动过程既能保持效率,又能实现平稳过渡。

完整代码实现

示例代码中设定的参数值为:最大速度200像素/秒,最大加速度100像素/秒²,目标位置500像素,通过这些参数可以精确计算出每个阶段的时间和位移。

image.png

C#
public partial class Form1 : Form { private Timer animationTimer; private float currentTime = 0; private float currentPosition = 0; // T曲线参数 private const float Vmax = 200; // 最大速度(像素/秒) private const float Amax = 100; // 最大加速度(像素/秒²) private const float Pf = 500; // 目标位置(像素) // 计算关键时间点 private readonly float Ta; // 加速时间 private readonly float Tm; // 匀速时间 private readonly float Tf; // 总时间 private const int BallRadius = 20; private readonly Brush ballBrush = Brushes.Blue; public Form1() { InitializeComponent(); this.DoubleBuffered = true; // 计算运动参数 Ta = Vmax / Amax; float Pa = 0.5f * Amax * Ta * Ta; Tm = (Pf - 2 * Pa) / Vmax; Tf = Tm + 2 * Ta; // 设置定时器 animationTimer = new Timer(); animationTimer.Interval = 16; // ~60fps animationTimer.Tick += AnimationTimer_Tick; this.Paint += TCurveForm_Paint; this.Load += (s, e) => animationTimer.Start(); }
2025-10-09
C#
00

本文将尝试说明如何使用C#创建一个完整的OPC UA服务器。我们将使用开源的OPC UA .NET Standard库,感觉要写一个完整的服务还是太麻烦了,要考虑的太多了,只能给有需要的朋友一点点意见吧。

项目准备

首先需要安装必要的NuGet包。在Visual Studio中,通过NuGet包管理器安装:

C#
OPCFoundation.NetStandard.Opc.Ua

完整代码示例

Program.cs

C#
class Program { static async Task Main(string[] args) { MyServer server = new MyServer(); await server.Start(); Console.WriteLine("OPC UA Server started. Press Enter to exit."); Console.ReadLine(); server.Stop(); } }