课程中心
HOME
课程中心
正文内容
施耐德伺服 plc编程 PLC高手必备技能,施耐德PLC与变频器的CANopen通讯程序编写
发布时间 : 2025-02-03
作者 : 小编
访问数量 : 23
扫码分享至微信

PLC高手必备技能,施耐德PLC与变频器的CANopen通讯程序编写

在前文 PLC高级应用技术,PLC与变频器的CANopen总线通讯控制之线路介绍,PLC高级应用,PLC与变频器总线(CANopen)通讯之硬件组态篇中分别向大家介绍了PLC和变频器的CANopen通讯的线路知识和硬件组态,当我们完成了上述两项任务之后,就进入了正题,通讯程序的编写,今天就给大家如何写程序。接上两篇,仍然以施耐德CODESYS平台的PLC编程软件Somachine 为例讲解。变频器采用施耐德ATV71。

当我们把硬件组态程序下载到PLC中之后,PLC会主动寻找从站,建立通讯连接,如果线路没有问题,从站的参数设置正确,PLC与从站之间的总线通讯会自动完成,PLC会给出通讯正常的信号,一般是个布尔量。施耐德CODESYS平台的PLC处理起来比较麻烦,需要利用几个功能块把它读出来,在这里不再展开讨论。一般我们都把这个状态做在触摸屏上,作为监控。但是,如果我们只是想看到这个状态,不做在触摸屏上,是可以在编程软件中直接看到的。

图一

如 图一所示,这软件中的硬件树,注意看红色的三角形,表示通讯是失败的,因为小编只是打开了仿真功能,并没有连接实际的从站。如果这个三角形是绿色的,就表示通讯正常了。在施耐德的Somachine软件中,所有的硬件组态都是采用此种形式来告诉编程开发人员,硬件是否正常。

小编曾经说过,欧美系PLC和日韩系PLC是不同的,欧美系PLC注重功能块的概念,不存在所谓的指令,因此,对于从站的读取和写入,都是通过功能块来完成的。由于是同一品牌的通讯,官方都已经开发好了专门的功能块,也就是符合PLCopen标准的功能块,我们直接调用接可以了。

1 变频器使能

对于变频器的使能采用 MC_POWER_ATV 功能块。其中前面的MC_POWER是标准的PLCopen功能块,后面的ATV是施耐德官方在开发此功能块时加上的后缀,用来区分不同的从站,ATV是施耐德变频器的型号代码。同样,不同系列的变频器和伺服驱动器时通过后缀来区分的。

图二

如图二所示,这是对两个从站的使能操作,注意看红色圆圈部分,这是对不同从站的区分,功能块中输入引脚Axis表示我们要操作的从站轴号,在欧美系PLC中,几乎我们能操作的对象都是可以定义成变量的,同样,对于总线通讯的不同从站,也是按不同变量处理。因此,此处我们要填写我们在硬件组态中定义的轴名称。

当变量A 和变量B 分别为高电平时,就会对变频器进行使能操作。 输出引脚STATUS 和 ERROR是表示使能状态的,同样,我们也可以引入变量对此进行处理。

2 速度控制

变频器主要就是进行速度控制的,同样,它也是有相对应的功能块来完成的。

图三

如图三所示,通过MC_MOVEVELOCITY_ATV 来进行速度控制,大家可以看到,它是可以和使能模块共享轴号这个输入引脚的,这就是使用CFC编程语言的好处。当变量E_Fan为TRUE的时候,变频器就会以变量Vel_Fan定义的速度运行。

3 变频器的停止

变频器的停止和我们使用硬接线的停止是不同的,必须使用专门的功能块

图四

如图四所示,变频器需要使用MC_STOP_ATV 功能块来停止,当变量S_Fan为TRUE的时候,变频器就会停止。

以上,就是通过总线对变频器进行控制时基本的程序的编写,大家可以看到,采用CFC语言编写是非常便捷的,当然,日系PLC采用梯形图就可能不会使用此模式了,但可移植性大大降低。当然,控制变频器不止这三个功能块,还有很多,大家如果使用施耐德PLC可以参考相关手册,如果使用的是欧美系PLC,其套路是差不多的。

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

这次我们讲一下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的报错信息)和报错复位按钮。

hmi

运动控制模板的使用

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

轴变量

第二步:编写程序

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轴,链接控制器上的轴变量

NC轴

相关问答

施耐德lxm26伺服驱动器参数设置?

施耐德LXM26是一款伺服驱动器,用于控制伺服电机的运动。以下是一些常见的参数设置选项,但请注意确保在进行参数设置之前参考施耐德的官方文档和用户手册,以获...

施耐德伺服控制器怎么用继电器控制?

施耐德伺服控制器可以通过继电器进行控制,具体步骤如下:1.连接伺服控制器和继电器:将伺服控制器的数字输出信号线连接到继电器的控制端,以控制继电器的开关...

施耐德伺服控制器的故障代码?

1.AL001:过电流,主回路电流值超越电机瞬间最大电流值1.5倍时动作。2.AL002:过电压,主回路电压值高于规格值时动作。3.AL003:低电压,主回路电压值低于规...

plc编程谁家的好用?

很高兴回答的问题!就市场占有率来看,西门子最大,其次是三菱、欧姆龙。具体谁家好用,这个不能一概而论,还取决于编程人员对其使用的熟练程度。西门子PLC又...这...

施耐德140aci04000上显示f什么意思?

红色F灯,就是fault意思就是模块有故障,这个故障可能是模块硬件问题,可能是外部信号有问题,还有就是模块配置错误,就是下载到PLC里的配置的模块位置与实际位...

施耐德伺服器报al011是啥意思?

AL011是施耐德伺服器的故障代码之一,通常表示伺服器内部温度过高或者冷却系统出现故障。具体来说,AL011故障代码通常是由以下原因引起的:1.伺服器内部温度过...

施耐德伺服al006是什么意思?

施耐德伺服al006是过载的意思。施耐德伺服al006是过载的意思。

施耐德伺服驱动器al026报警?

施耐德伺服驱动器出现al026故障报警代码表示含义为编码器内部数据可靠性异常告警,出现这种故障报警现象时,表示编码器内部数据连续三次出现异常,此时检查与处...

施耐德伺服驱动器报警ln701?

施耐德伺服驱动器报警LN701通常表示电机过载或过热。可能的原因包括负载过重、电机故障、电源电压异常等。解决方法包括检查负载是否正常、检查电机是否损坏、...

施耐德伺服驱动器lxm23du07m3x报警al-006什么意思?

下图是施耐德伺服产品故障代码,如有其他问题可依据代码找下图是施耐德伺服产品故障代码,如有其他问题可依据代码找

 emily in paris  佳能650d怎么样 
王经理: 180-0000-0000(微信同号)
10086@qq.com
北京海淀区西三旗街道国际大厦08A座
©2025  上海羊羽卓进出口贸易有限公司  版权所有.All Rights Reserved.  |  程序由Z-BlogPHP强力驱动
网站首页
电话咨询
微信号

QQ

在线咨询真诚为您提供专业解答服务

热线

188-0000-0000
专属服务热线

微信

二维码扫一扫微信交流
顶部