Can转RTU网关can总线转以太网设备

news2024/11/26 17:45:39

YC-CAN-RTU 是一款用于 CAN-Modbus 现场总线与 RS-232 总线或 RS-485 总线之间数据转换的协议型转换器,支持标准 Modbus RTU 协议。集成 1 路RS-232 通道、1 路RS-485 通道、1 路CAN-Modbus 通道,可以方便地嵌入使用 RS-232 接口和 RS-485 接口的节点上,在不需要改变原有硬件结构的前提下使设备获得CAN-Modbus 通讯接口,实现 RS-232 或 RS-485 设备与 CAN-Modbus 网络之间的连接及数据通讯。
透明传输
串行帧到CAN 通道
设备以 PC 端软件配置好的 CAN 帧类型和 ID 作为 CAN 发送的类型和 ID, 不断转发 RS-232 接口接收到的数据。
在这里插入图片描述

当 232 接口收到连续 8 个字节或者不够 8 个字节但一帧结束会立即转发到
CAN 总线,即如果一帧串口数据多于 8 个字节则每次发送 8 个字节直到最后一
段不足 8 个字节,如果一帧串口数据少于 8 个字节则一次发完。
在这里插入图片描述

串行帧转 CAN 帧信息用户不用管,里面包含了帧信息(标准帧还是扩展帧) 以及数据字节长度;帧 ID 是由用户在软件配置的,下次配置之前永远保持不变。
CAN 通道到串行帧
当 CAN 总线收到一帧 CAN 信息(一帧 CAN 数据小于等于 8 个字节)会立即转发到 232 接口。如果使能了“CAN 帧信息发送到串行帧”则会把帧信息填充在第一个字节,如果使能了“CAN 帧 ID 发送到串行帧”则会把帧信息填充在之后的 2(标准帧)或 4(扩展帧)个字节,之后填充数据。
在这里插入图片描述
在这里插入图片描述

带标志转换
串行帧到CAN 通道
带标志转换可以通过配置软件指定 CAN 发送时的 ID 类型,在串行帧第几个字节开始(从 0 开始)、ID 长度是多少(1-4)。
232 接口收到一帧串行数据会根据上述配置取出ID 的并以此作为CAN 发送
ID 发送这一帧串行数据。
带标志转换同样是边收边转发,只要 232 接口收到这帧已经包含的完整 ID
并且数据够了 8 个字节或一帧结束就立即转发。

串行帧

帧信息	帧信息		帧信息	帧信息

数据 1 帧 ID ID ID ID
数据 2

数据域 数据 1 数据 11 。
数据 3 ID 数据 2 数据 12 。
数据 4 ID 数据 5 数据 13 。
数据 5 数据 6 数据 14 。
。 数据 7 数据 15 。
数据 n-2 数据 8 数据 16 数据 n-1
数据 n-1 数据 9 。 数据 n
数据 n 数据 10 。
如上表格:配置为带标志转换模式,以标准帧发送,ID 长度为 2,ID 从第
2 字节开始(从 0 开始计数)。只要 232 接口收到前 4 个字节就确定了 ID,收完了
前 10 个字节就开始发送了,之后每收 8 个字节就发送,直到这一帧发完。下一帧串行帧收到 4 个字节之后重新设置发送 ID。
注意事项:串行帧中 ID 长度与 CAN 发送 ID 对应关系
串行帧中 ID 长度与 CAN 发送 ID 对应关系
ID 长度 标准帧 扩展帧
1 ID 低 8 位 ID 最低 8 位(7-0)
2 ID 高 3 位,ID 低 8 位 ID 15-8 位,ID 7-0 位

3
空字节,ID 高 3 位,ID 低 8 位 ID 23-16 位,ID 15-8 位,ID
7-0 位

