可信赖的南昌网站制作临沂百度联系方式
这个函数 F_SEQ_X3_TrigJob
主要用于控制和监控轴(Axis)的移动操作。它接收控制命令并将其转换为对特定轴的运动指令,同时监测运动状态以确认任务是否完成。
一、函数实例化
1、在FBD编程环境中的应用
2、在ST语言编程环境中的应用
二、函数变量声明
FUNCTION F_SEQ_X3_TrigJob: BOOL(*---------------------------------------------*)
(*IN variables*)
(*---------------------------------------------*)
VAR_INPUTiIn_idxElement :INT; (* Elementnumner *) bIn_MoveWP :BOOL; (* Request Element move to WS (Workposition) *) bIn_MoveWP_1 :BOOL; (* Request Element move to WS_2 (Workposition_2) *) bIn_MoveHP :BOOL; (* Request Element move to HP (HomePosition) *) iIn_TaskNo :INT :=0; (* Task Number to be started eg :Recipe Number ,Program Number*)
END_VAR(*---------------------------------------------*)
(*IN/OUT variables*)
(*---------------------------------------------*)(*---------------------------------------------*)
(*Local Constants*)
(*---------------------------------------------*)
VAR CONSTANT
END_VAR(*---------------------------------------------*)
(*Local variables*)
(*---------------------------------------------*)
VAR
END_VAR(*---------------------------------------------*)
(*Lokal temp variables*)
(*---------------------------------------------*)
VAR
END_VAR(*All VAR_IN_OUT variables have been moved to the end of the declaration due to compatibility reasons*)
VAR_IN_OUT
END_VAR
三、功能块 代码
(*clear function's return value*) // Dispense + Interpolate Axis
F_SEQ_X3_TrigJob := FALSE;(*check index valid and not both inputs true*)
IF (iIn_idxElement <= 0)OR (iIn_idxElement > iGC_ELEMENTE_End)OR (iIn_TaskNo =0)OR (bIn_MoveWP AND bIn_MoveWP_1)
THENRETURN;
END_IF;(*Set command in element structure *)
stGV_SYS_ELEMENTS.arstELEMENT[iIn_idxElement].stCMD.bAUTO_WP := bIn_MoveWP;
stGV_SYS_ELEMENTS.arstELEMENT[iIn_idxElement].stCMD.bAUTO_WP_1 := bIn_MoveWP_1;
stGV_SYS_ELEMENTS.arstELEMENT[iIn_idxElement].stCMD.bAUTO_HP := bIn_MoveHP;
stGV_SYS_ELEMENTS.arstELEMENT[iIn_idxElement].arstValue[1].rNominal := INT_TO_REAL(iIn_TaskNo);(*Check stoppositions and set function output*)
F_SEQ_X3_TrigJob:= (bIn_MoveWP AND stGV_SYS_ELEMENTS.arstELEMENT[iIn_idxElement].stFeedBack.stSTATE.bIN_WPAND stGV_SYS_ELEMENTS.arstELEMENT[iIn_idxElement].arstValue[1].rNominal = stGV_SYS_ELEMENTS.arstELEMENT[iIn_idxElement].arstValue[10].rNominal) OR ( bIn_MoveWP_1 AND NOT stGV_SYS_ELEMENTS.arstELEMENT[iIn_idxElement].stFeedBack.stSTATE.bIN_WP_1);
四、函数代码说明
1、代码详细解释
(*clear function's return value*) // Dispense + Interpolate Axis
F_SEQ_X3_TrigJob := FALSE;
-
1)初始化函数返回值为 FALSE,表示移动任务尚未完成。
(*check index valid and not both inputs true*)
IF (iIn_idxElement <= 0)OR (iIn_idxElement > iGC_ELEMENTE_End)OR (iIn_TaskNo =0)OR (bIn_MoveWP AND bIn_MoveWP_1)
THENRETURN;
END_IF;
-
2)输入参数验证:
- 检查元素索引是否在有效范围内
- 确保任务编号不为 0
- 防止同时激活两个互斥的移动命令 (bIn_MoveWP 和 bIn_MoveWP_1)
(*Set command in element structure *)
stGV_SYS_ELEMENTS.arstELEMENT[iIn_idxElement].stCMD.bAUTO_WP := bIn_MoveWP;
stGV_SYS_ELEMENTS.arstELEMENT[iIn_idxElement].stCMD.bAUTO_WP_1 := bIn_MoveWP_1;
stGV_SYS_ELEMENTS.arstELEMENT[iIn_idxElement].stCMD.bAUTO_HP := bIn_MoveHP;
stGV_SYS_ELEMENTS.arstELEMENT[iIn_idxElement].arstValue[1].rNominal := INT_TO_REAL(iIn_TaskNo);
- 3)设置控制命令:
- 将输入的移动命令 (bIn_MoveWP、bIn_MoveWP_1、bIn_MoveHP) 写入到系统元素的命令结构体中
- 将任务编号转换为实型并存入 arstValue 数组
(*Check stoppositions and set function output*)
F_SEQ_X3_TrigJob:= (bIn_MoveWP AND stGV_SYS_ELEMENTS.arstELEMENT[iIn_idxElement].stFeedBack.stSTATE.bIN_WPAND stGV_SYS_ELEMENTS.arstELEMENT[iIn_idxElement].arstValue[1].rNominal = stGV_SYS_ELEMENTS.arstELEMENT[iIn_idxElement].arstValue[10].rNominal) OR ( bIn_MoveWP_1 AND NOT stGV_SYS_ELEMENTS.arstELEMENT[iIn_idxElement].stFeedBack.stSTATE.bIN_WP_1);
- 4)状态检查和返回值设置:
- 情况 1:当请求移动到工作点 1 (bIn_MoveWP) 时:
- 确认轴已到达工作点 1 位置 (bIN_WP 为 TRUE)
- 确认当前任务编号与目标任务编号匹配
- 情况 2:当请求移动到工作点 2 (bIn_MoveWP_1) 时:
- 确认轴尚未到达工作点 2 位置 (bIN_WP_1 为 FALSE),表示移动正在进行中
- 情况 1:当请求移动到工作点 1 (bIn_MoveWP) 时:
2. 功能总结
这个功能块的核心作用是:
- 验证输入参数的有效性
- 设置轴的移动命令
- 通过反馈信号监测移动状态
- 根据移动状态更新函数返回值,指示任务是否完成
当轴完成移动并满足条件时,F_SEQ_X3_TrigJob 将被设置为 TRUE,表示任务成功完成。这通常用于触发后续的自动化流程步骤。
五、函数功能描述
这个函数 F_SEQ_X3_TrigJob
是一个用于工业自动化控制系统的功能块,主要用于控制和监控轴(Axis)的移动操作。它接收控制命令并将其转换为对特定轴的运动指令,同时监测运动状态以确认任务是否完成。
1、适用场合
该函数通常用于以下工业自动化场景:
- 生产线自动化:控制机械臂或传送装置在工作点(WP)之间移动
- 点胶系统:精确控制喷头在不同位置进行点胶操作
- 物料搬运系统:控制抓取装置在不同位置之间移动和定位
- 包装机械:控制包装设备在特定位置执行包装操作
- 测试设备:控制测试探头在不同测试点之间移动
2、主要功能点
- 参数验证:确保输入参数合法有效
- 命令发送:将移动命令发送到指定的轴
- 状态监测:通过反馈信号监控轴的位置状态
- 任务完成确认:根据轴的位置和任务编号确认任务是否完成
3、注意事项
-
互斥命令检查:函数会阻止同时激活
bIn_MoveWP
和bIn_MoveWP_1
两个互斥命令,使用时应避免这种情况 -
索引范围检查:
iIn_idxElement
必须在有效范围内(1 到iGC_ELEMENTE_End
)- 超出范围的索引会导致函数直接返回,不执行任何操作
-
任务编号有效性:
iIn_TaskNo
不能为 0,否则函数不会执行任何操作 -
状态反馈依赖:函数依赖于
stFeedBack.stSTATE.bIN_WP
和stFeedBack.stSTATE.bIN_WP_1
等反馈信号来确认轴的位置状态,确保这些信号正确配置 -
连续调用:该函数通常需要在每个扫描周期连续调用,以便实时监测和更新轴的状态
-
错误处理:
- 函数本身不包含详细的错误处理机制
- 建议在调用该函数的程序中添加额外的错误检测和处理逻辑
-
任务编号匹配:当执行
bIn_MoveWP
命令时,函数会比较当前任务编号与目标任务编号是否匹配,确保任务的一致性 -
安全考虑:在实际应用中,应结合硬件限位开关和紧急停止功能,确保设备运行安全
-
调试建议:调试时可监控
F_SEQ_X3_TrigJob
的返回值以及相关的状态变量,以确认函数的执行情况
4、使用建议
- 在调用此函数前,确保所有输入参数已正确初始化
- 为不同的任务分配唯一的任务编号,避免混淆
- 在实际应用中添加超时检测机制,防止轴运动异常时程序卡死
- 考虑添加手动操作模式,以便在自动模式出现问题时进行手动干预
- 在系统设计阶段,为每个轴配置合理的限位保护,防止机械损坏