名称:多段脉冲输出

符号:PTO

说明:

        使用此功能块可以控制脉冲输出，此脉冲使占空比50%的脉冲，可以控制多段脉冲输出，达到以一定速度，加速度，输出指定数量的脉冲的效果

图片:

参数:

参数名称 | 数据类型 | IN/OUT | 参数作用 | 说明 | 默认值
--- | --- | --- | --- | --- | ---
OUTPORT | UDINT | IN | 脉冲输出端口 | 0-7 |
    无
EXECUTE | BOOL | IN | 功能块使能 | 上升沿触发（触发后，未完成时，不可再次触发） |
    有/FALSE
PULSESECNUM | UINT | IN | 脉冲输出段数量 | EXECUTE上升沿时载入 |
    无
PULSESECINFO | T_PULSE_SEC_INFO * | IN | 脉冲段结构体数组首地址：描述各脉冲段信息 | EXECUTE上升沿时检查有效性 |
    无
ABORT | BOOL | IN | 紧急停止触发 | TRUE：紧急停止使能（使能后不可撤销，处理完成前，不能重新使能功能块） |
    有/FALSE
STOPTIME | UDINT | IN | 紧急停止时间：单位ms | 在设定时间以内停止脉冲输出。非0；0：默认值运行（EXECUTE上升沿时载入） |
    有/5
DONE | BOOL | OUT | 脉冲段全部输出完成标志 | TRUE：脉冲段输出完成（状态保留1个周期） |
    有/FALSE
BUSY | BOOL | OUT | 脉冲输出状态 | TRUE：脉冲正在输出中 |
    有/FALSE
CMDSTOP | BOOL | OUT | 紧急停止状态 | TRUE：紧急停止中，脉冲频率尚未减到0（此时无法响应新的轴启动控制）） |
    有/FALSE
ERROR | BOOL | OUT | 出错标志 | TRUE：功能块调用出错 |
    有/FALSE
ERRORID | DINT | OUT | 错误码 | 0：正常；其它：错误码值 |
    有/0

其中PULSESECINFO的结构如下：

数据名称 | 数据类型 | 内容描述
--- | --- | ---
STARTFREQ | UDINT | 当前脉冲段：起始脉冲频率，单位Hz（0-200KHz）
ENDFREQ | UDINT | 当前脉冲段：结束脉冲频率，单位Hz（0-200KHz）
PULSENUM | DINT | 当前脉冲段：脉冲数量+方向（正数-向前运动；负数-向后运动）

错误码:

错误码 | 说明
--- | ---
0 |
    无错误
1 |
    无效的脉冲端口
2 |
    脉冲端口忙/pre>
3 |
    脉冲端口正在执行停止动作
4 |
    脉冲段数为0
5 |
    脉冲段缓冲区为空
6 |
    脉冲数为0
7 |
    频率超出最大允许范围
8 |
    两段脉冲频率不连续
9 |
    两段脉冲方向不同

示例:

LD:

ST:

PulseSecInfoRef := REF(PulseSecInfo[0]); PTO_inst1(OUTPORT := 0, EXECUTE := TRUE, PULSESECNUM := 1, PULSESECINFO := PulseSecInfoRef, ABORT := FALSE, STOPTIME := 100, DONE => DoneOut, BUSY => BusyOut, CMDSTOP => CmdStopOut, ERROR => ErrorOut, ERRORID => ErrorIDOut);

解释:

       OUTPORT为0，表示使用第0路脉冲；
       EXECUTE为上升沿，表示本次操作有效，功能块启动；
       PULSESECNUM为1，表示此次功能块仅执行一段脉冲段的输出；
       PulseSecInfoRef中依次存放了多脉冲段的描述信息：每段的起始频率、结束频率、脉冲数量+方向；
       ABORT为FALSE，表示目前不进行紧急停止；
       STOPTIME为100表示在进行紧急停止时，需要在100ms使脉冲频率减速到0。
       如果DoneOut为TRUE，表示多段脉冲已经输出完成；
       如果BusyOut为TRUE，则表示功能块正在输出多路脉冲；
       如果CmdStopOut为TRUE，则表示功能块正在进行紧急停止，还未减速至零；
       ErrorOut为TRUE，表示功能块出错，错误码为ErrorIDOut。