<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[tyst08的专栏]]></title><description><![CDATA[种一棵树最好的时间是十年前，其次是现在]]></description><link>https://blog.csdn.net/tyst08</link><language>zh-cn</language><generator>https://blog.csdn.net/</generator><copyright><![CDATA[Copyright &copy; tyst08]]></copyright><item><title><![CDATA[Modbus协议简介]]></title><link>https://blog.csdn.net/tyst08/article/details/120255621</link><guid>https://blog.csdn.net/tyst08/article/details/120255621</guid><author>tyst08</author><pubDate>Sun, 12 Sep 2021 20:40:10 +0800</pubDate><description><![CDATA[概述
Modbus是由Modicon（现为施耐德电气的一个品牌）在1979年发明的，是全球第一个真正用于工业现场的总线协议，目前依然是最流行的工业现场总线之一。
Modbus描述了一个控制器请求访问其它设备的过程，如何回应来自其它设备的请求，以及怎样侦测错误并记录。
Modbus是应用层报文传输协议，底层常用RS-485或网线。
Modbus特点：

主从结构，只有一个主机
从设备用地址来区分
帧格式简单、紧凑，易懂
免费开放
支持多种介质上传送，如双绞线、光纤、无线

数据模型




基本表格
对象类型]]></description><category></category></item><item><title><![CDATA[CDT规约简介]]></title><link>https://blog.csdn.net/tyst08/article/details/120230110</link><guid>https://blog.csdn.net/tyst08/article/details/120230110</guid><author>tyst08</author><pubDate>Fri, 10 Sep 2021 21:31:56 +0800</pubDate><description><![CDATA[概述
CDT（Cycle Distance Transmission）规约，即循环式远动规约，规定了电网数据的采集与监控系统中循环式远动规约的功能、帧结构、信息字结构和传输规则等。
CDT规约适合点对点的远动通道结构及以循环字节同步方式传送远动信息的远动设备与系统；也适合于调度所间以循环式远动规约转发实时远动信息的系统。
CDT规约可以看作是应用层协议，在底层一般用RS485。
CDT规约特点：

可变帧长度
多种帧类别循环传送
变位遥信优先传送
重要遥测量更新循环时间较短
区分循环量、随机量和插入量采用不]]></description><category></category></item><item><title><![CDATA[CDT规约之CRC8校验]]></title><link>https://blog.csdn.net/tyst08/article/details/120229627</link><guid>https://blog.csdn.net/tyst08/article/details/120229627</guid><author>tyst08</author><pubDate>Fri, 10 Sep 2021 21:17:46 +0800</pubDate><description><![CDATA[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位余数，就是校]]></description><category></category></item><item><title><![CDATA[四遥简要说明]]></title><link>https://blog.csdn.net/tyst08/article/details/120186191</link><guid>https://blog.csdn.net/tyst08/article/details/120186191</guid><author>tyst08</author><pubDate>Wed, 08 Sep 2021 18:31:38 +0800</pubDate><description><![CDATA[在电力系统中，通常我们说的四遥是指：遥信、遥测、遥控、遥调。有时候会加上遥脉（可以看成是一种特殊的遥测），说明如下：




名称
简单解释
缩写
类型
方向
详细解释
举例




遥信
远程信号
YX
开关量
输入
将被监视厂站设备状态信号远距离传送给调度
开关位置信号


遥信
远程测量
YC
模拟量
输入
将被监视厂站的参数变量远距离传送给调度
功率、电压、电流


遥控
远程控制
YK
开关量
输出
从调度发出命令以实现远方操作和切换。通常只取两种状态指令
开关的分、合


遥信
远程信号
YT
]]></description><category></category></item><item><title><![CDATA[ICONICS操作日志配置]]></title><link>https://blog.csdn.net/tyst08/article/details/115901100</link><guid>https://blog.csdn.net/tyst08/article/details/115901100</guid><author>tyst08</author><pubDate>Tue, 20 Apr 2021 12:15:59 +0800</pubDate><description><![CDATA[1. 建立数据库和表（参考SQL Server中的建立数据库）

2. 日志写入数据库（本地+远程）实例


function Pick1_CommandExecuted(sender : System.Object, cmdArgs : Ico.Gwx.CommandExecutionEventArgs)
{
	var userNameText = "Tester";
	//MessageBox.Show(userNameText);
	AddOpLogToDB(userNameText, "开关切除")]]></description><category></category></item><item><title><![CDATA[ICONICS发布页面通过Web访问]]></title><link>https://blog.csdn.net/tyst08/article/details/115868947</link><guid>https://blog.csdn.net/tyst08/article/details/115868947</guid><author>tyst08</author><pubDate>Mon, 19 Apr 2021 17:13:10 +0800</pubDate><description><![CDATA[ICONICS发布页面通过Web访问，有两种方式，一是发布到FTP站点，二是发布到本地，然后复制到相应目录。

