lrc

Modbus 通信协议详解

谁都会走 提交于 2021-01-27 06:41:25
一、Modbus 协议简介   Modbus 协议是应用于电子控制器上的一种通用语言。通过此协议,控制器相互之间、控制器经由网络(例如以太网)和其它设备之间可以通信。它已经成为一通用工业标准。有了它,不同厂商生产的控制设备可以连成工业网络,进行集中监控。 此协议定义了一个控制器能认识使用的消息结构,而不管它们是经过何种网络进行通信的。它描述了一控制器请求访问其它设备的过程,如果回应来自其它设备的请求,以及怎样侦测错误并记录。它制定了消息域格局和内容的公共格式。   当在一Modbus网络上通信时,此协议决定了每个控制器须要知道它们的设备地址,识别按地址发来的消息,决定要产生何种行动。如果需要回应,控制器将生成反馈信息并用Modbus协议发出。在其它网络上,包含了Modbus协议的消息转换为在此网络上使用的帧或包结构。这种转换也扩展了根据具体的网络解决节地址、路由路径及错误检测的方法。 1、在Modbus网络上转输   标准的Modbus口是使用一RS-232C兼容串行接口,它定义了连接口的针脚、电缆、信号位、传输波特率、奇偶校验。控制器能直接或经由Modem组网。   控制器通信使用主—从技术,即仅一设备(主设备)能初始化传输(查询)。其它设备(从设备)根据主设备查询提供的数据作出相应反应。典型的主设备:主机和可编程仪表。典型的从设备:可编程控制器。   主设备可单独和从设备通信

电脑的一些基本常识和简单操作

断了今生、忘了曾经 提交于 2021-01-23 22:40:50
什么是电脑配置?如何查看电脑的配置呢?   电脑的配置是指电脑的硬件基本信息,如CPU的型号、硬盘容量大小、显示器尺寸等。方法: ①桌面查看。 “我的电脑”-“属性”,可查看系统版本、CPU型号、内存大小;若点“常规”-“设备管理器”,可查看CPU核心数、硬盘型号及大小、光驱等配置;若点“高级”-“性能设置”-“视觉效果”或“高级”,可以查看视觉效果、虚拟内存等设置。 ② “系统工具”查看。单击“开始”-“程序”-“附件”-“系统工具”-“系统信息”, 即可看到电脑的详细配置。 ③软件查看。下载安装鲁大师、超级兔子等软件,也可查看详细配置,而且这些软件还可以对电脑的性能进行测试。 什么是操作系统?Windows系统有哪些? 现在常用的是什么系统?   操作系统(Operating System,简称OS)是一组管理电脑硬件与软件资源的程序。 现在较常见的是由美国微软公司开发的窗口化操作系统,即Windows操作系统。 我们常说的C、D、E、F盘是什么意思?   我们常说的C、D、E、F盘其实就是硬盘(Hard Disk Drive 简称HDD,又称硬盘驱动器)的分区。   一台电脑一般只有一个硬盘,容量为80-500G不等,一个硬盘可以按一个分区来用(系统默认为C盘,但不建议,),也可以分成几个区(一般为4个)来用。分成几个分区时,便会看到C、D盘。   这样各分区相互独立

2020-09-23 Modbus协议详解 YapethsDY

ぐ巨炮叔叔 提交于 2020-10-12 20:26:49
概要 Modbus是OSI模型第七层上的应用层报文传输协议,最早由施耐德出版,后将其转让,现已变成工业自动化等领域里一种常见的、约定俗成的标准通讯协议标准。该标准包括两个通讯规程中使用的Modbus应用层协议和服务规范: 串行链路上的Modbus Modbus串行链路取决于TIA/EIA标准:232-F和485-A. Modbus RTU:用于串行通信,并使用紧凑的二进制数据表示协议通信。 RTU 格式遵循命令/数据,循环冗余校验和校验和作为错误检查机制,以确保数据的可靠性。 Modbus RTU 是 Modbus 最常用的实现方式。必须连续传输 Modbus RTU 消息,而不会出现字符间的犹豫。 Modbus 消息由空闲(静默)时段构成(分离)。 Modbus ASCII:用于串行通信,并使用 ASCII 字符进行协议通信。 ASCII 格式使用纵向冗余校验校验和。 Modbus ASCII 消息由前导冒号(“:”)和尾随换行符(CR / LF)构成。 TCP/IP上的Modbus Modbus Internet协议应用取决于IETF标准:RFC793和RFC791. Modbus TCP / IP或Modbus TCP:这是一种 Modbus 变体,用于通过 TCP / IP 网络进行通信,通过端口 502 连接。它不需要校验和计算,因为较低层已经提供校验和保护。 TCP /

Modbus学习记录