4
空字节,空字节,ID 高 3 位,ID 低 8 位 ID 最高五位,ID 23-16 位,
ID 15-8 位,ID 7-0 位
CAN 通道到串行帧
当CAN 收到一帧数据也会立即转发到232 接口,同时会在相应位置填充CAN 帧 ID,因为串行帧格式原因,所以务必保证软件配置的CAN 信息(CAN 类型、
ID 长度)与 CAN 网络一致。

CAN 帧

串行帧

帧信息 标准帧 0x00+数据字节长度
扩展帧 0x80+数据字节长度
数据 1
帧 ID 标准帧 11 位,扩展帧 29 位 数据 2

数据域 数据 1 ID 高 3 位
数据 2 ID 低 8 位
数据 3 数据 3
数据 4 数据 4
数据 5 数据 5
数据 6 数据 6
数据 7 数据 7
数据 8 数据 8

注意事项:CAN 发送 ID 填充到串行帧规则
CAN 发送 ID 填充到串行帧规则
串行帧 ID 长度 填充规则

标准帧 1 ID 低 8 位
2 ID 高 3 位,ID 低 8 位
3 空字节,ID 高 3 位,ID 低 8 位
4 空字节,空字节,ID 高 3 位,ID 低 8 位

扩展帧 1 ID 最低 8 位(7-0)
2 ID 15-8 位,ID 7-0 位
3 ID 23-16 位,ID 15-8 位,ID 7-0 位
4 ID 最高五位,ID 23-16 位,ID 15-8 位,ID 7-0 位
Modbus 转换
Modbus 转 CAN 模式中设备并不作为 Modbus 主站或者从站,只负责把
Modbus 帧通过 CAN 发送出去,另一个使用相同协议的设备还原 Modbus 并把应答 Modbus 帧发到 CAN 网络。
RS-485 采用标准 Modbus RTU 协议,所以用户在软件配置时务必确保设置是否符合 Modbus RTU 协议。
Modbus RTU 协议对规定,数据格式为 1 位起始位,8 位数据位,1 位停止位,偶校验(也可以奇校验或者无校验,如果无校验则把停止位设为两位),
CRC16Modbus 校验,Modbus 一帧最长为 256 字节。
设备收到完整一帧 Modbus 会进行 CRC 校验, 如果没有错误会把这条
Modbus 帧通过 CAN 发送到 CAN 网络,但不会发送最后两个字节的 CRC,因为
CAN 可靠性非常高,出错概率极低。当设备从 CAN 通道收到完整一帧 Modbus
之后会自动加上 CRC 校验然后通过 RS-485 发送出去。
RS-485 通道到CAN 通道
Modbus 转CAN 与前两种转换方式不同,只有在收到完整一帧 Modbus 之后, 设备才会把 Modbus 第一字节(地址字节)作为 CAN 发送 ID,通过如下分段方

式进行拆包然后完成 CAN 通道的转发。因为一帧 CAN 帧最多携带 8 个数据, 为了能在另一端正确地完成对一帧 Modbus 的拼接故参考 DeviceNet(一个 CAN 应用层协议)分段报文传送协议进行拆包,然后通过 CAN 通道发送,在另一端按此协议重组。
因为 Modbus 转换模式下只有在收到完整一帧 Modbus 数据才会转发,且根据 Modbus 协议,Modbus 是“问答”型协议,所以要等待另一端响应之后才能发送下一阵 Modbus 数据,或者超时无应答也可以再次发送。如果发送频率过快,
“问完没答”就发下一针可能造成数据丢失或数据错误。分段拆包格式如下:
7 6 5 4 3 2 1 0
帧信息
帧 ID1
数据 1 分段标记 分段类型 分段计数器
数据 2 数据 1
数据 3 数据 2
数据 4 数据 3
数据 5 数据 4
数据 6 数据 5
数据 7 数据 6
数据 8 数据 7

分段标记:0 单独报文,1 分段报文中的一段;
分段类型:0 第一个分段,1 中间分段,2 最后分段
分段计数器:每一段的标志,该段在整个报文中的序号 0-31
CAN 通道到RS-485 通道
设备把 CAN 通道收上来的 CAN 帧按拆包规则逆向组合,之后在最后加上两个字节 CRC 之后通过 RS-485 通道发送出去

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/750112.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

