[西门子] CODESYS电子凸轮应用加轴功初始化能块封装——纯干货分享

[复制链接]
查看5612 | 回复0 | 2024-10-24 14:33:26 | 显示全部楼层 |阅读模式
CODESYS(Controller Development System)是一个广泛用于PLC(可编程逻辑控制器)编程的软件平台,特别适用于基于IEC 61131-3标准的控制工程。电子凸轮功能是CODESYS中的一种高级运动控制特性,它允许用户定义复杂的机械运动曲线,比如在包装、印刷等工业自动化领域非常有用。

程序、电路图在文章最底部 接项目外包、运动控制、过程控制  欢迎广大需要合作厂家、个人来合作联系方式:15325623428(微信同号)当谈到“加轴功初始化能块封装”,这听起来像是指创建一个可以重复使用的功能块(FB, Function Block),该功能块能够处理特定轴的初始化以及可能的能量管理或功率相关的配置。在实际应用中,这种功能块可以帮助简化程序结构,提高代码的可重用性和维护性。下面是如何在CODESYS中为电子凸轮应用创建一个包含轴初始化的功能块的一个基本示例:步骤 1: 创建新的Function Block (FB)



    在CODESYS开发环境中打开你的项目。

    转到"Program organization units"部分,右键点击并选择"Add new..." -> "Function block"来创建一个新的功能块。

    给这个新功能块命名,例如FB_AxisInit.
步骤 2: 定义输入输出变量

根据需要初始化的具体参数,在FB_AxisInit中定义相应的输入输出变量。常见的变量可能包括但不限于:


    AxisHandle:要初始化的轴句柄

    Speed:设定速度

    Acceleration:加速度

    Deceleration:减速度

    InitialPosition:初始位置

    ErrorOut:错误信息输出

    IsInitialized:是否成功初始化标志位
步骤 3: 编写初始化逻辑

在FB_AxisInit的功能块内部编写初始化逻辑。这部分将涉及到调用CODESYS库中的相应函数来设置轴参数,并执行初始化命令。

一、电子凸轮应用场合

CODESYS电子凸轮功能在多种工业自动化场合中非常有用,特别是在需要精确控制运动轨迹的应用中。以下是一些典型的应用场合:


    包装机械:


      在包装行业中,产品可能需要按照特定的模式进行排列、填充或封口。通过使用电子凸轮,可以确保机器能够根据预设的时间和位置关系准确执行这些操作。

    印刷机械:


      印刷过程中,纸张的进给速度必须与印刷头的速度同步。电子凸轮可以帮助实现这一要求,确保高质量的打印效果。

    食品加工设备:


      例如,在灌装机上,瓶子的输送线速度要与液体灌装的速度相匹配。利用电子凸轮技术,可以轻松地设定这种同步关系。

    纺织机械:


      纺织行业中的编织机、绣花机等都需要精确控制各个部件的动作。电子凸轮能够提供必要的灵活性来优化生产流程。


二、程序


主轴初始化



从轴初始化



MC_Power_0(

Axis:=AXIS ,

Enable:= TRUE ,

bRegulatorOn:= EN_POW,

bDriveStart:=TRUE ,

Status=> ,

bRegulatorRealState=>POWR_DONE ,

bDriveStartRealState=> ,

Busy=>BUSY_RELAY[1] ,

Error=>ERROR_RELAY[1]  ,

ErrorID=> ERROR_ID_REALAY[1]);

MC_Home_0(

Axis:= AXIS,

Execute:=EX_HOME ,

Position:= HOME_POS,

Done=> DONE,

Busy=>BUSY_RELAY[2] ,

CommandAborted=> ,

Error=>ERROR_RELAY[2] ,

ErrorID=> ERROR_ID_REALAY[2] );

MC_Reset_0(Axis:= AXIS,

Execute:= EX_RESET,

Done=> ,

Busy=>BUSY_RELAY[3] ,

Error=>ERROR_RELAY[3]  ,

ErrorID=> ERROR_ID_REALAY[3] );

MC_Stop_0(

Axis:=AXIS ,

Execute:= EX_STOP ,

Deceleration:= ,

Jerk:= ,

Done=> ,

Busy=>BUSY_RELAY[4] ,

Error=> ERROR_RELAY[4] ,

ErrorID=> ERROR_ID_REALAY[4]);

MC_Jog_0(

Axis:= AXIS,

JogForward:=JOG_UP ,

JogBackward:=JOG_DOWN ,

Velocity:=JOG_VEL,

Acceleration:=JOG_ACC ,

Deceleration:=JOG_dec ,

Jerk:=JOG_JERK ,

Busy=>BUSY_RELAY[5] ,

CommandAborted=> ,

Error=>ERROR_RELAY[5]  ,

ErrorId=>  ERROR_ID_REALAY[5]);

MC_ReadActualPosition_0(

Axis:=AXIS ,

Enable:= TRUE ,

Valid=> ,

Busy=>BUSY_RELAY[6] ,

Error=>ERROR_RELAY[6]  ,

ErrorID=>  ERROR_ID_REALAY[6],

Position=> POS_VAL );

MC_ReadActualVelocity_0(

Axis:=AXIS  ,

Enable:= TRUE,

Valid=> ,

Busy=>BUSY_RELAY[7] ,

Error=>ERROR_RELAY[7]  ,

ErrorID=> ERROR_ID_REALAY[7] ,

Velocity=> VEL_VAL);

MC_ReadAxisError_0(

Axis:=AXIS  ,

Enable:= TRUE,

Valid=> ,

Busy=>BUSY_RELAY[8] ,

Error=>ERROR_RELAY[8] ,

ErrorID=> ERROR_ID_REALAY[8] ,

AxisError=> ERROR,

AxisErrorID=>ERROR_ID ,

SWEndSwitchActive=> );

(*

   轴报错字符串输出

*)

FOR i:=1 TO 8 BY 1 DO

IF ERROR_ID_REALAY<>ERROR_ID_REALAY[1] AND ERROR_RELAY THEN

        ERROR_STRING:=SMC_ErrorString(ErrorID:=ERROR_ID_REALAY ,

Language:=ERROR_ID_REALAY_1 );               

                    J:=i;

END_IF

IF  ERROR_RELAY[J]= FALSE  THEN

            ERROR_STRING:=SMC_ErrorString(ErrorID:=ERROR_ID_REALAY ,

Language:=ERROR_ID_REALAY_1 );        

END_IF

END_FOR;

FOR i:=1 TO 8 BY 1 DO

        IF ERROR_RELAY THEN

凸轮表加载



凸轮启动



凸轮曲线规划



Trace效果



三、实际效果


video: https://mp.weixin.qq.com/mp/readtemplate?t=pages/video_player_tmpl&action=mpvideo&auto=0&vid=wxv_3651941148433825799

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册哦

x
您需要登录后才可以回帖 登录 | 注册哦

本版积分规则