为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

SEW内部IPOS设置和编程

2019-02-15 73页 ppt 1MB 203阅读

用户头像 个人认证

长江九号

从事多年的教职生涯

举报
SEW内部IPOS设置和编程IPOS-Compiler编辑器LY2_E10/1998编辑器软件说明IPOS-Compiler编辑器LY2_E10/1998激活编辑器开始IPOS-Compiler编辑器IPOS-Compiler编辑器LY2_E10/1998编辑器程序窗口说明菜单栏工具栏程序窗口状态栏目录栏IPOS-Compiler编辑器LY2_E10/1998工具栏和菜单栏IPOS-Compiler编辑器LY2_E10/1998创建新项目点击按钮----创建新项目对话框用于定义IPOS程序的基本结构。初始部分任务2中断响应IPOS-Compiler编辑器...
SEW内部IPOS设置和编程
IPOS-Compiler编辑器LY2_E10/1998编辑器软件说明IPOS-Compiler编辑器LY2_E10/1998激活编辑器开始IPOS-Compiler编辑器IPOS-Compiler编辑器LY2_E10/1998编辑器程序窗口说明菜单栏工具栏程序窗口状态栏目录栏IPOS-Compiler编辑器LY2_E10/1998工具栏和菜单栏IPOS-Compiler编辑器LY2_E10/1998创建新项目点击按钮----创建新项目对话框用于定义IPOS程序的基本结构。初始部分任务2中断响应IPOS-Compiler编辑器LY2_E10/1998程序编辑器说明Task2程序部分初始程序部分激活Task2程序主程序部分(Task1)IPOS-Compiler编辑器LY2_E10/1998比较功能点击按钮----编辑器内程序和控制器内程序比较控制器内程序和编辑器内程序不相同控制器内程序和编辑器内程序相同IPOS-Compiler编辑器LY2_E10/1998编译程序点击按钮----编译程序提示编译成功或不成功程序扫描时间程序占内存的比例IPOS-Compiler编辑器LY2_E10/1998编译并下载程序点击按钮----编译并下载程序提示编译成功或不成功IPOS-Compiler编辑器LY2_E10/1998插入指令行点击按钮----插入指令行(编辑器提供了的输入方式)C-结构系统功能IPOS-Compiler编辑器LY2_E10/1998运行和停止程序点击按钮----运行程序点击按钮----停止程序TASK2状态显示TASK1状态显示IPOS-Compiler编辑器LY2_E10/1998变量窗口选择下拉菜单----显示所有的IPOS(H1---H511)变量Display/AllVariablesIPOS变量包括系统变量、全局变量和用户变量。 系统变量为有固定含义变量(H453---H511)。 全局变量为特殊应用模块中指定的变量。 用户变量为用户程序中可任意调用的变量。IPOS-Compiler编辑器LY2_E10/1998变量窗口选择下拉菜单----编辑显示变量Display/Variablewatch/EditwindowIPOS-Compiler编辑器LY2_E10/1998选择显示方式点击鼠标右键选择显示方式显示方式: 带符号的十进制 无符号的十进制 十六进制 二进制 ASCII代码IPOS-Compiler编辑器LY2_E10/1998注释说明多行注释/*...*/单行注释//...单行注释//… 说明:便于用户编译和解读程序。IPOS-Compiler编辑器LY2_E10/1998程序信息选择下拉菜单----显示程序信息Display/ProgramInformation程序内存创建日期原文件目录IPOS-Compiler编辑器LY2_E10/1998Compiler运算指令说明IPOS-Compiler编辑器LY2_E10/1998运算指令说明常用算术运算指令:Sheet1 符号 格式 说明 举例 “+” H~=H~+H~ 加 H10=H11+H12; “-” H~=H~-H~ 减 H10=H11-H13; “×” H~=H~*H~ 乘 H10=H11*H14; “/” H~=H~/H~ 除 H10=H11/H15;Sheet2 Sheet3 IPOS-Compiler编辑器LY2_E10/1998运算指令说明常用逻辑运算指令:例: if((H1==3)&&(H2==5)) {  H100=H1+H2;  }如果H1等于3,并且H2等于5时执行H100=H1+H2;例: if((H1>10)||(H2<5)) {  H100=H1+H2;  }如果H1大于10,或者H2小于5时执行H100=H1+H2;Sheet1 符号 格式 说明 举例 “&&” (条件1)&&(条件2) 与 “||” (条件1)||(条件2) 或Sheet2 Sheet3 IPOS-Compiler编辑器LY2_E10/1998指令说明常用位与位逻辑运算指令:H1---0000,0000,1111,1100H2---0000,0000,0000,0101H3---0000,0000,0000,0100H1---0000,0000,1111,1100H2---0000,0000,0000,0101H3---0000,0000,1111,1101H1---0000,0000,1111,1100H2---0000,0000,0000,0101H3---0000,0000,1111,1001与运算异或运算或运算Sheet1 符号 格式 说明 举例 “&” (操作数1)&(操作数2) 位和位与 H3=H1&H2 “|” (操作数1)|(操作数2) 位和位或 H3=H1|H2 “^” (操作数1)^(操作数2) 位和位异或 H3=H1^H2Sheet2 Sheet3 IPOS-Compiler编辑器LY2_E10/1998指令说明常用移位运算指令:例: H3=H1<<;4如果H1左移4位,右侧由0添满H1---0000,0000,1010,0101H3---0000,1010,0101,0000Sheet1 符号 格式 说明 举例 “<<” 操作数<<左移位数 操作数左移 H3=H1<<2 “>>” 操作数>>右移位数 操作数右移 H3=H1>>10Sheet2 Sheet3 IPOS-Compiler编辑器LY2_E10/1998指令说明常用比较指令:例: if((H1==3)&&(H2>=5)) {  H100=H1+H2;  }如果H1等于3,并且H2大于等于5时,执行H100=H1+H2;Sheet1 符号 格式 说明 举例 “>” 大于 “>=” 大于等于 “<” 小于 “<=” 小于等于 “==” 操作数左移 “!=” 不等于Sheet2 Sheet3 IPOS-Compiler编辑器LY2_E10/1998Compiler结构指令说明IPOS-Compiler编辑器LY2_E10/1998指令说明---if….else表达:if(条件){程序1;}else{程序2;}说明:如果条件满足,执行程序1;如果条件不满足,执行程序2。例:IPOS-Compiler编辑器LY2_E10/1998指令说明---while表达:while(条件){程序;}说明:如果条件满足,程序循环执行;如果条件不满足,退出程序;例1:H2=0;H1=10; while(H1>5){H2=H2+1;H1=H1-1;}H1=0;while(H1<20){H1=H1+1; if(H1>10)continue; H2=H2+2;}例2:注:如果H1大于10,将不执行H2=H2+2指令,跳到while的末端。H1=0;while(1){++H1;if(H1==20)break; if(H1>10)continue;H2=H2+2;}例3:注:如果H1等于20,将退出while指令;如果H1大于10,跳到while的末端。IPOS-Compiler编辑器LY2_E10/1998指令说明---Switch…case…default表达:说明:如果表达式为1,执行程序1;如果表达式为2,执行程序2;当条件都不满足时,执行程序n。注:如果H1等于1,H2加1;如果H1等于2,H3加1;如果H1不等于1、2,H4加1;switch(表达式){caseValue1:程序1;caseValue2:程序2;..default:程序n;}switch(H1){case1:++H2;break;case2:++H3;break;default:++H4;break;}例:IPOS-Compiler编辑器LY2_E10/1998常用的系统变量说明IPOS-Compiler编辑器LY2_E10/1998H483(INPUTLVL)---开关量输入 开关量输入为只读。 例:H483.6=1代表了DI10为高电平的状态。 例:H483=19=24+21+20代表了DI04、DI01和DI00为高电平的状态,其余开关量输入为低电平。注:Sheet1 二进制输入 主板二进制输入 端子定义 DI17 DI16 DI15 DI14 DI13 DI12 DI11 DI10 DI05 DI04 DI03 DI02 DI01 DI00 H483.x 13 12 11 10 9 8 7 6 5 4 3 2 1 0 含义Sheet2 Sheet3 IPOS-Compiler编辑器LY2_E10/1998H482(OUTPUTLVL)---开关量输出 H482开关量输入为只读。 例:H482.6=1代表了DO13为高电平的状态。 例:H482=19=24+21+20代表了DO11、DI01和DB00为高电平的状态,其余开关量输出为低电平。注:Sheet2 二进制输出 主板开关量输出 端子 DO17 DO16 DO15 DO14 DO13 DO12 DO11 DO10 DO02 DO01 DB00 H482.X 10 9 8 7 6 5 4 3 2 1 0 含义 二进制输出 端子 DO17 DO16 DO15 DO14 DO13 DO12 DO11 DO10 DO02 DO01 DB00 H482.X 10 9 8 7 6 5 4 3 2 1 0 含义 29 28 27 26 25 24 23 22 21 20Sheet3 IPOS-Compiler编辑器LY2_E10/1998H481(OUTPUTLVL)---开关量输出---只写 H482开关量输入为只写。 例:H481.2=1代表了设置DO02为高电平。 例:H481=6=22+21代表了设置DO02、DO01为高电平。注:Sheet2 二进制输出 主板开关量输出 端子 DO17 DO16 DO15 DO14 DO13 DO12 DO11 DO10 DO02 DO01 DB00 H482.X 10 9 8 7 6 5 4 3 2 1 0 含义 二进制输出 端子 DO17 DO16 DO15 DO14 DO13 DO12 DO11 DO10 DO02 DO01 DB00 H482.X 10 9 8 7 6 5 4 3 2 1 0 含义 29 28 27 26 25 24 23 22 21 20Sheet3 二进制输出 主板开关量输出 端子 DO02 DO01 DB00 H481.X 2 1 0 含义IPOS-Compiler编辑器LY2_E10/1998H480(OUTPUTLVL)---开关量输出---只写 H480开关量输入为只写。 例:H480.2=1代表了设置DO12为高电平。 例:H481=6=22+21代表了设置DO12、DO11为高电平。注:Sheet2 二进制输出 端子 DO17 DO16 DO15 DO14 DO13 DO12 DO11 DO10 H480.X 7 6 5 4 3 2 1 0 含义 二进制输出 端子 DO17 DO16 DO15 DO14 DO13 DO12 DO11 DO10 DO02 DO01 DB00 H482.X 10 9 8 7 6 5 4 3 2 1 0 含义 29 28 27 26 25 24 23 22 21 20Sheet3 二进制输出 主板开关量输出 端子 DO02 DO01 DB00 H481.X 2 1 0 含义IPOS-Compiler编辑器LY2_E10/1998H473(IPOS状态字)IPOS-Compiler编辑器LY2_E10/1998H484(IPOS控制字)IPOS-Compiler编辑器LY2_E10/1998H509、H510和H511----位置值Sheet1 变量 名称 说明 接口 H509 ACTPOSABS 绝对值编码器位置值 X62 H510 ACTPOSEXT 外部编码器位置值 X14 H511 ACTPOSMOR 电机编码器位置值 X15Sheet2 Sheet3 IPOS-Compiler编辑器LY2_E10/1998SEW标准功能说明IPOS-Compiler编辑器LY2_E10/1998SEW标准功能说明---BitClear、BitSet、BitMove、BitNegMove位指令Sheet1 符号 格式 说明 举例 _BitClear _BitClear(H~,Bit) 位清零 _BitClear(H100,0) _BitSet _BitSet(H~,Bit) 位置位 _BitSet(H101,2) _BitMove _BitMove(H~,Bit,H~,Bit) 位赋值 _BitMove(H10,5,H15,0) _BitMoveNeg _BitMoveNeg(H~,Bit,H~,Bit) 位取反赋值 _BitMoveNeg(H10,5,H15,0)Sheet2 Sheet3 IPOS-Compiler编辑器LY2_E10/1998SEW标准功能说明---BitClear、BitSet、BitMove、BitNegMove举例:当DI01=1时,DO02=1;当DI01=0时,DO02=0;if(DI01){_BitSet(H481,2);//H481.1---DO02}else{_BitClear(H481,2);//H481.1---DO02}IPOS-Compiler编辑器LY2_E10/1998SEW标准功能说明---_Go0符号:_Go0(类型)描述:该指令定义参考运行类型。说明:类型由C、U、W、NW和CAM或RESET组成。·      GO0_C_W_ZP·      GO0_U_W_ZP·      GO0_C_NW_ZP·      GO0_U_NW_ZP·      GO0_C_W_CAM·      GO0_U_W_CAM·      GO0_C_NW_CAM·      GO0_U_NW_CAMC(Conditional)---只有在没有参考点时,参考运行有效。U(Unconditional)---无论有无参考点,参考运行始终有效。W(Wait)---等待,直到参考运行结束。NW(NoWait)---不等待,运行下一条指令。ZP(ZeroPulse)---参考运行到零脉冲。CAM---参考运行到凸轮点。IPOS-Compiler编辑器LY2_E10/1998类型0:类型1:P903(参考类型)说明: 当定义为CAM,初始位置为参考点。 当定义为ZP,零脉冲位置为参考点。零脉冲初始位置凸轮开关正转极限反转极限说明: 向反转极限方向运行。IPOS-Compiler编辑器LY2_E10/1998类型2:P903(参考类型)凸轮开关正转极限反转极限说明: 向正转极限方向运行。 凸轮开关的下降沿为参考点。类型3:反转极限正转极限说明: 向正转极限方向运行。 正转极限开关的下降沿为参考点。IPOS-Compiler编辑器LY2_E10/1998类型4:类型5:P903(参考类型)说明: 向反转极限方向运行。 反转极限开关的下降沿为参考点。说明: 当前位为参考点。当前位IPOS-Compiler编辑器LY2_E10/1998类型6:P903(参考类型)凸轮开关正转极限反转极限说明: 向正转极限方向运行。 凸轮开关的反方向下降沿为参考点。类型7:反转极限正转极限说明: 向反转极限方向运行。 凸轮开关的反方向下降沿为参考点。凸轮开关IPOS-Compiler编辑器LY2_E10/1998noGO0_U_NW_ZP!DI00yesGO0_RESET!referencereturnyesno//运行参考点//没到参考点DI01StartReferenceModeENDReferenceModeyesno//参考运行条件ReferenceMode()//参考运行模式{if(DI01)//参考运行条件{_Go0(GO0_U_NW_ZP);//参考运行while(!referenced)//没有到达参考点{if(!DI00)//如DI03=0退出参考运行程序{_Go0(GO0_RESET);return;}}}}参考运行举例IPOS-Compiler编辑器LY2_E10/1998SEW标准功能说明---_GoAbs符号:_GoAbs(类型,位置)描述:该指令定义运行到一个绝对位置。说明:类型由Go_NOWAIT和Go_WAIT组成。 Go_NOWAIT-----不等待,运行下一条指令。 Go_WAIT----等待,直到到达给定绝对位置。位置可为一个常数、变量或间接变量。指目标位和参考位之间的距离IPOS-Compiler编辑器LY2_E10/1998绝对位置运行举例//绝对位置运行//没有到达绝对位置//DI00=0,退出绝对位置运行Positioning(){_GoAbs(GO_NOWAIT,Position);while(!in_Position){if(!DI00){_AxisStop(AS_PSTOP);return;}}IPOS-Compiler编辑器LY2_E10/1998SEW标准功能说明---_GoRel符号:_GoRel(类型,位置)描述:该指令定义运行到一个相对位置。说明:类型由Go_NOWAIT和Go_WAIT组成。 Go_NOWAIT-----不等待,运行下一条指令。 Go_WAIT----等待,直到到达给定相对位置。位置可为一个常数、变量或间接变量。指目标位和当前位之间的距离IPOS-Compiler编辑器LY2_E10/1998SEW标准功能说明---_SetSys符号:_SetSys(系统值,变量)描述:设定系统值。系统值包括:·     SS_N11: 内部固定转速n11·      SS_N12: 内部固定转速n12·      SS_N13: 内部固定转速n13·      SS_N21: 内部固定转速n21·      SS_N22: 内部固定转速n22·      SS_N23: 内部固定转速n23·      SS_PIDATA: 设定PI字*    h=PI字的个数*    h+1=PI1*    h+2=PI2*    h+3=PI3·      SS_OPMODE: 设定运行模式*    h=11:CFC(speedcontrol)*    h=12:CFC&torquecontrol*    h=13:CFC&IPOS(positioning)*    h=14:CFC&synchronousoperation(DRS11A)*    h=16:SERVO(speedcontrol)*    h=17:SERVO&torquecontrol*    h=18:SERVO&IPOS(positioning)h=19:SERVO&synchronousoperation(DRS11A)H100=5000;_SetSys(SS_N11,H100);H100=3;//PI字的个数H101=10;//PI1H102=100;//PI2H103=1000;//PI3_SetSys(SS_PIDATA,H100);H100=13;_SetSys(SS_OPMODE,H100);IPOS-Compiler编辑器LY2_E10/1998SEW标准功能说明---_SetSys·      SS_IMAX:设定最大电流值(CFCorSERVOonly);Unit:0.1%·      SS_POSRAMP: 位控斜率;单位:1ms*    h=位控上升斜率1*    h+1=位控下降斜率2·      SS_POSSPEED:位控转速;单位:0.1rpm*    h=CW速度*    h+1=CCW速度H100=1000;//定义上升斜率H101=1000;//定义下降斜率_SetSys(SS_POSRAMP,H100);H100=1000;//定义CW转速H101=1000;//定义CCW转速_SetSys(SS_POSSPEED,H100);IPOS-Compiler编辑器LY2_E10/1998SEW标准功能说明---_GetSys符号:_GetSys(系统值,变量)描述:读取系统值。系统值包括:·      GS_ACTCUR: 实际电流值·      GS_ACTSPEED: 实际转速·      GS_SPSPEED: 设定转速·      GS_ERROR: 故障代码·      GS_SYSSTATE: 7-段码显示·      GS_ACTPOS: 实际位置·      GS_SPPOS: 设定位置·      ·      GS_INPUTS: 二进制输入(包括主板和扩展板)·      GS_OUTPUTS: 二进制输出(包括主板和扩展板)·      GS_IxT: 系统的利用率·      GS_ANINPUTS: 模拟量输入1和2的电压值*    h=模拟量输入1*    h+1=模拟量输入2将系统值存放在变量中IPOS-Compiler编辑器LY2_E10/1998SEW标准功能说明---_GetSys·      GS_ANOUTPUTS:模拟量输出*    h=模拟量输出1*    h+1=模拟量输出2·   GS_PODATA读取PO值*    h+0:总线类型¨   0=Reserved¨   1=S0(RS485#1)¨   2=S1(RS485#2)¨   3=Fieldbus¨   4=Reserved¨   5=SBus*    h+1=POdata的个数*    h+2=PO1*    h+3=PO2*    h+4=PO3H100=3;//定义FIELDBUS总线类型H101=3;//定义PO值的个数_GetSys(H100,GS_PODATA);//读取PO值H200=H103*10;//将PO2乘以10IPOS-Compiler编辑器LY2_E10/1998程序举例主板X13开关量输入说明:凸轮开关(P602=ReferenceCam)DCOMV024DI05DI04DI03DI02DI01DI00控制器禁止DGND接外部24V直流电源的0V说明:1。DI00(控制器禁止)----在自动运行、点动运行和参考运行时,DI00为高电平;急停时,DIOO为低电平。2。DI03---凸轮开关。DI011A扩展板X22开关量输入说明:说明:1。DI10、DI11为模式选择---不同的组合可以选择点动模式、寻参模式和自动模式。2。在点动模式下---DI12高电平时为正点运行,DI13高电平为反点运行。3。在参考模式下---DI141秒高电平触发参考运行。4。在自动模式下---DI15DI141秒高电平触发自动运行。5。P610---P617=IPOSINPUT。Sheet1 DI10 DI11 1 0 点动模式 0 1 寻参模式 1 1 自动模式Sheet2 Sheet3 while(1){if(!DI10&&DI11)//点动模式{JogMode();}if(DI10&&!DI11)//参考运行模式{ReferenceMode();}if(DI10&&DI11){AutomaticMode();//自动模式}}主程序:点动子程序:点动子程序:JogMode()//点动模式{while(!DI10&&DI11)//DI10=0DI11=1选择点动模式{jogspeed;//选择点动转速_GetSys(currentposition,GS_ACTPOS);//读取当前位置if(DI12&&!DI13)//DI12=1DI13=0选择正点运行{TargetPos=H511+409600;//计算目标位置=H511(当前位置)+409600continue;//跳转到while的末端}if(!DI12&&DI13)//DI12=0DI13=1选择反点运行{TargetPos=H511-409600;//计算目标位置=H511(当前位置)-409600continue;//跳转到while的末端}_AxisStop(AS_PSTOP);//停止运行}}IPOS-Compiler编辑器LY2_E10/1998noGO0_U_NW_ZP!DI00yesGO0_RESET!referencereturnyesno//运行参考点//没到参考点DI14StartReferenceModeENDReferenceModeyesno//参考运行条件ReferenceMode()//参考运行模式{if(DI14)//参考运行条件{_Go0(GO0_U_NW_CAM);//参考运行while(!referenced)//没有到达参考点{if(!DI00)//如DI03=0退出参考运行程序{_Go0(GO0_RESET);return;}}}}参考运行子程序IPOS-Compiler编辑器LY2_E10/1998自动运行子程序//绝对位置运行//没有到达绝对位置//DI00=0,退出绝对位置运行Positioning(){_GoAbs(GO_NOWAIT,Position);while(!in_Position){if(!DI00){_AxisStop(AS_PSTOP);return;}}IPOS程序实例程序1:开关量控制多段速通过三个端子(DI03、DI04、DI05)控制7段速度。参数设定:DI01(P600):Enable/rap.stopDI03(P602):IPOSinputDI04(P603):IPOSinputDI05(P604):IPOSinputSetpointsource(P100):BIPOL./FIX.SETPTOperatingmode(P700):VFC,VFC-n-Control程序将七个速度定义给H1到H7,用一个Pointer变量指示端子的变化,然后以Pointer为指针,按照端子的变化将七个速度分别传递给N11。 Variable DI05 DI04 DI03 Speed[rpm] H1 0 0 1 -1200 H2 0 1 0 -800 H3 0 1 1 -300 H4 1 0 0 200 H5 1 0 1 500 H6 1 1 0 900 H7 1 1 1 1400/*===================IPOSsourcefile===================*/#include<constb.h>#defineInputImage((InputLevel>>3)&0x00000007)#defineFixedSetpointOn_BitSet(ControlWord,4)#defineFixedSetpointOff_BitClear(ControlWord,4)#defineFixedSetpoint1H1#defineFixedSetpoint2H2#defineFixedSetpoint3H3#defineFixedSetpoint4H4#defineFixedSetpoint5H5#defineFixedSetpoint6H6#defineFixedSetpoint7H7//DeclarationofvariableslongPointer,FixedSetpoint;/*=======================Mainfunction(IPOSinitialfunction)=======================*/main(){/*-------------------------------------Initialization--------------------------------------*/FixedSetpoint1=-1200*10;FixedSetpoint2=-800*10;FixedSetpoint3=-300*10;FixedSetpoint4=200*10;FixedSetpoint5=500*10;FixedSetpoint6=900*10;FixedSetpoint7=1400*10;/*-------------------------------------Mainprogramloop--------------------------------------*/while(1){Pointer=InputImage;FixedSetpoint=*Pointer;_SetSys(SS_N11,FixedSetpoint);if(Pointer==0)FixedSetpointOff;elseFixedSetpointOn;}}开关量控制多段速程序程序2:位控程序+中间位置变速程序主要分为两部分,首先为寻零,然后就是位控部分。位控部分利用H511ACTPOS_MOT(实际位置)与设定的两个位置SwitchPos1和SwitchPos2比较来选择相应的速度从而达到走位过程中的变速。/*====================IPOSsourcefile====================*/#include<constb.h>#include<iob.h>#pragmaglobals350365#defineSECOND1000#definereferenced(StatusWord&0x100000)#definein_Position(StatusWord&0x80000)#definePosSpeed1_SetSys(SS_POSSPEED,Speed1)#definePosSpeed2_SetSys(SS_POSSPEED,Speed2)#definePosSpeed3_SetSys(SS_POSSPEED,Speed3)#defineCWTravel0#defineCCWTravel1SSPOSSPEEDSpeed1,Speed2,Speed3;SSPOSRAMPPosRamp1;longStartPosition,LimitPosition;longSwitchPos1,SwitchPos2;longTravelDirection;/*==========================Mainfunction(IPOSinitialfunction)============================*/main(){/*-------------------------------------Initialization--------------------------------------*/Speed1.CW=Speed1.CCW=600*10;Speed2.CW=Speed2.CCW=1100*10;Speed3.CW=400*10;Speed3.CCW=1400*10;PosRamp1.Up=500;PosRamp1.Down=500;StartPosition=0;LimitPosition=200000;SwitchPos1=80000;SwitchPos2=140000;TravelDirection=CWTravel;_SetSys(SS_POSRAMP,PosRamp1);/*-------------------------------------Mainprogramloop--------------------------------------*/while(1){if(!referenced)ReferenceTravel();elsePositioning();}}/*=====================Functions===================*/ReferenceTravel(){if(DI00){_Go0(GO0_U_NW_ZP);while(!referenced){if(!DI00){_Go0(GO0_RESET);return;}}TravelDirection=CWTravel;}}Positioning(){if(DI01&&DI00){if(TravelDirection==CWTravel){if(ActPos_Mot<SwitchPos1)PosSpeed1;elseif(ActPos_Mot<SwitchPos2)PosSpeed2;elsePosSpeed3;_GoAbs(GO_NOWAIT,LimitPosition);if(in_Position){_Wait(SECOND);TravelDirection=CCWTravel;}}if(TravelDirection==CCWTravel)//Queryconditionforreturntravel{PosSpeed3;_GoAbs(GO_NOWAIT,StartPosition);//Initiatereturnmovementif(in_Position)//Querywhetherdestinationpositionreached{TravelDirection=CWTravel;_Wait(SECOND);}}}else{_AxisStop(AS_PSTOP);//PerformpositioningstopTravelDirection=CCWTravel;//Settraveldirectiononreturntravel}}程序3:位控程序-Jog模式,寻参模式,自动位控模式主程序首先判断是否寻过参,如果没有,则进入寻参模式。如果寻参完毕,在DI01为0时进入点动模式,在DI01为1时进入自动位控模式。在点动模式下,DI03和DI04用来控制CW和CCW。程序中在寻参模式中用_Go0指令来寻零;而在点动模式下使用了_GoRel指令(让电机向某一方向走相对于当前位置的一段距离,达到点动效果);在自动模式下,设定了两个位置,目的是让电机在这两个固定位置往返运动,所以用_GoAbs指令来走绝对位置。参数设定:DI01(P600):IPOSinputDI02(P601):IPOSinputDI03(P602):IPOSinputDI04(P603):IPOSinputDI05(P604):CWlimitSwitchDI06(P605):ReferencecamDI07(P606):CCWlimitSwitchOperatingmode(P700):……&IPOSReferencetraveltype(P903):1/*=============================================IPOSSourceFile===============================================*/#include<constb.h>#include<iob.h>#pragmaglobals350365#defineSECOND1000#definereferenced(StatusWord&0x100000)#definein_Position(StatusWord&0x80000)#defineCreepTraverse_SetSys(SS_POSSPEED,CreepTraverseSpeed)#defineRapidTraverse_SetSys(SS_POSSPEED,RapidTraverseSpeed)SSPOSSPEEDCreepTraverseSpeed,RapidTraverseSpeed;SSPOSRAMPPosRamp1;longMinPosition,MaxPosition,CurrentPos;/*=============================================MainFunction(IPOSEntryFunction)===============================================*/main(){/*-------------------------------------Initialisation--------------------------------------*/RapidTraverseSpeed.CW=RapidTraverseSpeed.CCW=1400*10;CreepTraverseSpeed.CW=CreepTraverseSpeed.CCW=1000*10;PosRamp1.Up=PosRamp1.Down=500;MinPosition=0;MaxPosition=80000;_SetSys(SS_POSRAMP,PosRamp1);/*-------------------------------------MainLoop--------------------------------------*/while(1){if(!referenced)ReferenceTravel();elseif(DI01)AutomaticMode();elseManualMode();}}/*===============================Functions============================*/ReferenceTravel(){if(DI00){_Go0(GO0_U_NW_ZP);while(!referenced){if(!DI00){_Go0(GO0_RESET);return;}}}}程序:ManualMode(){CreepTraverse;while(!DI01){_GetSys(CurrentPos,GS_ACTPOS);if(DI03&&!DI04){_GoRel(GO_NOWAIT,1000);continue;}if(!DI03&&DI04){_GoRel(GO_NOWAIT,-1000);continue;}_AxisStop(AS_PSTOP);}}AutomaticMode(){CreepTraverse;_GoAbs(GO_NOWAIT,MinPosition);while(!in_Position){if(!DI01){_AxisStop(AS_PSTOP);return;}}_Wait(SECOND);RapidTraverse;while(DI01){_GoAbs(GO_NOWAIT,MaxPosition);while(!in_Position){if(!DI01){_AxisStop(AS_PSTOP);return;}}_Wait(2*SECOND);_GoAbs(GO_NOWAIT,MinPosition);while(!in_Position){if(!DI01){_AxisStop(AS_PSTOP);return;}}_Wait(2*SECOND);}}程序4:位控程序与总线控制结合参数设定:Operatingmode(P700):VFC-n-Ctrl&IPOSDI01(P601):EnableDI02(P602):ResetDI03(P603):ReferencecamDI04(P604):CWlimitSwitchDI05(P605):CCWlimitSwitchDI10(P610)~DI17(P617):IPOSinputDO01(P620):ReadyDO02(P621):FaultDO10(P630):IPOSoutputDO11(P631):IPOSoutputDO12(P632):IPOSoutputDO14(P634):IPOSoutputDO15(P635):IPOSoutputDO16(P636):IPOSinpostionDO17(P637):IPOSreferenceP870:ControlWord2P871:PositionhighP872:positionlowP873:ControlWord2P874:PositionhighP875:positionlowP876:ONP941(IPOSencodersource):MotorencoderonterminalX15程序仍然主要有三部分组成,寻参部分,点动部分,自动运行部分。实验中,用BUSMONITOR来发控制字。使DI00为1,并发送PO10806(16进制)开始寻参模式,寻参完成可分别改变DI14、DI15来进行点动的正转和反转(即发送PO11006正转,PO12006反转)。发送PO1C006开始自动模式,自动模式的程序是走一个绝对位置,该位置是通过PO2和PO3来决定的,PO2控制高4位(16进制),PO3控制低四位(16进制)。通过发送过程输出字来确定要走的绝对位置。程序说明:#include<constb.h>#include<iob.h>//=================Travelvariables#pragmaglobals200249longFaultNumber;SSPOSSPEEDPosSpeed;//=================Terminalassignment#defineI_ControllerInhibitDI00#defineI_EnableDI01#defin
/
本文档为【SEW内部IPOS设置和编程】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索