当前位置: 首页 > news >正文

不会PLC,怎么学上位机?

不会PLC,能不能学上位机?

我认为是可以的,但是要了解一些PLC的基础知识。

一、PLC品牌系列

首先我们要了解一下PLC的品牌系列。

目前我们常用的PLC品牌和汽车品牌一样,也分成多个系列,主要有日系、德系、美系和国产。

图片

日系PLC代表是三菱、欧姆龙、基恩士、松下。

德系PLC代表是西门子和倍福。

美系PLC代表是罗克韦尔AB和GE。

国产PLC代表是汇川、台达、信捷。

二、PLC工作原理

其次,我们要了解一下PLC的工作原理。

PLC是一种可编程逻辑控制器,基于“循环扫描”方式运行,扫描周期通常在几毫秒到几十毫秒,取决于程序复杂程度和CPU性能。

图片

每个扫描周期包含以下三个阶段:

1、输入采样阶段

读取所有输入信号‌:PLC将物理输入端口的状态(如传感器信号)一次性读取到输入映像寄存器中,确保程序执行期间输入状态的一致性。

2‌、程序执行阶段

逐行执行用户程序‌:CPU按照梯形图、指令表等编程语言的逻辑顺序进行运算,处理输入数据,生成中间结果并存储在输出映像寄存器中。此阶段输入映像寄存器的值保持不变,即使实际输入状态变化也不会影响当前周期。

3、输出刷新阶段

更新物理输出‌:将输出映像寄存器的结果一次性传送到输出模块,驱动执行器动作(如启动电机)。完成输出刷新后,PLC重新进入下一轮扫描周期。不同的PLC项目主要是输入输出数量及程序逻辑复杂程度不一样。

三、PLC存储区

了解完PLC工作原理后,接下来就要了解PLC存储区?

PLC作为一种下位机,上位机与PLC之间主要通过通信进行交互,然而通信的最终目的是为了实现数据交互,数据载体即为存储区。

因此,学习上位机,一定要对了解PLC存储区。

PLC品牌和种类很多,那么我们该如何学习呢?

  • 从数据类型来看,PLC存储区无非分为3类,一类是以字节为单位的,一个是以布尔为单位,一个是以字(即寄存器)为单位。

  • 从读写特性来看,对于PLC来说,除了输入存储区,比如西门子的I区,三菱的X区,其他存储区都是可读可写的。

综合来看,对于我们来说,PLC存储区只有两种,一种是西门子PLC,另一种是其他PLC。

四、西门子PLC

西门子PLC存储区主要有I区、Q区、M区、DB存储区、V区(即DB1),对于C区计数器和T区定时器,一般使用较少,我们一般主要使用DB存储区/V区。

这里以V区为例,其他存储区都是类似的。

西门子PLC存储区以字节为单位,每个字节中包含8个位,每2个字节组成一个字,每4个字节组成一个双字或单精度浮点数,每8个字节组成一个长字或双精度浮点数。

图片

VB100:表示V区中第100个(从0开始)字节。

VW100:由VB100+VB101两个字节组成。

VD100:由VB100-VB103四个字节组成。

V100.0:表示VB100中的第0个位。

通过地址只能确定所占的字节数,不能确定具体数值的,还需要配合数据类型,比如VD100,即可以表示有(无)符号整型,也可以表示单精度浮点数。

另外西门子对数据类型的定义与我们C#中的数据类型是不一样的,具体对照表如下:

图片

五、三菱PLC

三菱PLC、欧姆龙PLC、信捷、汇川、台达等日系或国产PLC,它们的存储区都是比较类似的。这里以三菱FX5U PLC为例进行说明。

三菱PLC存储区主要有X、Y、M、D、W,一般我们主要使用M区和D区,X区、Y区、M区是布尔存储区,D区、W区是字存储区。

对于X区Y区,一般会是8/16进制,M区是10进制,X10(8进制)表示的是X区的第8个地址,M10表示的是M区的第10个地址。

图片

对于W区,一般是16进制,而D区是10进制,W0A表示的是W区的第10个字,D10表示的是D区的第10个字。

图片

图片

这里的进制不用过于纠结,以实际PLC提供的地址表为准。

每个字包含16个位,以D100为例,D100包含D100.0-D100.F,这里的位一般会写成16进制。每2个字组成一个双字,可以表示整型或单精度浮点数,比如D100(双字/浮点数)就是由D100和D101组成而成。

图片

如果学过Modbus就会发现,三菱PLC的地址模型和Modbus是非常相似的,X区映射输入线圈,Y和M映射输出线圈,D和W映射保持寄存器,而输入寄存器一般不使用,下面是三菱FX5U PLC的Modbus映射表:

图片

因此,如果熟悉Modbus协议,很多PLC的存储区是非常容易理解的。

六、标签通信

上面说的存储区和地址模型都是基于地址偏移的。

上位机通信还有另外一种方式,就是基于标签通信,这个以倍福PLC和罗克韦尔AB PLC为代表,其他PLC也慢慢开始支持,比如西门子、汇川等。

标签通信,顾名思义,就是不再需要寻址,可以直接通过变量名称来实现通信。这个主要由通信协议决定,目前支持标签通信的协议包括倍福的Ads通信协议,AB、欧姆龙的EtherNet/IP通信协议、西门子PLC的S7Plus通信协议以及OPCDA/UA通信等。

http://www.lqws.cn/news/445861.html

相关文章:

  • 在 Mac 上配置 Charles,抓取 iOS 手机端接口请求
  • 写实数字人:开启教学新纪元,重塑教育生态
  • 股票心理学习篇:交易的人性弱点 - 频繁交易
  • 基于 Apache POI 实现的 Word 操作工具类
  • 目标检测之YOLOV11自定义数据使用OBB训练与验证
  • 用Java将PDF转换成GIF
  • 关于嵌入式编译工具链与游戏移植的学习
  • S32K328打断点调试进入main函数之前的准备工作
  • 如何保证MySQL与Redis数据一致性方案详解
  • 中科米堆全自动三维光学测量航空部件尺寸测量分析
  • 白热化买量竞争下,消除手游如何巧借“创意”破局?
  • OpenLayers 加载投影坐标GeoTIFF影像
  • 微信小程序canvas实现抽奖动画
  • react forwardRef和readux的connect冲突,导致ref.current获取不到值
  • Linux中的阻塞信号与信号原理
  • 主流防火墙策略绕过漏洞的修复方案与加固实践
  • MCAL(7)-AutoSar存储
  • 前端如何通过 Blob 下载 Excel 文件
  • angular 图斑点击,列表选中并滚动到中间位置
  • 网页后端开发(基础5--JDBC VS Mybatis)
  • linux路由
  • 响应式数据框架性能深度分析报告(@type-dom/signals)
  • PromptWizard:强化学习或者多Agent 优化提示词
  • SpringBoot定时监控数据库状态
  • 191. 位1的个数
  • vs code配置go开发环境以及问题解决 could not import cannot find package in GOROOT or GOPATH
  • Linux树莓派项目实战:外网访问、PWM呼吸灯、超声波测距与驱动开发
  • Linux内核中通过perf_event监控内存访问的硬件断点触发流程
  • LINUX 619 NFS rsync
  • Neo4j操作指南:修改节点数据与新增节点属性