? ?
?
首页 上一页 1 2 下一页 尾页

?【放干货】三菱Q+JET伺服样例 ?点击:2092 | 回复:23

?

丶丶丶鱼

    ?
  • 精华:1帖
  • 求助:0帖
  • 帖子:3帖 | 33回
  • 年度积分:57
  • 历史总积分:535
  • 注册:2022-10-06
发表于:2022-10-06 17:44:32
楼主

之前分享了5U的结构化编程带了JEC伺服的封装FB,这次是项目实例中的一部分,还是CClink IE FB协议PLC最直接控制伺服,刚调试完成,所有功能都OK

三菱Q系列PLC,伺服驱动器使用的JET伺服,本来打算还是用JEC的,结果没货

和JEC相比,ControlWord和StatusWord中的数据有变更,PDO映射中的顺序有变化,其次是Jog功能的实现方式有少许变化其他差距不大,值得一提的是GW2不支持结构体中嵌套结构体,导致我的控制字和状态字的控制比较麻烦,需要在功能能块中,做中转

BSET( ControlWord.bSwitchOn ,K0,MapOut.ControlWord);

BRST(NOT ControlWord.bSwitchOn ,K0, MapOut.ControlWord );

TEST( TRUE , MapIn.StatusWord, K0 ,StatusWord.bReady );

使用 bSet bRst指令置位字地址的位

使用TEST指令读取字地址中的位

有积分下载附件查看驱动器设定和程序原文件

没有积分的看手册和程序(没有结构体信息)

程序如下

ENO:=EN;

(********************************ControlWord************************************)

BSET( ControlWord.bSwitchOn ,K0,MapOut.ControlWord);

BRST(NOT ControlWord.bSwitchOn ,K0, MapOut.ControlWord );

BSET( ControlWord.bEnableVolatge ,K1, MapOut.ControlWord  );

BRST(NOT ControlWord.bEnableVolatge , K1, MapOut.ControlWord  );

BSET( ControlWord.bQuickStop ,K2, MapOut.ControlWord );

BRST(NOT ControlWord.bQuickStop ,K2, MapOut.ControlWord  );

BSET( ControlWord.bEnableOpreation , K3,MapOut.ControlWord  );

BRST(NOT ControlWord.bEnableOpreation ,K3, MapOut.ControlWord   );

BSET( ControlWord.Bit04,K4, MapOut.ControlWord   );

BRST(NOT ControlWord.Bit04, K4,MapOut.ControlWord  );

BSET( ControlWord.Bit05, K5,MapOut.ControlWord   );

BRST(NOT ControlWord.Bit05, K5,MapOut.ControlWord   );

BSET( ControlWord.Bit06,K6, MapOut.ControlWord   );

BRST(NOT ControlWord.Bit06,K6, MapOut.ControlWord  );

BSET( ControlWord.bFaultReset ,K7, MapOut.ControlWord   );

BRST(NOT ControlWord.bFaultReset ,K7, MapOut.ControlWord);

BSET( ControlWord.bHalt,K8, MapOut.ControlWord);

BRST(NOT ControlWord.bHalt,K8, MapOut.ControlWord   );

BSET( ControlWord.Bit09,K9, MapOut.ControlWord  );

BRST(NOT ControlWord.Bit09,K9, MapOut.ControlWord);

BSET( ControlWord.Bit10, K10,MapOut.ControlWord   );

BRST(NOT ControlWord.Bit10,K10, MapOut.ControlWord   ); 

BSET( ControlWord.Bit11,K11, MapOut.ControlWord   );

BRST(NOT ControlWord.Bit11,K11, MapOut.ControlWord   );

BSET( ControlWord.Bit12,K12, MapOut.ControlWord  );

BRST(NOT ControlWord.Bit12,K12, MapOut.ControlWord  );

BSET( ControlWord.Bit13,K13, MapOut.ControlWord  );

BRST(NOT ControlWord.Bit13,K13, MapOut.ControlWord);

BSET( ControlWord.Bit14,K14, MapOut.ControlWord  );

BRST(NOT ControlWord.Bit14,K14, MapOut.ControlWord   ); 

BSET( ControlWord.Bit15,K15, MapOut.ControlWord   );

