SoftMotion: DriveInterface: Analog
1 PLC_Config所设置的参数
1.1 BusInterface
参数 | 说明 |
---|---|
wParam1 | 未使用 |
wParam2 | 未使用 |
dwParam1 | 未使用 |
dwParam2 | 未使用 |
1.2 AxisGroup
参数 | 说明 |
---|---|
wParam1 | 未使用 |
wParam2 | 未使用 |
wParam3 | 未使用 |
wParam4 | 未使用 |
dwParam1 | 未使用 |
dwParam2 | 未使用 |
dwParam3 | 未使用 |
dwParam4 | 未使用 |
1.3 支持的控制类型(Drvie.wControlType)
类型 | 是否支持 |
---|---|
T / - | 不支持 |
V/V | 支持 |
V/P | 支持 |
P/P | 支持 |
PV/PV | 支持 |
V/- | 不支持 |
CONF | 支持 |
循环发送的数据须包含:fSetPosition(设定位置)和/或fActPosition(实际位置)。
循环接收的数据须包含:fActPosition(实际位置)和/或fActVelocity(实际速度)。
1.4 补充结构体 Analog_AXIS_REF
参数 | 类型 | 说明 |
---|---|---|
in | AnalogDriveInputData | 内部专用:循环数据输入接口结构(实时通信数据流的核心载体) |
out | AnalogOutput | 内部专用:循环数据输出接口结构(实时通信数据流的核心载体) |
controller | AnalogPositionController | 内部专用:位置环PI控制器 |
hes | SMC_HardwareEndSwitches | 内部专用:硬件限位开关 |
dwIncperTurn | DWORD | 每转脉冲数(编码器分辨率参数) |
dwEncoderCounterModulo | DWORD | 设定编码器计数溢出的周期模数 |
dwMaxPositionDiff | DWORD | 最大位置跟随误差(设为0时禁用监控) |
bInvertDirection | BOOL | 编码器与传动机构方向反向 |
bOldCaptureOccured | BOOL | 内部专用 |
dwOldActPosition | DWORD | 内部专用 |
dwActPosition | DWORD | 内部专用 |
dwPosOffset | DWORD | 内部专用 |
TYPE Analog_AXIS_REF :
STRUCT(* 此处可定义厂商专用变量及参数 *)(* 若要在PLCConfig中查看并初始化这些变量,必须将其以MS.xxx格式写入*.cfg配置文件。*)in: AnalogDriveInputData; (*循环数据输入接口结构*)out: AnalogOutput; (*循环数据输出接口结构*)controller: AnalogPositionController; (*位置环P控制器*)hes: SMC_HardwareEndSwitches; (*硬件限位开关*)(* 配置参数 *)dwIncPerTurn:DWORD:=4096; (*编码器分辨率参数inc/U; 已废弃*)dwEncoderCounterModulo: DWORD := 0; (*设定编码器计数溢出的周期模数 *)dwMaxPositionDiff:DWORD:=16#1000; (*最大位置跟随误差 *)bInvertDirection: BOOL; (*编码器与传动机构方向反向 *)(* 内部变量 *)bOldCaptureOccured: BOOL;dwOldActPosition, dwActPosition, dwPosOffset : DWORD;
END_STRUCT
END_TYPE
TYPE AnalogDriveInputData :
STRUCTbEndLimitPos : BOOL; (*正向限位开关状态*)bEndLimitNeg : BOOL; (*负向限位开关状态*)dwActPosition : DWORD; (*编码器位置*)bLatchOccured: BOOL; (*可选功能:上升沿表示锁存操作已执行*)dwLatchPosition: DWORD; (*可选功能:锁存的位置*)
END_STRUCT
END_TYPE
FUNCTION_BLOCK AnalogOutput
VAR_INPUTbEnableIn: BOOL;fSetVelocity: LREAL;fMaxVelocityNeg, fMaxVelocityPos: LREAL;iMaxVelocityNeg, iZeroVelocity, iMaxVelocityPos: INT;bInvertDirection:BOOL;bEnableLatch: BOOL;
END_VAR
VAR_OUTPUTbEnable : BOOL;iSetVelocity : INT;
END_VAR
1.5 配置数据
在首个IEC周期内必须完成以下参数配置:
No. | 参数 | 类型 | 说明 |
---|---|---|---|
1 | Drive_MS.dwMaxPositionDiff | DWORD | 最大位置跟随误差(设为0时禁用监控) |
2 | Drive_MS.dwEncoderCounterModulo | DWORD | 编码器计数溢出的周期模数 |
3 | Drive_MS.bInvertDirection | BOOL | 编码器与传动机构方向反向 |
4 | Drive_MS.out.fMaxVelocityPos | LREAL | 正向最大速度值(技术单位)——对应输出变量:iMaxVelocityPos |
5 | Drive_MS.out.iMaxVelocityPos | INT | |
6 | Drive_MS.out.iZeroVelocity | INT | 零速偏移量(使驱动器保持静止状态的输出值)——对应参数:iZeroOffset |
7 | Drive_MS.out.fMaxVelocityNeg | LREAL | 负向最大速度值(技术单位)——对应输出变量:iMinVelocityPos |
8 | Drive_MS.out.iMaxVelocityNeg | INT | |
9 | Drive_MS.controller.fDeadTime | LREAL | 通信及系统延迟死区时间(周期数) |
10 | Drive_MS.controller.fKP | LREAL | 位置控制器的比例增益(P参数) |
1.5.1 循环输入数据
应用程序中必须循环接收并更新以下数值:
No. | 参数 | 类型 | 说明 |
---|---|---|---|
1 | Drive_MS.in.bEndLimitPos | BOOL | 正向限位开关状态(未使用时需设置为TRUE) |
2 | Drive_MS.in.bEndLimitNeg | BOOL | 负向限位开关状态(未使用时需设置为TRUE) |
3 | Drive_MS.in.dwActPosition | DWORD | 编码器位置 |
4 | Drive_MS.in.bLatchOccured | BOOL | 可选功能:上升沿表示锁存操作已执行 |
5 | Drive_MS.in.dwLatchPosition | DWORD | 可选功能:锁存的位置 |
1.5.2 循环输出数据
应用程序必须向驱动系统循环发送以下数值:
No. | 参数 | 类型 | 说明 |
---|---|---|---|
1 | bEnable | BOOL | 激活驱动器使能状态 |
2 | iSetVelocity | INT | 速度设定值 |
3 | bEnableLatch | BOOL | 启用位置锁存功能 |
2 功能特性
- 调节器使能(RegulatorOn)
- 实时监控位置偏差并支持人工确认(lag errors)
- 电子齿轮比灵活配置(通过dwRatioTechUnitsDenom/iRatioTechUnitsNum参数设置)
- 支持直线轴/旋转轴类型
- 多种控制模式
- 位置模式
- 速度模式
- 通过byControllerMode参数1091动态配置控制模式
- 限位开关安全保护
- 支持归零
- 高精度位置锁存
- 驱动器错误管理
2.1 附件功能块
- AnalogAutoAdjust
功能说明:
该功能块驱动电机运行并自动调整控制器参数bInvertDirection、iZeroVelocity、fDeadTime、fKp。
操作必须谨慎,因为此过程中驱动器可能失稳并快速移动。
该功能仅在至少满足以下参数已设置的情况下使用:
No. | 参数 | 类型 | 说明 |
---|---|---|---|
1 | Drive_MS.dwIncPerTurn | DWORD | 编码器分辨率参数 |
2 | Drive_MS.dwMaxPositionDiff | DWORD | 最大位置跟随误差 |
3 | Drive_MS.dwEncoderCounterModulo | DWORD | 设定编码器计数溢出的周期模数 |
4 | Drive_MS.out.fMaxVelocityPos | LREAL | 正向最大速度值(技术单位)——对应输出变量:iMaxVelocityPos |
5 | Drive_MS.out.iMaxVelocityPos | INT | |
6 | Drive_MS.out.iZeroVelocity | INT | 零速偏移量(使驱动器保持静止状态的输出值)——对应参数:iZeroOffset |
7 | Drive_MS.out.fMaxVelocityNeg | LREAL | 负向最大速度值(技术单位)——对应输出变量:iMinVelocityPos |
8 | Drive_MS.out.iMaxVelocityNeg | INT |
在执行此功能块前,必须确保驱动器已上电。
建议按以下流程操作:
1. 先将Drive_MS.controller.fKP设为0(禁用位置控制环)
2. 接着通过MC_Power功能块使能驱动器
3. 最后再启动本功能块。
此功能块禁止在每次启动时调用,仅限调试阶段使用。其输出参数需在执行后读取并存储,并在后续应用程序首次IEC周期中自动载入。