苏州实操派科技有限公司官网-实操派教育科技,汇川技术PLC培训,实操派PLC培训,苏州PLC培训机构

中型PLC直线插补源码

[复制链接]
10 326

附件下载,需登录可以查看贴内更多信息

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

x
FUNCTION_BLOCK Line_Interpolation//直线插补
VAR_IN_OUT
        AxisX: AXIS_REF_SM3;
        AxisY: AXIS_REF_SM3;
        
END_VAR
VAR_INPUT
        bExecute: BOOL;
        bQuick_Stop:BOOL;
        XEndPositionREAL;
        YEndPositionREAL;        
        VelocityREAL;
        AccelerationREAL;
        DecelerationREAL;
    dwIpoTime:INT;        
END_VAR
VAR_OUTPUT
        Done:BOOL;
        Busy:BOOL;
        Error:BOOL;
        ErrorID:SMC_ERROR;
END_VAR
VAR
    LINE_Interpolation1 : SMC_OUTQUEUE := (nReadPos:=0, bFull:=FALSE, bEndOfList:=TRUE, byGenerator:=255, strProgramName:='LINE_Interpolation1', pbyBuffer := ADR(LINE_Interpolation1_Q), nCapacity := 4, nWritePos := 1, xPartofLM := TRUE);
    LINE_Interpolation1_Q : ARRAY[0..3] OF SMC_GEOINFO := [
        (iObjNo:=1, iSourceLine_No:=0, iMoveType:=100,
         piStartPos:=(iFrameNo:=0, wAuxData:=7, wSProfile:=0, dX:=0, dY:=0, dZ:=0, dA:=0, dB:=0, dC:=0, dA1:=0, dA2:=0, dA3:=0, dA4:=0, dA5:=0, dA6:=0),
         piDestPos:=(iFrameNo:=0, wAuxData:=7, wSProfile:=0, dX:=400, dY:=400, dZ:=0, dA:=0, dB:=0, dC:=0, dA1:=0, dA2:=0, dA3:=0, dA4:=0, dA5:=0, dA6:=0),
         dP1:=0, dP2:=0, dP3:=0, dP4:=0, dP5:=0, dP6:=0, dP7:=0, dP8:=0, dP9:=0, dP10:=0, dP11:=0, dP12:=0, dP13:=0, dP14:=0, dP15:=0, dP16:=0, dP17:=0, dP18:=0,
         vX:=(dX:=1,dY:=0,dZ:=0), vY:=(dX:=0,dY:=1,dZ:=0), vN:=(dX:=0,dY:=0,dZ:=1),
         dT1:=0, dT2:=1, dToolRadius:=0, dVel:=0, dVelEnd:=0, dVelEndStored:=0, dAccel:=0, dDecel:=0, dLength:=0, byInternMark:=0, b3DMode:=FALSE,
         dHelpPos:=[0,0,0], iHelpID:=[0,0,0],
         adVelAddAx:=[0,0,0,0,0,0,0,0], adAccAddAx:=[0,0,0,0,0,0,0,0], adDecAddAx:=[0,0,0,0,0,0,0,0], wInternMark2:=0, dwFeatureFlags:=0, aAdditionalParams:=[0,0,0])];         
        SMC_Interpolator1:SMC_Interpolator;
        SMC_TRAFO_Gantry2D:SMC_TRAFO_Gantry2;
        SMC_TRAFOF_Gantry2D:SMC_TRAFOF_Gantry2;
        SMC_ControlAxisByPosX,SMC_ControlAxisByPosY:SMC_ControlAxisByPos;
        bExecuteR: R_TRIG;
bExecuteR(CLK:=bExecute, Q=> );
IF bExecuteR.Q THEN
    LINE_Interpolation1_Q[0].piStartPos.dX:=AxisX.fActPosition;
    LINE_Interpolation1_Q[0].piStartPos.dY:=AxisY.fActPosition;
        LINE_Interpolation1_Q[0].piDestPos.dX:=XEndPosition;
        LINE_Interpolation1_Q[0].piDestPos.dY:=YEndPosition;
        LINE_Interpolation1_Q[0].dVel:=Velocity;
        LINE_Interpolation1_Q[0].dAccel:=Acceleration;
        LINE_Interpolation1_Q[0].dDecel:=Deceleration;        
        LINE_Interpolation1_Q[0].dLength:=SQRT((XEndPosition-AxisX.fActPosition)*(XEndPosition-AxisX.fActPosition)+(YEndPosition-AxisY.fActPosition)*(YEndPosition-AxisY.fActPosition));