夙愿已清 提交于 2020-10-01 03:10:43
Modbus 学习Modbus通信协议前先对一些基础知识进行了解 1、什么是协议?   协议就是互相之间的约定,如果不让别人知道那就是暗号。现在就来定义一个新的最简单协议。例如,协议: “A” --“LED灭”、“B” --“报警”、 “C” --“LED亮”,设备接收到“A”控制一个LED灭,设备接收到“B”控制报警,设备接收到“A”控制一个LED亮。那么当收到对应的信息就执行相应的动作,这就是协议。   协议在通信中又分为 硬件层协议 和 软件层协议 : 硬件层协议解决的是1和0的传输的问题,相当于公路,常见的有 485总线、232总线 等 软件层协议解决在硬件层上有序的发送数据,相当于交通规则,不然就相当于在公路上乱开车,这是不允许的,常见的有 TCP/IP、MODBUS 等。 2、一帧数据   一帧数据指的是你们通过约定每次发送的数据,一帧数据包含帧头,帧尾和校验码组成 数帧头包括接收方主机物理地址的定位以及其它息。帧数据区含有一个数据体。每帧数据之间存在间隔,间隔时间根据具体的时间来定,modbus是每帧数据之间3.5个字符。 3、校验码   校验码一般放在是由前面的数据通过某种算法得出的,用以检验该组数据的正确性。代码作为数据在向计算机或其它设备进行输入时,容易产生输入错误,为了减少这种输入错误,编码专家发明了各种校验检错方法,并依据这些方法设置了校验码。常用的校验有:

基于QT实现简单的音乐播放器

落花浮王杯 提交于 2020-08-17 23:58:07
基于QT实现一个多功能媒体播放器,它能播放音频(如mp3),视频 媒体播放器界面,有进度条,可展示总播放时间、当前播放时间,进度条可拖动,有播放、暂停键,有快进、快退键,上一曲下一曲,静音,调节音量,双击播放歌曲,以及简单的歌词同步。 主界面如下: 创建三个本地文件夹分别存放MV,歌词和音乐文件 工程结构目录如下(整个结构没有设计好,所以每个视频都要单独创建文件): mainwindow.h代码如下: #ifndef MAINWINDOW_H #define MAINWINDOW_H #include < QMainWindow > #include < QMediaPlayer > #include < QMediaPlaylist > #include < QMediaPlayer > #include < QStringList > #include < QDir > #include < QTime > #include < QTimer > #include < videoplayer . h > #include < videoplayer_qr . h > #include < videoplayer_cq . h > QT_BEGIN_NAMESPACE namespace Ui { class MainWindow ; } QT_END_NAMESPACE

快速幂+龟速乘+费马小定理+逆元+矩阵乘法

为君一笑 提交于 2020-07-29 05:44:30
我是这个机房最菜的 我今天复习的是: 王者吃鸡CF,上分小队等你来 扯远了,接下来才是干货 快速幂+慢速乘+费马小定理+逆元+矩阵乘法(讲错了还请 笑的收敛点 本来太蒻,所以快速幂,慢速乘,费马小定理没有找到合适的例题,逆元和矩阵乘法的例题也不多而且不难 快速幂 说到求几次方,我们不难想到 \(pow()\) 这个函数,但是这个函数不仅不快而且还有坑(某位大佬曾因这个在省选翻车了),用 \(pow()\) 切记要注意 \(pow()\) 返回 \(double\) 类型的数 于是我们便要xiao习一下更快而且没那么容易锅的 \(ksm\) 这不有手就行嘛 基本思路: 1)当 \(b\) 是奇数时,那么有 \(a^b = a * a^{b-1}\) 2)当 \(b\) 是偶数时,那么有 \(a^b = a^{b/2} * a^{b/2}\) 时间复杂度: \(O(log\ n)\) 代码实现: //递归写法 int ksm(int x, int y, int mod){//求x的y次方(在%m的意义下) if(y == 0) return 1; if(y % 2 == 0){ int num = ksm(x ,y / 2) % mod;//防止计算两次,节省时间 return num * num % mod; } else return ksm(x, y - 1) * x % mod

LRC680综合监测装置-国网0.4kV低压开关柜标准化定制-LRC680综合监测装置

