高下劳动
级别: 探索解密
精华主题: 0
发帖数量: 42 个
工控威望: 170 点
下载积分: 550 分
在线时间: 94(小时)
注册时间: 2011-06-23
最后登录: 2024-01-04
查看高下劳动的 主题 / 回贴
楼主  发表于: 2014-12-11 23:31
这是我把修改的程序部分如图所示:原程序中d14和d16是 分开的,分别控制两段行程。后来我把d14和d16做了一个加法运算放d58.出现了一个问题。运行一一天 就会偶而出现那么一两次y0脉冲数据还没有 达到伺服就莫名停止了工作。y0前面的 点都是接通的。 想不 明白造成程序部 不 稳定的 因素在 哪里
hsqknx
级别: 工控侠客
精华主题: 0
发帖数量: 430 个
工控威望: 2445 点
下载积分: 503 分
在线时间: 731(小时)
注册时间: 2011-06-13
最后登录: 2024-12-21
查看hsqknx的 主题 / 回贴
1楼  发表于: 2014-12-11 23:45
仔细看看是不是同时触发了两条脉冲指令
看你的程序完全有可能这样
lijinniu
级别: 工控侠客
精华主题: 0
发帖数量: 623 个
工控威望: 3669 点
下载积分: 29981 分
在线时间: 1407(小时)
注册时间: 2007-08-17
最后登录: 2024-06-11
查看lijinniu的 主题 / 回贴
2楼  发表于: 2014-12-12 08:14
问题出现在M20与M21最前面的比较命令上了。在这里找一找原因。
gufan8099663
级别: 略有小成
精华主题: 0
发帖数量: 64 个
工控威望: 230 点
下载积分: 38891 分
在线时间: 704(小时)
注册时间: 2013-06-23
最后登录: 2024-12-13
查看gufan8099663的 主题 / 回贴
3楼  发表于: 2014-12-12 08:18
DMUL是双字节乘法通道互相干涉,程序会把D178,D179的值乘以K200放在D14,D15,D16,D17里面,所以D16,D17被双重占用,如果数值小没有发生溢出就没问题,数值一大通道就打架了
dgnx2014
级别: 探索解密
精华主题: 0
发帖数量: 67 个
工控威望: 149 点
下载积分: 689 分
在线时间: 36(小时)
注册时间: 2014-12-03
最后登录: 2017-07-16
查看dgnx2014的 主题 / 回贴
4楼  发表于: 2014-12-12 09:37
都是高手啊
二手工控电器
且行且珍惜
级别: 工控侠客
精华主题: 0
发帖数量: 2829 个
工控威望: 4457 点
下载积分: 215062 分
在线时间: 3184(小时)
注册时间: 2008-02-22
最后登录: 2024-12-23
查看二手工控电器的 主题 / 回贴
5楼  发表于: 2014-12-12 09:40
这应该是犯了最低级的数据寄存器使用间隔错误!
欢迎捧场光临工控自动化小店!供应二手拆机PLC 、伺服、步进、变频器、3相固态调压调功模块、接线端子等等
http://shop115113109.taobao.com/?spm=a1z10.5-c.0.0.L6cazp&v=1
追忆似水年华
级别: 探索解密
精华主题: 0
发帖数量: 73 个
工控威望: 196 点
下载积分: 4413 分
在线时间: 92(小时)
注册时间: 2013-05-14
最后登录: 2018-06-16
查看追忆似水年华的 主题 / 回贴
6楼  发表于: 2014-12-12 11:02
恩,3楼讲的很好
理论初学者
有需要才有进步,俺不管啥都会满足你!
级别: 家园常客
精华主题: 0
发帖数量: 292 个
工控威望: 767 点
下载积分: 7434 分
在线时间: 221(小时)
注册时间: 2013-11-18
最后登录: 2016-05-09
查看理论初学者的 主题 / 回贴
7楼  发表于: 2014-12-12 13:41
引用
引用第3楼gufan8099663于2014-12-12 08:18发表的  :
DMUL是双字节乘法通道互相干涉,程序会把D178,D179的值乘以K200放在D14,D15,D16,D17里面,所以D16,D17被双重占用,如果数值小没有发生溢出就没问题,数值一大通道就打架了

那原来程序也是这样使用为什么不打架呢?只是在下面做了个加运算就打架有点说不过去吧。
高下劳动
级别: 探索解密
精华主题: 0
发帖数量: 42 个
工控威望: 170 点
下载积分: 550 分
在线时间: 94(小时)
注册时间: 2011-06-23
最后登录: 2024-01-04
查看高下劳动的 主题 / 回贴
8楼  发表于: 2014-12-12 16:31
引用
引用第3楼gufan8099663于2014-12-12 08:18发表的  :
DMUL是双字节乘法通道互相干涉,程序会把D178,D179的值乘以K200放在D14,D15,D16,D17里面,所以D16,D17被双重占用,如果数值小没有发生溢出就没问题,数值一大通道就打架了

果然是 一语惊醒梦中。  原来是 一直以为32位只带两个寄存器,没往这里 想没仔细看手册吃了 亏。     不过原作也是 这样程序用了好久都没 问题 ,因为用的32位 数值也排除溢出的 可能。我 只用dadd把d14和d16相加怎么就变得 不 稳定呢 ? 再次请教
高下劳动
级别: 探索解密
精华主题: 0
发帖数量: 42 个
工控威望: 170 点
下载积分: 550 分
在线时间: 94(小时)
注册时间: 2011-06-23
最后登录: 2024-01-04
查看高下劳动的 主题 / 回贴
9楼  发表于: 2014-12-12 16:33
引用
引用第7楼理论初学者于2014-12-12 13:41发表的:

那原来程序也是这样使用为什么不打架呢?只是在下面做了个加运算就打架有点说不过去吧。

同问。我现在 考虑是是 不 是 因为使用重叠而使程序有 时候扫描出错 。   这次设备送的比较远 没 办法做实验了哎。