END_IF
SMC_Interpolator1(
        bExecute:=bExecute,
        poqDataIn:=ADR(LINE_Interpolation1),
        bSlow_Stop:= ,
        bEmergency_Stop:=SMC_ControlAxisByPosX.bError OR SMC_ControlAxisByPosX.bStopIpo OR SMC_ControlAxisByPosY.bError OR SMC_ControlAxisByPosY.bStopIpo,
        bWaitAtNextStop:= ,
        dOverride:= ,
        iVelMode:= ,
        dwIpoTime:=INT_TO_DWORD(dwIpoTime),
        dLastWayPos:= ,
        bAbort:= ,
        bSingleStep:= ,
        bAcknM:= ,
        bQuick_Stop:=bQuick_Stop ,
        dQuickDeceleration:= ,
        dJerkMax:= ,
        dQuickStopJerk:= ,
        bDone=>Done,
        bBusy=>Busy,
        bError=>Error,
        wErrorID=>ErrorID,
        piSetPosition=> ,
        iStatus=> ,
        bWorking=> ,
        iActObjectSourceNo=> ,
        dVel=> ,
        vecActTangent=> ,
        iLastSwitch=> ,
        dwSwitches=> ,
        dWayPos=> ,
        wM=> );
SMC_TRAFO_Gantry2D(
        pi:=SMC_Interpolator1.piSetPosition,
        dOffsetX:= ,
        dOffsetY:= ,
        dx=> ,
        dy=> );
SMC_ControlAxisByPosX(
        Axis:=AxisX,
        iStatus:=SMC_Interpolator1.iStatus,
        bEnable:=SMC_Interpolator1.bWorking,
        bAvoidGaps:=TRUE,
        fSetPosition:=SMC_TRAFO_Gantry2D.dx,
        fGapVelocity:=10,
        fGapAcceleration:=10,
        fGapDeceleration:=10,
        fGapJerk:= ,
        bBusy=> ,
        bCommandAborted=> ,
        bError=> ,
        iErrorID=> ,
        bStopIpo=> );
SMC_ControlAxisByPosY(
        Axis:=AxisY,
        iStatus:=SMC_Interpolator1.iStatus,
        bEnable:=SMC_Interpolator1.bWorking,
        bAvoidGaps:=TRUE,
        fSetPosition:=SMC_TRAFO_Gantry2D.dy,
        fGapVelocity:=10,
        fGapAcceleration:=10,
        fGapDeceleration:=10,
        fGapJerk:= ,
        bBusy=> ,
        bCommandAborted=> ,
        bError=> ,
        iErrorID=> ,
        bStopIpo=> );
SMC_TRAFOF_Gantry2D(
        DriveX:=AxisX,
        DriveY:=AxisY,
        dOffsetX:= ,
        dOffsetY:= ,
        minX:=0,
        maxX:=100,
        minY:=0,
        maxY:=100,
        dx=> ,
        dy=> ,
        dnx=> ,
        dny=> ,
        ratio=> ,
        dnOffsetX=> ,
        dnOffsetY=> );
        


免责声明:内容为网友自行发布或者来自互联网分享或者参考文献,如果侵犯了您的权益,请联系站长 1304546267@qq.com,我们会及时删除侵权内容,感谢您的理解!
回复

使用道具 举报

排头小兵 2022-9-20 21:41:36 | 显示全部楼层
感谢分享源码,感谢为工控做出的一切.
回复

使用道具 举报

陕西雷哥 2022-9-20 21:47:31 | 显示全部楼层
支持公开源码,让更多的人一切深入学习
回复

使用道具 举报

羌帖紊 2022-9-29 08:47:57 | 显示全部楼层
呃呃呃呃呃,看了下不值
回复

使用道具 举报

平凡一生769 2022-10-11 15:49:34 | 显示全部楼层
支持公开源码,让更多的人一切深入学习
回复

