三菱协议以及C#实现

news/2024/12/19 4:27:48/

三菱

三菱的是422的只能用编程口通讯,只能用编程口协议。

波特率:9600数据位位数:7位停止位位数:1位数据校验方式: 偶校验

* D0: 1000 2000 3000 频率
* M0: 电机正转 true 、false
* M1:电机反转 true 、false

报文基本格式

FX PLC的数据注意包括`D寄存器(每个寄存器二字节长)、M(位地址)、S(位地址)、T(位地址)、C(位地址)、X(位地址)、Y(位地址)`​​

数据帧的基本格式如下

> 需要注意的是,除了控制码之外的其他数据帧,都需要将其转换位对应的ASCII编码值进行发送
> 如:1 => 0x31 或者 30 => 0x33 0x30 123 => 0x31 0x32 0x33

和校验

发送的报文最后两位为和校验,和校验计算反射为`命令码 + 元件地址 + 数据 + 0x03`​​,计算结果取后两位转换ascii码

计算: https://www.23bei.com/tool/8.html

C#代码实现

public partial class Form1 : Form
{ public Form1(){InitializeComponent();this.serialPort1.Open();}/// <summary>/// 写入/// </summary>/// <param name="sender"></param>/// <param name="e"></param>private void button1_Click(object sender, EventArgs e){// D123区写入258数据// 123*2+0x1000 --> 10F6 --> 16进制ascii值 成// 258 --> 16进制0102 --> 小端0201 --> 16进制ascii值 30h 32h 30h 31h// 请求帧字节数组// 31h + 31h + 30h + 46h +30h + 32h +30h + 31h + 03// 16进制ascii值: 02 | 31h | 31h 30h 46h 36h 30h 32h 30h 32h 30h 31h | 03 | byte[] bs = new byte[] {02,49,49,48,70,54,48,50,48,50,48,49,03,51,54 };this.serialPort1.Write(Encoding.ASCII.GetString(bs));}/// <summary>/// 读取/// </summary>/// <param name="sender"></param>/// <param name="e"></param>private void button2_Click(object sender, EventArgs e){byte[] bs = new byte[] {02,48,49,48,70,54,48,52,03,55,52};this.serialPort1.Write(Encoding.ASCII.GetString(bs));}/// <summary>/// 置位/// </summary>/// <param name="sender"></param>/// <param name="e"></param>private void button3_Click(object sender, EventArgs e){// 置位byte[] bs = new byte[] {02,55,48,49,48,56,03,48,51};this.serialPort1.Write(Encoding.ASCII.GetString(bs));}/// <summary>/// 复位/// </summary>/// <param name="sender"></param>/// <param name="e"></param>private void button4_Click(object sender, EventArgs e){// 复位byte[] bs = new byte[] { 02, 56, 48, 49, 48, 56, 03, 56, 52 };this.serialPort1.Write(Encoding.ASCII.GetString(bs));}/// <summary>/// 接收接口消息/// </summary>/// <param name="sender"></param>/// <param name="e"></param>private void serialPort1_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e){// 读取响应byte[] data = new byte[this.serialPort1.BytesToRead];this.serialPort1.Read(data, 0, data.Length);Console.WriteLine(BitConverter.ToString(data)); // 06if (data.Length == 1 ){if (data[0] == 6){MessageBox.Show("写入成功");}else{MessageBox.Show("写入失败");}} else // 读取操作{MessageBox.Show(GetResult(data)+"");}}private uint GetResult(byte[] data){byte[] array = new byte[(data.Length - 4)/2]; // 响应帧里面数据的长度for (int i = 0;i< array.Length; i++)  // 0 1 2 3{byte[] bs = new byte[2]{data[i*2+1],data[i*2+2],};array[i] = Convert.ToByte(Encoding.ASCII.GetString(bs), 16);}var value = BitConverter.ToUInt16(array, 0);return value;}}


http://www.ppmy.cn/news/1556294.html

相关文章

有/无状态会话 与 Session 与 Spring Security

一、会话&#xff08;Session&#xff09;的基本概念 会话是服务器与客户端之间持续交互的机制。在 Web 应用中&#xff0c;每当用户通过浏览器访问应用时&#xff0c;服务器通常会为其创建一个唯一的会话标识&#xff08;Session ID&#xff09;&#xff0c;并通过 Cookie&am…

双十二年终活动淘宝天猫接口获取攻略

引言 双十二作为电商行业的重要促销节点&#xff0c;对于商家和消费者而言&#xff0c;获取淘宝天猫的相关活动数据至关重要。本文将为您提供一份详细的攻略&#xff0c;介绍如何利用Python爬虫技术获取双十二年终活动淘宝天猫接口数据。 环境准备 在开始之前&#xff0c;请…

Java 模板方法模式:打造高复用性的商品上架模块

&#x1f9d1; 博主简介&#xff1a;CSDN博客专家&#xff0c;历代文学网&#xff08;PC端可以访问&#xff1a;https://literature.sinhy.com/#/?__c1000&#xff0c;移动端可微信小程序搜索“历代文学”&#xff09;总架构师&#xff0c;15年工作经验&#xff0c;精通Java编…

【从零开始入门unity游戏开发之——C#篇06】变量类型转化和异常捕获

文章目录 一、变量类型转化1、什么是类型转换2、隐式转化相同类型之间的转换 3、显示转换3.1 括号强转语法示例注意 3.2 使用 Parse 和 TryParse 方法语法示例 3.3 使用 Convert 类进行转换语法示例 3.4 .ToString()其他类型转string语法示例 二、异常捕获1、基本语法结构2、使…

实景视频与模型叠加融合?

[视频GIS系列]无人机视频与与实景模型进行实时融合_无人机视频融合-CSDN博客文章浏览阅读1.5k次&#xff0c;点赞28次&#xff0c;收藏14次。将无人机视频与实景模型进行实时融合是一个涉及多个技术领域的复杂过程&#xff0c;主要包括无人机视频采集、实景模型构建、视频与模型…

Opencv之图像梯度处理和绘制图像轮廓

一、梯度处理的sobel算子函数 处理示意 Sobel 算子是一种常用的图像边缘检测方法&#xff0c;结合了一阶导数和高斯平滑&#xff0c;用于检测图像的梯度信息。 1、功能 Sobel 算子用于计算图像在 x 和 y 方向的梯度&#xff0c;主要功能包括&#xff1a; 强调图像中灰度值的…

【鸿睿创智开发板试用】在OpenHarmony 4.1环境下移植OpenCV示例

目录 引言 修改工程环境 配置OpenCV库和头文件 修改代码 CMakeList.txt文件 qrcodeInfo.decodes is possibly undefined. warning: backslash and newline separated by space [-Wbackslash-newline-escape] 运行 结语 引言 在前面的博文&#xff08;【鸿睿创智开发板…

前端学习-Web API基本认知(二十)

目录 前言 变量声明 变量声明有三个 var let 和 const我们应该用那个呢? 简单来说以后声明变量我们优先使用哪个? Web API基本认知 作用和分类 作用 分类 什么是DOM DOM树 DOM树是什么 DOM对象 DOM对象 DOM的核心思想 总结 前言 第二更&#xff08;量较少&…