系统的框架如下图
一台3U的plc,控制了3台步进电机,分别控制了X、Y、Z这3个轴,PLC接了一个手摇轮,可以手动控制这3个轴,手摇轮的第一个旋钮可以选择控制不同的轴,第二个悬念可以选择速度的倍率,然后通过转盘控制电机正反运转。
二、硬件设备:1.三菱PLC :FX3U-16MT-ES-A
2.42步进电机套装:3台
3.数控机床电子手轮
三、软件:所需软件版本:GX Works2(1.576A版本)
四、I/O分配:
输入点 |
注释 |
输出点 |
注释 |
X0 |
手轮A相 |
Y0 |
X轴电机脉冲 |
X1 |
手轮B相 |
Y1 |
Y轴电机脉冲 |
X2 |
X轴档位 |
Y2 |
Z轴电机脉冲 |
X3 |
Y轴档位 |
Y3 |
X轴电机方向 |
X4 |
Z轴档位 |
Y4 |
Y轴电机方向 |
X5 |
1倍档 |
Y5 |
Z轴电机方向 |
X6 |
10倍档 |
Y6 |
|
X7 |
100倍档 |
Y7 |
五、程序编写及思路:
(1)根据3U高速计数器的表格,可以找到X0和X1对应的高速计数器对应的高速计数器是C251。
我们只需要把手轮上转盘的两个信号点,接入X0和X1就可以,用以下的程序就能纪录手轮发出的脉冲信号个数
(2)通过M8012的上升沿信号用DMOV指令把脉冲数读取到D0里面,每隔100ms读取1次,1倍档时我们乘以10倍放到D2寄存器里面,就是相当于算出了1秒里面能够发送的脉冲数,1s发送的脉冲数就是的频率,后面控制的程序就用这个D2的数据去控制,10倍档就控制乘以100,100倍档就乘以1000,最后面清空下这个高速计数器。这样每隔100ms就刷新一般数据(这里我的手轮一圈的脉冲数和步进电机转一圈需要的脉冲数是一致的,假如不同,那你需要根他们的比值去做一个乘法或者除法的运算),另外,3U的plc没有手轮控制的功能,我们程序没办法做到绝对的同步,动作存在误差。
(3)由于硬件的限制,频率一超过10000HZ时步进电机就控制不了(不同的电机硬件这个频率可能不一样,不一定是10000),所以这个参数需要根据你实际的数据去测试这个数据多大是极限,防止我们手轮摇的过快),所以下面做了限制
(4)最后面,使用可变速脉冲输出指令控制,不同的轴的X点对应不同的Y点进行输出,频率采用前面计算出来的D2进行控制。