使用道具 举报

他都是赌 2022-10-15 15:49:49 | 显示全部楼层
感谢分享源码,感谢为工控做出的一切.
回复

使用道具 举报

冰川2017 2022-10-15 16:01:37 | 显示全部楼层
感谢分享源码,感谢为工控做出的一切.
回复

使用道具 举报

大食咖 2022-10-15 19:52:27 | 显示全部楼层
支持公开源码,让更多的人一切深入学习
回复

使用道具 举报

ChatGPT机器人94 2022-11-14 14:33:44 | 显示全部楼层
感谢分享源码,感谢为工控做出的一切.
回复

使用道具 举报

Hayden97687 2022-11-14 15:31:35 | 显示全部楼层
感谢分享源码,感谢为工控做出的一切.
回复

使用道具 举报

shicaopai 2023-9-1 10:52:04 | 显示全部楼层
关键词:PLC,直线插补,源码,中型PLC,AxisX,AxisY,bExecute,bQuick_Stop,XEndPosition,YEndPosition,Velocity,Acceleration,Deceleration,dwIpoTime,Done,Busy,Error,ErrorID,LINE_Interpolation1,LINE_Interpolation1_Q,SMC_OUTQUEUE,SMC_GEOINFO,iObjNo,iSourceLine_No,iMoveType,piStartPos,piDestPos,dP1-dP18,vX,vY,vN,dT1,dT2,dToolRadius,dVel,dVelEnd,dVelEndStored,dAccel,dDecel,dLength,byInternMark,b3DMode,dHelpPos,iHelpID,adVelAddAx,adAccAddAx,adDecAddAx,wInternMark2,dwFeatureFlags,aAdditionalParams,SMC_Interpolator1,SMC_TRAFO_Gantry2D,SMC_TRAFOF_Gantry2D,SMC_ControlAxisByPosX,SMC_ControlAxisByPosY。

根据提供的源码可以看出,这是一个用于中型PLC的直线插补功能的源码。其中包含了输入和输出的变量,以及一些中间变量和数组。通过输入的变量来控制直线插补的执行,包括开始位置、结束位置、速度、加速度、减速度等参数。通过中间变量和数组存储和处理插补的数据。输出变量包括插补的状态和错误信息等。

源码中使用了函数块和变量来实现直线插补功能。函数块中定义了输入、输出和中间变量,并在主程序中对这些变量进行操作。其中,AxisX和AxisY分别表示X轴和Y轴的参考。bExecute表示是否执行插补运动,bQuick_Stop表示是否快速停止。XEndPosition和YEndPosition表示插补的结束位置,Velocity表示速度,Acceleration表示加速度,Deceleration表示减速度,dwIpoTime表示插补时间。

LINE_Interpolation1和LINE_Interpolation1_Q分别是SMC_OUTQUEUE和SMC_GEOINFO类型的变量和数组。SMC_OUTQUEUE用于存储插补数据的队列,SMC_GEOINFO用于存储具体的插补信息。其中,iObjNo表示对象编号,iSourceLine_No表示源行号,iMoveType表示移动类型,piStartPos和piDestPos表示起始位置和目标位置,dP1-dP18表示插补的参数,vX、vY和vN表示插补的方向向量,dT1和dT2表示插补的时间参数,dToolRadius表示工具半径,dVel、dVelEnd和dVelEndStored表示速度和结束速度,dAccel和dDecel表示加速度和减速度,dLength表示插补的长度,byInternMark表示内部标志,b3DMode表示是否为3D模式,dHelpPos和iHelpID表示帮助位置和帮助编号,adVelAddAx、adAccAddAx和adDecAddAx表示附加轴的速度、加速度和减速度,wInternMark2表示内部标志2,dwFeatureFlags表示特征标志,aAdditionalParams表示额外参数。

SMC_Interpolator1和SMC_TRAFO_Gantry2D、SMC_TRAFOF_Gantry2D、SMC_ControlAxisByPosX、SMC_ControlAxisByPosY等是使用的其他函数块和变量,用于插补运动的控制和数据处理。

在主程序中,通过bExecuteR变量并结合输入的参数对插补的起始位置、结束位置、速度等进行设置。然后调用SMC_Interpolator1函数块来执行插补运动,其中传入了相应的参数和数据。插补的过程中还可以检测到错误和停止信号,并在输出中进行相应的处理。

