S7-200smart 寄存器梳理(应对寄存器无法手动写入on/off的问题)

本文讲述了新手在西门子PLC编程时遇到的M2.0手动置位问题,原因在于寄存器地址冲突。作者详细解释了VB、VW、VD和M、MB、MW、MD等不同层级寄存器的从属关系,强调了在编程时避免地址冲突的重要性。
摘要由CSDN通过智能技术生成

前景提要

新手在画梯形图的时候,经常会遇到的这样的困扰:在调试的时候,无法手动将M2.0置位。(如下图所示)

查看上文我们会发现M2.0在第1行是作为输出,被M1.0联动了。所以导致M2.0无法手动置位。

接下来我们看另外一个案例:发现M1.0没有被当作输出线圈过,为什么也是无法被手动置位?

原来上面一段程序使用了MB1地址,与下面的M1.0冲突导致。

这就说明:这些寄存器的地址表示方法不一样,但是其中有从属包含关系。

接下来我们来梳理一下寄存器上的一些从属关系

寄存器表达方式及从属关系

VB-VW-VD

VD100
VW100VW102
VB100VB101VB102VB103

西门子plc中,VB是最基本的字节,一个VB就是1个字节。2个相邻的VB组成一个VW,2个相邻的VW组成一个VD(4个相邻的VB组成一个VD)

知道了这个脉络之后,就不难发现:如果VD100和VD101同时出现在你的程序里面就会出现寄存器地址使用冲突。

M-MB-MW-MD

MD1MW1MB1M1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 
MB2M2.0 2.1 2.2 2.3 2.4 2.5 2.6 2.7 
MW2MB3M3.0 3.1 3.2 3.3 3.4 3.5 3.6 3.7 
MB4M4.0 4.1 4.2 4.3 4.4 4.5 4.6 4.7 

西门子plc中,M是最基本的位,1组M组成MB,2个相邻的MB组成一个MW,2个相邻的MW组成1个MD。以上表为例子:

MB1=M1.0~M1.7;

MW1=MB1+MB2

MD1=MW1+MW2

知道了这个脉络之后,就不难发现:如果M1.0和MB1同时出现在你的程序里面就会出现M1.0被MB1牵制(例如文章一开始时候的案例)。

通过寄存器名字关系的梳理,后续在编程过程中应该尽量避免地址符号使用冲突的情况

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

XJB-Lanxi

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值