自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(106)
  • 收藏
  • 关注

原创 1200PLC 485通信板modbus rtu主站读仪表数据

02 03 07 D0 00 02读瞬时流量浮点表示 ///返回02 03 04 00 00 00 00 C9 33//瞬时流量为0//返回02 03 04 5D 6A 42 B1 0A 57///88.68///返回02 03 04 3C D7 42 B1 85 8F ///88.62。两个主站通信指令指令用了轮询,如下图,要结合上面的主站通信指令截图来看。(REQ输入要用单周期触发,否则可能数据读到了,会报错)下面的程序看起来有点绕,验证是可行的,多些对PLC扫描周期的理解。modbus主站通信指令。

2025-07-17 10:16:02 107

原创 博途多重背景、参数实例--(二)

FC块的数据来自自建DB块的结构体,FB多重实例块的数据来自生成背景DB块,FB参数实例块的数据来自生成背景DB块和自建DB块的定时器。博图,怎么把DINT类型转换成TIME,就是MCGS触摸屏上设置时间,PLC里的定时器TIME。新增组“db”,相当于新建文件夹 ,把调用FB自动生成的背景数据块,拖进来。---“定时器块_fc”,包含3个结构体,4个定时器。

2025-07-12 23:35:53 232

原创 【无标题】

符号与目标不自动连接,是目标连接点没有在栅格上的原因,栅格按钮选中,开关捕捉到栅格选中,然后单击对其到栅格按钮,再插入符号,你会发现可以连接了。注意,更改A-E栅格尺寸后会再插入符号,仍会连不上,所以,项目之初,请选好栅格标准。选项-工具栏-调整 之后把视图--栅格勾选上。快捷方式“栅格 E”后面隔一个有两个对齐栅格和栅格捕捉点选上就可以了!还有一个就是页属性选成了别的模式,不是多线原理图应该不会自动连线。

2025-07-03 18:05:53 209

原创 博途多重背景、参数实例

至此在以上的截图中我们在 “多重背景MOTOR”块中调用了5次“motor_fb”,以单个实例调用两次,以多重实例调用两次,以参数实例调用一次。背景参数出现在“多重背景MOTOR”块中的(InOut中),每次调用较高级别函数块时(本示例中为“多重背景MOTOR”),将为被调用函数块传送一个实例(本示例为“motor_fb”)。,.在左边的项目树下面,没有出现我们刚才所建立的数据块名,但是出现在-多重背景MOTOR块中的Static(静态类型中),这样就不会出现很多的DB块了,方便管理。

2025-07-01 23:10:32 313

原创 博途模拟量输入/输出FC块

EN_S使能,AIW模拟量输入地址,HL物理量程上限值,LL物理量程下限值。DVO当前物理实际值。

2025-06-30 20:41:25 209

原创 SCL for循环求ON的位数

主程序中调用 ,统计M100.0——M103.7中ON的位数,结果传给MW300。// 统计ON的位数。

2025-06-29 00:41:41 351

原创 【无标题】

打开博途-----Portal视图------已安装的软件-----有关已安装软件的详细信息------安装支持软件包-----从文件系统添加------找到解压的文件安装。博途v15下载-------TIA_Portal_V15_HSP.zip。

2025-06-28 23:15:35 201

原创 C#编程与1200PLC S7通信

读取q0.0的状态,i0.0的状态实时在窗口更新PLC里写一个程序 用常闭按钮接i0.0信号 ,延时接通Q0.0按按钮,上位机测试效果,程序前提是引用了S7通信文件// 分配3字节的缓冲区// 从Q2.0读取3字节if (result == 0) // 假设0表示成功// 成功读取后处理buffer中的数据// 读取第0字节的第2位(对应Q2.2)if (y22)else// 处理错误(如记录日志或抛出异常)

2025-06-19 23:07:40 317

原创 汇川变频器模拟量输入控制速度/pid控制