通过层级列表循环生成树结构

列表生成树结构 应用 前提: 列表有字段能表示所处层级(如Deep、Level).根据自己业务来。主要是针对列表对象来处理,组织成树结构。如下图: 在得到如图类似数据后,采取使用函数来组织树结构,同时生成层级序号(1&…

TCP 与UDP区别

目录 网络参考模型TCPTCP 是什么特点 UDPUDP 是什么特点 TUP与UDP区别 总结什么时候选TCP or UDP 网络参考模型 TCP TCP 是什么 传输控制协议(TCP)是TCP/IP模型的传输层协议。它是一个面向连接的协议。因此,协议首先在源和目标之间建立连接…

《面试1v1》Redis内存优化

🍅 作者简介:王哥,CSDN2022博客总榜Top100🏆、博客专家💪 🍅 技术交流:定期更新Java硬核干货,不定期送书活动 🍅 王哥多年工作总结:Java学习路线总结&#xf…

WEB阶段_HTML(附代码笔记)

&#xff08;一&#xff09;案例一&#xff1a;网站信息页面的显示 1、HTML文档的创建 <html><head><title>01-HTML的文件创建&#xff08;浏览器标签显示的名字&#xff09;</title></head><body><h2>你好</h2></body>…

点云3D检测算法-Point pillar踩坑日记

工程地址&#xff1a; https://github.com/nutonomy/second.pytorch 1.环境搭建&#xff0c;跟着官网的教程走 1.1注意官网上的这条语句&#xff0c;存在一些坑 conda install pytorch torchvision -c pytorch 它会重新安装cudatoolkit和cudnn&#xff0c;版本可能很老旧&…

libtorch 调用模型方法

libtorch 是 pytorch 的 C 版本&#xff0c;支持 CPU 端和 GPU 端的模型部署。相较于用 tensorrt 部署 pytorch 模型&#xff0c;用 libtorch的优势在于&#xff1a;pytorch 和 libtorch 同属一个生态&#xff0c;API 语句比较接近&#xff0c;并且不会出现某网络层不支持的问题…

面试官:请求转发和请求重定向有什么区别?

在 Java 中&#xff0c;跳转的实现方式有两种&#xff1a;请求转发和请求重定向&#xff0c;但二者是完全不同的&#xff0c;所以我们今天就来盘它。请求转发和请求重定向主要区别&#xff0c;包含以下 5 点&#xff1a; 定义不同 跳转方不同 数据共享不同 最终 URL 地址不同…

路径规划算法:基于侏儒猫鼬优化的路径规划算法- 附代码

路径规划算法&#xff1a;基于侏儒猫鼬优化的路径规划算法- 附代码 文章目录 路径规划算法&#xff1a;基于侏儒猫鼬优化的路径规划算法- 附代码1.算法原理1.1 环境设定1.2 约束条件1.3 适应度函数 2.算法结果3.MATLAB代码4.参考文献 摘要&#xff1a;本文主要介绍利用智能优化…

常见面试题之List集合

1. 数组 1.1 数组概述 数组&#xff08;Array&#xff09;是一种用连续的内存空间存储相同数据类型数据的线性数据结构。 int[] array {22,33,88,66,55,25};我们定义了这么一个数组之后&#xff0c;在内存的表示是这样的&#xff1a; 现在假如&#xff0c;我们通过arrar[1]…

Java基础---传递拷贝

目录 Java是值传递还是引用传递 什么是深拷贝和浅拷贝 浅拷贝案例解析 BeanUtils的浅拷贝 实现深拷贝 深拷贝案例解析 Java是值传递还是引用传递 编程语言中需要进行方法间的参数传递&#xff0c;这个传递的策略叫做求值策略在程序设计中&#xff0c;求值策略有很多种&am…

【PHP面试题33】include和require的区别及用法

文章目录 一、前言二 、include和require的区别三、include和require的用法介绍3.1 include的用法3.2 require的用法及示例 四、include和require的用法示例4.1 包含文件4.2 包含文件并将结果赋值给变量4.3 动态包含文件4.4 使用绝对路径包含文件4.5 包含文件失败处理4.6 包含文…

数据库--->MySQL(1)【MySQL索引】

文章目录 MySQL的优点视图MySQL的存储过程与函数触发器MySQL的基本架构MySQL的引擎InnoDBMyISAM总结 索引什么是索引&#xff1f;索引的优缺点索引底层数据结构索引的分类创建索引的原则 MySQL的优点 MySQL 主要具有下面这些优点&#xff1a; 成熟稳定&#xff0c;功能完善。开…

分布式应用之Zookeeper和Kafka

分布式应用之Zookeeper和Kafka 一、Zookeeper 1.定义 分布式系统管理框架&#xff0c;主要用来解决分布式集群中应用系统的一致性问题 相当于各种分布式应用服务的 注册中心 文件系统 通知机制2.特点 &#xff08;1&#xff09;Zookeeper&#xff1a;一个领导者&#…

Qt| There‘s no Qtversion assigned to project... 解决方法

问题&#xff1a; 原因&#xff1a;相同工程在不同电脑下qt配置不一致导致&#xff0c;该项目qt setting设置有误。 解决方法&#xff1a;右键项目打开属性 找到Qt Project Settings->Qt Installation&#xff0c;切换到当前电脑所使用的qt版本即可。

【学习笔记】在Android使用Frida进行https抓包

最近需要在Android进行https抓包&#xff0c;对数据解密&#xff0c;找了很多方法&#xff0c;终于成功了&#xff0c;不过原文一些步骤对于我这个小白还是有点不理解的地方&#xff0c;在此记录一下。 1. 前提条件 一台root手机frida环境 2. frida环境搭建 该步骤全程参考&…

基于springboot或ssm的红色新闻系统

博主主页&#xff1a;猫头鹰源码 博主简介&#xff1a;Java领域优质创作者、CSDN博客专家、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战 主要内容&#xff1a;毕业设计(Javaweb项目|小程序等)、简历模板、学习资料、面试题库、技术咨询 文末联系获取 项目介绍…

【已解决】VMware安装MacOS苹果虚拟机,开机后卡在苹果图标位置不动

我的计算机硬件与软件信息&#xff1a; Win11系统&#xff0c;VMware17&#xff0c;MacOS12 最近在VMware17上安装MacOS12苹果虚拟机时&#xff0c;前期所有内容都配置好之后&#xff0c;在开机时碰到了一个问题&#xff1a;开机后卡在苹果图标位置不动&#xff0c;即使等了一…

2023年Mac上有哪些优质的工具(一)

Downie 4 专门用来下载视频的&#xff0c;各大视频网站上的视频只要粘贴地址就可以直接下载&#xff0c;并且可以选择清晰度&#xff0c;再也不用受百度云的气了&#xff0c;下载速度非常快&#xff0c;让工作效率大大提高。 Xmind 大家熟知的一款思维导图软件&#xff0c;他…

day34-servlet 分页

0目录 servlet 1.分页 分页逻辑1&#xff1a;数据库中20条记录&#xff0c;要求每页5条数据&#xff0c;则一共有4页 分页逻辑2&#xff1a;数据库中21条记录&#xff0c;要求每页5条数据&#xff0c;则一共有5页 分页逻辑3&#xff1a;数据库中19条记录&#xff0c;要求每页…

pytorch构建深度网络的基本概念——随机梯度下降

文章目录 随机梯度下降定义一个简单的模型定义Loss什么是梯度随机梯度下降 随机梯度下降 现在说说深度学习中的权重更新算法&#xff1a;经典算法SGD&#xff1a;stochastic gradient descent&#xff0c;随机梯度下降。 定义一个简单的模型 假设我们的模型就是要拟合一根直…