1、在IIS中添加FTP站点

在“管理工具”的“Internet信息服务（IIS）管理器”中，选中服务器，点击右键菜单中的“添加FTP站点…”子菜单项，如图





若没有此菜单，是因为Windows的FTP功能没有打开，在控制面板=》程序和功能中，选择启用或关闭Windows功能，如下图



勾选上FTP服务，如下图



启用后服务中会有Microsoft FTP Service，如下图]]></description><category></category></item><item><title><![CDATA[ICONICS Client]]></title><link>https://blog.csdn.net/tyst08/article/details/115862181</link><guid>https://blog.csdn.net/tyst08/article/details/115862181</guid><author>tyst08</author><pubDate>Mon, 19 Apr 2021 12:50:42 +0800</pubDate><description><![CDATA[ICONICS Client，在ICONICS_Suite包中才有，在Genesis64包中没有。



安装没啥好说的，基本一路next就行。



连接注意：

1. 首先保证网络是通的，能ping通。ping不通的时候确认一下防火墙里ping服务是否允许了，如下图：



2. 设置主服务器IP地址，在ICONICS Tools =&gt; FrameWorX Server Location中



3. 主服务器端关闭防火墙，或者增加一条规则，允许TCP的8778端口，如下图：








..]]></description><category></category></item><item><title><![CDATA[SQL Server 2014 数据库远程连接配置]]></title><link>https://blog.csdn.net/tyst08/article/details/115861297</link><guid>https://blog.csdn.net/tyst08/article/details/115861297</guid><author>tyst08</author><pubDate>Mon, 19 Apr 2021 11:45:11 +0800</pubDate><description><![CDATA[SQL Server 2014 数据库远程连接配置的步骤如下：

1、在SQLSERVER Mangerment Studio中









2、在SQLSERVER Configuration Manger中









3、服务器端防火墙入站规则中新增规则，增加TCP 1433端口







4、远程连接








...]]></description><category></category></item><item><title><![CDATA[PLC模拟器与KEPServer冲突解决]]></title><link>https://blog.csdn.net/tyst08/article/details/113242711</link><guid>https://blog.csdn.net/tyst08/article/details/113242711</guid><author>tyst08</author><pubDate>Wed, 27 Jan 2021 11:10:53 +0800</pubDate><description><![CDATA[今天尝试用PLC模拟器，发现502端口被占用，提示如下图：
于是用netstat命令查看端口被哪个进程占用了，发现是1656号进程。

打开任务管理器，找到1656号进程，发现是server_runtime.exe。

打开其所在位置，发现在KEPServer目录下，是KEPServer的一个进程。

在任务管理器中结束该任务，发现很快它又自动启动了。
在Windows的服务中将该服务的启动方式改为手动，然后停止，很快它还是会自动启动。

最终解决方法是：

如果不需要用KEPServer，可以将该服务禁用]]></description><category></category></item><item><title><![CDATA[施耐德M580系列CPU下装注意事项]]></title><link>https://blog.csdn.net/tyst08/article/details/109730519</link><guid>https://blog.csdn.net/tyst08/article/details/109730519</guid><author>tyst08</author><pubDate>Mon, 16 Nov 2020 21:31:11 +0800</pubDate><description><![CDATA[最近在用施耐德M580系列的CPU eP582040，掉进了几个坑，记录一下下装时的注意事项，以免时间久了忘了在同一个坑里掉几次。


初次下装的时候默认IP为10.10.xxx.xxx，其中xxx为CPU上标记的MAC地址的后2个字节，将电脑IP改为同一网段即可连接上。这个简单，无需多说。


初次下装时程序中需要把CPU解锁安全，看到所有服务都已启用。如下图所示：
注意修改完成后需要点击工具栏上的确认按钮，否则可能没保存上。如图：

