程序员开发实例大全宝库

网站首页 > 编程文章 正文

PLC的标准ST语言编程之运动控制部分

zazugpt 2024-09-01 07:40:14 编程文章 39 ℃ 0 评论

这次我们讲一下PLC控制里面比较重要的一点,伺服轴控制!

用ST语言给大家举例说明一下,通过面向对象编程,把伺服轴当作是一个对象,而轴的使能、绝对运动和相对运动是轴的一个能力。下面示例程序中定义结构化的状态信息(可用作声明),HMI和功能块。

伺服轴的信息结构体

把伺服的一些状态信息设置在ST_states结构体中,可以让其他子程序用这个结构体声明新结构。其它子程序使用这些数据不需要重新再一个一个写这些信息数据,又可以当成局部变量使用,数据互不干涉。

MC功能块的再次封装

运动控制包括了4个功能块,分别是Axis_IO,Axis_PTP_CoE,FB_Home_ByLimit和ServoDriver_DI。

ServoDriver_DI:获取伺服驱动上的原点信号,正向限位和负向限位

Axis_IO: 是对ServoDriver_DI继承和丰富,汇总了运动控制用到的所有硬件输入信号

FB_Home_ByLimit:轴在任意位置回零功能块,无需考虑回零方向问题。该功能块先负方向找原点,如果碰到负极限则改为正方向找原点

Axis_PTP_CoE:里面封装了Axis轴、MC功能块、Action动作和IO状态。该功能块包括了12个Action,每个Action就相当于NC轴的一个能力。


Axis_PTP_COE.ahome:实现原点搜索的功能

Axis_PTP_COE.aIO:获取原点信号,正向限位和负向限位,并且把伺服驱动和NC报错信息发布给状态机中。

Axis_PTP_COE.aJogB:反向点动

Axis_PTP_COE.aJogF:正向点动

Axis_PTP_COE.aManualJOG:外部硬件控制伺服点动

Axis_PTP_COE.aMoveAbs:绝对运动

Axis_PTP_COE.aMoveOff:复位所有功能块执行标志位及输出

Axis_PTP_COE.aMoveRel:相对运动

Axis_PTP_COE.aMoveVel:速度控制

Axis_PTP_COE.aPower:伺服轴的使能

Axis_PTP_COE.aReset:刷新IO,读取伺服轴的状态,如果有伺服报错,进行错误复位

Axis_PTP_COE.aStop:伺服轴的停止


HMI模板制作

运动控制使用的模板是PH_JOGLINE,该模板中包括了伺服的正反点动按钮,伺服轴名称,伺服轴运动的距离,还有一些伺服的状态位(使能完成的标志位,寻参完成的标志位,正向限位,负向限位,原点信号和NC的报错信息)和报错复位按钮。

运动控制模板的使用


第一步:程序中声明轴变量

第二步:编写程序

axis1.sName:="皮带轴"; //对伺服轴命名,用于区分

axis1.aReset(); //调用相关Action,刷新IO,读取伺服轴的状态

axis1.aPower(); //调用相关Action,对伺服轴使能

IF axis1.Ref.Status.ControlLoopClosed //判断是否完成使能

THEN

axis1.aManualJOG(Velo:=100 , ); //调用相关Action,实现点动功能Velo:=100

END_IF

HMI模板的调用


通过HMI中的Frame控件来调用HMI模板

调用Frame控件之后,进入Frame属性里面设置相关参数:

1) 设置调用HMI控件,选择congfigure,添加PH_JOGLINE_1作为模板。

2) 通过绑定变量Main.axis1,实现控制器上的程序变量和HMI上的控件的对应。


创建NC轴,链接控制器上的轴变量

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表