shqpxcy
级别: 略有小成
精华主题: 0
发帖数量: 86 个
工控威望: 231 点
下载积分: 1249 分
在线时间: 61(小时)
注册时间: 2012-05-30
最后登录: 2024-08-13
查看shqpxcy的 主题 / 回贴
楼主  发表于: 2014-01-07 20:26
假设在一段直线距离上我设置了11个点,其中1个原点,依次等距离设置10个点。要求当条件满足时(假设m0.1=1)步进电机从原点先到1#点,假设当m0.2=1时再返回原点,当下一次m0.1=1,步进电机从原点到2#点,当m0.2=1再返回原点。依此类推。
单个点的程序,我知道怎么编,用什么指令把它们集合在一起?或者说有什么方法可以快速的设置?
sjm213
有小知识,无大学问。
级别: 论坛版主

精华主题: 7 篇
发帖数量: 5200 个
工控威望: 7423 点
下载积分: 158839 分
在线时间: 3163(小时)
注册时间: 2007-11-21
最后登录: 2024-12-01
查看sjm213的 主题 / 回贴
1楼  发表于: 2014-01-07 23:43
可以用间接寻址;
LD SM0.0
ENCO MW0, MB3
MOVW +2, MW10
*I MW2, MW10
MOVD &VB100, AC1
ITDMW10, AC0
+D AC0, AC1
MOVW *AC1, VW200
------------------------------
M0.3~M0.7、M2.0~M2.7不要再次使用;
M1.0~M1.7和M0.0~M0.2分别为11个点,分别对应地址是VW100、VW102……VW120,这11个地址储存11个位置数据;
VW200是电机目标地址;
这样每个点ON时它对应的地址数据就到了VW200了。
shqpxcy
级别: 略有小成
精华主题: 0
发帖数量: 86 个
工控威望: 231 点
下载积分: 1249 分
在线时间: 61(小时)
注册时间: 2012-05-30
最后登录: 2024-08-13
查看shqpxcy的 主题 / 回贴
2楼  发表于: 2014-01-08 13:30
貌似有点理解了,我再去翻翻手册,十分感谢。
shqpxcy
级别: 略有小成
精华主题: 0
发帖数量: 86 个
工控威望: 231 点
下载积分: 1249 分
在线时间: 61(小时)
注册时间: 2012-05-30
最后登录: 2024-08-13
查看shqpxcy的 主题 / 回贴
3楼  发表于: 2014-01-08 14:42
没搞明白为什么要 MW2乘以2,再送到MW10
sjm213
有小知识,无大学问。
级别: 论坛版主

精华主题: 7 篇
发帖数量: 5200 个
工控威望: 7423 点
下载积分: 158839 分
在线时间: 3163(小时)
注册时间: 2007-11-21
最后登录: 2024-12-01
查看sjm213的 主题 / 回贴
4楼  发表于: 2014-01-09 21:13
因为地址设定是按照16位长度预设的(-32768~+32767),所以用的是VW***,这样的话直接增1会造成地址重叠;
如果你设定的数很小,只需要255以内的,那么就不需要×2,但是储存地址要变成VB100、VB101……连续的11个地址。
shqpxcy
级别: 略有小成
精华主题: 0
发帖数量: 86 个
工控威望: 231 点
下载积分: 1249 分
在线时间: 61(小时)
注册时间: 2012-05-30
最后登录: 2024-08-13
查看shqpxcy的 主题 / 回贴
5楼  发表于: 2014-01-11 20:43
明白了,谢谢。
lyntechme
虛心做人,踏实做事
级别: 家园常客
精华主题: 0
发帖数量: 564 个
工控威望: 709 点
下载积分: 12711 分
在线时间: 256(小时)
注册时间: 2012-03-31
最后登录: 2023-06-04
查看lyntechme的 主题 / 回贴
6楼  发表于: 2014-02-08 21:21