N

技术支持

EWS CENTER

您的当前位置:首页 > 技术支持  > 常见问题

ZMC控制器使用常见问题(1)

2015-06-18

1.调用运动指令,但是轴没有动

可能1

       有限位或告警输入,或限位告警的电平配置错误。

       特殊信号缺省是常闭的,国内部分产品是常开的。需要设置INVERT_IN把对应的口翻转过来。

 

可能2

       轴的atype配置错误.

 

 

2.提示不认识的label

可能1

       变量没有在使用前声明。

 

可能2

       label有字符敲错。

 

 

3.使用 MPOS= 赋值修改坐标后坐标有误差

DPOS是虚拟位置,MPOS是反馈位置,对虚拟轴,MPOS = DPOS

修改MPOS时确认运动已经完全停止,否则会有不确认的因素。

为保险起见,可以使用DPOS=赋值来修改坐标,此时只用虚拟轴停止即可。

 

4.RUN启动多任务出错

RUN STOP 后面接BAS文件名。

RUNTASK 后面接SUB过程名

 

5. ticks计算出来的值有问题

ticks是减减计数的。

 

6.连续插补如何实现

设置参数  merge=on

如果需要拐角减速和小圆限速,则要使用更多的参数。

merge = on '启动连续插补

CORNER_MODE = 2'启动拐角减速

DECEL_ANGLE = 15 * (PI/180)'开始减速的角度 15

STOP_ANGLE = 45 * (PI/180)'降到最低速度的角度45

FULL_SP_RADIUS = 100    '小圆

 

 

如何知道连续插补当前运动到那一段了?

使用 MOVE_MARK  MOVE_CURMARK 来判断。

 

如何自己规划每条线段的限速?

采用 MOVESP等指令, 同时设置好FORCE_SPEED, ENDMOVE_SPEED等参数。

 

7.点位运动如何实现

没有专门的点位运动指令,直接使用MOVE指令来实现,一次只操作一个轴。

MOVE AXIS(0)

MOVE AXIS(1)

 

8.vmove多个轴是否可以

不可以, 必须分多条命令。

VMOVE(1)  axis(0)

VMOVE(1)  axis(1)

 

9.插补运动的参数如何设置

BASE的第一个轴为主轴,主轴的参数就是插补运动的参数。

 

BASE(1,2)

move(1000,122)     '1的参数为插补参数

move(1000,122)  axis(0)     '0的参数为插补参数

 

10.中断函数为什么没有用?

中断开关缺省是关闭的,可以查看中断开关系统参数是否打开。

 

11.能否使用输入口跳变作为中断函数?

不可以,输入口的个数理论上可上万,无法实现这样多的中断函数。

 

12.如何从PC访问控制器定义的变量?

最好把要访问的变量,数组等定义为全局变量。

通过execute函数来修改或读取。

 

13. 是否所有的指令都可以从PC直接发送

WAIT等部分指令限制从PC发送,因为会造成PC命令通道阻赛。

也不能通过PC命令来定义变量数组。

 

14.如何立刻停止运动?

不存在绝对的立刻停止, 通过设置fastdel参数为很大值, 可以使得限位或rapidstop时可以快速停止。

停止之后再次运动,最好加上wait idle的判断

rapidstop无视base,停止所有的轴

 

15.手轮如何实现?

采用connect指令来实现, 参见手轮例程。

 

16.forwardreverse不能立刻修改运动方向?

forwardreverse每次调用都会加入缓冲,因此最好cancel之后再调用新的运动指令。

 

另外一种方式是使用vmovevmove会自动判断以前的指令,如果也是vmove则直接修改方向,因此要实现类似jog的功能,最好用vmove来实现。

 

17.如何通过modbus直接访问一些系统状态?

通过特殊的modbus寄存器可以访问IO,位置等。

 10000开始表示输入, 20000开始表示输出。

 

字寄存器每个轴占两个字,float格式

#define  MODBUS_REGNUM_DPOS_X   10000

#define  MODBUS_REGNUM_MPOS_X   11000

#define  MODBUS_REGNUM_VP_SPEED_X   12000

 

18.cancel后运动还在执行

cancel缺省是取消当前运动,缓冲的运动不取消,带参数2cancel(2)后所有的都取消。

 

19.能否使得打印命令受控,这样不需要打印的时候可以不用删除代码。

使用TRACE  WARN  ERROR 来打印,通过对 ERRSWITCH 赋值不同的值可以控制对应的指令是否输出。

 

20.是否支持不同脉冲当量的轴做圆弧插补?

支持

 

21.设置了forcespeed,但是实际运动的速度没有达到forcespeed

speed参数也会对插补运动产生限制,而且是动态的,把speed修改即可。

 

22.需要掉电能保存数据,怎么办?

VR的数据是掉电保存的,如果其他数据要保存,可以写入flash,上电时再读取出来。

 

23.定义了变量,但是另外一个文件中访问不到?

变量分为全局,文件,局部三种类型,缺省的都是文件变量,只能在当前文件中访问,请修改为global定义,则可以所有的地方访问。

 

24.定义了sub,但是另外一个文件中无法调用?

sub分为全局和文件两种类型,缺省的是文件类型,只能在当前文件中访问,请修改为global定义,则可以所有的地方访问。

 

25.程序运行中出错,如何查错?

不要重启,用zdevelop工具连接上去(选择附加到当前程序的方式),即可查看程序运行内部状态和出错位置。

通过命令栏输入: ?*task 也可以参考出错原因和位置。

 

 

26.内部的Warn输出如何关闭?

设置系统参数 ERRSWITCH <2即可关闭WARN输出。

 

27.Print输出的排列不整齐,如何处理?

可以采用TOSTR格式化输出。

 

28.Offpos修改生效的等待时间有多长?

非常短,基本上是立即生效的。

 

29.error:2032:Invalid char is met. 的原因是什么?

一般是出现了中文字符,检查引号等符号是否是中文的。

 

 

30.如果想自动支持多个型号的控制器,应该在程序中怎么处理?

通过CONTROL 参数可以获取控制器基本型号。

 

通过FLASH_SECTES  FLASH_SECTSIZE可以获取FLASH的规格。

 

分享按钮