前言
今天接到一个客户的反馈情况,说使用台达DVP系列EH3的PLC自带的 API.198 DVSPO 脉冲不准。笔者我之前没有使用过这API,针对这个指令看了一下官方提供的应用手册的说明。
API指令说明
DVSPO可变脉冲输出
DVSPO指令
API引脚说明
- S1:输出目标频率
- S2:目标输出个数
- S3:加减速间隔频率 (单个Word)
- S3+1:时间频率 (单个Word)
- D:脉冲输出装置
API相关特殊标志位和特殊寄存器
- M1029:CH0 脉波输出完毕后,M1029=On
- M1030:CH1 脉波输出完毕后,M1030=On
- M1036:CH2 脉波输出完毕后,M1036=On
- M1037:CH3 脉波输出完毕后,M1037=On
- M1538: 显示CH0 高速输出已暂停标志
- M1539: 显示CH1 高速输出已暂停标志
- M1540: 显示CH2 高速输出已暂停标志
- M1541: 显示CH3 高速输出已暂停标志
- M1542:CH0 到达定行程频率标志
- M1544:CH1 到达定行程频率标志
- M1546:CH2 到达定行程频率标志
- M1548:CH3 到达定行程频率标志
- M1543:CH0 定行程输出完成标志
- M1545:CH1 定行程输出完成标志
- M1547:CH2 定行程输出完成标志
- M1549:CH3 定行程输出完成标志
- M1528: 启动DICF 指令执行定速输出段功能
- M1529: 启动DICF 指令执行最终输出段功能
- D1220: CH0(Y0,Y1)相位设置
- D1221: CH1(Y2,Y3)相位设置
- D1229: CH0(Y4,Y5)相位设置
- D1230: CH0(Y6,Y7)相位设置
- D1336: CH0 目前输出脉波个数Low word
- D1337: CH0 目前输出脉波个数High word
- D1338: CH1 目前输出脉波个数Low word
- D1339: CH1 目前输出脉波个数High word
- D1375: CH2 目前输出脉波个数Low word
- D1376: CH2 目前输出脉波个数High word
- D1377: CH3 目前输出脉波个数Low word
- D1378: CH3 目前输出脉波个数High word
看完指令说明,结合魏工的思路,想到了利用以下两个API指令作为配搭,能实现 凸轮脉冲 的效果。两个指令分配是:
- DICF(立即变更频率)
- ABSD(绝对凸轮方式控制)
DICF
DICF指令
ABSD
DABSD指令
实现功能:凸轮脉冲
变量
Class Identifiers Address Type Initial Value Comment
VAR P0_FBInst P0_FB
VAR g_b_DvspoEn M0 BOOL
VAR g_b_AxisPulse Y0 BOOL
VAR g_b_AxisPosDone M1029 BOOL
VAR g_Dw_PulseOutputTargetFrequency D0 DWORD 0
VAR g_Dw_TargetPuu D10 DWORD
VAR g_w_AccDecTime D20 ARRAY [2] OF WORD
VAR g_Dw_MasterAxisPos D1336 DWORD 0
VAR g_Dw_CamOnOffAngle D500 ARRAY [5] OF DWORD
VAR g_b_CamAngleOut M10 ARRAY [5] OF BOOL FALSE
PLC程序
初始化赋值
DVSPO配合DABSD指令
凸轮触发调用DICF功能块
Log:
2019-06-11 发布本文