编辑: 笔墨随风 | 2019-07-17 |
3.2.2 PTO0_MAN: 可以控制 PTO0 以某一频率输出脉冲, 并且可以通过程序随时中止 (减速或立即中止) ;
3.2.3 PTO0_RUN:运行(在向导中生的)包络,以预定的速度输出确定个数的脉冲,也可以通过程序随时时 中止(减速或立即中止). 3.2.4 PTO0_LDPOS:装载位置用,本例使用相对位置,所以不必装载. 本例的工艺要求,输出脉冲数可变(圈数可设定),又要在工艺允许的情况下尽可能地按指定的速度运行, 也要随时能够减速停止,包括人工手动的停车要求.直接使用 PTO0_MAN 和PTO0_RUN 都无法直接满 足要求,以下来研究配合辅助手段如何实现. 3.3 精确的位置(圈数)控制 3.3.1 PTO0_RUN + 中断 卷绕定位与圈数控制,达到 0.1 圈以内的精度即可,以10000 步/转的细分驱动器,0.1 圈相当于
1000 脉冲. 假使 PTO 正以最高 100kHz 速度输出脉冲,以1ms 的时间响应中断,脉冲的误差约为
100 个,所以从理 论上说,中断方式把脉冲误差控制在
1000 个以下完全可以. 如何实现?我们来看下面一个 PTO0_MAN 指令执行的示意图: 当PTO0_MAN 指令 RUN=1 允许脉冲输出时,脉冲序列从最低速(起始速度,本例设为 100p/s,很小, 可以认为 0)线性加速,加到指定速度 speed 后保持匀速,当收到减速停止 RUN=0 命令时,线性减速, 至最低速后停止. 所以,我们只要在脉冲输出前计算出停止指令执行的位置,并在此位置设置中断以便执行减速停止指令, 就可保证输出的序列脉冲个数在要求的误差范围内. 计算过程: 本例加速和减速的斜率是相同的,比较简单,如果两个斜率不同,计算稍麻烦一点,原理差不多. 3.3.1.1 用向导生成一个最高速单速包络, 从生成的 PTO0_DATA 中找出加速和减速脉冲数 (可以参考 3.3.2 节的描述),如果加减速斜率相同,这两个数应该是一样的,由于计算精度的关系,差几个脉冲也属正常. 这个数据在程序中可以作为常数使用. 3.3.1.2 如果目标脉冲数大于加速和减速脉冲数之和,表示脉冲输出可以加速到最高速,有恒速阶段,那么 中断位置=目标脉冲数-减速脉冲数;
3.3.1.3 如果目标脉冲数不大于加速和减速脉冲数之和,无恒速阶段,包络变成一个等腰三角形(两边斜率 相同的情况),那么中断位置=目标脉冲数/2. 3.3.1.4 更进一步,水平恒速的速度可变,就象本案的情况,卷绕速度是可设定的,而且这个速度受机械/ 电机最高限速、薄膜最高线速的限制,取三者中的最小值,然后才能确定加速到该速度所需的脉冲数,通 过简单的数学计算即可获得. 3.3.2 PTO0_RUN + 修改包络参数 用向导生成一个单一速度包络,我们来研究自动生成的包络数据结构: PTO0_DATA //输出 Q0.0 的PTO 包络表 VB1000 'PTOA' // VW1004
54 //FREQ VD1006
10240000 //SS_SPEED VD1010
204800000 //MAX_SPEED VD1014 16#02000E69 //K_ACC VD1018 16#82FFF197 //K_DEC VB1022
1 //NUMPROF VW1023
25 //OFFS_0 VB1025
4 //包络
0 的NUM_SEGS VB1026
0 //保留. VB1027
0 //段0的S_STEP VB1028 16#08 //S_PROP VD1029 +10240000 //SFREQ VD1033
49950 //加速的脉冲数 VB1037
0 //段1的S_STEP VB1038 16#04 //S_PROP VD1039 +199707040 //SFREQ VD1043
98 //恒速的脉冲数 VB1047
0 //段2的S_STEP VB1048 16#00 //S_PROP VD1049 -1 //SFREQ VD1053
49951 //减速的脉冲数 VB1057
0 //段3的S_STEP VB1058 16#10 //S_PROP VD1059 +10240000 //SFREQ VD1063
1 //最终减速的脉冲数 VB1067
0 //保留. VB1068