广告合作
  • 今日头条

    今日头条

  • 百度一下

    百度一下,你就知道

  • 新浪网

    新浪网 - 提供新闻线索,重大新闻爆料

  • 搜狐

    搜狐

  • 豆瓣

    豆瓣

  • 百度贴吧

    百度贴吧——全球领先的中文社区

  • 首页 尚未审核订阅工具 订阅

    如何进行运动控制器输入/输出IO的应用?

    来源:网络收集  点击:  时间:2024-04-22
    【导读】:
    1、材料准备

    1)电脑1台,安装ZDevelop3.01以上版本软件;

    2)ZMC306X控制器1个;

    3)24V直流电源1个;

    4)总线驱动器+电机(或步进驱动器+电机)若干;

    5)控制器接线端子若干;

    6)网线若干;

    7)连接线若干;

    另:IO设备扩展模板、触摸屏等根据需求选用。

    2、控制器连接配置参考

    ZMC306X连接配置

    3、ZMC306X控制器接口

    控制器基础硬件信息可查看硬件手册或使用编程软件连接控制器,在线命令栏输入?*max打印查看。

    基本轴数:6,可实际控制6个脉冲电机轴。

    最多扩展轴数:12,实轴+编码器轴+虚轴合计轴数为12。

    基本轴类型:差分脉冲输出,所有轴都带ABZ差分编码器反馈输入。

    内部IO数:24进12出(12点的输出都带过流保护,支持300mA电流),另外每轴端子内有1进1出(轴内1输入可以用于报警输入,1输出可以用做使能)。

    PWM数:2(输出频率1M,PWM0、PWM1占用OP0、OP1)。

    锁存通道:2(占用IN0,IN1两个端子,锁存指令REGIST)。

    内部ADDA数:2路AD,AIN(0)-AIN(1);2路DA,AOUT(0)-AOUT(1)。

    电源输入:24V直流输入(功耗10W内,不用风扇散热)。

    通讯接口:RS232、RS485、RS422、以太网、U盘、CAN。RS232为port0,RS485为port1,RS422为port2。

    4、ZMC306X硬件信息查看

    在线命令栏输入?*max打印结果:

    max_axis:12   所有轴的最大轴数

    max_motor:6   可控的最大电机轴数

    max_movebuff:128   每个轴或者轴组的最大运动缓冲

    max_in:30,528   控制器自带IN输入个数,最多支持IN输入个数

    max_out:18,528   控制器自带OUT输出个数,最多支持OUT输出个数

    max_ain:2,128   控制器自带模拟量输入个数,最多支持模拟量输入个数

    max_aout:2,64   控制器自带模拟量输出个数,最多支持模拟量输出个数

    max_pwm:2   PWM输出个数

    max_slot:0   总线个数

    max_comport:3   串口个数

    max_ethport:3   与PC、API函数的网口通讯连接个数

    max_ethcustom:2   自定义网口通讯的连接个数

    max_ethiport:1   正运动控制器互联互通的网口通讯连接

    max_flashnum:1000    FLASH块数

    max_flashsize:20480   每个FLASH空间大小

    max_nand:265551872   NandFlash存储总共的数量空间

    max_nandremain:267911168   NandFlash存储剩余可用的数量空间

    max_pswitch:16   软件位置比较输出的最多个数

    max_file:30   系统最多支持的文件数

    max_3file:1   系统最多支持的三次文件数

    max_task:12   任务数max_timer:128   定时器个数

    max_loopnest:8   内部循环或者选择的次数

    max_callstack:7   子程序调用的堆栈层数

    max_local of one sub:16   SUB的局部变量数

    max_flashnum:1000    FLASH块数

    max_flashsize:20480   每个FLASH空间大小

    max_nand:265551872   NandFlash存储总共的数量空间

    max_nandremain:267911168   NandFlash存储剩余可用的数量空间

    max_pswitch:16   软件位置比较输出的最多个数

    max_file:30   系统最多支持的文件数

    max_3file:1   系统最多支持的三次文件数

    max_task:12   任务数

    max_timer:128   定时器个数

    max_loopnest:8   内部循环或者选择的次数

    max_callstack:7   子程序调用的堆栈层数

    max_local of one sub:16   SUB的局部变量数

    max_vr:1024   VR寄存器空间个数

    max_table:300000   TABLE数组空间个数

    max_modbusbit:4096   MODBUS_BIT位寄存器空间大小

    max_modbusreg:4096   MODBUS_REG字寄存器空间大小

    max_var:4096   最多支持变量个数(含全局变量与文件变量)

    max_array:1024   最多支持数组个数(含全局数组与文件数组)

    max_arrayspace:640000   所有数组总共的空间大小

    max_sub:1500   最多支持SUB子程序的个数

    max_edgescan:1024   最多可支持的上升沿/下降沿扫描个数

    max_lablelength:17    数组与变量等自定义字符的最大长度

    max_hmi:1,x:1024 y:600   支持1个远端HMI,最大尺寸为1024*600

    function support:Coder Cam MultiMove Circ Merge Frame   支持的运动控制功能

    5、ZMC306X控制器状态

    使用ZDevelop软件连接控制器,菜单栏-控制器-控制器状态,查看控制器的基本信息。

    VirtualAxises:支持最大虚拟轴数

    RealAxises:支持最大电机轴数

    Taskes:最大任务数

    Files/3Files:最大文件/三次文件数

    Modbus0x Bits:Modbus位寄存器用户可用空间大小

    Modbus4x Regs:Modbus字寄存器用户可用空间大小

    VR Regs:VR寄存器用户可用空间大小

    TABLE Regs:TABLE数组用户可用空间大小

    RomSize:Rom容量

    FlashSize:Flash容量

    SoftType:软件型号

    SoftVersion:系统软件版本+固件版本

    IpAddress:控制器IP地址

    HardVersion:硬件版本

    ControllerID:控制器唯一ID

    Axis features list:轴类型列表使用

    ZDevelop软件连接控制器,菜单栏-控制器-控制器状态 。

    ZCAN节点:查看控制器本地信息与CAN总线上连接的的扩展模块信息。

    通讯配置:查看CAN信息与串口通道RS232/RS485/RS422信息。

    包含EtherCAT接口的控制器可以在控制器状态里查看槽位节点信息,显示总线槽位上连接的所有设备信息。

    6、ZMC306X数字量输入口

    通用数字输入口可接NPN型。光耦和滤波器的作用是防止干扰信号通过信号线和电源线进入控制器。

    输入口特殊功能:IN0-1口同时具有锁存输入A与锁存输入B的功能,锁存高速输入口允许的输入信号硬件滞后时间为1us。剩余的为普通输入口,允许输入信号的硬件滞后时间为50us左右,可设置滤波器参数增大滤波时间。

    特殊信号定义:数字量输入口在硬件上没有做特殊定义,都是通用的,原点,限位,报警快速点动,正向JOG,反向JOG,进给保持等特殊信号都是通过软件指令进行设置。

    DATUM_IN,REV_IN,FWD_IN,ALM_IN,FAST_JOG,FWD_JOG,REV_JOG,FHOLD_IN等指令可用于配置。

    INVERT_IN:输入信号的反转配置。

    输入反转:    INVERT_IN(8,ON)  输入反转

    输入口滤波:   INFILTER=5  值越大,滤波时间越长, 2-9,缺省2

    输入口的读取:   IN(0) 读取IN0数据    IN(0,7) 一次性读取IN0~IN7数据

    读取上升沿/下降沿状态:

    方法一:   

    SCAN_EVENT(IN(0)) 0    上升沿

    SCAN_EVENT(IN(0)) 0    下降沿

    方法二:   

    IN_SCAN(0,23) 之后,IN_EVENT(0) 0    上升沿   

    IN_SCAN(0,23) 之后,IN_EVENT(0) 0    下升沿

    输入信号的诊断:ZDevelop-视图-输入口。

    运行如下程序,得出输入口状态如图所示。

    base(0)

    atype=1

    units=1000

    alm_in=24

    fwd_in=8

    rev_in=9

    datum_in=10

    INVERT_IN(24,on)

    INVERT_IN(8,on)

    INVERT_IN(9,on)

    INVERT_IN(10,on)

    base(1)

    atype=1

    units=1000

    alm_in=25

    fwd_in=11

    rev_in=12

    datum_in=13

    INVERT_IN(25,on)

    INVERT_IN(11,on)

    INVERT_IN(12,on)

    INVERT_IN(13,on)

    灰色表示无输入,绿色表示有输入,特殊信号输入在窗口里有提示,IO编号的显示可在“IO选择”中自定义。

    7、ZMC306X数字量输出口

    通用数字输出口可接NPN型。光耦和滤波器的作用是防止干扰信号通过信号线和电源线进入控制器。

    通用的输出口的单个输出最大电流为300mA,轴端子上面的输出最大电流为50mA。

    通用输出的指令为OP。

    输出口特殊功能:OUT0~1口支持PWM输出,当PWM功能关闭时为普通输出。PWM高速输出口允许的输出信号频率为1M,剩余的为普通输出口,允许输出的频率频率为10K左右。

    使用PWM_DUTY和PWM_FREQ指令分别设置占空比和频率。

    PWM_DUTY(0)=0.4  0.4占空比  PWM_FREQ(0)=1000  1k频率。

    PWM_DUTY(1)=0.5  0.5占空比  PWM_FREQ(1)=1000000  1M频率。

    输出信号的诊断:ZDevelop-视图-输出口。

    运行如下程序,得出输出口状态如图所示。

    op(0,15,0) 输出口0-15全关

    op(0,on) 输出口0开启

    op(4,7,$f) 按位设置,bit4-bit7 全开

    op(12,15,$c) bit12~bit13关,bit14~bit15开

    8、数字量输入输出扩展

    当数字量输入输出点数不够用时,可连接扩展模块扩展输入输出,可采用CAN总线和EtherCAT总线连接扩展模块。ZMC306X由于只包含CAN接口,只能采用CAN总线扩展,最多可扩展512个IN输入口,512个OUT输出口,当脉冲轴数不够用时,支持采用ZCAN扩展模块扩展脉冲轴,接线方法参见下图。

    一定要保证控制器的EGND与ZCAN IO的GND连在一起,且CANL和CANH之间接入120欧电阻。

    9、ZMC306X模拟量输入输出

    ZMC306X包含两路AD模拟量输入,和两路DA模拟量输出, 内部 AD/DA 采用了内部电源。

    控制器模拟量精度为12位,刻度范围为0~4095,输入输出电压范围为0~10V。

    模拟量输入输出点数不够用时,可选用扩展模块扩展,模拟量可扩展256路AD和128路DA。

    相关指令

    模拟量输入:AIN    读取AIN(0),AIN(1)

    模拟量输出:AOUT   写入AOUT(0),AOUT(1)

    ZMC306X的AD/DA信号的诊断:ZDevelop-视图-AD/DA,实时监控模拟量各通道的电压。

    10、在运动的过程中同步输出

    在运动的过程中同步输出OP、DA、PWM。

    相关指令:

    MOVE_OP     运动的过程中输出OP

    MOVE_OP2     运动的过程中输出OP一段时间

    MOVE_PWM     运动的过程中输出pwm

    MOVE_AOUT    运动的过程中输出模拟量

    11、触摸屏的IN,OP,ADC,DAC等数据读写

    ● IN(0)~IN(4095)对应MODBUS_BIT(10000)~MODBUS_BIT(14095)  只读

    ● OP(0)~OP(4095)对应MODBUS_BIT(20000)~MODBUS_BIT(24095)  读写

    ● AIN(0)~AIN(255)对应MODBUS_REG(14000)~MODBUS_REG(14255) 只读

    ● AOUT(0)~AOUT(127)对应MODBUS_REG(13000)~MODBUS_REG(13127) 读写

    ● DPOS,MPOS,VPSEED 对应MODBUS_IEEE(10000)~MODBUS_IEEE(12198)只读

    12、位置比较输出

    ●比较输出相关指令:软件比较输出PSWITCH指令;硬件比较输出HW_PSWITCH指令(仅支持脉冲轴),HW_PSWITCH2指令(脉冲轴总线轴均支持),在电机位置到达设置位置时,操作某个输出口电平变化。

    ● 其中4系列及3系列部分控制器支持硬件比较输出,例如ZMC432,包含4个硬件比较输出通道,且各通道独立(部分型号非独立),不同控制器型号支持的硬件比较输出通道个数有所区别,特殊功能对应的输出口IO编号一般从0开始。

    ● 每个系统周期内只能比较一次,通道独立,一个系统周期支持多个输出口同时使用硬件比较输出,若通道非独立,则一个系统周期只能使用一个输出口,系统周期通过SERVO_PERIOD查询,缺省为1ms。

    ● HW_PSWITCH2与MOVE_OP精准使用同样的硬件资源,所以不建议在同一个通道同时使用,若通道独立,则可以在不同的通道同时使用。

    13、精准输出

    支持硬件比较输出功能的控制器才可使用精准输出功能,使用AXIS_ZSET指令设置是否开启精准输出。开启后使用MOVE_OP指令精准输出生效,注意输出通道要选择支持精准输出的通道,不同控制器型号支持的通道个数有所区别,一般特殊功能从IO编号0开始。

    普通的输出操作需要等待一个控制器周期才可以执行。而精准输出操作,可在电机发出一个脉冲内响应,大大提高工艺的精度,同时可以使用MOVEOP_DELAY指令调整响应时间(提前或延迟)。

    一般精准输出功能在一个控制器周期内只能执行1个,再次启用需要等到下个周期。不过最新控制器如ZMC420SCAN每个精准输出都是独立的,可以在一个周期内同时使用多个口,是否支持同时使用多个精准输出功能查看硬件手册中的输出口说明。

    14、控制器示例程序(basic示例程序)

    控制器程序分为五个模块:

    1)初始化模块:轴参数设置子程序,IO初始化子程序。

    2)输入扫描模块:按下启动输入点,停止输入点的相应程序。

    3)轴参数设置子程序:初始化轴参数。

    4)IO初始化子程序:初始化IO(OP,AOUT)。

    5)按下启动的运动任务:启动按键按下调用执行运动任务1。

    RAPIDSTOP(2)

    wait idle(0)

    AxesInit

    IoInit

    while 1

    if scan_event(in(0))0 then in0 上升沿 启动运行...

    print in0 上升沿 启动运行

    stoptask 1

    runtask 1, Motion_Task

    elseif scan_event(in(1))0 then in1 上升沿 停止运行...

    RAPIDSTOP(2)

    stoptask 1

    RAPIDSTOP(2)

    endif

    wend

    end

    轴初始化

    Global sub AxesInit()

    base(0)

    atype=1

    units=1000

    speed(0) = 200 200mm/s

    accel(0) = 2000 100ms acc time

    decel(0) = 2000 100ms dec time

    sramp(0) = 200 sramp time:200ms

    dpos(0)=0

    mpos(0)=0

    merge=Off

    end sub

    IO初始化

    Global sub IoInit()

    op(0,off) op0 输出低电平

    op(0,15,off) op0~op15 输出低电平...

    aout(0)=0 aout0 输出电压0

    aout(1)=0 aout1 输出电压0

    end sub

    运行的任务

    global sub Motion_Task()

    trigger

    base(0)

    moveabs(0)

    wait idle(0)

    move(100)

    move_op(0,on)

    move(100)

    move_aout(0,1000)

    move(200) 正转10r

    move_op(0,off)

    move(100)

    move_aout(0,0)

    move(100)

    wait idle(0)

    end sub

    本文关键词:

    版权声明:

    1、本文系转载,版权归原作者所有,旨在传递信息,不代表看本站的观点和立场。

    2、本站仅提供信息发布平台,不承担相关法律责任。

    3、若侵犯您的版权或隐私,请联系本站管理员删除。

    4、文章链接:http://www.1haoku.cn/art_572360.html

    相关资讯

    ©2019-2020 http://www.1haoku.cn/ 国ICP备20009186号05-08 11:57:58  耗时:0.034
    0.0337s