- 博客(97)
- 资源 (3)
- 收藏
- 关注
原创 Modbus协议简介
概述Modbus是由Modicon(现为施耐德电气的一个品牌)在1979年发明的,是全球第一个真正用于工业现场的总线协议,目前依然是最流行的工业现场总线之一。Modbus描述了一个控制器请求访问其它设备的过程,如何回应来自其它设备的请求,以及怎样侦测错误并记录。Modbus是应用层报文传输协议,底层常用RS-485或网线。Modbus特点:主从结构,只有一个主机从设备用地址来区分帧格式简单、紧凑,易懂免费开放支持多种介质上传送,如双绞线、光纤、无线数据模型基本表格对象类型
2021-09-12 20:40:10 1104 2
原创 CDT规约简介
概述CDT(Cycle Distance Transmission)规约,即循环式远动规约,规定了电网数据的采集与监控系统中循环式远动规约的功能、帧结构、信息字结构和传输规则等。CDT规约适合点对点的远动通道结构及以循环字节同步方式传送远动信息的远动设备与系统;也适合于调度所间以循环式远动规约转发实时远动信息的系统。CDT规约可以看作是应用层协议,在底层一般用RS485。CDT规约特点:可变帧长度多种帧类别循环传送变位遥信优先传送重要遥测量更新循环时间较短区分循环量、随机量和插入量采用不
2021-09-10 21:31:56 6941 1
原创 CDT规约之CRC8校验
CDT规约中校验码的计算是用的CRC校验。CRC(Cyclic Redundancy Check)即循环冗余校验码,是一种很常用的校验码。它有很强的检错、纠错能力,并且实现编码和检码的电路比较简单,常用于串行传送中。CRC的编码思想是将要传送的n位信息位表示成一个报文多项式M(X),用M(X)除以一个预先约定的生成多项式G(x),得到的余式就是所需的循环冗余校验码。M(X)最高幂次是(n-1)。G(x)是一个(k+1)位的二进制数,最高幂次是k。M(X)左移k位后,除以G(x),会得到k位余数,就是校
2021-09-10 21:17:46 1314
原创 四遥简要说明
在电力系统中,通常我们说的四遥是指:遥信、遥测、遥控、遥调。有时候会加上遥脉(可以看成是一种特殊的遥测),说明如下:名称简单解释缩写类型方向详细解释举例遥信远程信号YX开关量输入将被监视厂站设备状态信号远距离传送给调度开关位置信号遥信远程测量YC模拟量输入将被监视厂站的参数变量远距离传送给调度功率、电压、电流遥控远程控制YK开关量输出从调度发出命令以实现远方操作和切换。通常只取两种状态指令开关的分、合遥信远程信号YT
2021-09-08 18:31:38 4252 2
原创 ICONICS操作日志配置
1. 建立数据库和表(参考SQL Server中的建立数据库)2. 日志写入数据库(本地+远程)实例function Pick1_CommandExecuted(sender : System.Object, cmdArgs : Ico.Gwx.CommandExecutionEventArgs){ var userNameText = "Tester"; //MessageBox.Show(userNameText); AddOpLogToDB(userNameText, "开关切除")
2021-04-20 12:15:59 537 1
原创 ICONICS发布页面通过Web访问
ICONICS发布页面通过Web访问,有两种方式,一是发布到FTP站点,二是发布到本地,然后复制到相应目录。1、在IIS中添加FTP站点在“管理工具”的“Internet信息服务(IIS)管理器”中,选中服务器,点击右键菜单中的“添加FTP站点…”子菜单项,如图若没有此菜单,是因为Windows的FTP功能没有打开,在控制面板=》程序和功能中,选择启用或关闭Windows功能,如下图勾选上FTP服务,如下图启用后服务中会有Microsoft FTP Service,如下图
2021-04-19 17:13:10 469 1
原创 ICONICS Client
ICONICS Client,在ICONICS_Suite包中才有,在Genesis64包中没有。安装没啥好说的,基本一路next就行。连接注意:1. 首先保证网络是通的,能ping通。ping不通的时候确认一下防火墙里ping服务是否允许了,如下图:2. 设置主服务器IP地址,在ICONICS Tools => FrameWorX Server Location中3. 主服务器端关闭防火墙,或者增加一条规则,允许TCP的8778端口,如下图:..
2021-04-19 12:50:42 619
原创 SQL Server 2014 数据库远程连接配置
SQL Server 2014 数据库远程连接配置的步骤如下:1、在SQLSERVER Mangerment Studio中2、在SQLSERVER Configuration Manger中3、服务器端防火墙入站规则中新增规则,增加TCP 1433端口4、远程连接...
2021-04-19 11:45:11 1855
原创 PLC模拟器与KEPServer冲突解决
今天尝试用PLC模拟器,发现502端口被占用,提示如下图:于是用netstat命令查看端口被哪个进程占用了,发现是1656号进程。打开任务管理器,找到1656号进程,发现是server_runtime.exe。打开其所在位置,发现在KEPServer目录下,是KEPServer的一个进程。在任务管理器中结束该任务,发现很快它又自动启动了。在Windows的服务中将该服务的启动方式改为手动,然后停止,很快它还是会自动启动。最终解决方法是:如果不需要用KEPServer,可以将该服务禁用
2021-01-27 11:10:53 1934
原创 施耐德M580系列CPU下装注意事项
最近在用施耐德M580系列的CPU eP582040,掉进了几个坑,记录一下下装时的注意事项,以免时间久了忘了在同一个坑里掉几次。初次下装的时候默认IP为10.10.xxx.xxx,其中xxx为CPU上标记的MAC地址的后2个字节,将电脑IP改为同一网段即可连接上。这个简单,无需多说。初次下装时程序中需要把CPU解锁安全,看到所有服务都已启用。如下图所示:注意修改完成后需要点击工具栏上的确认按钮,否则可能没保存上。如图:做这一步的目的是因为若CPU不解锁安全,会导致下装之后无法通过以太网口
2020-11-16 21:31:11 9637 2
原创 Python贪吃蛇双人大战-魔法豆登场
Python贪吃蛇双人大战-魔法豆登场时隔两月之后,家里的小朋友再次对我之前改写的贪吃蛇游戏(过程可参考我之前写的 Python贪吃蛇双人大战 和 Python贪吃蛇双人大战-升级版,代码可以到此处下载)提出了新的需求(用户永远会有新需求)。还好,这回需求不多,就一个:要求增加魔法豆,要是蛇吃到了魔法豆,蛇身可以一次增加5格;魔法豆被吃后自动重新生成,且在屏幕上只出现2个魔法豆。为了满足小朋友的愿望,老父亲只好又拿起了两个月没看的代码(已经忘的差不多了)。分析了一下需求,并不复杂,很明显需要增加一个魔法
2020-06-22 16:44:57 875
原创 LeetCode全局变量问题 - 由构造二叉树发现的
LeetCode全局变量问题 - 由构造二叉树发现的今天有小伙伴(好基友)问了我一个问题,他在LeetCode刷到一道题,碰到一个问题一直没想通,也不知道怎么解决,于是过来让我一起看。为了说清楚这个问题,我们先看题目:根据一棵树的前序遍历与中序遍历构造二叉树。注意:你可以假设树中没有重复的元素。例如,给出前序遍历 preorder = [3,9,20,15,7] 中序遍历 inorder = [9,3,15,20,7]返回如下的二叉树: 3 / \ 9 20 /
2020-06-11 18:40:06 2693 2
原创 GPS从入门到放弃(二十六) --- RTKLIB函数解析
GPS从入门到放弃(二十六) — RTKLIB函数解析为了贴合这个系列的标题“从入门到放弃”,在入门之后现在就要放弃此方向了。虽然感觉遗憾,暂时也没有办法。在此附上此系列最后一篇,希望能给大家一些帮助。此文中一些函数解析参考了 https://www.cnblogs.com/taqikema/p/8819798.html,在此表示感谢!文章目录GPS从入门到放弃(二十六) --- RTKLIB函数解析rtksvrthreadrtkpospntpossatpossephclkeph2clksatpose
2020-06-07 21:57:21 16061 10
原创 动态规划
动态规划动态规划是运筹学的一个分支,是一种求解多阶段决策过程最优化问题的数学方法。要搞清楚它,首先需要搞清楚几个基本概念。阶段:整个决策过程可以按某个(空间、时间或其它)标准分为多个步骤,每一步称为一个阶段。比如下棋,走一步就可以认为是一个阶段。状态:状态表示在每个阶段我们关注的决策相关的影响因素的情况。比如下棋到某一步时,此刻棋盘上所有棋子的位置就是此阶段的状态。状态通常可以用一个或多个变量来描述。决策:一个阶段的状态给定以后,从该状态演变到下一阶段某个状态的一种选择行动方法称为决策。比如下棋到
2020-05-28 19:57:19 584
原创 UWB中TOF测距法的公式推导
UWB中TOF测距法的公式推导UWB常用测距方法有两种:飞行时间测距法(TOF)和到达时间差法(TDOA)。这里说一下TOF。网上很多地方都给了公式,但是缺了过程推导,这里补上,有像我一样纠结公式是怎么来的同学可以参考。TOF飞行时间法(Time of Flight,TOF)是一种双向测距技术,它通过测量UWB信号在基站与标签之间往返的飞行时间来计算距离。根据数学关系,一点到已知点的距离为常数,那么这点一定在以已知点为圆心,以该常数为半径的圆上。有两个已知点,就有两个交点。以三个已知点和距离作三个圆,
2020-05-24 15:43:00 12404 9
原创 排序算法-11-桶排序
桶排序前面介绍的计数排序、基数排序是两种线性时间(即时间复杂度为 O(n)O(n)O(n))的排序算法,这一篇介绍另外一种也是线性时间的排序方法:桶排序。原理桶排序的前提是要排序的元素呈均匀分布。其原理是先将要排序的元素分到有限数量的桶里,然后对每个桶里的元素分别排序,最后再按顺序输出。步骤如下:设置一定数量的空桶。把每个元素放到对应的桶去。因为是均匀分布,所以每个桶的元素数量都差不多。对每个不是空的桶进行桶内排序。桶内排序可以采用别的排序算法,如插入排序、计数排序等,可以根据实际情况需要进行
2020-05-17 11:55:59 524
原创 靠谱:保证实时的动态内存分配
五一在家没有出门,研究了一下 TLSF 动态内存分配算法。缘起要说清楚TLSF,得从动态内存分配开始说起。动态内存分配是所有系统中都要考虑的问题,我们从学C语言开始就知道用的malloc函数就是用来申请动态内存的。其基本原理就是malloc时系统从堆中拿出一块内存分配给你用,用完之后通过free再还回去。这个过程有点像借钱,比如最近疫情手头紧,没钱吃饭了,于是找朋友malloc点钱去吃饭,比...
2020-05-01 20:26:14 1058 2
原创 排序算法-10-基数排序
基数排序前面介绍的计数排序是一种线性时间(即时间复杂度为 O(n)O(n)O(n))的排序算法,这一篇介绍另外一种也是线性时间的排序方法:基数排序。原理基数排序最早是用于打孔卡片制表机上的算法,它可以给打孔的卡片进行排序。我们把打孔改为用数字表示,则它的基本思想是将整数按位数依次排序。步骤如下:统一数据长度为相同的位数,数位较短的数前面补零。按照个位数进行排序。按照十位数进行排序。...
2020-05-01 12:00:47 390
原创 排序算法-9-计数排序
计数排序前面已经介绍过的所有排序,包括插入排序、选择排序、冒泡排序、归并排序、鸡尾酒排序、希尔排序、快速排序和堆排序都是比较排序,因为在他们的排序过程中,都需要经过比较,比较元素的大小然后调整顺序。可以证明,在最坏情况下,任何比较排序都需要经过 Ω(nlogn)\Omega(n \log n)Ω(nlogn) 次比较,所以比较排序的时间复杂度最好也就能到 O(nlogn)O(n \log n...
2020-04-25 11:44:11 228
原创 STM32CubeIDE不支持生成Keil工程
STM32CubeIDE不支持生成Keil工程早闻ST官方出了新的IDE开发工具,因为之前的项目一直用Keil,也就没有去关注。最近新项目开工,决定用新的IDE试试。于是去官网下载了STM32CubeIDE 1.3.0,安装过程就不说了,一路默认即可,最好不要用中文路径。运行起来后,从Help菜单中可以看到版本号如下图:通过File菜单的New -> STM32 Project 即可新建...
2020-04-23 13:48:37 15559 9
原创 Python贪吃蛇双人大战-升级版
Python贪吃蛇双人大战-升级版在玩了几天贪吃蛇游戏之后,(代码可参考我之前写的 Python贪吃蛇双人大战),家里小朋友提出了新的需求(用户反馈)如下:豆子不能出现在豆子上。豆子不能出现在蛇身上。要显示得分,方便看出来谁的蛇比较长。如果蛇头撞到另一条蛇,自己挂掉,变成豆子蛇变成的豆子被吃了之后不重新生成燃烧自己身体可以加速,每次燃烧身体减少一格,速度提升至两倍趁着是周末,赶...
2020-04-19 19:58:50 1938 3
原创 Python贪吃蛇双人大战
Python贪吃蛇双人大战晚上家里小朋友要玩贪吃蛇游戏,还要跟我对战,一时半会我没想到去哪里下这样一个游戏,忽然灵机一动,可以自己写一个,顺便还可以跟小朋友展示一下程序员的厉害,于是开工。原始版本这是一个很基础的程序,自然不用从头写,在网上随便一搜,找到有人共享的代码,链接如下:https://www.cnblogs.com/qiu2013/p/6087627.html,据说是来源于《Ras...
2020-04-14 21:22:38 7544 6
原创 GPS从入门到放弃(二十五) --- 卡尔曼滤波
GPS从入门到放弃(二十五) — 卡尔曼滤波概述单点定位的结果因为是单独一个点一个点进行的,所以连续起来看数据可能出现上串下跳的情况,事实上并不符合实际情况。为了解决这个问题,考虑到物体运动的连续性和运动变化的缓慢性,可以通过滤波器来平滑位置轨迹。滤波器的设计需要对物体的运动做一些理性的、常规的假设,比如要符合牛顿运动定律等。这里最常用的滤波器就是卡尔曼滤波器。卡尔曼滤波器用来解决用线性微...
2020-04-12 19:13:16 12039 1
原创 排序算法-8-堆排序
堆排序堆排序是利用堆(Heap)来进行排序的一种方法,在堆排序中,我们需要引入一种叫做“堆”的数据结构。堆一般可以看做是一棵完全二叉树,且堆中某个节点的值总是不大于或不小于其父节点的值,前者我们称之为最大堆,后者称之为最小堆。原理堆排序的思想是先用所有元素建立一个最大堆,然后每次取出最大的那个元素,并把剩下的元素再次调整为一个最大堆,如此循环。步骤如下:用所有元素建立一个最大堆。取出...
2020-04-08 22:26:54 424
原创 排序算法-7-快速排序
快速排序前面讲了插入排序、选择排序、冒泡排序、归并排序以及冒泡排序的改进版鸡尾酒排序和插入排序的改进版希尔排序,下面来说一种很常用的排序方法:快速排序。快速排序既然敢以快速命名,可以想见它的排序速度是很快的。事实也是如此,在实际应用中它的平均性能非常好,因此在一般情况下属于应用中的首选排序方式。原理快速排序与归并排序一样用了分治的思想。把一个要排序的数组按某个元素值(一般称作主元)进行划分...
2020-04-06 22:07:26 639
原创 排序算法-6-希尔排序
希尔排序(Shell Sort)希尔排序是对插入排序的一种优化。对插入排序不熟悉的同学可以参考插入排序一文。原理插入排序中每次比较之后只能将数据挨着移动一位,因此效率并不高。但是插入排序对于几乎已经排好序的数据操作时,效率是很高的。希尔排序的思想就是针对这两点做了优化,使每一次比较之后元素可以跨过多个数据移动,从而提高了整体效率。优化方式是对要排序的元素进行分组,然后在每个分组内进行插入排序...
2020-04-05 17:12:24 530
原创 GPS从入门到放弃(二十四) --- 精密单点定位
GPS从入门到放弃(二十四) — 精密单点定位精密单点定位(PPP: Precise point positioning),是一种全球精确定位服务。它利用预报的GPS卫星的精密星历或事后的精密星历作为已知坐标起算数据;同时利用某种方式得到的精密卫星钟差来替代用户GPS定位观测值方程中的卫星钟差参数;用户利用单台GPS双频接收机的观测数据进行静态定位可以达到毫米级的精度,进行实时动态定位可达到厘米...
2020-04-04 20:01:21 12780 2
原创 GPS从入门到放弃(二十三) --- 相位缠绕
GPS从入门到放弃(二十三) — 相位缠绕相位缠绕(Phase Wind-Up)是发射端与接收端之间的相对运动导致的载波相位变化。对 GPS 系统来说,因为 GPS 卫星发送的是右旋圆极化(RHCP: Right Hand Circularly Polarized)的信号,在这种情况下,接收机或者卫星天线的旋转会导致载波相位发生改变,这个值可能达到一个载波周期,我们把这种现象叫做相位缠绕。因为...
2020-03-30 19:00:30 8965 1
原创 RINEX格式介绍
RINEX格式介绍概述RINEX 是 Receiver Independent Exchange Format 的缩写,顾名思义,其是一种与接收机无关的数据交换格式。这种格式在GNSS领域中普遍采用,是一种标准数据格式。RINEX 格式采用文本文件(ASCII码)存储数据,数据记录格式与接收机的制造厂商和具体型号无关,这样可以方便数据的传递,使数据尽可能多被使用。目前 RINEX 数据格式...
2020-03-30 12:10:13 29253 10
原创 GPS从入门到放弃(二十二) --- 站点位移
GPS从入门到放弃(二十二) — 站点位移站点位移(Site Displacements)是固定在地球上的站点因为地球潮汐等因素影响跟随地球表面一起运动而造成的站点在地固坐标系(可参考坐标系一文)中的位移。虽然我们一般把地球看着一个固体,但它却不是一个刚体,而是也存在着形变。这个形变造成的站点位移我们一般可以忽略,在差分定位中可以基本消除,但在单点精密定位(PPP)中,则必须要考虑,因为站点位移...
2020-03-15 10:14:37 3226 1
原创 GPS从入门到放弃(二十一) --- 地球自转参数
GPS从入门到放弃(二十一)— 地球自转参数地球自转参数(ERP: Earth rotation parameters)主要包括地球极点的位移和速率、UT1-UTC的时间差、以及由天文观测确定的一天的时间长度与 86400 秒之间的差值 LOD.地球自转参数可以从ftp服务站 ftp://cddis.nasa.gov/gnss/products/ 下载。IGS提供的ERP数据与精密星历数据放在...
2020-03-06 18:26:17 5500 4
原创 GPS从入门到放弃(二十) --- 天线偏移
GPS从入门到放弃(二十) — 天线偏移天线偏移(Antenna Offsets)是指天线相位中心与物体质心的偏移,此偏移会给卫星定位带来厘米级的误差。在一般定位中,此误差可以忽略,但在精密定位中,需要消除此误差的影响。质心的概念中学物理都学过,不多说。这里解释一下天线相位中心。天线所辐射出的电磁波在离开天线一定的距离后,其等相位面会近似为一个球面,该球面的球心即为该天线的等效相位中心,即天线...
2020-02-24 18:32:43 7584 2
原创 GPS从入门到放弃(十九) --- 精密星历
GPS从入门到放弃(十九) — 精密星历在目前的GPS系统中,除了卫星播发的广播星历之外,IGS组织(International GNSS Service)还提供精度更高的卫星星历,我们称之为精密星历。精密星历可以用于更高精度的定位需求,达到厘米级。当然可能会有相应的延时,实时定位精度可能会差一些。各大IGS分析中心(MIT、SIO、GFZ等)都会生产自己的精密产品如精密星历、精密钟差等,而...
2020-02-18 20:39:33 16597 6
原创 GPS从入门到放弃(十八) --- 多路径效应
GPS从入门到放弃(十八) — 精密星历在目前的GPS系统中,除了卫星播发的广播星历之外,IGS组织(International GNSS Service)还提供精度更高的卫星星历,我们称之为精密星历。精密星历可以用于更高精度的定位需求,达到厘米级。当然可能会有相应的延时,实时定位精度可能会差一些。各大IGS分析中心(MIT、SIO、GFZ等)都会生产自己的精密产品如精密星历、精密钟差等,而...
2020-02-14 18:15:07 7314
原创 GPS从入门到放弃(十七) --- 对流层延时
GPS从入门到放弃(十七) — 对流层延时对流层概念对流层(Troposphere)地球大气层靠近地面的一层。它同时是地球大气层里密度最高的一层,它蕴含了整个大气层约75%的质量,以及几乎所有的水蒸气及气溶胶。对流层的下界与地面相接,上界高度随地理纬度和季节而变化,在低纬度地区平均高度为1718公里,在中纬度地区平均为1012公里,在高维度地区平均为8~9公里,并且夏季高于冬季。卫星导航...
2020-02-06 19:36:29 12902 3
原创 GPS从入门到放弃(十六)--- 卫星时钟误差和卫星星历误差
GPS从入门到放弃(十六)— 卫星时钟误差和卫星星历误差卫星时钟误差GPS卫星时钟误差(简称卫星钟差)是指GPS卫星时钟与GPS标准时间之间的差值。尽管GPS卫星采用了高精度的原子钟来保证时钟的精度,具有比较长期的稳定性;但原子钟依然有频率偏移和老化的问题,导致它们与GPS标准时之间会存在一个差异。这个偏差是必须加以修正的。当然其他的GNSS系统如北斗也会有类似的问题,这里我们仅以GPS为例说...
2020-01-20 18:00:51 19303 4
原创 GPS从入门到放弃(十五)--- DCB差分码偏差
GPS从入门到放弃(十五)— DCB差分码偏差概念DCB(Differential Code Bias 差分码偏差)是全球卫星导航系统(GNSS)中,通过不同信号得到的观测值之间存在的系统性偏差。DCB是由卫星和接收机硬件延迟的影响造成的。一般来说接收机端的DCB可以跟接收机钟差一起解算,被接收机钟差所吸收;而卫星端的DCB在精密定位中必须得到补偿。DCB主要有两种,即相同频率不同码之间存...
2020-01-12 22:05:22 12306 4
原创 GPS从入门到放弃(十四) --- 电离层延时
GPS从入门到放弃(十四) — 电离层延时电离层概念电离层(Ionosphere)是地球大气的一个电离区域。它是受到太阳高能辐射以及宇宙线的激励而电离的大气高层。50千米以上的整个地球大气层都处于部分电离或完全电离的状态,电离层是部分电离的大气区域,完全电离的大气区域称磁层。电离层的范围从离地面约50公里开始一直伸展到约1000公里高度的地球高层大气空域。电离层的主要特性由电子密度、电子...
2020-01-10 08:26:49 15308 12
原创 GPS从入门到放弃(十三) --- 接收机自主完好性监测(RAIM)
GPS从入门到放弃(十三) — 接收机自主完好性监测(RAIM)接收机自主完好性监测(RAIM: Receiver Autonomous Integrity Monitoring)是根据用户接收机的冗余观测值监测用户定位结果的完好性,其目的是在导航过程中检测出发生故障的卫星,并保障导航定位精度。为了能进行接收机自主完好性监测,必须有冗余的观测量。一般来说,需要可见卫星数5颗以上才可进行完好性检...
2020-01-08 08:31:24 10299
原创 RTKLIB 中的 rtknavi 中的选项的传递过程
RTKLIB 中的 rtknavi 中的选项的传递过程最近看了一下RTKLIB的源码,追了一下其中的 rtknavi 中的选项是如何传递进去生效的。过程如下,以处理过程选项(PrcOpt:Process Options)为例。点击打开Options窗口时调用 TMainForm::BtnOptClick,从 TMainForm 的成员 PrcOpt 和 SolOpt 中 读取选项值到 TOp...
2020-01-03 18:04:26 2745 1
Python贪吃蛇双人大战
2020-04-19
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人