Raspberry PI + Codesys + EtherCAT步进驱动ECR60 Motion功能测试
原文连接:Raspberry PI + Codesys + EtherCAT步进驱动ECR60 Motion功能测试 – 个人资料收集 (rtplc.com)
<div class="post_info_wrapper ">
<p class="has-drop-cap">运动控制功能是codesys及EtherCAT通讯的重要功能,接下来对测试EtherCAT的运动控制部分,由于对这一部分功能不熟悉,所以测试程序采用ST语言,采用 case语句,方便测试各个函数的运行功能和状态。</p>
<h2>工具准备:</h2>
<ul><li>树莓派4B,已经按照前述方法设置好。</li><li><a href="http://www.szruitech.com/Detail%20Page%20ECR60.html" target="_blank" rel="noreferrer noopener">ECR60 步进驱动器</a>一个</li><li><a href="http://www.szruitech.com/Detail%20Page%2057.html" target="_blank" rel="noreferrer noopener">57A2步进电机</a>一个</li><li>CAT6网线一条</li><li>电源:DC24V</li></ul>
<h2>Step1 树莓派准备</h2>
<p>树莓派通电,有显示器的化,可以看到wifi是否连接成功,记录下此时的ip地址,由于后续Codesys连接。</p>
<h2>Step2 电机及驱动器接线</h2>
<ul><li>将24V电源连接至驱动器的V+、V-端子</li><li>将步进电机的A+、A-、B+、B-连接至驱动器电机接线端子,锐特的57A2电机绕组颜色定义为:红、蓝、绿、黑</li><li>网线连接:CAT6网线一端连接树莓派的网口,另外一端连接ECR60的ECAT IN端口。</li><li>完成上述步骤后,可以开通24V电源</li></ul>
<figure class="wp-block-image size-large"><img loading="lazy" width="1024" height="542" src="http://www.rtplc.com/wp-content/uploads/2020/05/ECR60Connect-1024x542.jpg" alt="" class="wp-image-491" srcset="http://www.rtplc.com/wp-content/uploads/2020/05/ECR60Connect-1024x542.jpg 1024w, http://www.rtplc.com/wp-content/uploads/2020/05/ECR60Connect-300x159.jpg 300w, http://www.rtplc.com/wp-content/uploads/2020/05/ECR60Connect-768x407.jpg 768w, http://www.rtplc.com/wp-content/uploads/2020/05/ECR60Connect-1536x814.jpg 1536w, http://www.rtplc.com/wp-content/uploads/2020/05/ECR60Connect-2048x1085.jpg 2048w" sizes="(max-width: 1024px) 100vw, 1024px"></figure>
<p>此时可见ECR60的PWR的绿色指示灯亮起,表示驱动器供电正常;ECAT IN网口的黄色LED灯亮起,表示网线连接正常。</p>
<h2>Step3 Codesys项目设置</h2>
<p>打开Codesys开发环境,新建一个标准项目,并选择目标板为“Codesys Control for Raspberry PI MC SL”</p>
<figure class="wp-block-image size-large"><img loading="lazy" width="536" height="300" src="http://www.rtplc.com/wp-content/uploads/2020/05/Setup0.png" alt="" class="wp-image-505" srcset="http://www.rtplc.com/wp-content/uploads/2020/05/Setup0.png 536w, http://www.rtplc.com/wp-content/uploads/2020/05/Setup0-300x168.png 300w" sizes="(max-width: 536px) 100vw, 536px"><figcaption>选择 MCSL</figcaption></figure>
<p>扫描并选择树莓</p>
<figure class="wp-block-image size-large"><img loading="lazy" width="1024" height="749" src="http://www.rtplc.com/wp-content/uploads/2020/05/Setup1-1024x749.png" alt="" class="wp-image-506" srcset="http://www.rtplc.com/wp-content/uploads/2020/05/Setup1-1024x749.png 1024w, http://www.rtplc.com/wp-content/uploads/2020/05/Setup1-300x219.png 300w, http://www.rtplc.com/wp-content/uploads/2020/05/Setup1-768x562.png 768w, http://www.rtplc.com/wp-content/uploads/2020/05/Setup1.png 1246w" sizes="(max-width: 1024px) 100vw, 1024px"><figcaption>扫描树莓派</figcaption></figure>
<p>添加EhterCAT master主站</p>
<figure class="wp-block-image size-large"><img loading="lazy" width="1024" height="705" src="http://www.rtplc.com/wp-content/uploads/2020/05/Setup2_Addmaster-1024x705.png" alt="" class="wp-image-507" srcset="http://www.rtplc.com/wp-content/uploads/2020/05/Setup2_Addmaster-1024x705.png 1024w, http://www.rtplc.com/wp-content/uploads/2020/05/Setup2_Addmaster-300x207.png 300w, http://www.rtplc.com/wp-content/uploads/2020/05/Setup2_Addmaster-768x529.png 768w, http://www.rtplc.com/wp-content/uploads/2020/05/Setup2_Addmaster.png 1079w" sizes="(max-width: 1024px) 100vw, 1024px"><figcaption>添加EtherCAT Master</figcaption></figure>
<p>设定EtherCAT master 的网口属性,如下图,选择“eth0”</p>
<figure class="wp-block-image size-large"><img loading="lazy" width="1024" height="555" src="http://www.rtplc.com/wp-content/uploads/2020/05/Master-Set1-1024x555.png" alt="" class="wp-image-406" srcset="http://www.rtplc.com/wp-content/uploads/2020/05/Master-Set1-1024x555.png 1024w, http://www.rtplc.com/wp-content/uploads/2020/05/Master-Set1-300x163.png 300w, http://www.rtplc.com/wp-content/uploads/2020/05/Master-Set1-768x416.png 768w, http://www.rtplc.com/wp-content/uploads/2020/05/Master-Set1-1536x832.png 1536w, http://www.rtplc.com/wp-content/uploads/2020/05/Master-Set1-1200x650.png 1200w, http://www.rtplc.com/wp-content/uploads/2020/05/Master-Set1.png 1920w" sizes="(max-width: 1024px) 100vw, 1024px"></figure>
<p>接下来添加ECR60步进驱动器,我手上的是最新的V202版本,直接添加即可。</p>
<figure class="wp-block-image size-large"><img loading="lazy" width="1024" height="858" src="http://www.rtplc.com/wp-content/uploads/2020/05/Setup2_AddECR60-1024x858.png" alt="" class="wp-image-508" srcset="http://www.rtplc.com/wp-content/uploads/2020/05/Setup2_AddECR60-1024x858.png 1024w, http://www.rtplc.com/wp-content/uploads/2020/05/Setup2_AddECR60-300x251.png 300w, http://www.rtplc.com/wp-content/uploads/2020/05/Setup2_AddECR60-768x643.png 768w, http://www.rtplc.com/wp-content/uploads/2020/05/Setup2_AddECR60.png 1077w" sizes="(max-width: 1024px) 100vw, 1024px"><figcaption>添加ECR60</figcaption></figure>
<p>接下来添加一个运动控制轴,关联到ECR60驱动器,如下图:</p>
<figure class="wp-block-image size-large"><img loading="lazy" width="654" height="733" src="http://www.rtplc.com/wp-content/uploads/2020/05/Setup2_AddSoftMotion.png" alt="" class="wp-image-509" srcset="http://www.rtplc.com/wp-content/uploads/2020/05/Setup2_AddSoftMotion.png 654w, http://www.rtplc.com/wp-content/uploads/2020/05/Setup2_AddSoftMotion-268x300.png 268w" sizes="(max-width: 654px) 100vw, 654px"></figure>
<p>右键“Properties”,将轴的名字改为Axis1,如下图:</p>
<figure class="wp-block-image size-large"><img loading="lazy" width="812" height="484" src="http://www.rtplc.com/wp-content/uploads/2020/05/AxisSetup1_Name.png" alt="" class="wp-image-510" srcset="http://www.rtplc.com/wp-content/uploads/2020/05/AxisSetup1_Name.png 812w, http://www.rtplc.com/wp-content/uploads/2020/05/AxisSetup1_Name-300x179.png 300w, http://www.rtplc.com/wp-content/uploads/2020/05/AxisSetup1_Name-768x458.png 768w" sizes="(max-width: 812px) 100vw, 812px"></figure>
<p>接下来设定轴的参数。首先设定电机运行的当量,ECR60默认使用10000脉冲/转,对应轴的设置如下图:</p>
<figure class="wp-block-image size-large"><img loading="lazy" width="992" height="359" src="http://www.rtplc.com/wp-content/uploads/2020/05/AxisSetup1_Microstep.png" alt="" class="wp-image-511" srcset="http://www.rtplc.com/wp-content/uploads/2020/05/AxisSetup1_Microstep.png 992w, http://www.rtplc.com/wp-content/uploads/2020/05/AxisSetup1_Microstep-300x109.png 300w, http://www.rtplc.com/wp-content/uploads/2020/05/AxisSetup1_Microstep-768x278.png 768w" sizes="(max-width: 992px) 100vw, 992px"></figure>
<h2>Step4 程序编写</h2>
<p>至此,整个系统的设置已经完成,接下来编写程序实现步进电机的控制。默认在新建项目时,设定了一个程序“PLC_PRG”的编写方式为ST语言。首先设定运动相关的变量:</p>
<pre class="wp-block-code"><code>PROGRAM PLC_PRG
VAR
mcp: MC_Power; //使能函数
mcmv: MC_Jog; //点动函数
mcmabs: MC_MoveAbsolute; // 绝对值定位运动
mcminc: MC_MoveRelative; // 增量式运动
MVStop: MC_Stop; // 电机停止
Axis1Home: MC_Home; // 电机回零
Axis1Reset: MC_Reset; // 电机故障复位
Motionstate: INT; // 测试用,控制测试功能
Cnt:INT; // 仅仅用于测试
Jog_Pos: BOOL ; // 点动正 使能
Jog_Neg: BOOL; // 点动负 使能
MovEnable: BOOL; // 定位运行、回零及停止时的函数模块使能
MovIncDistance: LREAL; // 增量运动距离设定
MV_Speed: LREAL; // 运行速度设定
MV_Acc: LREAL; // 运行加速度设定
MV_Dec: LREAL; // 运行减速度设定
MV_Jerk: LREAL; // 运行加加速度设定
MovAbsDistance: LREAL; // 绝对定位时的目标位置
END_VAR</code></pre>
<p>设计一个程序,通过状态跳转,实现对各个函数的测试,相关程序如下:</p>
<pre class="wp-block-code"><code>
CASE Motionstate OF
0:
Cnt := Cnt+1;
MV_Speed:= 10000;
MV_Acc:= 1000000;
MV_Dec:= 1000000;
MV_Jerk:= 100000000;
Jog_Pos:= TRUE;
1: //Enable motor,Power on
mcp(
Axis:= Axis1 ,
Enable:= TRUE ,
bRegulatorOn:= TRUE,
bDriveStart:= TRUE,
Status=> ,
Busy=> ,
Error=> ,
ErrorID=> );
2:// Disable motor,Power off
mcp(
Axis:=Axis1 ,
Enable:= TRUE ,
bRegulatorOn:= FALSE,
bDriveStart:= TRUE,
Status=> ,
Busy=> ,
Error=> ,
ErrorID=> );
3: // JOG+ and JOG-
mcmv(
Axis:=Axis1 ,
JogForward:=Jog_Pos ,
JogBackward:=Jog_Neg ,
Velocity:= MV_Speed,
Acceleration:= MV_Acc,
Deceleration:= MV_Dec,
Jerk:= MV_Jerk,
Busy=> ,
CommandAborted=> ,
Error=> ,
ErrorID=> );
4: // Move relative POS and Neg
mcminc(
Axis:=Axis1 ,
Execute:= MovEnable,
Distance:= MovIncDistance,
Velocity:= MV_Speed,
Acceleration:= MV_Acc,
Deceleration:= MV_Dec,
Jerk:= MV_Jerk,
Done=> ,
Busy=> ,
CommandAborted=> ,
Error=> ,
ErrorID=> );
5: // Move Abs
mcmabs(
Axis:=Axis1 ,
Execute:= MovEnable,
Position:= MovAbsDistance,
Velocity:= MV_Speed,
Acceleration:= MV_Acc,
Deceleration:= MV_Dec,
Jerk:= MV_Jerk,
Done=> ,
Busy=> ,
CommandAborted=> ,
Error=> ,
ErrorID=> );
6: // Stop motor
MVStop(
Axis:=Axis1 ,
Execute:= MovEnable,
Jerk:= MV_Jerk,
Done=> ,
Busy=> ,
Error=> ,
ErrorID=> );
7: // Home
Axis1Home(
Axis:=Axis1 ,
Execute:= MovEnable,
Done=> ,
Busy=> ,
CommandAborted=> ,
Error=> ,
ErrorID=> );
8:
Axis1Reset(
Axis:=Axis1 ,
Execute:= TRUE,
);
END_CASE;
</code></pre>
<p>将“PLC_PRG”添加到EtherCAT_Task任务中</p>
<figure class="wp-block-image size-large"><img loading="lazy" width="1024" height="677" src="http://www.rtplc.com/wp-content/uploads/2020/05/MotionSetup-1024x677.png" alt="" class="wp-image-512" srcset="http://www.rtplc.com/wp-content/uploads/2020/05/MotionSetup-1024x677.png 1024w, http://www.rtplc.com/wp-content/uploads/2020/05/MotionSetup-300x198.png 300w, http://www.rtplc.com/wp-content/uploads/2020/05/MotionSetup-768x508.png 768w, http://www.rtplc.com/wp-content/uploads/2020/05/MotionSetup.png 1087w" sizes="(max-width: 1024px) 100vw, 1024px"></figure>
<p>至此,程序编写完成,任务设置完成,可以进行下载程序测试。</p>
<h2>Step5 运行及测试</h2>
<p>在Codesys环境中,“Online” —> “Login”,下载程序进入到树莓派,然后点击“Debug” —> “Start”。如果之前都是顺利的化,此时步进驱动器的EtherCAT的RUN绿色指示灯常亮,ECAT IN的绿色数据灯一直闪烁,轴Axis1的图标为橙色双箭头,说明轴已经准备就绪,橙色是因为树莓派没有正式的授权运行codesys,处于demo状态。codesys的项目界面如下图:</p>
<figure class="wp-block-image size-large"><img loading="lazy" width="1024" height="767" src="http://www.rtplc.com/wp-content/uploads/2020/05/PLCRun-1024x767.png" alt="" class="wp-image-513" srcset="http://www.rtplc.com/wp-content/uploads/2020/05/PLCRun-1024x767.png 1024w, http://www.rtplc.com/wp-content/uploads/2020/05/PLCRun-300x225.png 300w, http://www.rtplc.com/wp-content/uploads/2020/05/PLCRun-768x575.png 768w, http://www.rtplc.com/wp-content/uploads/2020/05/PLCRun.png 1207w" sizes="(max-width: 1024px) 100vw, 1024px"></figure>
<p>测试程序状态变量“MotionState”为0,Cnt一直增加,程序初始化设置运行的速度、加速度等变量。。需要注意的是ECR60默认电流为3000mA,如果你的电机额定电流远小于该值,需要首先修改电流值。57A2额定电流为4000mA,所以可以直接测试。此时步进电机不锁轴,接下来我们首先使能电机,将“MotionState”值改为1,</p>
<figure class="wp-block-image size-large"><img loading="lazy" width="734" height="283" src="http://www.rtplc.com/wp-content/uploads/2020/05/Enable.png" alt="" class="wp-image-514" srcset="http://www.rtplc.com/wp-content/uploads/2020/05/Enable.png 734w, http://www.rtplc.com/wp-content/uploads/2020/05/Enable-300x116.png 300w" sizes="(max-width: 734px) 100vw, 734px"></figure>
<p>接下来我们进行点动测试,按照上述方法,将“MotionState”设置为3,“Ctrl + F7”写入值,此时电机将以1转/秒的速度逆时针运转。接下来将Jog_Pos设置为FALSE,Jog_Neg设置为TRUE,“Ctrl + F7”写入值,此时电机立刻改为顺时针运行。</p>
<figure class="wp-block-image size-large"><img loading="lazy" width="791" height="355" src="http://www.rtplc.com/wp-content/uploads/2020/05/JOG.png" alt="" class="wp-image-516" srcset="http://www.rtplc.com/wp-content/uploads/2020/05/JOG.png 791w, http://www.rtplc.com/wp-content/uploads/2020/05/JOG-300x135.png 300w, http://www.rtplc.com/wp-content/uploads/2020/05/JOG-768x345.png 768w" sizes="(max-width: 791px) 100vw, 791px"></figure>
<p>将Jog_Pos和Jog_Neg一起都设置为FALSE,此时电机停止运行。接下来我们测试相对运动。设置“MovIncDistance”变量为10000,我们每次让电机运行1转的距离,并将“MotionState”设置为4,“Ctrl + F7”写入值,此时电机并没有运行。需要将“MovEnable”设置为“TRUE”,并写入时,电机将运行以1转/秒的速度逆时针运行1转,然后停止。</p>
<figure class="wp-block-image size-large"><img loading="lazy" width="697" height="476" src="http://www.rtplc.com/wp-content/uploads/2020/05/MVINC.png" alt="" class="wp-image-517" srcset="http://www.rtplc.com/wp-content/uploads/2020/05/MVINC.png 697w, http://www.rtplc.com/wp-content/uploads/2020/05/MVINC-300x205.png 300w" sizes="(max-width: 697px) 100vw, 697px"></figure>
<p>如果要再次运行该模块,则需要先将“MovEnable”设置为FALSE,然后再设置为“TRUE”,电机才会继续运行1转。那么如果要让电机反转1转,则只需要将“MovIncDistance”设置为“-10000”,重复上述动作即可。</p>
<p>经过刚刚的各种测试,此时电机的位置已经到了一个随机的位置,如下图查看:</p>
<figure class="wp-block-image size-large"><img loading="lazy" width="1024" height="463" src="http://www.rtplc.com/wp-content/uploads/2020/05/Positionread-1024x463.png" alt="" class="wp-image-518" srcset="http://www.rtplc.com/wp-content/uploads/2020/05/Positionread-1024x463.png 1024w, http://www.rtplc.com/wp-content/uploads/2020/05/Positionread-300x136.png 300w, http://www.rtplc.com/wp-content/uploads/2020/05/Positionread-768x347.png 768w, http://www.rtplc.com/wp-content/uploads/2020/05/Positionread.png 1261w" sizes="(max-width: 1024px) 100vw, 1024px"></figure>
<p>接下来我们进行绝对值定位,让电机回到“0”的位置。将“MotionState”设置为5,“MovEnable”设置为“TRUE”,写入,此时电机朝着0的位置运行,经过一段时间后,电机回到0位置并停止。</p>
<figure class="wp-block-image size-large"><img loading="lazy" width="691" height="458" src="http://www.rtplc.com/wp-content/uploads/2020/05/GoTo0.png" alt="" class="wp-image-519" srcset="http://www.rtplc.com/wp-content/uploads/2020/05/GoTo0.png 691w, http://www.rtplc.com/wp-content/uploads/2020/05/GoTo0-300x199.png 300w" sizes="(max-width: 691px) 100vw, 691px"></figure>
<p>至此,电机已经能够完成各种动作,接着测试电机的回零功能。将“MotionState”设置为7,“MovEnable”设置为“TRUE”,写入即可触发电机回零。默认ECR60采用CIA40的回零模式17。电机此时以默认的回零速度寻找负限位,将COM+连接24V正极,IN4端子连接24V负极,此时电机停止然后反向低速反转,此时去除IN4的连接,则电机回零完成。本次测试的项目如下:</p>
<div class="wp-block-file"><a href="http://www.rtplc.com/wp-content/uploads/2020/05/ECR60MotionTest.zip">ECR60MotionTest</a><a href="http://www.rtplc.com/wp-content/uploads/2020/05/ECR60MotionTest.zip" class="wp-block-file__button" download="">下载</a></div>
<p></p>
<div class="wbp-cbm" wb-share-url="http://www.rtplc.com/?p=503"><a class="wb-btn-dwqr wb-btn-like j-dwqr-like-btn" data-count="11"><svg class="wb-icon wbsico-like"><use xlink:href="#wbsico-dwqr-like"></use></svg><span class="like-count">赞(11)</span></a><a class="wb-btn-dwqr wb-share-poster j-dwqr-poster-btn"><svg class="wb-icon wbsico-poster"><use xlink:href="#wbsico-dwqr-poster"></use></svg><span>微海报</span></a><a class="wb-btn-dwqr wb-btn-share j-dwqr-social-btn"><svg class="wb-icon wbsico-share"><use xlink:href="#wbsico-dwqr-share"></use></svg><span>分享</span></a></div> </div>
相关文章:
Raspberry PI + Codesys + EtherCAT步进驱动ECR60 Motion功能测试
原文连接:Raspberry PI Codesys EtherCAT步进驱动ECR60 Motion功能测试 – 个人资料收集 (rtplc.com) <div class"post_info_wrapper "> <p class"has-drop-cap">运动控制功能是codesys及EtherCAT通讯的重要功能&am…...
03 Temporal 详细介绍
前言 在后端开发中,大家是否有遇到如下类型的开发场景 需要处理较多的异步事件需要的外部服务可靠性较低需要记录保存某个对象的复杂状态 在以往的开发过程中,可能更多的直接使用数据库、定时任务、消息队列等作为基础,来解决上面的问题。然…...
【算法】【动规】乘积为正数的最长子数组长度
跳转汇总链接 👉🔗算法题汇总链接 1.1 乘积为正数的最长子数组长度 🔗题目链接 给你一个整数数组 nums ,请你求出乘积为正数的最长子数组的长度。 一个数组的子数组是由原数组中零个或者更多个连续数字组成的数组。 请你返回乘积…...
Kubernetes实战(十四)-k8s高可用集群扩容master节点
1 单master集群和多master节点集群方案 1.1 单Master集群 k8s 集群是由一组运行 k8s 的节点组成的,节点可以是物理机、虚拟机或者云服务器。k8s 集群中的节点分为两种角色:master 和 node。 master 节点:master 节点负责控制和管理整个集群…...
Spring之容器:IOC(1)
学习的最大理由是想摆脱平庸,早一天就多一份人生的精彩;迟一天就多一天平庸的困扰。各位小伙伴,如果您: 想系统/深入学习某技术知识点… 一个人摸索学习很难坚持,想组团高效学习… 想写博客但无从下手,急需…...
【.Net 6.0--通用帮助类--ConvertHelper】
前言 类型转换帮助类,包含下表中的方法: 方法名方法解释ObjToIntobject转intObjToMoneyobject转doubleObjToStringobject转stringObjToDecimalobject转decimalObjToDateobject转datetimeObjToDateSplitYMDobject转datetime(yyyy-MM-dd&…...
【加解密】报文签名与加解密,MD5,RSA,AES使用案例(基于 Java)
需要考虑哪些问题? 在进行报文传输时,有两个问题需要考虑: 消息防篡改加密报文 定义消息结构 为了方便后面使用,这里定义消息结构: public static class Message {public String data; //消息public String sign;…...
新建vue3项目
三种方法 一. 第一种方式 1、操作步骤: 创建项目目录 vue create 项目名称选择配置方式 ? Please pick a preset: #选择一个配置 Default ([Vue 3] babel, eslint)Default ([Vue 2] babel, eslint)Manually select …...
出现 Error:Unable to access jarfile xxxx\target\nacos-server.jar 解决方法
目录 1. 问题所示2. 原理分析3. 解决方法1. 问题所示 执行Nacos中的startup.cmd的时候出现闪退,于是在该脚本的最后一行添加pause,查看因为什么原因闪退 出现的bug如下所示:Error:Unable to access jarfile xxxx\target\nacos-server.jar 截图如下所示: 查看内部文件夹,…...
记录一次API报文替换点滴
1. 需求 各位盆友在日常开发中,有没有遇到上游接口突然不合作了,临时需要切换其他接口的情况?这不巧了,博主团队近期遇到了,又尴尬又忐忑。 尴尬的是临时通知不合作了,事前没有任何提醒; 忐忑…...
PMP项目管理 - 沟通管理
系列文章目录 PMP项目管理 - 质量管理 PMP项目管理 - 采购管理 PMP项目管理 - 资源管理 PMP项目管理 - 风险管理 现在的一切都是为将来的梦想编织翅膀,让梦想在现实中展翅高飞。 Now everything is for the future of dream weaving wings, let the dream fly in…...
fckeditor编辑器改造示例:增加PRE,CODE控件
查看专栏目录 Network 灰鸽宝典专栏主要关注服务器的配置,前后端开发环境的配置,编辑器的配置,网络服务的配置,网络命令的应用与配置,windows常见问题的解决等。 文章目录 修改方法:1)修改fckco…...
风速预测(五)基于Pytorch的EMD-CNN-LSTM模型
目录 前言 1 风速数据EMD分解与可视化 1.1 导入数据 1.2 EMD分解 2 数据集制作与预处理 2.1 先划分数据集,按照8:2划分训练集和测试集 2.2 设置滑动窗口大小为96,制作数据集 3 基于Pytorch的EMD-CNN-LSTM模型预测 3.1 数据加载&…...
单元测试二(理论)-云计算2023.12-云南农业大学
文章目录 一、单选题1、三次握手、四次挥手发生在网络模型的哪一层上?2、互联网Internet的拓扑结构是什么?3、以下哪一种网络设备是工作在网络层的?4、以下哪种关于分组交换网络的说法是错误的?5、以下哪种协议是在TCP/IP模型中的…...
QModelIndex 是 Qt 框架中的一个类,用于表示数据模型中的索引位置
QModelIndex 是 Qt 框架中的一个类,用于表示数据模型中的索引位置。 在 Qt 中,数据模型是一种组织和管理数据的方式,常见的数据模型包括 QAbstractItemModel、QStandardItemModel 和 QSqlQueryModel 等。QModelIndex 类提供了一种标识数据模…...
前端实现一个时间区间内,再次单选功能,使用Antd组件库内日历组件Calendar
需求:需要先让用户选择一个时间区间,然后再这个时间区间中,让用户再次去单选其种特殊日期。 思路: 1.先用Antd组件库中日期选择DatePicker.RangePicker实现让用户选择时间区间 2.在选择完时间区间后,用这个时间区间…...
【运维笔记】Hyperf正常情况下Xdebug报错死循环解决办法
问题描述 在使用hyperf进行数据库迁移时,迁移报错: 查看报错信息,错误描述是Xdebug检测到死循环,可是打印的堆栈确实正常堆栈,没看到死循环。 寻求解决 gpt 说的跟没说一样。。 google一下 直接把报错信息粘贴上去…...
嵌入式开发中的总线与时钟
总线 AHB总线 AHB的全称是"Advanced High-performance Bus",中文翻译就是"高级高性能总线"。这是一种在计算机系统中用于连接不同硬件组件的总线架构,它可以帮助这些组件之间高效地传输数据和信息。这个总线架构通常用于处理速度较快且对性能要求较高的…...
k8s debug 浅谈
一 k8s debug 浅谈 说明: 本文只是基于对kubectl debug浅显认识总结的知识点,后续实际使用再补充案例 Kubernetes 官方出品调试工具上手指南(无需安装,开箱即用) debug-application 简化 Pod 故障诊断: kubectl-debug 介绍 1.18 版本之前需要自己…...
Day10 Liunx高级系统设计11-数据库2
DQL:数据查询语言 查询全表 select * from 表名; 查询指定列 select 列名 1, 列名 2,… from 表名 ; 条件查询 select * from 表名 where 条件 ; 注意: 条件查询就是在查询时给出 WHERE 子句,在 WHERE 子句中可以使用如下运算符及关键 字&#…...
KubeSphere 容器平台高可用:环境搭建与可视化操作指南
Linux_k8s篇 欢迎来到Linux的世界,看笔记好好学多敲多打,每个人都是大神! 题目:KubeSphere 容器平台高可用:环境搭建与可视化操作指南 版本号: 1.0,0 作者: 老王要学习 日期: 2025.06.05 适用环境: Ubuntu22 文档说…...
IDEA运行Tomcat出现乱码问题解决汇总
最近正值期末周,有很多同学在写期末Java web作业时,运行tomcat出现乱码问题,经过多次解决与研究,我做了如下整理: 原因: IDEA本身编码与tomcat的编码与Windows编码不同导致,Windows 系统控制台…...
手游刚开服就被攻击怎么办?如何防御DDoS?
开服初期是手游最脆弱的阶段,极易成为DDoS攻击的目标。一旦遭遇攻击,可能导致服务器瘫痪、玩家流失,甚至造成巨大经济损失。本文为开发者提供一套简洁有效的应急与防御方案,帮助快速应对并构建长期防护体系。 一、遭遇攻击的紧急应…...
【OSG学习笔记】Day 18: 碰撞检测与物理交互
物理引擎(Physics Engine) 物理引擎 是一种通过计算机模拟物理规律(如力学、碰撞、重力、流体动力学等)的软件工具或库。 它的核心目标是在虚拟环境中逼真地模拟物体的运动和交互,广泛应用于 游戏开发、动画制作、虚…...
k8s从入门到放弃之Ingress七层负载
k8s从入门到放弃之Ingress七层负载 在Kubernetes(简称K8s)中,Ingress是一个API对象,它允许你定义如何从集群外部访问集群内部的服务。Ingress可以提供负载均衡、SSL终结和基于名称的虚拟主机等功能。通过Ingress,你可…...
visual studio 2022更改主题为深色
visual studio 2022更改主题为深色 点击visual studio 上方的 工具-> 选项 在选项窗口中,选择 环境 -> 常规 ,将其中的颜色主题改成深色 点击确定,更改完成...
Go 语言接口详解
Go 语言接口详解 核心概念 接口定义 在 Go 语言中,接口是一种抽象类型,它定义了一组方法的集合: // 定义接口 type Shape interface {Area() float64Perimeter() float64 } 接口实现 Go 接口的实现是隐式的: // 矩形结构体…...
基于Uniapp开发HarmonyOS 5.0旅游应用技术实践
一、技术选型背景 1.跨平台优势 Uniapp采用Vue.js框架,支持"一次开发,多端部署",可同步生成HarmonyOS、iOS、Android等多平台应用。 2.鸿蒙特性融合 HarmonyOS 5.0的分布式能力与原子化服务,为旅游应用带来…...
鱼香ros docker配置镜像报错:https://registry-1.docker.io/v2/
使用鱼香ros一件安装docker时的https://registry-1.docker.io/v2/问题 一键安装指令 wget http://fishros.com/install -O fishros && . fishros出现问题:docker pull 失败 网络不同,需要使用镜像源 按照如下步骤操作 sudo vi /etc/docker/dae…...
pikachu靶场通关笔记22-1 SQL注入05-1-insert注入(报错法)
目录 一、SQL注入 二、insert注入 三、报错型注入 四、updatexml函数 五、源码审计 六、insert渗透实战 1、渗透准备 2、获取数据库名database 3、获取表名table 4、获取列名column 5、获取字段 本系列为通过《pikachu靶场通关笔记》的SQL注入关卡(共10关࿰…...
