如何进行运动控制器输入/输出IO的应用
1、材料准备
1)电脑1台,安装ZDevelop3.01以上版本软件;
2)ZMC306X控制器1个;
3)24V直流电源1个;
4)总线驱动器+电机(或步进驱动器+电机)若干;
5)控制器接线端子若干;
6)网线若干;
7)连接线若干;
另:IO设备、扩展模板、触摸屏等根据需求选用。
2、控制器连接配置参考

4、ZMC306X硬件信息查看
在线命令栏输入?*max打印结果:

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:输入信号的反转配置。

7、ZMC306X数字量输出口
通用数字输出口可接NPN型。光耦和滤波器的作用是防止干扰信号通过信号线和电源线进入控制器。
通用的输出口的单个输出最大电流为300mA,轴端子上面的输出最大电流为50mA。
通用输出的指令为OP。
输出口特殊功能:OUT0~1口支持PWM输出,当PWM功能关闭时为普通输出。PWM高速输出口允许的输出信号频率为1M,剩余的为普通输出口,允许输出的频率频率为10K左右。

输出信号的诊断: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开

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,实时监控模拟量各通道的电压。

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