当前位置: 首页 > 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通信等。

相关文章:

  • 基于keepalived、vip实现高可用nginx (centos)
  • 基于Python的机动车辆推荐及预测分析系统
  • 算法打卡22天
  • 探索大语言模型(LLM):Lora vs. QLora:参数高效微调的双生花,你该选谁?
  • threejs 实现720°全景图,;两种方式:环境贴图、CSS3DRenderer渲染
  • 实时输出subprocess.Popen运行程序的日志
  • 【mongoose8.x】mongoose8.x入门教程(一):windows环境安装篇
  • XML重复查询一条Sql语句??怎么解决
  • Outlook邮箱开通发信服务及OAuth2验证开通
  • Vim:从入门到进阶的高效文本编辑器之旅
  • 利用DevEco Studio对RK3588的HiHopesOS-4.1.110(OpenHarmony)进行Qt程序编写
  • Web 应用防火墙(WAF)工作原理、防护策略与部署模式深度剖析
  • web布局04
  • 输入url之后发生了什么
  • 226. 翻转二叉树
  • Clickhouse源码分析-Replicated Database创建流程
  • Spring Boot + MyBatis + Vue:打造高效全栈应用的黄金组合
  • NodeJS 对接 Outlook 发信服务器实现发信功能
  • 专题:2025游戏科技与市场趋势报告|附130+份报告PDF汇总下载
  • KungfuBot——基于物理约束的人形全身控制PBHC,用于学习高动态技能打拳或跳舞(即RL下的动作模仿和运控)
  • wordpress cosy主题2.05/搜索引擎优化简称
  • 昆明做网站优化/新闻发稿
  • 网站首页是什么意思/个人seo怎么赚钱
  • 苹果网站导航条/电话营销技巧和营销方法
  • wordpress充值卡/开封网站优化公司
  • 夜夜做新郎网站/简述seo的基本步骤