sxdo
级别: *
精华主题: * 篇
发帖数量: * 个
工控威望: * 点
下载积分: * 分
在线时间: (小时)
注册时间: *
最后登录: *
查看sxdo的 主题 / 回贴
楼主  发表于: 2010-10-23 14:37
请先看程序

LD       X0
MOV    K5   K4M0
DECO   M0   D100   K3
DECO   M0   M20 K7


  当X0闭合一次,K5(二进制0101)传送到K4M0中,因K4M0是16位位元件组成的字元件,所以M0=1   M1=0    M2=1  M3=0  
那么当执行DECO指令时,因M0是K4M0中的一个位,即M0=1,所以 :D100=2   M20=0(OFF)     M21=1(ON)

  但我的理解是错误的。仿真的结果是:D100=32    M20=0(OFF)     M25=1(ON)

   那么K5传送到K4M0中,是如何对应的??
sjm213
有小知识,无大学问。
级别: 论坛版主

精华主题: 7 篇
发帖数量: 5168 个
工控威望: 7391 点
下载积分: 157104 分
在线时间: 3126(小时)
注册时间: 2007-11-21
最后登录: 2024-06-17
查看sjm213的 主题 / 回贴
1楼  发表于: 2010-10-23 16:05
引用
K5(二进制0101)传送到K4M0中,因K4M0是16位位元件组成的字元件,所以M0=1   M1=0    M2=1  M3=0

这是没错的;
您的判定结果与实际不符错误在于对DECO指令的理解。
DECO   M0   M20 K7这个指令是将M0~M6组合位元件的数值做判断(实际上就是第一步里给过来的K5),然后置位M(20+K5)=M25
DECO   M0   D100   K3本质上与上面没什么不同,只是置位的是D100的b5位,所以D100=25=32。
sxdo
级别: *
精华主题: * 篇
发帖数量: * 个
工控威望: * 点
下载积分: * 分
在线时间: (小时)
注册时间: *
最后登录: *
查看sxdo的 主题 / 回贴
2楼  发表于: 2010-10-24 08:43
谢谢sjm213的解答!

一直搞不明白的,终于解决了。