做这一步的目的是因为若CPU不解锁安全，会导致下装之后无法通过以太网口]]></description><category></category></item><item><title><![CDATA[Python贪吃蛇双人大战-魔法豆登场]]></title><link>https://blog.csdn.net/tyst08/article/details/106904984</link><guid>https://blog.csdn.net/tyst08/article/details/106904984</guid><author>tyst08</author><pubDate>Mon, 22 Jun 2020 16:44:57 +0800</pubDate><description><![CDATA[Python贪吃蛇双人大战-魔法豆登场
时隔两月之后，家里的小朋友再次对我之前改写的贪吃蛇游戏（过程可参考我之前写的 Python贪吃蛇双人大战 和 Python贪吃蛇双人大战-升级版，代码可以到此处下载）提出了新的需求（用户永远会有新需求）。还好，这回需求不多，就一个：要求增加魔法豆，要是蛇吃到了魔法豆，蛇身可以一次增加5格；魔法豆被吃后自动重新生成，且在屏幕上只出现2个魔法豆。
为了满足小朋友的愿望，老父亲只好又拿起了两个月没看的代码（已经忘的差不多了）。分析了一下需求，并不复杂，很明显需要增加一个魔法]]></description><category></category></item><item><title><![CDATA[LeetCode全局变量问题 - 由构造二叉树发现的]]></title><link>https://blog.csdn.net/tyst08/article/details/106694382</link><guid>https://blog.csdn.net/tyst08/article/details/106694382</guid><author>tyst08</author><pubDate>Thu, 11 Jun 2020 18:40:06 +0800</pubDate><description><![CDATA[LeetCode全局变量问题 - 由构造二叉树发现的
今天有小伙伴（好基友）问了我一个问题，他在LeetCode刷到一道题，碰到一个问题一直没想通，也不知道怎么解决，于是过来让我一起看。为了说清楚这个问题，我们先看题目：
根据一棵树的前序遍历与中序遍历构造二叉树。
注意：你可以假设树中没有重复的元素。
例如，给出
前序遍历 preorder = [3,9,20,15,7] 
中序遍历 inorder = [9,3,15,20,7]

返回如下的二叉树：
    3
   / \
  9  20
    / ]]></description><category></category></item><item><title><![CDATA[GPS从入门到放弃（二十六） --- RTKLIB函数解析]]></title><link>https://blog.csdn.net/tyst08/article/details/106525794</link><guid>https://blog.csdn.net/tyst08/article/details/106525794</guid><author>tyst08</author><pubDate>Sun, 07 Jun 2020 21:57:21 +0800</pubDate><description><![CDATA[GPS从入门到放弃（二十六） — RTKLIB函数解析
为了贴合这个系列的标题“从入门到放弃”，在入门之后现在就要放弃此方向了。虽然感觉遗憾，暂时也没有办法。在此附上此系列最后一篇，希望能给大家一些帮助。
此文中一些函数解析参考了 https://www.cnblogs.com/taqikema/p/8819798.html，在此表示感谢！
文章目录GPS从入门到放弃（二十六） --- RTKLIB函数解析rtksvrthreadrtkpospntpossatpossephclkeph2clksatpose]]></description><category></category></item><item><title><![CDATA[动态规划]]></title><link>https://blog.csdn.net/tyst08/article/details/106412008</link><guid>https://blog.csdn.net/tyst08/article/details/106412008</guid><author>tyst08</author><pubDate>Thu, 28 May 2020 19:57:19 +0800</pubDate><description><![CDATA[动态规划
动态规划是运筹学的一个分支，是一种求解多阶段决策过程最优化问题的数学方法。要搞清楚它，首先需要搞清楚几个基本概念。

阶段：整个决策过程可以按某个（空间、时间或其它）标准分为多个步骤，每一步称为一个阶段。比如下棋，走一步就可以认为是一个阶段。
状态：状态表示在每个阶段我们关注的决策相关的影响因素的情况。比如下棋到某一步时，此刻棋盘上所有棋子的位置就是此阶段的状态。状态通常可以用一个或多个变量来描述。
决策：一个阶段的状态给定以后，从该状态演变到下一阶段某个状态的一种选择行动方法称为决策。比如下棋到]]></description><category></category></item><item><title><![CDATA[UWB中TOF测距法的公式推导]]></title><link>https://blog.csdn.net/tyst08/article/details/106315892</link><guid>https://blog.csdn.net/tyst08/article/details/106315892</guid><author>tyst08</author><pubDate>Sun, 24 May 2020 15:43:00 +0800</pubDate><description><![CDATA[UWB中TOF测距法的公式推导
UWB常用测距方法有两种：飞行时间测距法（TOF）和到达时间差法（TDOA）。这里说一下TOF。网上很多地方都给了公式，但是缺了过程推导，这里补上，有像我一样纠结公式是怎么来的同学可以参考。
TOF
飞行时间法（Time of Flight，TOF）是一种双向测距技术，它通过测量UWB信号在基站与标签之间往返的飞行时间来计算距离。根据数学关系，一点到已知点的距离为常数，那么这点一定在以已知点为圆心，以该常数为半径的圆上。有两个已知点，就有两个交点。以三个已知点和距离作三个圆，]]></description><category></category></item><item><title><![CDATA[排序算法-11-桶排序]]></title><link>https://blog.csdn.net/tyst08/article/details/106172176</link><guid>https://blog.csdn.net/tyst08/article/details/106172176</guid><author>tyst08</author><pubDate>Sun, 17 May 2020 11:55:59 +0800</pubDate><description><![CDATA[桶排序
前面介绍的计数排序、基数排序是两种线性时间（即时间复杂度为 O(n)O(n)O(n)）的排序算法，这一篇介绍另外一种也是线性时间的排序方法：桶排序。
原理
桶排序的前提是要排序的元素呈均匀分布。其原理是先将要排序的元素分到有限数量的桶里，然后对每个桶里的元素分别排序，最后再按顺序输出。步骤如下：