BRST(NOT ControlWord.Bit15,K15, MapOut.ControlWord   );

(********************************StatusWord************************************)

TEST( TRUE , MapIn.StatusWord, K0 ,StatusWord.bReady );

TEST( TRUE , MapIn.StatusWord, K1 ,StatusWord.bSwitchedOn);

TEST( TRUE , MapIn.StatusWord, K2 ,StatusWord.bOperationEnabled);

TEST( TRUE , MapIn.StatusWord, K3 ,StatusWord.bFault);

TEST( TRUE , MapIn.StatusWord, K4 ,StatusWord.bVoltageEnabled);

TEST( TRUE , MapIn.StatusWord, K5 ,StatusWord.bQuickStop);

TEST( TRUE , MapIn.StatusWord, K6 ,StatusWord.bSwitchOnDisabled);

TEST( TRUE , MapIn.StatusWord, K7 ,StatusWord.bWarning);

TEST( TRUE , MapIn.StatusWord, K8 ,StatusWord.Bit08);

TEST( TRUE , MapIn.StatusWord, K9 ,StatusWord.Bit09);

TEST( TRUE , MapIn.StatusWord, K10 ,StatusWord.bTargetReached);

TEST( TRUE , MapIn.StatusWord, K11 ,StatusWord.bInternalLimitActive);

TEST( TRUE , MapIn.StatusWord, K12 ,StatusWord.Bit12);

TEST( TRUE , MapIn.StatusWord, K13 ,StatusWord.Bit13);

TEST( TRUE , MapIn.StatusWord, K14 ,StatusWord.Bit14);

TEST( TRUE , MapIn.StatusWord, K15 ,StatusWord.Bit15);

(********************************使能************************************)

ControlWord.bQuickStop:=TRUE;

ControlWord.bEnableVolatge:=TRUE;

ControlWord.bSwitchOn:=bEnable AND StatusWord.bVoltageEnabled AND StatusWord.bQuickStop AND StatusWord.bReady AND NOT StatusWord.bSwitchOnDisabled;

ControlWord.bEnableOpreation:=StatusWord.bSwitchedOn AND NOT Operation.bHMI_ServoOn AND bEnable;

S_MotionOperation:=StatusWord.bOperationEnabled;

Status.bServoOn:=S_MotionOperation;

bBreak:=(S_MotionOperation AND NOT Operation.bHMI_Break) OR (NOT S_MotionOperation AND Operation.bHMI_Break);

(*刹车自动打开*) 

IF NOT bManual THEN 

Operation.bHMI_Break:=FALSE;

Operation.bHMI_ServoOn:=FALSE;

END_IF;


(******************************公共**********************************)

(*单位转换*)

IF Parameter.nEncoderResolution<>0.0 AND Parameter.nPitch<>0.0 THEN 

Status.nActPos:=DINT_TO_REAL(MapIn.ActPos)/Parameter.nEncoderResolution*Parameter.nPitch;

Status.nActVel:=DINT_TO_REAL(MapIn.ActVel)/6000.0*Parameter.nPitch;

MapOut.TargetPos:=REAL_TO_DINT(nTargetPos/Parameter.nPitch*Parameter.nEncoderResolution);

MapOut.ProfileVel:=REAL_TO_DINT(nTargetVel/Parameter.nPitch*6000.0);

MapOut.TargetVel:=REAL_TO_DINT(nTargetVel/Parameter.nPitch*6000.0);

END_IF;

(*加减速度*)

MapOut.nACC:=Parameter.nACC;

MapOut.nDEC:=Parameter.nDEC;


(*模式切换*)

IF NOT bEnable THEN

MapOut.ModesOfOperation:=0;

END_IF;

(********************************JOG*************************************)

