tzyfl4444
级别: 略有小成
精华主题: 0
发帖数量: 461 个
工控威望: 496 点
下载积分: 1085 分
在线时间: 429(小时)
注册时间: 2016-01-05
最后登录: 2024-10-29
查看tzyfl4444的 主题 / 回贴
楼主  发表于: 2023-11-29 14:58
这个要通过程序做 ,比如第一个位置到了之后再走第二个,比如一共3个位置。这些位置该怎么去写,比如就用一个DDRVA   D200 D202  Y0 Y4 .就是不知道该怎么出处理这个D200和d202的值。谢谢了
gxtmdb82164
级别: 论坛先锋
精华主题: 0
发帖数量: 743 个
工控威望: 1121 点
下载积分: 344 分
在线时间: 585(小时)
注册时间: 2019-09-22
最后登录: 2024-11-06
查看gxtmdb82164的 主题 / 回贴
1楼  发表于: 2023-11-29 16:17
我都用最笨的办法,整个程序中每个轴只有一处脉冲驱动指令(手动不算,手动是单写的),通过管理寄存器的值和启动条件进行位置切换。

最愚蠢的办法就是
ld GoPos1 D200=位置1,D202=速度1
ld GoPos2 D200=位置2,D202=速度2
ld GoPos3 D200=位置3,D202=速度3
.。。。
ld GoPosn D200=位置n,D202=速度n
然后GoPos1~GoPosn是严格互斥的,任意时刻只有一个被置位,位置多了专门用一个D写索引做数值比较也是可以的(还可以用间接寻址,更方便)

任意posn置位后会同步输出 act,类似于 GoPos1 or GoPos2 or GoPos3.。。or GoPosn out Act 然后

ld Act DDRVA   D200 D202  Y0 Y4
同时运动结束触点输出到EndPosn
ld m8029 and GoPos1 set EndPos1
                and GoPos2 set EndPos2
                and GoPos2 set EndPos2
                。。。
                and GoPosn set EndPosn

然后程序里面就超级简单了,要去哪个位置直接置位,比如说去位置1直接set GoPos1,然后等着EndPos1来进入下一步,基本上把伺服当气缸用~