六眼飞鱼酱① 提交于 2020-07-27 22:34:01
LRC680综合监测装置-国网0.4kV低压开关柜综合监测装置简介 广州市智昊电气技术有限公司根据国家电网0.4kV低压开关柜标准化定制方案推出符合适用于国网低压开关柜要求的LRC680低压综合监测装置。该装置安装于0.4kV开关柜内。LRC680综合监测装置在完成其自身电气量监测的同时,具备与本开关柜内下行设备智能框架(塑壳)断路器、电容器以及开关柜内其它测控装置以及.上行设备DTU、TTU等设备的信息交互功能,实现本低压开关柜内的遥测、遥信数据汇聚及推送。其各功能主要如下: (1)LRC680综合监测装置:具备RS485、RS232、 载波、以太网等通信接口,接口数量能满足下行各开关柜体内通信数据汇总,及上行DTU、TTU数据推送需求。 (2)LRC680综合监测装置支持Modbus、DL/T 645、Q/GDW 1376. 1、Q/GDW 1376. 2、DL/T634. 5101、DL/T634. 5104等通信协议,满足国家电网公司最新的配电自动化终端参数配置规范。 (3) LRC680综合监测装置具备与本开关柜内下行设备智能框架(塑壳)断路器的开关状态遥信信号采集功能,遥信点数量满足本开关柜内所有开关状态监测汇总需求。 (4) LRC680综合监测装置满足《电力监控系统安全防护规定》《关于印发电力监控系统安全防护总体方案等安全防护方案和评估规范的通知》及

综合监测装置-0.4kV低压开关柜配网自动化综合监测装置

萝らか妹 提交于 2020-07-27 10:04:44
广州市智昊电气技术有限公司根据国网0.4kV低压开关柜标准化定制方案研发出LRC860低压综合监测装置。该综合监测装置可提供监测电气设备所需的各种测量功能,具有易读的液晶显示屏,带通信接口,便于远程统- -记录、 管理、考核。低压开关柜内的综合监测装置,具备与本柜内下行设备智能框架(塑壳)断路器、本开关柜内其它测控装置以及上行设备DTU、TTU等设备的信息交互功能,实现本低压开关柜内的遥测、遥信数据汇聚及推送。 具备RS485、RS232、 载波、以太网等通信接口,接口数量满足下行各开关柜体内通信数据汇总,及上行DTU.TTU数据推送需求,支持Modbus. DLT 645、Q/GDW 1376.1、 Q/GDW 1376.2、DL/T634.5101、 DL/T634.5104 等通信协议;具备与本开关柜内下行设备智能框架(塑壳)断路器的开关状态遥信信号采集功能,遥信点数量满足本开关柜内所有开关状态监测汇总需求。欢迎选购。 来源: oschina 链接: https://my.oschina.net/u/4330613/blog/4334780

Erasure Coding(纠删码)深入分析

允我心安 提交于 2020-05-06 00:44:36
http://blog.sina.com.cn/s/blog_57f61b490102viq9.html 1. 前言 Swift升级到2.0大版本后宣称开始支持纠删码,这其实是一个很有意义的特性,主要是能够在一定程度上解决3副本空间浪费太多的问题。因为3副本这一点是swift推广的最大障碍之一,成本的增加吓退了不少潜在客户。这次的改进有望消除客户顾虑,拓展更多用户 http://www.openstack.org/blog/2014/07/openstack-swift-2-0-released-and-storage-policies-have-arrived/ 而回到存储领域来看,数据冗余机制其实这几十年来没有太多进展,RAID,副本一直是当仁不让的最终选择。而近几年,尤其是规模较大的应用场景下,纠删码越来越多的出现在选择的视野范围,成为RAID,副本之外的第三种选择,因此也获得了越来越多的关注。 纠删码(Erasure Code)本身是一种编码容错技术,最早是在通信行业解决部分数据在传输中损耗的问题,它的基本原理是把传输的信号分段,加入一定的校验再让各段间发生一定的联系,即使在传输过程中丢失掉部分信号,接收端仍然能通过算法把完整的信息计算出来。 如果严格的区分,实际上按照误码控制的不同功能,可分为检错、纠错和纠删三种类型。检错码仅具备识别错码功能 而无纠正错码功能

网易云歌词解析(配合audio标签实现本地歌曲播放,歌词同步)

倖福魔咒の 提交于 2020-05-04 10:18:24
先看下效果 github上做的一个音乐播放器: https://github.com/SorrowX/electron-music 中文歌曲 英文歌曲(如果有翻译的中文给回返回出去) 韩文歌曲 来看下解析歌词的类 class Lyric { constructor(data) { this .data = data this .lrc = data['lrc']['lyric' ] this .tlyric = data['tlyric']['lyric' ] this .lrcMap = this .getLyricMap( this .lrc) this .finalLrcMap = this .convertProp(Object.assign({}, this .lrcMap)) this .tlyricMap = this .getLyricMap( this .tlyric) this .finalTlyricMap = this .convertProp(Object.assign({}, this .tlyricMap)) } getLyricMap(lrc) { let key, value, sIdx, eIdx, nsIdx let ret = {} if (!lrc || ( typeof lrc !== 'string')) return ret