(*使用PV模式(Mode OF Operation=3)实现JOG功能

//ControlWord.Bit08在PV模式为下 0为实施定位、1为电机停止

//ControlWord.Bit15在PV模式下为执行定位*)

IF Operation.bHMI_JogN OR Operation.bHMI_JogP THEN

MapOut.ModesOfOperation:=3;

END_IF;

IF MapIn.ModesOfOperationDisplay=3 THEN 

IF Operation.bHMI_Jogp OR Operation.bHMI_JogN THEN 

IF Operation.bHMI_Jogp THEN 

nTargetVel:=Parameter.nJogVel;

END_IF;

IF Operation.bHMI_JogN THEN 

nTargetVel:=-Parameter.nJogVel;

END_IF;

ELSE

nTargetVel:=0.0;

END_IF;

ControlWord.Bit15:=(Operation.bHMI_JogN OR Operation.bHMI_JogP) AND S_MotionOperation;

END_IF;


(******************************原点搜索**********************************)

(*原点复归方式为:位置设定型,使用HM模式(Mode OF Operation=6)

//ControlWord.Bit04在HM模式下为原点复归

//StatusWord.Bit12在HM模式下为原点复归完成

//StatusWord.Bit13在HM模式下为原点复归报警 *)


(*切换HM模式*)

IF Operation.bHMI_Orgin THEN

MapOut.ModesOfOperation:=6;

END_IF;

IF MapIn.ModesOfOperationDisplay=6 THEN 

(*原点复归执行位*)

ControlWord.Bit04:=Operation.bHMI_Orgin ;

END_IF;

(*原点复归完成*)

Status.bHomed:=StatusWord.Bit12;

(********************************定位执行************************************)

(*使用PP模式(Mode OF Operation=1)实现定位功能

//ControlWord.Bit04在PP模式为下为定位执行

//ControlWord.Bit06在PP模式为下 0为绝对定位、1为相对定位模式

//ControlWord.Bit08在PP模式为下 0为实施定位、1为电机停止

//StatusWord.Bit10在PP模式为下为定位完成

//StatusWord.Bit12在PP模式为下为定位中

//StatusWord.Bit13在PP模式为下为位置偏差报警*)

(*PP模式切换*)

IF bPosExcute THEN

MapOut.ModesOfOperation:=1;

END_IF;


(*定位执行*)

IF MapIn.ModesOfOperationDisplay=1 THEN 

(*相对模式*)

ControlWord.Bit06:=Operation.bRelative;

ControlWord.Bit04:=bPosExcute AND S_MotionOperation AND Operation.bPermit;

END_IF;

(*手自动定位执行16点位*)

bPosExcute:=((bManual AND (Operation.bHMI_PosExecute[0] OR Operation.bHMI_PosExecute[1] OR Operation.bHMI_PosExecute[2] OR 

                           Operation.bHMI_PosExecute[3] OR Operation.bHMI_PosExecute[4]OR Operation.bHMI_PosExecute[5]OR

                   Operation.bHMI_PosExecute[6] OR Operation.bHMI_PosExecute[7] OR Operation.bHMI_PosExecute[8] OR

               Operation.bHMI_PosExecute[9] OR Operation.bHMI_PosExecute[10] OR Operation.bHMI_PosExecute[11] OR 

               Operation.bHMI_PosExecute[12] OR Operation.bHMI_PosExecute[13] OR Operation.bHMI_PosExecute[14] OR 

               Operation.bHMI_PosExecute[15] ))OR 

                          (Operation.bAuto_PosExecute[0] OR Operation.bAuto_PosExecute[1] OR Operation.bAuto_PosExecute[2] OR

   Operation.bAuto_PosExecute[3] OR Operation.bAuto_PosExecute[4] OR Operation.bAuto_PosExecute[5] OR

   Operation.bAuto_PosExecute[6] OR Operation.bAuto_PosExecute[7] OR Operation.bAuto_PosExecute[8] OR

   Operation.bAuto_PosExecute[9] OR Operation.bAuto_PosExecute[10] OR Operation.bAuto_PosExecute[11] OR

   Operation.bAuto_PosExecute[12] OR Operation.bAuto_PosExecute[13] OR Operation.bAuto_PosExecute[14] OR

   Operation.bAuto_PosExecute[15]))

                           AND Operation.bPermit AND  S_MotionOperation;



(*定位参数调用&定位完成判定*)

FOR  nNumber := 0  TO  15   DO

(*定位参数设定*)

IF Operation.bHMI_SetPos[nNumber] THEN 

Parameter.nPOS[nNumber]:=Status.nActPos;

END_IF;

(*定位数据上下限*)

nUpLimit[nNumber]:=Parameter.nPOS[nNumber]+Parameter.nDeviation;

nLowLimit[nNumber]:=Parameter.nPOS[nNumber]-Parameter.nDeviation;

(*定位参数调用*)

IF Operation.bAuto_PosExecute[nNumber] OR Operation.bHMI_PosExecute[nNumber]  THEN

IF bManual THEN 

nTargetVel:=Parameter.nManualVel;

ELSE

nTargetVel:=Parameter.nAutoVel[nNumber];

END_IF;

nTargetPos:=Parameter.nPOS[nNumber];

END_IF;

(*定位完成判定*)

IF nUpLimit[nNumber]>=Status.nActPos AND nLowLimit[nNumber]<=Status.nActPos THEN

Status.bDone[nNumber]:=TRUE;

ELSE

Status.bDone[nNumber]:=FALSE;

END_IF;

END_FOR;


(******************************报警&复位**********************************)


(*复位*)

ControlWord.bFaultReset:=bReset OR Operation.bHMI_Reset;

(*报警&报警代码*)

Status.nErrorID:=MapIn.CurrentAlarm;

Status.bError:=StatusWord.bWarning OR StatusWord.bFault;

(*********************************状态************************************)

Status.bBusy:=StatusWord.Bit12;

IF Status.bError THEN 

Status.nStatus:=0;

ELSE

IF NOT StatusWord.bOperationEnabled THEN 

Status.nStatus:=1;

ELSIF Status.bBusy THEN 

Status.nStatus:=2;

ELSE 

Status.nStatus:=3;

END_IF;

END_IF;

正在下载,请等待……
下载附件需1积分!

?
?

丶丶丶鱼

  • 精华:1帖
  • 求助:0帖
  • 帖子:3帖 | 33回
  • 年度积分:253
  • 历史总积分:731
  • 注册:2022-10-06
发表于:2022-10-06 17:49:35
1楼

功能块内部包含点位示教功能,16个定位点,原点搜索,Jog,使能,刹车控制以及伺服状态

如果想扩充点位,直接改数组和FB中的For循环的数值

kstao

  • 精华:0帖
  • 求助:0帖
  • 帖子:1帖 | 243回
  • 年度积分:0
  • 历史总积分:53
  • 注册:2022-10-06
发表于:2022-10-06 20:23:23
2楼

这么优秀的资料真是难得,JET后面将是主流

419314033pan

  • 精华:0帖
  • 求助:1帖
  • 帖子:2帖 | 215回
  • 年度积分:0
  • 历史总积分:2748
  • 注册:2022-10-06
发表于:2022-10-06 08:11:25
3楼

"丶丶丶鱼" 的回复,发表在1楼
        对内容: 【功能块内部包含点位示教功能,16个定位点,原点搜索,Jog,使能,刹车控制以及伺服状态如果想扩充点位,直接改数组和FB中的For循环的数值...】进行回复:

        -----------------------------------------------------------------

优秀的资料


fighting2021

  • [管理员]
  • 精华:4帖
  • 求助:3帖
  • 帖子:870帖 | 6465回
  • 年度积分:1071
  • 历史总积分:16078
  • 注册:2022-10-06
发表于:2022-10-06 09:18:08
4楼

加精

啊敛叔叔丶

  • 精华:0帖
  • 求助:3帖
  • 帖子:4帖 | 33回
  • 年度积分:0
  • 历史总积分:92
  • 注册:2022-10-06
发表于:2022-10-06 13:00:26
5楼

感谢楼主分享,学习了

Lonely_99

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 2407回
  • 年度积分:0
  • 历史总积分:132
  • 注册:2022-10-06
发表于:2022-10-06 16:43:09
6楼

这么优秀的资料真是难得,JET后面将是主流

yangyu

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 58回
  • 年度积分:1000
  • 历史总积分:1052
  • 注册:2022-10-06
发表于:2022-10-06 20:33:48
7楼

感谢楼主分享,学习了

这不是特伦特

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 534回
  • 年度积分:0
  • 历史总积分:971
  • 注册:2022-10-06
发表于:2022-10-06 09:30:29
8楼

感谢楼主分享

黄鼠狼11

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 1回
  • 年度积分:46
  • 历史总积分:158
  • 注册:2022-10-06
发表于:2022-10-06 15:55:46
9楼

支持支持http://www.0731auto.net.visionld.com/

NikePeng01

  • [管理员]
  • 精华:0帖
  • 求助:0帖
  • 帖子:4帖 | 566回
  • 年度积分:560
  • 历史总积分:13370
  • 注册:2022-10-06
发表于:2022-10-06 22:15:56
10楼

感谢楼主分享

taotaozhang

  • 精华:0帖
  • 求助:0帖
  • 帖子:1帖 | 37回
  • 年度积分:0
  • 历史总积分:52
  • 注册:2022-10-06
发表于:2022-10-06 22:57:27
11楼

感谢分享

Gaoqun1980

  • 精华:0帖
  • 求助:1帖
  • 帖子:51帖 | 602回
  • 年度积分:97
  • 历史总积分:1521
  • 注册:2022-10-06
发表于:2022-10-06 15:03:52
12楼

大佬,现在JET支持CCLINK IE FB了?

丶丶丶鱼

  • 精华:1帖
  • 求助:0帖
  • 帖子:3帖 | 33回
  • 年度积分:253
  • 历史总积分:731
  • 注册:2022-10-06
发表于:2022-10-06 17:45:49
13楼

"Gaoqun1980" 的回复,发表在12楼
        对内容: 【大佬,现在JET支持CCLINK IE FB了?】进行回复:

        -----------------------------------------------------------------


支持的

xsp998

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 74回
  • 年度积分:50
  • 历史总积分:111
  • 注册:2022-10-06
发表于:2022-10-06 14:21:35
14楼

中国==越南 门对门进出口报关报检180-2696-8431

林009

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 53回
  • 年度积分:0
  • 历史总积分:91
  • 注册:2022-10-06
发表于:2022-10-06 16:30:07
15楼

感谢大佬分享

silky_56

  • 精华:0帖
  • 求助:0帖
  • 帖子:2帖 | 1568回
  • 年度积分:0
  • 历史总积分:53
  • 注册:2022-10-06
发表于:2022-10-06 18:38:41
16楼

感谢楼主分享!

xuelong628

  • 精华:0帖
  • 求助:0帖
  • 帖子:2帖 | 48回
  • 年度积分:87
  • 历史总积分:143
  • 注册:2022-10-06
发表于:2022-10-06 11:45:43
17楼

谢谢分享

xuelong628

  • 精华:0帖
  • 求助:0帖
  • 帖子:2帖 | 48回
  • 年度积分:87
  • 历史总积分:143
  • 注册:2022-10-06
发表于:2022-10-06 11:45:55
18楼

谢谢分享

请叫我王老湿

  • [版主]
  • 精华:0帖
  • 求助:0帖
  • 帖子:613帖 | 7483回
  • 年度积分:31
  • 历史总积分:289759
  • 注册:2022-10-06
发表于:2022-10-06 10:09:32
19楼

很不错的资料分享,欢迎楼主常分享干货

楓伤

  • 精华:0帖
  • 求助:0帖
  • 帖子:2帖 | 27回
  • 年度积分:1
  • 历史总积分:79
  • 注册:2022-10-06
发表于:2022-10-06 11:05:11
20楼

感谢大佬分享,学习学习

?
相关主题

官方公众号

智造工程师
    首页 上一页 1 2 下一页 尾页
      
    ?
    ?
    华体会vip华体会 BOB体育官方平台 S12英雄联盟下注APP推荐 华体会体育官网网站 英雄联盟S12哪里可以竞猜
    BET365体育平台网址 在哪可以买电竞外围 亚博AG真人平台 靠谱买lol比赛的网站 线上买球官网址是多少
    在哪找百家乐正规官网网站 S12决赛推荐投注网址有哪些 英雄联盟比赛投注 英雄联盟S12外围在哪赌 英雄联盟说S12竞猜网址
    英雄联盟S12官方竞猜平台 世界杯网上买球在哪个网站 什么网站能投注S12决赛 网上怎么买球赛 英雄联盟S12竞猜现金