设置一定数量的空桶。
把每个元素放到对应的桶去。因为是均匀分布，所以每个桶的元素数量都差不多。
对每个不是空的桶进行桶内排序。桶内排序可以采用别的排序算法，如插入排序、计数排序等，可以根据实际情况需要进行]]></description><category></category></item><item><title><![CDATA[靠谱：保证实时的动态内存分配]]></title><link>https://blog.csdn.net/tyst08/article/details/105881951</link><guid>https://blog.csdn.net/tyst08/article/details/105881951</guid><author>tyst08</author><pubDate>Fri, 01 May 2020 20:26:14 +0800</pubDate><description><![CDATA[五一在家没有出门，研究了一下 TLSF 动态内存分配算法。
缘起
要说清楚TLSF，得从动态内存分配开始说起。动态内存分配是所有系统中都要考虑的问题，我们从学C语言开始就知道用的malloc函数就是用来申请动态内存的。其基本原理就是malloc时系统从堆中拿出一块内存分配给你用，用完之后通过free再还回去。
这个过程有点像借钱，比如最近疫情手头紧，没钱吃饭了，于是找朋友malloc点钱去吃饭，比...]]></description><category></category></item><item><title><![CDATA[排序算法-10-基数排序]]></title><link>https://blog.csdn.net/tyst08/article/details/105876192</link><guid>https://blog.csdn.net/tyst08/article/details/105876192</guid><author>tyst08</author><pubDate>Fri, 01 May 2020 12:00:47 +0800</pubDate><description><![CDATA[基数排序
前面介绍的计数排序是一种线性时间（即时间复杂度为 O(n)O(n)O(n)）的排序算法，这一篇介绍另外一种也是线性时间的排序方法：基数排序。
原理
基数排序最早是用于打孔卡片制表机上的算法，它可以给打孔的卡片进行排序。我们把打孔改为用数字表示，则它的基本思想是将整数按位数依次排序。步骤如下：

统一数据长度为相同的位数，数位较短的数前面补零。
按照个位数进行排序。
按照十位数进行排序。
...]]></description><category></category></item><item><title><![CDATA[排序算法-9-计数排序]]></title><link>https://blog.csdn.net/tyst08/article/details/105747187</link><guid>https://blog.csdn.net/tyst08/article/details/105747187</guid><author>tyst08</author><pubDate>Sat, 25 Apr 2020 11:44:11 +0800</pubDate><description><![CDATA[计数排序
前面已经介绍过的所有排序，包括插入排序、选择排序、冒泡排序、归并排序、鸡尾酒排序、希尔排序、快速排序和堆排序都是比较排序，因为在他们的排序过程中，都需要经过比较，比较元素的大小然后调整顺序。可以证明，在最坏情况下，任何比较排序都需要经过 Ω(nlog⁡n)\Omega(n \log n)Ω(nlogn) 次比较，所以比较排序的时间复杂度最好也就能到 O(nlog⁡n)O(n \log n...]]></description><category></category></item><item><title><![CDATA[STM32CubeIDE不支持生成Keil工程]]></title><link>https://blog.csdn.net/tyst08/article/details/105684028</link><guid>https://blog.csdn.net/tyst08/article/details/105684028</guid><author>tyst08</author><pubDate>Thu, 23 Apr 2020 13:48:37 +0800</pubDate><description><![CDATA[STM32CubeIDE不支持生成Keil工程
早闻ST官方出了新的IDE开发工具，因为之前的项目一直用Keil，也就没有去关注。最近新项目开工，决定用新的IDE试试。于是去官网下载了STM32CubeIDE 1.3.0，安装过程就不说了，一路默认即可，最好不要用中文路径。运行起来后，从Help菜单中可以看到版本号如下图：
通过File菜单的New -&gt; STM32 Project 即可新建...]]></description><category></category></item></channel></rss>