在项目的文件夹PMAC Script Language->文件夹Global Includes下创建一个名为motor para.pmh(文件名自己定义)的文件。
打开motor para.pmh文件,并写入电机配置参数。
Motor[1].PosSf=16/8388608 //电动速度 mm/ms
/*Motor[1].PosSf=A/B
功能:设定用户单位(内部速度环比例因子)
A:丝杆的导程
B:电机编码器精度 17位编码器:2^17=131,072 23位编码器:2^23=8,388,608
*/
Motor[1].Pos2Sf=Motor[1].PosSf //(外部速度环比例因子)
Motor[1].CaptureMode=1 //搜原点模式:使用io信号
/*Motor[1].CaptureMode
功能:触发回零动作的捕获模式
0. 硬件触发,硬件捕获
1. 硬件触发,软件捕获
2. 错误触发,软件捕获
3.硬件触发,时间辅助软件捕获
*/
Motor[1].pCaptFlag=Slave_0_60FD_0_Digitalinputs.a //原点信号所在地址
Motor[1].CaptFlagBit=2 //原点信号bit号
Motor[1].HomeVel=-0.01 //搜原点速度mm/s,负表示向负方向搜原点
Motor[1].HomeOffset=10 //在原点信号位置的偏移量
Motor[1].pLimits=Slave_0_60FD_0_Digitalinputs.a //硬限位所在地址
Motor[1].LimitBits=64 //限位信号bit号,减去64为负限位bit,下一个为正限位
Motor[1].MaxSpeed=0.1 //最大速度mm/ms
Motor[1].JogSpeed=0.01 //点动速度
Motor[1].FatalFeLimit=10 //最大跟随误差 mm
Motor[1].MaxPos=195 //软限位最大值
Motor[1].MinPos=-253 //软限位最小值
Motor[1].JogTa=200 //点动加速度时间
Motor[1].JogTs=100 //点动s型曲线时间
原点所在地址在DI输入状态中,索引位60FD,这个是默认不变的,原点bit号为2,下图为欧姆龙电机60FD bit定义说明。限位信号bit可查看pmac用户手册,这个参数需要详细看一下。
在项目的文件夹PMAC Script Language->文件夹Global Includes下创建一个名为virtual motor para.pmh(文件名自己定义)的文件。参数的具体的说明可查看用户手册。PMAC用户手册提取:njve
Motor[6].ServoCtrl=1 //激活电机的伺服算法
Motor[6].pDac=Sys.Idata[6].a //与可封装的[6].pEnc相同
EncTable[6].type=1 // 32位寄存器读取
EncTable[6].pEnc=Sys.idata[6].a //与可封装的[6].pEnc相同
EncTable[6].pEnc1=Sys.pushm //伪读(未使用)
EncTable[6].index1=0 //无源数据右移
EncTable[6].index2=0 //源数据无左移
EncTable[6].index3=0 //无加速限制
EncTable[6].index4=1 / /单个集成
EncTable[6].PrevDelta=0 //整合前无偏差
EncTable[6].MaxDelta=0 //无速度限制
EncTable[6].ScaleFactor=1/65536 // 32位-> 16位
Motor[6].pEnc=EncTable[6].a //位置环反馈源
Motor[6].pEnc2=EncTable[6].a //速度环反馈源
Motor[6].pLimits=0 //禁用超行程限制输入
Motor[6].pAmpEnable=0 //如果信道连接到放大器,可能需要禁止放大器启动输出
Motor[6].pAmpFault=0 //如果信道连接到放大器,可能需要禁止放大器故障输出
Motor[6].Servo.Kvfb=0 //将伺服回路的导数增益项设为零
Motor[6].Servo.Kp=1 //默认比例因子
Motor[6].Servo.Ki=0.01 //积分增益强制为0误差
Motor[6].Servo.BreakPosErr=0 //将死区设置为零
Motor[6].Servo.Kvff=1 //增加前馈,最小化跟踪误差
Motor[6].Servo.Kaff=1
/官网论坛大神分享///
如果我们把多个电机组合成一个整体,单个电机反馈的位置值如何映射到这个电机组合体中去?以什么为参考呢?我们就要引入坐标系,坐标系就是一个参照体,为了说明质点的位置、运动的快慢、方向等。
在项目的文件夹PMAC Script Language->文件夹Global Includes下创建一个名为coord setup.pmh(文件名自己定义)的文件。
undefine all //清除所有坐标系统的所有轴定义
&1 //使用“&”创建名为1的坐标系
#1->x //使用“#”将x分配给1号电机
#2->y //使用“#”将y分配给2号电机
#3->z
#4->a
#5->b
/*
undefine all //清除所有坐标系统的所有轴定义
&1 //使用“&”创建名为1的坐标系
//平移轴定义
#1->X+4 // x平移4
#2->Y+2 //y平移2
//旋转轴定义
//sin(45)=0.707
#1->0.707X-0.707Y
#2->0.707X+0.707Y
*/
/走插补时需设置
Coord[1].SegMoveTime=2 // 粗插值的“分割时间”的单位是毫秒
Coord[1].AltFeedRate=10 //非矢量轴的速度
Coord[1].TimeBaseSlew=0.01 //时基转换速率
Coord[1].DesTimeBase=1 //所需的时基值
Coord[1].Tm=-10 //混合动作的进给量
#IO分配
如果设备挂载了IO模块,我们需要创建IO变量。在项目的文件夹PMAC Script Language->文件夹Global Includes下创建一个名为IO para.pmh(文件名自己定义)的文件。
在ECATMap.pmh文件中找到IO模块的地址,比如我想定义一个输入模块:
在IO para.pmh定义如下:
//数字输入模块
ptr A-> Slave_5_6002_1_InputBit16bits.0.1; //ptr 自定义变量 -> 模块地址.模块节点.1
ptr B-> Slave_5_6002_1_InputBit16bits.1.1;
ptr C-> Slave_5_6002_1_InputBit16bits.2.1;
ptr D-> Slave_5_6002_1_InputBit16bits.3.1;
/模拟量输出模块
ptr E->Slave_5_60A0_1_Ch1AnalogInputVal; //ptr 自定义变量 -> 模块地址(模拟量通道1)
//给电机控制字分配变量///
ptr F-> Slave_1_6040_0_ControlWord;
基本的配置工作已经完成,下一节我们开始写PLC程序和运动程序。