高下劳动
级别: 探索解密
精华主题: 0
发帖数量: 42 个
工控威望: 170 点
下载积分: 550 分
在线时间: 94(小时)
注册时间: 2011-06-23
最后登录: 2024-01-04
查看高下劳动的 主题 / 回贴
楼主  发表于: 2014-12-11 23:31
这是我把修改的程序部分如图所示:原程序中d14和d16是 分开的,分别控制两段行程。后来我把d14和d16做了一个加法运算放d58.出现了一个问题。运行一一天 就会偶而出现那么一两次y0脉冲数据还没有 达到伺服就莫名停止了工作。y0前面的 点都是接通的。 想不 明白造成程序部 不 稳定的 因素在 哪里
高下劳动
级别: 探索解密
精华主题: 0
发帖数量: 42 个
工控威望: 170 点
下载积分: 550 分
在线时间: 94(小时)
注册时间: 2011-06-23
最后登录: 2024-01-04
查看高下劳动的 主题 / 回贴
1楼  发表于: 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
查看高下劳动的 主题 / 回贴
2楼  发表于: 2014-12-12 16:33
引用
引用第7楼理论初学者于2014-12-12 13:41发表的:

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

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