F0-02 设置为1(用端子控制变频器的启动、停止。F0-03 = 3 AI2为主频率设定通道(J9跳线为电流0mA~20mA输入)用DI1和DI2控制电机正反转启停,用AI2(模拟量0-20ma)控制电机转速。F0-09 0xF009 运行方向选择 0:默认方向。F1-00 电机类型选择 1:变频异步电机。调反转设F4-00为2(只对DI1)F4-33= 十位2----曲线2。F1-01 电机额定功率。F1-03 电机额定电流。F1-05 电机额定转速。

2025-06-16 13:00:32 315

原创 C#事件基础模型代码

运行程序:一秒打印一次 "JUMP"

2025-06-12 18:37:07 341

原创 C#按钮点击事件代码记录

指向的事件处理函数都是 button_Click。点击不同的按钮显示不同的信息。3个按钮,一个文本显示。

2025-06-12 14:45:08 158

原创 c#事件处理代码记录

【代码】c#事件处理代码记录。

2025-06-12 13:37:07 127

原创 MCGS和1200plc变量表格式编辑/超时注销登录/触发保存数据

通道号,地址均按顺序排列 ,寄存期地址最后一位0不能省略,按排列顺序补全。设备编辑窗口---设备信息导出---另存为xx.CSV文件。db数据块int类型 (4.14应改为4.140,0不省略)在上面导出的表格基础上编辑。db数据块real类型。

2025-06-11 19:39:49 283

原创 C#winform多选框代码

【代码】C#winform多选框代码。

2025-06-11 19:05:49 213

原创 C#winform画图代码记录

【代码】C#winform画图代码记录。

2025-06-11 18:48:32 206

原创 C#引用传递代码记录

【代码】【无标题】

2025-06-11 18:38:21 536

原创 C#接口代码记录

【代码】【无标题】

2025-06-11 18:23:28 354

原创 C#委托代码记录

Test("李四", EnglishSayHollo);//方法作为参数传给委托// 将EnglishSayHollo 方法作为参数传递给 Test 方法。public static void Test(string name,DelSayHollo del)// 定义一个方法,接受 DelSayHollo 委托作为参数。public static void EnglishSayHollo(string name) // 定义一个方法,符合 DelSayHollo 委托的签名。del("张三");

2025-06-11 18:00:40 638

原创 物联网配置记录

看板管理----把上一步创建的图表,拖到看板页面,并从组件中选择日期筛选器。(选择日期查看数据)图表管理----托动选择行维和变量,历史和报警变量模块需有存储数据。里选择上面设计好的报表。另外可以添加多个画面并用按钮跳转画面。,然后在页面报表的控件。

2025-06-11 16:57:10 237

原创 tianqi脚本记录

var a= getMnValue(自定义1);setMnValue(自定义2,15);setMnValue(自定义2,10);setMnValue(自定义2,h);

2025-06-11 12:37:25 99

原创 avaScript 中,使用 setInterval 函数来创建定时任务

f// 使用 setInterval 创建定时任务// 返回定时器的 ID,以便以后可以清除定时器// 示例用法// 1000 毫秒 = 1 秒console.log("定时任务执行了: " + new Date().toLocaleTimeString());// 如果需要停止定时任务,可以使用 clearInterval。

2025-06-10 17:22:04 199

原创 MD650一对多透传场景联动

一个气体探测控制器的485口下面接了两个气体探测仪表。控制器再通过另一485口上传给物联网模块。前两个模块连接的报警控制器485上传的数据。第3个模块,只用本体DO1控制报警器电源开关。上面两个模块采集的数据超过一定数值,就让第三个模块触发报警。

2025-05-28 22:31:29 377

原创 md650一对一场景联动调试记录

此实验以上两篇博文为基础,采集数据(HS1/HS2)大于设定值1(0.4)输出报警Q1,小于设定值2(0.3)复位报警输出Q1。

2025-05-26 19:44:07 220

原创 md650透传

两个物联网模块都装4g上网卡,“...25134(imei)”用本体rs485串口1来采集。左侧个开关是“21414”本体的继电器输出(读写),右侧是透传的两个仪表数据(只读)modbus数据透传给“....21414(imei)”.

2025-05-25 20:44:26 266

原创 md650本体DO输出配置记录

2025-05-24 23:32:37 94

原创 串口调试记录

手动加CRC16校验,成功返回同样数据。仪表地址96(十六进制60H)

2025-05-22 13:36:09 218

原创 PLC的扫描周期有效性记录

只看I11.0, M30.0和M30.1。I11.0初始强制为1,M30.0设1,然后I11.0初始强制为0。上图M30.1并不会置位。下图M30.1可以置位。

2025-05-08 12:41:17 156

原创 自定义eplan端子图表模板下载

自定义eplan端子图表下载,及复制路径

2025-04-21 12:44:20 353

原创 MCGS触摸屏仿真与博途仿真联调

用到3个软件:博图,MCGS, NetToPLCsim小软件。(小软件下载--上篇博文有网盘链接)5.小软件点Start Server,如下图。然后仿真联调,速度设定为33.博图在线监视数值成功。4.博图仿真下载好程序,在现监视程序。MCGS同样模拟运行--工程下载--启动运行。2.添加连接IP地址,与mcgs远端IP地址相同,即电脑IP地址。3.打开博图仿真,再在小软件中添加连接仿真PLC IP地址。1.打开 NetToPLCsim,出现如下画面。

2025-03-09 22:47:06 1044

原创 博图v16联合factory io PID仿真

192.168.0.200是电脑虚拟网卡IP地址。192.168.0.12是仿真PLC IP地址。factory io连接IP为电脑虚拟网卡地址。

2024-12-08 17:14:28 353

原创 三菱QJ71MB91自动modbus控制变频器

所以只看 1:启用 下面的参数,2指的是通信对象的站地址。4106h就是本智能模块(U1D)的数据缓存地址,十进制是16646.所以程序是U1D\16646.这个地址是在范围4000h4FFFh内自定义的。4608是十六进制0x1200,是控制变频器的寄存器地址。访问点数是2:指的是用到了两个寄存器0x1200和0x1201。遗憾没有最终的完成程序,只保存了调试程序,所以只有简单的一段测试,D800写入455(十六进制01C7的十进制455).D802写入5000(0x1388).

2024-11-27 14:11:22 882

原创 汇川h3U用modbus配置扩展IO

下图是读取从站4的线圈(只在程序第2行,和读输入点一样,用一行mov指令就OK了,内部是自动循环通信的)和写从站4的线圈(写的程序原理,以从站4的第1个输出点映射M1060为例,当M1060状态改变,并且通信缓存区的地址D160也跟着改变,才触发通信M160)从站1的第1个输出点映射M1000 ,对应通信缓存区是D100,触发为M100。从站1的第2个输出点映射M1001 ,对应通信缓存区是D101,触发为M101。从站4的16点写输出映射M1060-M1075 ,对应通信缓存区是D160。

2024-06-20 11:17:46 2558

原创 C++回调函数

一个是普通函数作为回调函数。另一个使用 lambda 表达式作为回调函数 (匿名函数)

2024-05-31 12:43:17 306

原创 C#从寄存器(8bit二进制字符)解析出浮点数

但因为我们只有 23 位来存储尾数的小数部分,而 110011001100....无限循环,所以会有精度误差,有在线转换工具把89.8转换成42B39999也是正确的。id号-01/功能码-03/0C 00 - 表示从寄存器地址/01 00 - 表示地址1数据256(十进制)/00 16--地址2数据22/00 21-地址3数据3300 2C-地址4数据44/99 9A 42 B3按字发送,低字在前,高字在后 ,所以数据是42B3999A,(已验证-89.8是C2B3999A)

2024-05-29 14:50:51 386

原创 【无标题】

CANopen 的创始人在设计CANopen时,对其定 义为小网络、控制信号的实时通讯: 报文传输采用CAN标准帧格式。即11bit的ID域,以尽量减小传输时间; 网络控制报文均采用数据最小字节数。比如心跳报文,只有1个字节数据; 实时更新的过程数据无需接收方报文应答。即采用生产消费模型,降低总线负载; 需要接收方确认的配置参数一般都是采用快速单字传输。即 1 个报文最多传送 1 个32字节的参数变量,避免了分帧引起的实时性降低。以上这些定义都是为了节约时间开销,最大限度保证实时性。

2024-05-20 22:54:02 1064

原创 c++句柄

Windows操作系统采用进一步的间接:在进程的地址空间中设一张表,表里头专门保存一些编号和由这个编号对应一个地址,而由那个地址去引用实际的对象,这个编号跟那个地址在数值上没有任何规律性的联系,纯粹是个映射而已。通过使用句柄和句柄表,系统可以在不改变程序代码的情况下重新定位内存块,并将新的地址映射到句柄上。句柄并不是直接指向内存地址的指针,而是一个由系统生成的、具有特定含义的整数值或其他类型的数据。总之,句柄引用内存块的原理是通过操作系统分配的标识符来间接访问内存块,从而实现对内存资源的有效管理和控制。

2024-05-19 14:55:19 805

原创 线程池 ThreadPool

但过多创建线程和销毁线程,会消耗掉大量的内存和CPU资源, 假如某段时间内突然爆发了100个短小的线程,创建和销毁这些线程就会消耗很多时间, 可能比线程本身运行的时间还长。线程池提供若干个固定线程轮流为大量的任务服务,比如用10个 线程轮流执行100个任务,当一个线程完成任务时,并不马上销毁,而是接手另一个任务, 从而减少创建和销毁线程的消耗。在上面的程序中,我们向线程池中排入了100个工作函数,线程池分别独立的完成了 这100个任务。如果这段时间内没有线程完成任务,就创建一个新线程去执行新任务。

2024-05-15 23:24:51 692

原创 c#多态性的应用

继承和多态性是开发复杂软件的关键技术,特别适合于分层软 件系统。操作系统可以设计一个抽象基类,提供 Read()和 Write()两个抽象函数,各种硬件的驱动程序被编写为该抽象基类的 派生类,具体实现Read()和Write()操作。设计一个电脑游戏,游戏中有猪、牛、兔子、青蛙、鸭子等动物,这些动 物都继承于Vertebrata 类(脊椎动物类),Vertebrata类有一个抽象方法Display(),每个动 物都从Vertebrata 类那里继承并重写了Display()方法,用来把动物本身画在屏幕上。

2024-05-14 21:12:13 375 1

原创 【无标题】

是 WPF 框架中用于构建 Windows 桌面应用程序用户界面的命名空间,是 WPF (Windows Presentation Foundation) 框架中的一个核心命名空间,而System是 .NET 框架中更广泛的命名空间,包含了大量基础类。Window是一个命名空间,它包含了 WPF 中大部分常用的用户界面 (UI) 控件。这些控件用于在 WPF 应用程序中创建丰富的用户界面。以下是一些:表示一个用户可以单击以执行操作的按钮。:允许用户输入和编辑单行文本。:用于在 UI 中显示只读文本。与。

2024-05-13 23:44:45 943

原创 C#泛型委托

在C#中,Action 是一个内置的委托(delegate)类型,用于封装没有返回值(即返回类型为 void)的方法。Action 委托有多个重载版本,可以接受不同数量的参数,每个参数可以有不同的类型。关键字用于声明委托(delegates),委托是一种类型安全的函数指针,允许你传递方法作为参数或从方法返回方法。而result 此时为null.下一句:result =func("我是带返回值的Func委托:");是一个类型参数,意味着这个委托可以用于任何类型的方法,只要那个方法有一个参数并且没有返回值。

2024-05-12 17:15:22 868

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除