lms870601
级别: 探索解密
精华主题: 0
发帖数量: 38 个
工控威望: 112 点
下载积分: 843 分
在线时间: 17(小时)
注册时间: 2011-04-04
最后登录: 2023-02-14
查看lms870601的 主题 / 回贴
楼主  发表于: 2012-01-06 11:18
如图所示程序


通过数据交换指令交换之后的D10应该是3112,为什么会是-12540呢?问题出在哪里?还有就是M8160执行XCH指令时,标志位信号M160应该是ON,可实际上M8160一直都是OFF
cvlsam
富士低压,POD(觸摸屏),PLC专卖
级别: VIP会员

精华主题: 3 篇
发帖数量: 6738 个
工控威望: 37093 点
下载积分: 8350 分
在线时间: 9383(小时)
注册时间: 2006-09-13
最后登录: 2024-04-28
查看cvlsam的 主题 / 回贴
1楼  发表于: 2012-01-06 11:44
您错误的理解了K1231在寄存器中的存储方式了。

K1231在寄存器中的存储方式为  0000 0100 1100 1111,因此通过交换高低位 ,形成的结果为 1100 1111 0000 0100
,而结果的二进制转换为10进制则为-12540.

如果要得到3112值,您需要为D10写入16进制,即H1231.
楼主留言:
有一个疑问,在4楼,麻烦解释一下,谢谢
cvlsam
富士低压,POD(觸摸屏),PLC专卖
级别: VIP会员

精华主题: 3 篇
发帖数量: 6738 个
工控威望: 37093 点
下载积分: 8350 分
在线时间: 9383(小时)
注册时间: 2006-09-13
最后登录: 2024-04-28
查看cvlsam的 主题 / 回贴
2楼  发表于: 2012-01-06 12:07
至于标志位M8160的问题,实际上M8160在第一行被置位了,M8000作为常闭触点,编程者使用了一个小技巧,巧妙的利用了双线圈,使得M8160产生了一个脉冲,其目的只是为了当前的XCH指令。

即使你不使用ANI M8000那行,也不会影响程序的正确性。
楼主留言:
我仔细看了时序图,并没有发现M8160有ON过,麻烦解释一下,谢谢
本帖最近评分记录:
  • 下载积分:+5(铭杰工控) 热心助人
    铭杰工控
    温岭市正凯自动化设备有限公司
    级别: 网络英雄

    精华主题: 0
    发帖数量: 1977 个
    工控威望: 6488 点
    下载积分: 966 分
    在线时间: 1078(小时)
    注册时间: 2009-01-13
    最后登录: 2024-04-15
    查看铭杰工控的 主题 / 回贴
    3楼  发表于: 2012-01-06 12:51
    路过进来学习一下。有收获谢谢C兄!
    温岭市正凯自动化设备有限公司  15057679726
    全自动换箱机 催化剂再生、处置智能装备 MES软件 WCS软件 注塑工厂整体智能化解决方案    重载桁架机械手
    lms870601
    级别: 探索解密
    精华主题: 0
    发帖数量: 38 个
    工控威望: 112 点
    下载积分: 843 分
    在线时间: 17(小时)
    注册时间: 2011-04-04
    最后登录: 2023-02-14
    查看lms870601的 主题 / 回贴
    4楼  发表于: 2012-01-06 13:16
    看了另一个程序,迷惑了


    在这个程序中存入的数都是10进制数,可是结果如图中所示,D中的数没有转换成二进制就直接传送了。这两个指令交换或者传送内部的区别在哪
    cvlsam
    富士低压,POD(觸摸屏),PLC专卖
    级别: VIP会员

    精华主题: 3 篇
    发帖数量: 6738 个
    工控威望: 37093 点
    下载积分: 8350 分
    在线时间: 9383(小时)
    注册时间: 2006-09-13
    最后登录: 2024-04-28
    查看cvlsam的 主题 / 回贴
    5楼  发表于: 2012-01-06 13:41
    你需要如图一样添加一点程序,然后你会发现D0被累加,从而证明M8160被ON过。

    否则,如此短暂的数条指令间隔,你的软件是捕捉不到如此短暂的脉冲的。

    cvlsam
    富士低压,POD(觸摸屏),PLC专卖
    级别: VIP会员

    精华主题: 3 篇
    发帖数量: 6738 个
    工控威望: 37093 点
    下载积分: 8350 分
    在线时间: 9383(小时)
    注册时间: 2006-09-13
    最后登录: 2024-04-28
    查看cvlsam的 主题 / 回贴
    6楼  发表于: 2012-01-06 13:56
    引用
    引用第4楼lms870601于2012-01-06 13:16发表的  :
    看了另一个程序,迷惑了
    [attachment=77281]
    在这个程序中存入的数都是10进制数,可是结果如图中所示,D中的数没有转换成二进制就直接传送了。这两个指令交换或者传送内部的区别在哪


    SMOV指令分为3步执行:
    1、将源数据中,这里是D5中的数据转换为BCD码,K1234转换后就是1234,什么叫BCD码你应该知道,说白了,就是16进制数表示10进制。

    所以这一步就是K1234转换为H1234.

    2、进行移动,D5中M1的位置,这里就是K4,也就是H1234中的1,移动位数M2,这里是K2,也就是说移动H1234中的1和2,到目标,这里是D10的N位开始,这里是K3,也就是说,将1,2移动到D10的第三位 ,请注意,这里都是BCD码的操作,D10的数据是H5678,其第3位就是6,将1,2移动过来,就变成了H5128

    3、D10数据被转换为二进制,因此,D10中的H5128变成了K5128.

    与前面不同的是,SMOV线缆可以控制位数,XCH不可以。如果仅从高低字节的交换来看:
    SMOV指令相当于:
    BCD指令+XCH指令+BIN指令。

    Good Luck~
    楼主留言:
    很详细,非常感谢,这下全明白了
    铭杰工控
    温岭市正凯自动化设备有限公司
    级别: 网络英雄

    精华主题: 0
    发帖数量: 1977 个
    工控威望: 6488 点
    下载积分: 966 分
    在线时间: 1078(小时)
    注册时间: 2009-01-13
    最后登录: 2024-04-15
    查看铭杰工控的 主题 / 回贴
    7楼  发表于: 2012-01-06 14:14
    千载难逢的学习机会,又受教了。
    温岭市正凯自动化设备有限公司  15057679726
    全自动换箱机 催化剂再生、处置智能装备 MES软件 WCS软件 注塑工厂整体智能化解决方案    重载桁架机械手
    陈大围
    工控新人,还请多多指教
    级别: 论坛先锋

    精华主题: 0
    发帖数量: 876 个
    工控威望: 1158 点
    下载积分: 8908 分
    在线时间: 1811(小时)
    注册时间: 2011-04-17
    最后登录: 2024-04-24
    查看陈大围的 主题 / 回贴
    8楼  发表于: 2012-01-08 14:34
    cvlsam兄就是牛人啊,学习之
    专心学工控技术,请各位帮忙指教