jiangleidhr
级别: *
精华主题: * 篇
发帖数量: * 个
工控威望: * 点
下载积分: * 分
在线时间: (小时)
注册时间: *
最后登录: *
查看jiangleidhr的 主题 / 回贴
楼主  发表于: 2016-03-30 11:27
各位前辈大家好
小弟大四毕业生初次接触PLC,要设计一个4轴机器人控制系统,就是控制四个步进电机(配套驱动器)。使用CP1H
初步设计目标是实现一个类似示教的功能。就是手动控制运动到第一点,记录数据,再运动到第二点,记录数据。然后按循环键开始在两点间循环运动。

我的思路是用高速计数器记录脉冲数实现位置记录,脉冲输出控制步进电机。高速计数器使用线性,加减模式。脉冲输出用PULS+ACC
上电后运动到第一点高速计数器清零。
第一点运动到第二点,记录发给各个电机脉冲数,存入存储器D100—D130(四个电机分别的脉冲数)
循环程序中的脉冲输出指令的脉冲个数调用D100—D130中的数据。
循环程序中先通过比较指令比较存储器数据和0的关系,确定正反转。
PULS调用存储器数据为脉冲数。
脉冲输出后存储器数据反号。
进入下一次循环。

目前有以下几点问题
1.脉冲控制数据为十六进制,双字;高数计数器也是十六进制双字吗?
2.高速计数器0当前值存于A271(存高四位)和A270(存低四位),若要传送到D100中,使用MOV A271 D100 加MOV A270 D101 还是使用长传送MOVL,具体怎么用MOVL?
3.数据反号如何实现?我目前用的是用0减数据并存储到该寄存器中。
4.数据运算。没有十六进制的运算指令,是否需要转为十进制运算,结果再转为十六进制。
5.数据运算中带符号不带符号和有CY无CY是什么含义?
6.高速计数器的数据中如何表示的正负。

新人初次接触PLC,还请各位前辈不吝赐教。
liuxiaba
级别: 探索解密
精华主题: 0
发帖数量: 57 个
工控威望: 140 点
下载积分: 10244 分
在线时间: 55(小时)
注册时间: 2016-03-30
最后登录: 2018-05-22
查看liuxiaba的 主题 / 回贴
1楼  发表于: 2016-03-30 17:03
1、字节没好大要求,主要看你的速度需求,有速度需求就要求字节问题2、一般使用MOV指令,详解见软件内帮助,4、不需要转直接负值。
卓发智能
相互学习,共同进步。
级别: 工控侠客
精华主题: 0
发帖数量: 2441 个
工控威望: 3029 点
下载积分: 10615 分
在线时间: 650(小时)
注册时间: 2008-08-03
最后登录: 2024-11-26
查看卓发智能的 主题 / 回贴
2楼  发表于: 2016-03-31 10:02
欧姆龙PLC控制步进或伺服不需要正负脉冲,只需要更改脉冲指令的控制数据就可以了,不用0减什么。三菱是需要正负脉冲数据来确定电机正反转的。
相信自我!
卓发智能
相互学习,共同进步。
级别: 工控侠客
精华主题: 0
发帖数量: 2441 个
工控威望: 3029 点
下载积分: 10615 分
在线时间: 650(小时)
注册时间: 2008-08-03
最后登录: 2024-11-26
查看卓发智能的 主题 / 回贴
3楼  发表于: 2016-03-31 10:05
和带符号的比较指令进行比较电机运行脉冲来知道电机运行方向。
相信自我!
xyzenter
活在当下,顺其自然
级别: 略有小成
精华主题: 0
发帖数量: 135 个
工控威望: 266 点
下载积分: 2080 分
在线时间: 108(小时)
注册时间: 2014-04-09
最后登录: 2021-04-13
查看xyzenter的 主题 / 回贴
4楼  发表于: 2016-12-06 09:00
1.楼主所说的双字传送,在传送指令后面带个L的指令就是,双字数据同理,比如MOVL,+L,-L,*L,=L等等,详情请看编程手册;
2.欧姆龙里面的十六进制数据负数不需要0-什么的,直接按负16进制数格式写就行,就是高位是#F---什么的;在运动控制中,不需要另外转换,直接使用十六进制即可;

3.如果楼主的脉冲输出定义了原点(也可以搜索完原点后自己用@INI #0000 #0002 #0000自己定义原点),推荐用PRV指令,如PRV #0000 D0将脉冲0的当前位置(原点为0)的脉冲量存到D0,D1中,其它轴同理。

4.MOVL  A276  D0将A276,A277中的内容分别放到D0,D1中。

其实多花点时间看操作手册就行,里面都有的。