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

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.hqwc.cn/news/21135.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

openGauss学习笔记-08 openGauss 数据类型

文章目录 openGauss学习笔记-08 openGauss 数据类型8.1 数值类型8.2 布尔类型8.3 字符类型8.4 二进制类型8.5 日期/时间类型8.6 几何类型8.7 网络地址类型8.8 位串类型8.9 文本搜索类型8.10 UUID数据类型8.11 JSON/JSONB类型8.12 HLL数据类型8.13 范围类型8.14 索引8.15 对象标…

基于 OpenCV 的图像处理与分析应用的设计与实现

基于 OpenCV 的图像处理与分析应用的设计与实现 导语一、应用设计概述二、应用实现步骤三、应用示例:图像滤波与边缘检测总结 导语 图像处理与分析是计算机视觉中的重要应用领域,通过对图像进行处理和分析,可以提取有用的信息和特征&#xf…

微信小程序监听页面跳转API

// 放在app.js 里面的onshow生命周期里面wx.onAppRoute((res) > {console.log(路由跳转,res})})

《Python机器学习:基于PyTorch和Scikit-Learn》——AIC松鼠活动第三期

内容简介 本书是一本全面介绍在PyTorch环境下学习机器学习和深度学习的综合指南,可以作为初学者的入门教程,也可以作为读者开发机器学习项目时的参考书。 本书讲解清晰、示例生动,深入介绍了机器学习方法的基础知识,不仅提供了构…

通过python的signal库模拟电源设备的csine波形

import numpy as np import matplotlib.pyplot as plt import random from scipy import signal def csin(length, amp,lenf,n):"""生成模拟CSIN波形的函数:param length: 波形长度:param amp: 波形振幅:return: CSIN波形数据"""amp 100 if (am…

浅谈用于配电室的内部环境监控系统设计

摘要:配电室是配电系统的重要组成部分,影响着电力用户的用电需求,需要保障其安全、可靠运行。针对配电室内部环境进行了深入分析,设计了一种内部环境监控系统。通过该系统可以采集配电室内部的温度、湿度、液位、SF6气体和烟雾&am…

在Vue种使用Vant框架

第一步:打开Vant框架地址 https://vant-contrib.gitee.io/vant/v2/#/zh-CN/home 第二步: 安装 第三步:引入(我这里使用的是按需导入) 执行命令: npm i babel-plugin-import -D ①:src下创建个…

安全测试方法介绍(下)渗透测试

安全主要测试方法主要有:静态源代码审查,这个在编码阶段就可以进行,这个阶段如果出现问题,修复起来成本也比较低。程序发布之后可以进行渗透测试。前面的文章中我们为大家介绍了静态源代码审查的方法和策略,接下来本文…

分布式应用之zookeeper集群+消息队列Kafka

一、zookeeper集群的相关知识 1.zookeeper的概念 ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能…

Leaflet Ant Path(水系流动效果)

一、源代码&#xff1a; 用leaflet库中的Leaflet.AntPath插件 将通量动画&#xff08;如蚂蚁行走&#xff09;放入折线中 <!DOCTYPE html> <html><head><meta http-equiv"Content-Type" content"text/html; charsetutf-8" /><…

Mac搭建安卓模拟器(支持M1/M2)

引言 最近在研究Vue打包成app&#xff0c;给我的报价器搞一个移动端&#xff0c;奈何没有安卓手机用于测试。所以想到安装一个安卓模拟器。 看了下目前主流的安卓模拟器基本都不支持Mac版本。网易的mumu目前来看还是只支持Intel芯。 1. 简单版&#xff08;仅M系&#xff09;…

前端工程化与webpack

一、目标 能够说出什么是前端工程化能够说出webpack的作用能够掌握webpack的基本使用了解常用plugin的基本使用了解常用loader的基本使用能够说出Source Map的作用 二、目录 前端工程化webpack的基本使用webpack中的插件webpack中的loader打包发布Source Map 1.前端工程化 …