- 博客(162)
- 资源 (5)
- 收藏
- 关注
原创 S7通讯协议写入FB块INOUT引脚失败
NOUT引脚传递数组时是先把实参整体复制到中间存储区,然后程序扫描计算,最后再整体输出到实参,如果在程序扫描过程中你改变了实参的设置,那就会被程序输出数据冲掉,从而造成上位机写入失败。因为S7通讯与程序周期是异步的所以就会出现这个问题 ,你要把与HMI通讯的数据进行分类,分成IN / OUT /inout三类,HMI不要直接关联你那个UDT中间要多一个缓存与HMI关联,在主程序中先把缓存的IN和INout数据的写入你那UDT,然后执行FB功能块,再把那你的UDT数据写出到缓存的OUT和INout。
2025-04-01 10:02:53
425
原创 S7-1500 S120 软限位 硬限位
软件限位非常方便更改限位的位置及精度,一般作为工作限位或是正反转转换工作点,硬件限位作为最终安全限位,软件限位失控后的终极保护。是用SINAMICS Startdrive调试 修改的都是S120驱动器的参数。1500PLC S120的软限位和硬限位怎么用。
2025-04-01 09:57:46
142
原创 S7-1200对V90 PN进行位置控制的三种方法
方法一、在PLC中组态位置轴工艺对象,V90使用标准报文3,通过MC_Power、MC_MoveAbsolute等PLC Open标准程序块进行控制, 这种控制方式属于中央控制方式(位置控制在PLC中计算,驱动执行速度控制)。方法二、在PLC中使用FB284(SINA_POS)功能块,V90使用西门子111报文,实现相对定位、绝对定位等位置控制,这种控制方式属于分布控制方式(位置控制在驱动器中计算)。• 方法一、PLC通过FB285(SINA_SPEED)功能块,V90使用1号标准报文,进行速度控制。
2025-03-24 09:21:11
951
原创 V90定位EPOS另一种实现方法
1,按照PLCopen组织的规则编写子功能,如MC_Power,MC_Reset……,MC(motion control),所有的PLC厂家集成的运动功能都按照这个规范,只是西门子把这个叫做“TO”(technology object 工艺对象)也许TIA portal V21之后会有调试面板,但与其寄希望于别人,不如自己动手。这是MC功能状态机,各个子功能的流转顺序。你就说,它是不是按照PLCopen组织的规则编写的吧?三下五除二地组态好之后,它有统一的调试面板和诊断面板。
2025-03-24 09:14:05
261
原创 G120C做升降驱动时采集的TRACE分析
如图,设置转速为80,向下运动。如上两个图所示,这是跑的自动速度,精确定位的。驱动器设置的时专家模式,转速控制无编码器,电机参数输入,抱闸打开时间100ms,抱闸关闭时间850ms,加减速都是1S,然后电机静态学习,学习完之后手动输入上升下降,采集TRACE。然后把P增益又改为3.52,发现速度跟随又变差了,最后改为5.试了下重载,效果很好,已经不自由落体了,而且速度跟随也很好。如上图所示,给电机使能后进行向下运动,电机转矩先向下然后向上,实际升降装置是有下坠的,然后又达到设置的转速80.
2025-03-23 22:13:40
409
原创 西门子G120扭矩控制
有一台轨道车,被机械设计成了双驱,轮式驱动,长度3米.双驱动都是sew电机标配的堡盟ttl编码器,拟采用g120闭环控制.一个跑速度环,1个跑扭矩限幅.双轴都用profinet给定速度,但是跑扭矩的从动轴比速度环的主动轴这个速度略快,主动轴通过模拟量输出扭矩给从动变频器.这样的方式是否最合理.从动轴:运行扭矩限幅,通过模拟量接收主动轴的扭矩信号,确保从动轴速度略快于主动轴。动态响应:G120的扭矩控制模式动态响应可能不足,影响定位精度。主动轴:运行速度环,负责设定轨道车的速度。2. 定位控制中的潜在问题。
2025-03-23 22:00:05
155
原创 上位机Python的视觉处理和与PLC的通讯
Imshow指令为显示图片数据,其中参数的‘camera’为窗口的名字,waitKey指令为等待指令,在后面括号中填入1则是程序会等待1毫秒,这样在画面显示1毫秒后就会关闭,我们再通过while循环来重复执行,这样我们就获取了一个实时变化的摄像头画面。这里介绍下circle函数,是一个用于画圆的参数,其第一个参数img为画圆的图片,(i[0],i[1])为圆心的x与y坐标,i[2]为画圆的半径,(0,0,255)为画圆线的颜色,2为线的宽度。下载完之后导入软件包,便可以进行我们对摄像头画面的获取了。
2025-03-23 21:56:25
835
原创 macos设置docker可以ping通容器
今天在启动项目时候seata报错:意思就是连接不上seata server,然后打开注册中心一看ip为:172.17.0.5,果断ping一下。
2025-03-23 21:39:01
468
原创 提示词工程师如何用一个技巧解放自己的生产力
咱们平时其实还是国产模型用的多,尤其是DeepSeek出世之前,用于生产环境的还是智谱、千问,网上各种流传的适用于chatgpt claude的提示词,就真的没那么适用。这款充电宝采用最新的超级快充技术,支持高达100W的充电功率,仅需15分钟即可为您的设备补充一天所需的电量,让您随时随地畅享无忧电力。加持后生成的文案按照"问题-解决方案-产品特点-使用场景-总结呼吁"的顺序展开,结构确实清晰流畅,且易于理解一些,读起来也更让我有情感共鸣,结尾还有呼吁行动,有助于促进转化。一天得奖自己好几个鸡腿子。
2025-03-23 21:37:34
441
原创 CentOS 8 停止维护后通过 rpm 包手动安装 docker
的指引,进入 Docker rpm 包下载的地址,根据自己系统的架构和具体版本选择对应的路径。版本,根据 docker 官方的给出的安装命令选择性的下载对应的 rpm 包。最终使用 yum 命令安装下载好的 rpm 包即可。下载完成后就可以直接使用 docker 了。
2025-03-15 21:33:21
535
原创 基于 Docker 搭建 FRP 内网穿透开源项目
有些配置项不知道该不该用,不知道该在哪用,不知道怎么用,所以我自己写个文章简单记录一下做个笔记本文介绍的是基于 Docker 运行 frps 和 frpc,并通过 TCP 协议简单穿透 SSH 和 HTTP,在观看本文之前请确保你的机器已经安装 Docker。
2025-03-15 21:31:30
1015
原创 C#使用Tesseract C++ API过程记录
此外,vcpkg还具有版本控制功能,能够方便地切换库的不同版本。Tesseract提供了丰富的 API 接口,支持 C++、Python、Java、Node.js 等多种编程语言,没有C#的,实际上已经有大佬做了C#的封装了,并提供了一个示例项目,需要只是简单使用一下,用这个大佬的就很方便了。之前跟大家分享的TesseractOCR-GUI需要在电脑上安装Tesseract才能用,因为只是简单的对Tesseract的命令行使用做了封装,现在通过这种方法,不需要安装Tesseract也能使用了。
2024-12-28 21:59:12
1104
原创 RxSqlUtils(base R2dbc)
随着 Solon 3.0 和 Solon-Rx 3.0 发布,用于“响应式”操作数据库。RxSqlUtils 是基于 R2dbc 和 Reactor 接口构建。极简风格,就像个工具类,故名:RxSqlUtils。尤其在 solon-web-rx 和 场景开发时,RxSqlUtils 会是最好的良配。使用了 lombok 的注解。@Data。
2024-12-28 21:56:56
129
原创 从 $PGDATA 到文件组:深入解析 PostgreSQL 与 SQL Server 的存储策略
PGDATA在 PostgreSQL 中指的是包含数据库集群所有配置和数据文件的目录。这是 PostgreSQL 数据存储架构的核心。简单来说,它是 PostgreSQL 存储所有文件的目录,这些文件包括实际数据、配置文件、事务日志以及其他重要信息,确保数据库集群能够正常运行。虽然 PostgreSQL 和 Microsoft SQL Server 都提供了强大的数据存储机制,但它们的方法却有着根本的不同。PostgreSQL 的$PGDATA文件夹是与数据库集群相关的所有内容的中央枢纽,
2024-12-24 20:33:29
1165
原创 事务管理在系统开发Spring提供事务管理机制
若a方法存在事务,则在a方法内嵌套b方法的事务,两者是有联系的,b事务相当于a事务的子事务。回滚怎么判断:前者a和b都有事务,并且是相关联的事务(a的事务相当于父事务、b的事务相当于子事务),当a方法出现异常时,a和b都会回滚。例:b方法的传播特性是REQUIRES_NEW,当a方法调用到b方法时,b方法新建一个事务,如果a方法存在事务,则把a方法事务挂起。例:b方法的传播特性是REQUIRED,当a方法调用到b方法时,若a方法存在事务,则b方法加入这个事务,与a共用一个事务。
2024-12-24 17:35:16
1028
原创 项目工作中应用消息队列MQ
消息队列(MQ)是分布式系统中不可或缺的技术之一。对很多小伙伴来说,刚接触MQ时,可能觉得它只是个“传话工具”,但用着用着,你会发现它简直是系统的“润滑剂”。无论是解耦、削峰,还是异步任务处理,都离不开MQ的身影。下面我结合实际场景,从简单到复杂,逐一拆解MQ的10种经典使用方式,希望对你会有所帮助。消息队列不只是传递消息的工具,更是系统解耦、提升稳定性和扩展性的利器。在这10种经典场景中,每一种都能解决特定的业务痛点。希望这篇文章对你理解MQ的应用场景有帮助!
2024-12-19 19:00:02
775
原创 Python依赖管理工具分析
能够帮助开发者精确地指定这些依赖项的版本,自动下载和安装它们,并且可以在不同的环境中(如开发、测试、生产环境)保证依赖项的一致性。特别是现在的项目(不管是开源的还是内部的)基本都需要多人协作,确保每个人的代码编译出来的软件运行结果一致是至关重要的。配置,有方便的命令行界面,支持管理多个虚拟环境和定义文件,有锁文件机制,支持类似。新的工具除了会改进原有工具的缺点,还会借鉴其他语言的优秀的依赖管理工具。是自带的默认包管理器,也是使用最多的工具,它的特点是只能用来安装。
2024-12-19 18:56:43
644
原创 Python中构建全局字典的详细指南
全局变量的定义和作用域全局变量:在函数外部定义的变量称为全局变量。全局变量可以在整个程序中被访问和修改。作用域:变量的作用域决定了变量在程序中的可访问范围。全局变量的作用域是整个程序,而局部变量的作用域仅限于定义它的函数或代码块。全局字典的概念字典:Python中的字典是一种可变容器模型,可以存储任意类型对象,如整数、字符串等。字典的每个元素都是一个键值对,通过键来访问值。全局字典:在全局作用域中定义的字典即为全局字典。它可以在整个程序中被访问和修改,适用于存储和管理全局数据。
2024-12-18 14:24:07
532
原创 基于知识图谱的医疗问答系统 docker-compose
self.food_qwds = ['饮食', '饮用', '吃', '食', '伙食', '膳食', '喝', '菜' ,'忌口', '补品', '保健品', '食谱', '菜谱', '食用', '食物','补品']'.join(list(set(desc))[:self.num_limit]))self.prevent_qwds = ['预防', '防范', '抵制', '抵御', '防止','躲避','逃避','避开','免得','逃开','避开','避掉','躲开','躲掉','绕开',
2024-12-18 14:22:26
994
原创 cv2, pil.image, plt.image 读图的差异
是不是很奇怪,还不止这一点,opencv读进来的图,你在使用shape函数时,返回的是h,w,c,也就是height是第一个维度,然后是宽度,最后是通道数,就是彩色图是RGB三通道。当然有人不喜欢opencv这种读图模式,那就换一种方式,比如最近发现在AGI领域,大家更倾向于用PIL库,用这个库来读图,更符合大家平常习惯的RGB模式,但是这个库也有问题,你如果想像opencv读进来的图像那样用,还要借助numpy进行转一下,因为本身这个函数读进来的并不是一个图向量,可以理解为一个索引。
2024-12-15 16:05:28
658
原创 后台日志该怎么打印
日志是任何系统中不可或缺的组成部分,合理的日志记录策略不仅能帮助开发人员高效排查问题,还能帮助运维团队监控系统健康、优化性能并确保安全性。在日志设计时,我们应特别关注内容的可读性、敏感信息的保护,以及合理控制日志记录频率。通过有效的日志管理、分析和告警机制,我们可以更好地保障系统的稳定性和安全性。
2024-12-15 16:04:15
933
原创 Redis应用-在用户数据里的应用
于是第一个线程写缓存时就把缓存里的最新数据给覆盖了,从而出现数据库里的是新数据,但缓存里的是旧数据,产生了不一致。因为如果出现大量的请求并发读取某个已过期的用户数据缓存时,此时只会有一个线程获取到锁去查库,然后其他大量的线程都只能在串行化排队。因此可以参考AQS的做法,获取不到锁的线程先挂起,第一个释放锁的线程就把这些线程全都唤醒执行并发读缓存。缓存击穿是指缓存中没有但数据库中有的数据(一般是缓存时间到期),这时由于并发请求特别多,同时读缓存没读到数据,又同时去数据库去取数据。
2024-12-13 20:55:38
921
原创 C#调用Python脚本 PaddleOCR-GUI
每种语言都有每种语言的优势,Python由于其强大的生态,很多任务通过调用包就可以实现,那么学会从C#项目中调用Python脚本完成任务就很重要。C#调用Python代码有多种方式,如果Python那边内容比较多,可以考虑起一个Web Api进行调用,如果只是一个简单的脚本而且不需要频繁调用,那么可以考虑使用Process类创建一个进程来调用,如果有几个方法,并且需要进行数据交互,并可能会频繁调用,那么可以考虑使用pythonnet。
2024-12-13 20:49:20
904
原创 删除虚拟机存储策略中vSAN默认存储策略
通过kv_value中的name的值,确定vSAN 默认存储策略的名称,比如这里是Management Storage Policy - Regular,同时需要记住surr_key中的值,比如这里是 11 ,后面需要根据surr_key来删除vSAN 默认存储策略。vSAN 8 中具有以下默认存储策略,这些vSAN 默认存储策略的特性都是无法被删除,默认名称及描述无法被编辑,只能修改其配置参数或基于该策略克隆出一个新的存储策略配置文件进行使用。使用同样的方式,删除其他不需要的vSAN 默认存储策略。
2024-05-04 21:41:49
1297
原创 连接和使用vCenter Server嵌入式vPostgres数据库
psql命令后面可以跟多个选项,比如连接选项中,-h或--host指定连接的数据库主机,-p或--port指定连接数据库的端口号(默认5432),-U或--username指定连接数据库的用户名,-W或--password指定连接数据库的密码,在通用选项中,-d或--dbname指定连接的数据库名称。查看vPostgres数据库的配置文件,vCenter Server默认的数据库实例是VCDB,数据库的存放位置是/storage/db/vpostgres。客户端图形工具来管理vPostgres数据库。
2024-05-04 21:40:05
1494
1
原创 C# AOP最经典实现
若是在.Net Core环境下,我们只需要把DeveloperSharp.json文件放到程序执行目录中(即bin目录下与dll、exe等文件的同一目录中,放错了位置会报错)(注意:有些.Net Core版本在Visual Studio“调试”时,不会在bin目录下生成全部的dll、exe,此时需要把此配置文件放在应用程序的“根目录”下)。它两就是AOP横向拦截的核心要素。正确的使用AOP,甚至能对传统的软件架构设计,产生颠覆性的影响,如超级战士出场一般,让所有人刮目相看,完全耳目一新!
2024-04-11 22:41:36
1045
原创 Python 100万条数据到MySQL数据库逐步写出到多个Excel
首先,我们需要导入 MySQL 连接器模块和 Faker 模块。MySQL 连接器模块用于连接到 MySQL 数据库,而 Faker 模块用于生成虚假数据。import mysql.connector # 导入 MySQL 连接器模块from faker import Faker # 导入 Faker 模块,用于生成虚假数据。
2024-04-06 23:25:29
719
原创 Keycloak实现多租户并在ASP.NET Core下进行验证
因此,多租户的支持也成为了与SaaS应用集成的身份和访问管理(IAM)服务的基本需求,在选用Keycloak作为SaaS应用IAM服务的场景下,对于多租户模式的支持,也是Keycloak实施的一个关键需求。使用Single Realm实现多租户的一般思路是,针对每一个租户创建一个Client,所以在这个Realm下,用户是跨租户的,用户组理论上也是跨租户的,但是,可以对不同的租户,设置不同的用户组,然后在这个租户级别的用户组下,还可以创建子组,所以,用户组也可以做到按租户隔离。
2024-04-06 23:23:31
1122
原创 Java中锁的分类
轻量级锁的作用主要是减少线程上下文切换的开销,通过自旋(spin-wait)的方式让线程在一段时间内等待锁的释放,而不是立即挂起线程,这样在锁竞争不是很激烈的情况下,能够快速获得锁,提高程序的响应速度和并发性能。这意味着等待时间最长的线程将优先获得锁。非公平锁是一种线程调度策略,在多线程环境下,当多个线程尝试获取锁时,锁的分配不遵循“先请求先服务”(First-Come, First-Served, FCFS)原则,而是允许任何等待锁的线程在锁被释放时尝试获取,即使其他线程已经在等待队列中等待更长时间。
2024-03-27 21:32:09
963
1
原创 常用负载均衡详解
在互联网场景下,负载均衡(Load Balance)是分布式系统架构设计中必须考虑的一个环节,它通常是指将负载流量(工作任务、访问请求)平衡、分摊到多个操作单元(服务器、组件)上去执行的过程。目的在于提供负载配比,解决性能、单点故障(高可用)和扩展性(水平伸缩)等问题。以上图为例,随着互联网的兴盛,类似淘宝、京东等网站的访问量逐年提升。原先的单台服务或者单集群模式已经远不能满足需求了,这时候就需要横向扩展多台服务或者多个集群来分摊压力,达到提升系统吞吐的能力,这就是著名的分治理论。
2024-03-24 22:39:49
866
1
原创 CentOS 同时安装多个版本Python3
/configure 是一个用于配置软件源代码的脚本,它根据当前系统的配置生成一个特定于该系统的 Makefile 文件,以便后续的编译步骤。(8)make altinstall 命令会以替代方式安装 Python,这意味着它不会覆盖或更改系统默认的 Python 版本。--enable-optimizations 选项是一个优化参数,它告诉配置脚本启用一些优化选项以提高 Python 的性能。(4)安装编译 Python 所需的依赖项。(3)更新系统,确保系统是最新的。(10)验证安装结果。
2024-03-18 13:09:05
770
原创 JMeter压测SpringBoot项目
压力测试架构图如下:配置JMeter在JMeter的bin目录,双击jmeter.bat新建一个测试计划,并右键添加线程组:进行配置一共会发生4万次请求。保存;
2024-03-18 13:07:47
871
原创 npm install报错 npm ERR! 的四种解决办法
解决办法:关闭VsCode并以管理员权限启动VsCode即可(网上还有说在VsCode属性兼容性中直接配置管理员权限,但本人的VsCode配置后启动黑屏)错误四、npm ERR!错误三、npm : 无法加载文件 D:\nodejs\cnpm.ps1,因为在此系统上禁止运行脚本。错误二、npm ERR!解决2: npm install --legacy-peer-deps。查看错误日志,错误日志就在上面展示的C:\Users…解决1:npm install --global npm。
2024-03-03 20:42:01
4941
原创 ng : 无法将ng项识别为 cmdlet、函数、脚本文件或可运行程序的名称
2、之后运行angular命令时还可能出现这种错误 “ng : 无法加载文件 C:\Users\XXX\AppData\Roaming\npm\ng.ps1,因为在此系统上禁止运行脚本”这种错误;ng : 无法将“ng”项识别为 cmdlet、函数、脚本文件或可运行程序的名称”,出现这种错误,那说明你angular-cli没有下载所以环境变量里没有相应的东西。3、这时可能会提示你 “您的全局Angular CLI版本大于本地版本”,要想关掉提示就使用。,再确定,之后再重新运行angular命令就不会报错。
2024-03-03 17:03:11
1232
原创 Redis Lua脚本实现分布式锁
Lua 是一种轻量小巧的脚本语言,用标准C语言编写并以源代码形式开放, 其设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能。为什么要用Lua呢Redis采用单线程架构,可以保证单个命令的原子性,但是无法保证一组命令在高并发场景下的原子性。当 事务1执行删除操作时,查询到的锁值确实相等。在 事务1执行删除操作之前,锁的过期时间刚好到达,导致 Redis 自动释放了该锁。事务2获取了这个已被释放的锁。当 事务1执行删除操作时,会意外地删除掉 事务2持有的锁。
2024-02-28 12:34:31
1408
原创 M200 PLC 串口通讯及远程下载
网线连接后在PC内可以ping通PLC的IP地址192.168.1.20,确保硬件连接没有问题,然后在SoMachine Basic的“试运行”界面的“以太网设备”下可以看到之前设置的PLC IP地址192.168.1.20,登录即可实现网线下载程序。按照附件中的程序,我们的通讯主体是2台M200 PLC之间的Modbus RTU 通讯。因为路由器的设置属于第三方,而且每家的路由器固件都不一样的,在某些路由器设置内有虚拟服务器的选项,在其中可以添加端口和IP地址,意思外网访问的端口转到响应的IP地址上。
2024-02-28 11:56:06
973
原创 Linux 目录磁盘满了,怎么查找大文件
如果你不确定某个文件或目录的用途,最好先进行调查或咨询专业人士,而不是直接删除它们。,这是一个基于文本的磁盘使用分析器,非常适合于查找大文件。如果它没有预装,你可以通过你的包管理器安装它(例如,在Ubuntu上使用。会分析根目录的磁盘使用情况,并提供一个交互式界面来浏览最大的文件和目录。请注意,运行这些命令可能需要一些时间,因为它们会检查许多文件。)磁盘满了,你可以使用以下方法来查找占用空间最大的文件和目录。这个命令会搜索根目录下所有的文件,并显示它们的大小。为了找到最大的文件,你可以使用。
2024-02-17 11:19:55
1076
原创 Python学习Pytorch
在Python环境中查看是否安装了PyTorch可以通过几个简单的步骤来完成。这里有一些方法:使用Python命令行:打开你的命令行工具(比如Terminal、Command Prompt或Anaconda Prompt),然后输入Python来启动Python解释器。之后,尝试导入PyTorch库来看看是否会报错。如果PyTorch已经安装,这将打印出PyTorch的版本号。如果没有安装,你会收到一个。使用pip列表:在命令行中,你可以使用pip包管理工具列出所有已安装的Python包。
2024-02-17 11:18:54
2398
【工业自动化】施耐德M580 PLC系统架构详解:存储结构、硬件配置与冗余设计
2025-04-01
施耐德与组态软件通讯设置 PLC与Intouch软件通讯设置
2025-04-01
SINAMICS S120驱动系统Startdrive调试手册:固件版本5.2,涵盖安全说明、参数设置与诊断功能
2025-04-01
西门子V90定位EPOS EPOS模板
2025-03-24
320厂房自动化物料搬运系统(AMHS)设计与仿真优化:基于物联网技术的航空柔性精益制造
2025-03-23
三菱模拟器通信指南:VMware环境下的虚拟网络与IP映射配置
2025-03-23
发那科模拟器操作指南:通信连接与界面解析
2025-03-23
IDA Pro 9.1.250226 x64 + SDK and Utilities.rar
2025-03-15
工业自动化中发那科模拟器通信与环境搭建及应用详解
2025-03-15
西门子CP343-1当作IO控制器S7-300通过Profinet连接控制danfoss丹佛丝变频器博图项目
2025-01-13
给我S200PTI,我将撬起一台激光切割机.mp4
2025-01-12
用博途V13写的1200运动控制(启动轴停止轴相对绝对运动及距离显示)和组态王7.50以太网通讯试验.rar
2024-12-28
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人