总结:该源码实现了中型PLC的直线插补功能,通过输入的参数对插补运动的起始位置、结束位置、速度等进行设置,通过队列和数组存储和处理插补的数据,通过调用函数块来执行插补运动,并监测错误和停止信号。
                                                                                                                                                                                                                                                 以上内容来自  AI机器人,如需继续对话,则在此回答下“点击回复” 或者 在提问时  “@机器人”!禁止 "黄赌毒及政治敏感",违者封号,严重者 提交 网警公安部门。本站不对内容真实性负责,AI机器人有时候会乱说一通……
回复

使用道具 举报

data/attachment/temp/202212/30/133743h8cd9z14sjs84kaz.png_thumb.jpg 共31章节616课时

【全科班】汇川中型PLC从0到1就业班(Codesys系统化全科班课程-600节+)-汇川PLC教程

朱子文

咨询客服
https://shicaopai-video-files.oss-cn-hangzhou.aliyuncs.com/keke_video_base/image/20240206/VMdEZiqp3BMkbBIlMRRD.png 共9章节44课时

【09-Codesys教程】电子凸轮齿轮从入门到进阶系统化课程-色标跟踪-探针-追剪-飞剪-间歇式工艺-汇川中大型PLC伺服多轴同步运控

朱子文

¥ 699.00
https://shicaopai-video-files.oss-cn-hangzhou.aliyuncs.com/keke_video_base/image/20240217/v39r666Z663eBBGKErRm.png 共30章节630课时

【全科班】汇川技术H5U从0到1就业班(系统化全科班-600节+)

张汉清

咨询客服
https://shicaopai-video-files.oss-cn-hangzhou.aliyuncs.com/keke_video_base/image/20240207/HlL5SWHry9lPVdqC8i59.png 共5章节63课时

【01-Codesys教程】ST文本从0到1,从入门到进阶-汇川中大型PLC教程

朱子文

¥ 499.00
https://shicaopai-video-files.oss-cn-hangzhou.aliyuncs.com/keke_video_base/image/20240227/AMo32PcbJeIMJBT3m8Pu.png 共4章节36课时

03 中大型ST文本结合仿真软件小项目 31节-气缸功能块封装-状态机编程思路-小设备框架

朱子文

¥ 499.00
https://shicaopai-video-files.oss-cn-hangzhou.aliyuncs.com/keke_video_base/image/20240206/Fu5pu34pPcTpu0La443P.png 共6章节52课时

【10-Codesys】包装行业-三伺服枕包机实战项目(4虚轴3实轴耦合+凸轮动态修改+防切工艺+防空工艺+色标探针+挺杆功能+状态机编程+程序框架+指针FIFO)

朱子文

¥ 899.00
https://shicaopai-video-files.oss-cn-hangzhou.aliyuncs.com/keke_video_base/image/20240206/Su1ibr3I77yl78DLBR7D.png 共4章节29课时

【12-Codesys小课】中大型PLC-PID控制器算法从入门到进阶之液位控制系统

朱子文

¥ 699.00
https://shicaopai-video-files.oss-cn-hangzhou.aliyuncs.com/keke_video_base/image/20230603/Cz3hqDmDD8qHfT3MDm4m.png 共3章节30课时

【05-Codesys教程】汇川中大型PLC单轴运动控制教程-汇川PLC教程

朱子文

¥ 399.00
https://shicaopai-video-files.oss-cn-hangzhou.aliyuncs.com/keke_video_base/image/20230603/gXpEpJ8Qb78eD5lDqlnQ.png 共3章节25课时

【06-Codesys教程】汇川中大型PLC运动控制进阶篇(多轴PTP)-编程框架与编程模板实操

朱子文

¥ 499.00
https://shicaopai-video-files.oss-cn-hangzhou.aliyuncs.com/keke_video_base/image/20240206/e39s63ppg54Q2s5H33H9.png 共3章节24课时

【08-codesys教程】汇川中大型codesys教程-多轴运控扩展篇经验分享小知识分享

朱子文

¥ 299.00
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

