登录
首页 PLC论坛 PLC论坛
回帖 发帖
正文

主题:仿真的问题

点击:1100 回复:11

smov D10 k4 K2 D20 k3 这条指令,没执行前,设定D10为H1234,D20为H5678,怎么一执行,就出现错误,都是BCD码,又不是非法BCD码,怎么也出错,是不是仿真有问题。先谢谢了。
附件 IMG_20140516_002840-picsay.jpg
最后修改:2014/5/16 0:48:33
14-05-09 23:37
前者已有同类主题,问题还没解决吗?
http://m.gkong.com/bbs/384454.ashx
16位寄存器(二进制),BCD码能表示的最大十进制数是K9999,K9999对应的十六进制数是H270F;
H5678,大于H270F。
在上一帖中,已隐含提示,需先理解BCD码。
最后修改:2014/5/10 1:54:28
14-05-10 01:34
你好,谢谢回复,你的意思就是H5678这个十六进制数是非法BCD,所以传送会出错。
14-05-10 10:45
我查了相关资料,BCD码是用4位二进制码表示的0到9的十进制数,那K9999十进制数用BCD码表示就是1001100110011001,等于H9999.
14-05-10 11:18
我没有“非法BCD”概念。
“K9999十进制数用BCD码表示就是1001100110011001”,而1001100110011001是BCD码,不是二进制数;
因此,这时1001100110011001对应的十进制数不是K39321(H9999),而是K9999(H270F);
或者说,寄存器中存放的BCD码,直接显示为十六进制数,是无效的。
14-05-10 11:38
另外,前一帖中,D20应当是目的寄存器,不需要预先赋值。
还有,BCD码直接显示为十进制数,也应当是不符合的。
补记:
还是上一贴,H1234,对应的十进制数是K4660,D20不赋值时,运行程序,可得结果K0460(此时是十进制数);
K0460用十六进制数表示是H01CC。
最后修改:2014/5/10 12:10:58
14-05-10 11:47
你好,非常感谢,我没有用Plc试,是用仿真试的,真想用PLC试下,看这个结果是否和仿真的一样。
14-05-10 14:28
今用plc试了下,前面H1234和H5678执行后结果不变,后面试H1234,D20不赋值,得十进制K460,这个结果怎么不符合书上讲的,应该得结果H0120才对。
14-05-15 12:03
你是看的书还是编程手册(或操作手册)?
我也没用过这条指令,但查了台达PLC的操作手册,所述运算结果符合其说明,见5楼的“补记”——
我的理解是,BCD码表示的是十进制数,所以转移的位也是按十进制数位,而不是十六进制数。
14-05-15 18:56
谢谢,你说的是对的,我是看了书上的解释,有图在一楼。查看原图清楚些,怪不得,我说用PLC试也不对了,书上这条驱动了M8|68才成立,要不完全不对。
14-05-16 00:54

上一页下一页

工控新闻

更多新闻资讯