data/attachment/temp/202212/30/133743h8cd9z14sjs84kaz.png_thumb.jpg 共31章节616课时

【全科班】汇川中型PLC从0到1就业班(Codesys系统化全科班课程-600节+)-汇川PLC教程

朱子文

咨询客服
https://shicaopai-video-files.oss-cn-hangzhou.aliyuncs.com/keke_video_base/image/20240206/VMdEZiqp3BMkbBIlMRRD.png 共9章节44课时

【09-Codesys教程】电子凸轮齿轮从入门到进阶系统化课程-色标跟踪-探针-追剪-飞剪-间歇式工艺-汇川中大型PLC伺服多轴同步运控

朱子文

¥ 699.00
https://shicaopai-video-files.oss-cn-hangzhou.aliyuncs.com/keke_video_base/image/20240217/v39r666Z663eBBGKErRm.png 共30章节630课时

【全科班】汇川技术H5U从0到1就业班(系统化全科班-600节+)

张汉清

咨询客服
https://shicaopai-video-files.oss-cn-hangzhou.aliyuncs.com/keke_video_base/image/20240207/HlL5SWHry9lPVdqC8i59.png 共5章节63课时

【01-Codesys教程】ST文本从0到1,从入门到进阶-汇川中大型PLC教程

朱子文

¥ 499.00
https://shicaopai-video-files.oss-cn-hangzhou.aliyuncs.com/keke_video_base/image/20240227/AMo32PcbJeIMJBT3m8Pu.png 共4章节36课时

03 中大型ST文本结合仿真软件小项目 31节-气缸功能块封装-状态机编程思路-小设备框架

朱子文

¥ 499.00
https://shicaopai-video-files.oss-cn-hangzhou.aliyuncs.com/keke_video_base/image/20240206/Fu5pu34pPcTpu0La443P.png 共6章节52课时

【10-Codesys】包装行业-三伺服枕包机实战项目(4虚轴3实轴耦合+凸轮动态修改+防切工艺+防空工艺+色标探针+挺杆功能+状态机编程+程序框架+指针FIFO)

朱子文

¥ 899.00
https://shicaopai-video-files.oss-cn-hangzhou.aliyuncs.com/keke_video_base/image/20240206/Su1ibr3I77yl78DLBR7D.png 共4章节29课时

【12-Codesys小课】中大型PLC-PID控制器算法从入门到进阶之液位控制系统

朱子文

¥ 699.00
https://shicaopai-video-files.oss-cn-hangzhou.aliyuncs.com/keke_video_base/image/20230603/Cz3hqDmDD8qHfT3MDm4m.png 共3章节30课时

【05-Codesys教程】汇川中大型PLC单轴运动控制教程-汇川PLC教程

朱子文

¥ 399.00
https://shicaopai-video-files.oss-cn-hangzhou.aliyuncs.com/keke_video_base/image/20230603/gXpEpJ8Qb78eD5lDqlnQ.png 共3章节25课时

【06-Codesys教程】汇川中大型PLC运动控制进阶篇(多轴PTP)-编程框架与编程模板实操

朱子文

¥ 499.00
https://shicaopai-video-files.oss-cn-hangzhou.aliyuncs.com/keke_video_base/image/20240206/e39s63ppg54Q2s5H33H9.png 共3章节24课时

【08-codesys教程】汇川中大型codesys教程-多轴运控扩展篇经验分享小知识分享

朱子文

¥ 299.00

到"π³ 实操派",学PLC就是快!汇川PLC及Codesys培训

项目实战 手把手教学 微信&电话 15850116008
超600节系统化课程,汇川优秀自动化讲师亲授!学一门Codesys,玩800家PLC仅剩少量名额
点击免费试听

到实操派,学PLC就是快!

扫码领取工控文库VIP

钻石VIP先到先得

服务电话 & 微信:9:00-22:00

15850116008

苏州实操派科技有限公司

公司地址:江苏省苏州市吴中区越溪街道天鹅荡路5号31B13

Copyright © 苏州实操派科技有限公司 2022 到实操派,学PLC就是快!工业自动化业务培训适用人群:成人 ( 苏ICP备2022021576号-3 )

公司地址:江苏省苏州市吴中区越溪街道天鹅荡路5号31B13

返回顶部