资源描述
,Click to edit Master title style,Click to edit Master text styles,Second level,Third level,Fourth level,Fifth level,*,*,机 器 人 标 准 指 令,*,赋值指令,运动控制指令,外轴激活指令,计数指令,输入输出指令,程序运行停止指令,例行程序调用指令,计时指令,中断指令,通信指令,运动指令,中断运动指令,程序流程指令,故障处理指令,座标转换指令,运动触发指令,*,运动控制指令,AccSet,VelSet,ConfJ,ConfL,SingArea,PathResol,SoftAct,SoftDeact,2024/11/28,运动控制指令,AccSet,AccSet,Acc,Ramp,;,Acc:,机器人加速度百分率,。,(,num ),Ramp:,机器人加速度坡度,。,(,num ),应用:,当机器人运行速度改变时,对所产生的相应加速度进行限制,使机器人高速运行时更平缓,但会延长循环时间,系统默认值为,AccSet 100, 100; 。,2024/11/28,运动控制指令,AccSet,实例:,限制:,机器人加速度百分率值最小为 20,小于 20以 20 计,机器人加速度坡度值最小为 10,小于 10 以 10 计,。,机器人冷启动,新程序载入与程序重置后,系统自动设置为默认值。,2024/11/28,运动控制指令,VelSet,VelSet,Override,Max,;,Override:,机器人运行速率 %。,(,num ),Max:,最大运行速度,mm/s。,(,num ),应用:,对机器人运行速度进行限制,,机器人运动指令中均带有运行速度,在执行运动速度控制指令,VelSet,后,实际运行速度为运动指令规定的运行速度乘以机器人运行速率,,,并且不超过机器人最大运行速度,,系统默认值为,VelSet 100, 5000; 。,2024/11/28,运动控制指令,VelSet,500 mm/s,800 mm/s,10 s,800 mm/s,1000 mm/s,1000 mm/s,6.25 s,实例:,VelSet 50,800;,MoveL p1,v1000,z10,tool1;,MoveL p2,v1000V:=2000,z10,tool1;,MoveL p3,v1000T:=5,z10,tool1;,VelSet 80,1000;,MoveL p1,v1000,z10,tool1;,MoveL p2,v5000,z10,tool1;,MoveL p3,v1000V:=2000,z10,tool1;,MoveL p4,v1000T:=5,z10,tool1;,2024/11/28,运动控制指令,VelSet,限制:,机器人冷启动,新程序载入与程序重置后,系统自动设置为默认值。,机器人运动使用参变量 ,T,时,最大运行速度将不起作用。,Override,对速度数据 (,speeddata),内所有项都起作用,例如:,TCP、,方位及外轴。但对焊接参数,welddata,与,seamdata,内机器人运动速度不起作用。,Max,只对速度数据 (,speeddata),内,TCP,这项起作用。,2024/11/28,运动控制指令,ConfJ,ConfJ,On,|,Off,;,On:,启用轴配置数据。,(,switch ),关节运动时,机器人移动至绝对,ModPos,点,如果无法到达,程序将停止运行。,Off:,默认轴配置数据。,(,switch ),关节运动时,机器人移动至,ModPos,点,轴配置数据默认为当前最接近值。,2024/11/28,运动控制指令,ConfJ,应用:,对机器人运行姿态进行限制与调整,,,程序运行时,使机器人运行姿态得到控制。系统默认值为,ConfJOn; 。,限制:,机器人冷启动,新程序载入与程序重置后,系统自动设置为默认值。,实例:,ConfJOn;,ConfJOff;,2024/11/28,运动控制指令,ConfL,ConfL,On,|,Off,;,On:,启用轴配置数据。,(,switch ),直线运动时,机器人移动至绝对,ModPos,点,如果无法到达,程序将停止运行。,Off:,默认轴配置数据。,(,switch ),直线运动时,机器人移动至,ModPos,点,轴配置数据默认为当前最接近值。,2024/11/28,运动控制指令,ConfL,应用:,对机器人运行姿态进行限制与调整,,,程序运行时,使机器人运行姿态得到控制。系统默认值为,ConfLOn; 。,限制:,机器人冷启动,新程序载入与程序重置后,系统自动设置为默认值。,实例:,ConfLOn;,ConfLOff;,2024/11/28,运动控制指令,SingArea,SingArea,Wrist,|,Off,;,Wrist:,启用位置方位调整。,(,switch ),机器人运动时,为了避免死机,位置点允许其方位值有些许改变,例如:在五轴零度时,机器人四六轴平行。,Off:,关闭位置方位调整,。,(,switch ),机器人运动时,不允许位置点方位改变,是机器人的默认状态。,2024/11/28,运动控制指令,SingArea,应用:,当前指令通过对机器人位置点姿态进行些许改变,,,可以绝对避免机器人运行时死机,但是,机器人运行路径会受影响,姿态得不到控制,通常使用于通过复杂姿态点,绝对不能作为工作点使用。,实例:,SingAreaWrist;,SingAreaOff;,2024/11/28,运动控制指令,SingArea,限制:,以下情况机器人将自动恢复默认值,SingAreaOff。,机器人冷启动。,系统载入新的程序。,程序重置 (,Start From Beginning )。,2024/11/28,运动控制指令,PathResol,PathResol,PathSampleTime,;,PathSampleTime:,路径控制 %。,(,num ),应用:,当前指令用于更改机器人主机系统参数,调整机器人路径采样时间,从而达到控制机器人运行路径的效果,通过此指令可以提高机器人运动精度或缩短循环时间,路径控制默认值为 100%,调整范围为25%400%,路径控制百分比越小,运动精度越高,占用,CPU,资源也越多。,2024/11/28,运动控制指令,PathResol,实例:,MoveJ p1,v1000,fine,tool1;,PathResol 150;,机器人在临界运动状态 ( 重载、高速、路径变化复杂情况下接近最大工作区域 ),增加路径控制值,可以避免频繁死机。,外轴以很低的速度与机器人联动,增加路径控制值,可以避免频繁死机。,机器人进行高频率摆动弧焊时,需要很高的路径采样时间,需要减小路径控制值。,机器人进行小圆周或小范围复杂运动时,需要很高精度,需要减小路径控制值。,2024/11/28,运动控制指令,PathResol,限制:,机器人必须在完全停止后才能更改路径控制值,否则,机器人将默认一个停止点,并且显示错误信息 50146。,机器人正在更改路径控制值时,机器人被强制停止运行,机器人将不能立刻恢复正常运行 (,Restart )。,以下情况机器人将自动恢复默认值 100%。,机器人冷启动。,系统载入新的程序。,程序重置 (,Start From Beginning )。,2024/11/28,运动控制指令,SoftAct,SoftAct,MechUnit,Axis,Softness,Ramp,;,应用:,当前指令用于软化机器人主机或外轴伺服系统,软化值范围 0%100%,软化坡度范围=100%,此指令必须与指令,SoftDeact,同时使用,通常不使用于工作位置。,MechUnit:,软化外轴名称。,(,mecunit ),Axis:,软化转轴号码。,( num ),Softness:,软化值,%。,( num ),Ramp:,软化坡度 %,。,( num ),2024/11/28,运动控制指令,SoftAct,实例:,SoftAct 3,20;,SoftAct 1,90Ramp:=150;,SoftAct MechUnit:=orbit1,1,40Ramp:=120;,限制:,机器人被强制停止运行后,软伺服设置将自动失效。,同一转轴软化伺服不允许被连续设置两次。,SoftAct 3,20;,SoftAct 3,30;,SoftAct 3,20;,MoveJ *,v100,fine,tool1;,SoftAct 3,30;,2024/11/28,运动控制指令,SoftDeact,SoftDeact,Ramp,;,Ramp:,软化坡度,=100%,。,( num ),应用:,当前指令用于使软化机器人主机或外轴伺服系统指令,SoftAct,失效。,实例:,SoftAct 3,20;,SoftDeact;,SoftAct 1,90;,SoftDeactRamp:=150;,2024/11/28,外轴激活指令,ActUnit,DeactUnit,2024/11/28,外轴激活指令,ActUnit,ActUnit,MecUnit,;,MecUnit:,外轴名。,(,mecunit ),应用:,将机器人一个外轴激活,例如:当多个外轴公用一个驱动板时,通过外轴激活指令,ActUnit,选择当前所使用的外轴。,2024/11/28,外轴激活指令,ActUnit,p10,外轴不动。,p20,外轴联动,track_motion,。,p30,外轴联动,orbit_a。,实例:,MoveL p10,v100,fine,tool1;,ActUnit track_motion;,MoveL p20,v100,z10,tool1;,DeactUnit track_motion;,ActUnit orbit_a;,MoveL p30,v100,z10,tool1;,限制:,不能在指令,StorePath RestoPath,内使用。,不能在预置程序,RESTART,内使用。,不能在机器人转轴处于独立状态时使用。,2024/11/28,外轴激活指令,DeactUnit,DeactUnit,MecUnit,;,MecUnit:,外轴名。,(,mecunit ),应用:,使机器人一个外轴失效,例如:当多个外轴公用一个驱动板时,通过外轴激活指令,DeactUnit,使当前所使用的外轴失效。,2024/11/28,外轴激活指令,DeactUnit,p10,外轴不动。,p20,外轴联动,track_motion,。,p30,外轴联动,orbit_a。,实例:,MoveL p10,v100,fine,tool1;,ActUnit track_motion;,MoveL p20,v100,z10,tool1;,DeactUnit track_motion;,ActUnit orbit_a;,MoveL p30,v100,z10,tool1;,限制:,不能在指令,StorePath RestoPath,内使用。,不能在预置程序,RESTART,内使用。,2024/11/28,计数指令,Add,Clear,Incr,Decr,2024/11/28,计数指令,Add,Add,Name,AddValue,;,Name:,数据名称。,(,num ),AddValue:,增加的值。,(,num ),应用:,在一个数字数据值上增加相应的值,可以用赋值指令替代。,实例:,Add reg1,3;,等同于,reg1:=reg1+3;,Add reg1,-reg2;,等同于,reg1:=reg1-reg2;,2024/11/28,计数指令,Clear,Clear,Name,;,Name:,数据名称。,(,num ),应用:,将一个数字数据的值归零,可以用赋值指令替代。,实例:,Clear reg1;,等同于,reg1:=0;,2024/11/28,计数指令,Incr,Incr,Name,;,Name:,数据名称。,(,num ),应用:,在一个数字数据值上增加,1,,可以用赋值指令替代,一般用于产量计数。,实例:,Incr reg1;,等同于,reg1:=reg1+1;,2024/11/28,计数指令,Decr,Decr,Name,;,Name:,数据名称。,(,num ),应用:,在一个数字数据值上增加,1,,可以用赋值指令替代,一般用于产量计数。,实例:,Decr reg1;,等同于,reg1:=reg1-1;,2024/11/28,输入输出指令,AliasIO,InvertDO,IODisable,IOEnable,PluseDO,Reset,Set,SetAO,SetDO,SetGO,WaitDI,WaitDO,2024/11/28,输入输出指令,AliasIO,AliasIO,FromSignal,ToSignal,;,FromSignal:,机器人系统参数内所定义的信号名称。,(,signalxx or string ),ToSignal:,机器人程序内所使用的信号名称,。,(,signalxx ),应用:,对机器人系统参数内定义的信号名称进行化名,给机器人程序使用,一般使用与,Loaded Modules,或,Built-in Modules,内。例如:多台机器人使用相同系统参数。,2024/11/28,输入输出指令,AliasIO,Alias_do,,在机器人程序内定义。,config_do,,在系统参数内定义。,实例:,VAR signaldo alias_do;,CONST string config_string:=config_do;,PROC prog_start(),AliasIO config_do,alias_do;,AliasIO config_string,alias_do;,ENDPROC,2024/11/28,输入输出指令,AliasIO,限制:,指令,AliasIO,必须放置在预置程序,START,内或程序内使用相应信号之前。,指令,AliasIO,在示教器上无法输入,只能通过离线编程输入。,指令,AliasIO,需要软件,Developers Functions,支持。,2024/11/28,输入输出指令,InvertDO,InvertDO,Signal,;,Signal:,输出信号名称,。,(,signaldo ),应用:,将机器人输出信号值反转,0 为 1,1 为 0,在系统参数内也可定义。,实例:,InvertDO do15;,2024/11/28,输入输出指令,InvertDO,机器人程序内指令,InvertDO,被执行。,2024/11/28,输入输出指令,IODisable,IODisable,UnitName,MaxTime,;,UnitName:,输入输出板名称。,(,num ),MaxTime:,最长等待时间。,(,num ),应用:,通过指令可以使机器人输入输出板在程序运行时自动失效,系统将一块输入输出板失效需要 25 秒。如果失效时间超过最长等待时间,系统将进入,Error Handler,处理,错误代码为,ERR_IODISABLE,,如果例行程序没有,Error Handler,机器人将停机报错。,2024/11/28,输入输出指令,IODisable,输入输出板,cell1,开始失效,最长等待时间为 0,肯定进入,Error Handler,处理。,利用机器人移动至,home,的时间完成输入输出板失效。,确认输入输出板,cell1,失效。,连续 5 次,RETRY,,仍无法完成输入输出板失效。,实例:,PROC go_home(),recover_flag:=1;,IODisable “cell1”,0;,MoveJ home,v1000,fine,tool1;,recover_flag:=2;,IODisable “cell1”,5;,ERROR,IF ERRNO=ERR_IODISABLE THEN,IF recover_flag=1 THEN,TRYNEXT;,ELSEIF recover_flag=2 THEN,RETRY;,ENDIF,ELSEIF ERRNO=ERR_EXCRTYMAX THEN,ErrWrite “IODisable error”,“Restart the program”;,Stop;,ENDIF,ENDPROC,2024/11/28,输入输出指令,IODisable,Error Handling:,ERR_IODISABLE,超过最长等待时间,系统仍未完成输入输出板失效。,ERR_CALLIO_INTER,系统在执行输入输出板失效与激活时,当前输入输出板再次被失效或激活,形成冲突。,ERR_NAME_INVALID,输入输出板名称错误或无法进行失效与激活操作。,2024/11/28,输入输出指令,IOEnable,IOEnable,UnitName,MaxTime,;,UnitName:,输入输出板名称。,(,num ),MaxTime:,最长等待时间。,(,num ),应用:,通过这指令可以使机器人输入输出板在程序运行时自动激活,系统将一块输入输出板激活需要 25 秒。如果激活时间超过最长等待时间,系统将进入,Error Handler,处理,错误代码为,ERR_IOENABLE,,如果例行程序没有,Error Handler,机器人将停机报错。,2024/11/28,输入输出指令,PulseDO,PulseDO,HighPLength,Signal,;,High:,输出脉冲时,输出信号可以处在高电平。,(,switch ),Plength:,脉冲长度,,0.1,s32s,,,默认值为,0.2,s,。,( num ),Signal:,输出信号名称。,(,signaldo ),应用:,机器人输出数字脉冲信号,一般作为运输链完成信号或计数信号,。,2024/11/28,输入输出指令,PulseDO,实例:,PulseDO,PulseDOHigh,脉冲长度,脉冲长度,PulseDOHighPlength:=x,PulseDOHighPlength:=y,2024/11/28,输入输出指令,PulseDO,限制:,机器人脉冲输出长度小于 0.01 秒,系统将报错,不得不重新热启动。,例如:,WHILE TRUE DO,PulseDO do5;,ENDWHILE,2024/11/28,输入输出指令,IOEnable,输入输出板,cell1,开始激活,,,最长等待时间为 0,肯定进入,Error Handler,处理。,通过每次 1 秒进行计数,连续5 次仍无法激活输入输出板,执行指令,RAISE。,实例:,VAR num max_retry:=0;,.,IOEnable “cell1”,0;,SetDO cell1_sig3,1;,ERROR,IF ERRNO=ERR_IOENABLE THEN,IF max_retry3 THEN,TPWrite “”;,ENDIF,IF nCounter30 THEN,Stop;,ENDIF,WaitDI di_Ready,1MaxTime:=1TimeFlag:=bTimeout;,Incr nCounter;,ENDWHILE,ENDPROC,机器人等待到位信号,如果 1 秒内仍没有等到信号,di_Ready,值为 1,机器人自动执行随后指令,但此时,TimeFlag,值为,TRUE;,机器人等到信号,di_Ready,值为 1,此时,,TimeFlag,值为,FALSE。,2024/11/28,输入输出指令,WaitDO,WaitDO,Signal,Value,MaxTimeTimeFlag,;,Signal:,输入信号名称。,(,signaldi ),Value:,输入信号值。,(,dionum ),MaxTime:,最长等待时间,s,。,( num ),TimeFlag:,超时逻辑量。,(,bool ),应用:,等待数字输出信号满足相应值,达到通信目的,因为输出信号一般情况下受程序控制,此指令很少使用。,2024/11/28,输入输出指令,WaitDO,实例:,PROC Grip(),Set do03_Grip;,WaitDO do03_Grip,1;,ENDPROC,机器人等待输出信号,直到信号,do03_Grip,值为 1,才执行随后相应指令。,机器人等待相应输出信号,如果 5 秒内仍没有等到信号,do03_Grip,值为 1,自动进行,Error Handler,处理,如果没有,Error Handler,,机器人停机报错 。,PROC Grip(),Set do03_Grip;,WaitDO do03_Grip,1MaxTime:=5;,ERROR,IF ERRNO=ERR_WAIT_MAXTIME THEN,TPWrite “”;,RETRY;,ELSE,RAISE;,ENDIF,ENDPROC,2024/11/28,输入输出指令,WaitDO,实例:,PROC Grip(),Set do03_Grip;,bTimeout:=TRUE;,nCounter:=0;,WHILE bTimeout DO,IF nCounter3 THEN,TPWrite “”;,ENDIF,IF nCounter30 THEN,Stop;,ENDIF,WaitDO do03_Grip,1MaxTime:=1TimeFlag:=bTimeout;,Incr nCounter;,ENDWHILE,ENDPROC,机器人等待到位信号,如果 1 秒内仍没有等到信号,do03_Grip,值为 1,机器人自动执行随后指令,但此时,TimeFlag,值为,TRUE;,机器人等到信号,do03_Grip,值为 1,此时,,TimeFlag,值为,FALSE。,2024/11/28,程序运行停止指令,Break,Exit,Stop,ExitCycle,2024/11/28,程序运行停止指令,Break,Break;,应用:,机器人在当前指令行立刻停止运行,程序运行指针停留在下一行指令,可以用,Start,键继续运行机器人。,实例:,Break;,2024/11/28,程序运行停止指令,Break,P1,P2,P3,区别:,MoveL p2,v100,z30,tool0;,Break; ( Stop; ),MoveL p3,v100,fine,tool0;,Stop,Break,2024/11/28,程序运行停止指令,Exit,Exit;,应用:,机器人在当前指令行停止运行,并且程序重置,程序运行指针停留在主程序第一行。,实例:,Exit;,2024/11/28,程序运行停止指令,Stop,Stop,NoRegain,;,应用:,机器人在当前指令行停止运行,程序运行指针停留在下一行指令,可以用,Start,键继续运行机器人,属于临时性停止。如果机器人停止期间被手动移动后,然后直接启动机器人,机器人将警告确认路径,如果此时采用参变量,NoRegain,,机器人将直接运行。,NoRegain:,路径恢复参数。,(,switch ),2024/11/28,程序运行停止指令,Stop,P1,P2,P3,区别:,MoveL p2,v100,z30,tool0;,Stop; ( Break; ),MoveL p3,v100,fine,tool0;,Stop,Break,实例:,Stop;,2024/11/28,程序运行停止指令,ExitCycle,ExitCycle;,应用:,机器人在当前指令行停止运行,并且设定当前循环结束,机器人自动从主程序第一行继续运行下一个循环。,2024/11/28,程序运行停止指令,ExitCycle,实例:,PROC main(),IF cyclecount=0 THEN,CONNECT error_intno WITH error_trap;,ISignalDI di_error,1,error_intno;,ENDIF,cyclecount:=cyclecount+1;,! start to do something intelligent,.,ENDPROC,TRAP error_trap,TPWrite “I will start on the next item”;,ExitCycle;,ENDTRAP,2024/11/28,例行程序调用指令,ProcCall,CallByVar,2024/11/28,例行程序调用指令,ProcCall,Procedure,Argument,;,应用:,机器人调用相应例行程序,同时给带有参数的例行程序中相应参数赋值。,Procedure:,例行程序名称。,(,Identifier ),Argument:,例行程序参数。,(,All ),实例:,Weldpipe1;,Weldpipe2 10,lowspeed;,Weldpipe3 10speed:=20;,2024/11/28,程序运行停止指令,ProcCall,限制:,机器人调用带参数的例行程序时,必须包括所有强制性参数。,例行程序所有参数位置次序必须与例行程序设置一致。,例行程序所有参数数据类型必须与例行程序设置一致。,例行程序所有参数数据性质必须为,Input,Variable,或,Persistent。,2024/11/28,例行程序调用指令,CallByVar,CallByVar,Name,Number,;,应用:,通过指令中相应数据,,机器人调用相应例行程序,但无法调用带有参数的例行程序。,Name:,例行程序名称第一部分。,(,string ),Number:,例行程序名称第二部分。,(,num ),实例:,reg1:=Ginput(gi_Type);,CallByVar “Proc”,reg1;,2024/11/28,程序运行停止指令,CallByVar,限制:,不能调用带参数的例行程序。,所有被调用的例行程序名称第一部分必须相同,例如:,proc1、proc2、proc3。,使用,CallByVar,指令调用例行程序比直接采用,ProcCall,调用例行程序需要更长时间。,Error Handling:,ERR_REFUNKPRC,系统无法找到例行程序名称第一部分。,ERR_CALLPROC,系统无法找到例行程序名称第二部分。,2024/11/28,程序运行停止指令,CallByVar,实例比较,:,TEST reg1,CASE 1:,lf_door door_loc;,CASE 2:,rf_door door_loc;,CASE 3:,lr_door door_loc;,CASE 4:,rr_door door_loc;,DEFAULT:,EXIT;,ENDTEST,%”proc”+NumToStr(reg1,0)% door_loc;,CallByVar “proc”,reg1;,指令,CallByVar,不能调用带有参数的例行程序。,通过,RAPID,结构仍可以调用带有参数的例行程序。,2024/11/28,计时指令,ClkReset,ClkStart,ClkStop,2024/11/28,计时指令,ClkReset,ClkReset,Clock,;,应用:,将机器人相应时钟复位,常用于记录循环时间或机器人跟踪运输链。,Clock:,时钟名称。,(,clock ),实例:,ClkReset clock1;,ClkStart clock1;,RunCycle;,ClkStop clock1;,nCycleTime:=ClkRead(clock1);,TPWrite “Last Cycle Time: ”Num:=nCycleTime;,2024/11/28,计时指令,ClkStart,ClkStart,Clock,;,应用:,启动机器人相应时钟,常用于记录循环时间或机器人跟踪运输链。机器人时钟启动后,时钟不会因为机器人停止运行或关机而停止计时。在机器人时钟运行时,指令,ClkStop,与,ClkReset,仍起作用。,Clock:,时钟名称。,(,clock ),2024/11/28,计时指令,ClkStart,限制:,机器人时钟计时超过 4,294,967 秒,即 49 天17 小时 2 分 47 秒,机器人将出错。,Error Handler,代码为,ERR_OVERFLOW。,实例:,ClkReset clock1;,ClkStart clock1;,RunCycle;,ClkStop clock1;,nCycleTime:=ClkRead(clock1);,TPWrite “Last Cycle Time: ”Num:=nCycleTime;,2024/11/28,计时指令,ClkStop,ClkStop,Clock,;,应用:,停止机器人相应时钟,常用于记录循环时间或机器人跟踪运输链。,Clock:,时钟名称。,(,clock ),实例:,ClkReset clock1;,ClkStart clock1;,RunCycle;,ClkStop clock1;,nCycleTime:=ClkRead(clock1);,TPWrite “Last Cycle Time: ”Num:=nCycleTime;,2024/11/28,中断指令,CONNECT,IDelete,ISignalDI,ISignalDO,ISignalAI,ISignalAO,ISleep,IWatch,IDisable,IEnable,ITimer,2024/11/28,中断指令,IDelete,IDelete,Interrupt,;,应用:,将机器人,相应中断数据与相应的中断处理程序之间的连接去除。,Interrupt:,中断数据名称。,(,intnum ),实例:,CONNECT intInspect WITH rAlarm;,ISignalDI di01_Vacuum,0,intInspect;,IDelete intInspect;,2024/11/28,中断指令,IDelete,限制:,执行指令,IDelete,后,当前中断数据的连接被完全清除,如需再次使用这个中断数据必须重新用指令,CONNECT,连接至相应的中断处理程序。,在下列情况下,中断将被自动去除:,重新载入新的运行程序。,机器人运行程序被重置,程序指针回到主程序第一行 (,Start From Beginning )。,机器人程序指针被移至任意一个例行程序第一行 (,Move pp to Routine )。,2024/11/28,中断指令,ISignalDI,ISignalDI,Single,Signal,TriggValue,Interrupt,;,应用:,使用相应的数字输入信号触发相应的中断功能,,必须同指令,CONNECT,联合使用。,Single:,单次中断开关。,(,switch ),Signal:,触发中断信号。,(,signaldi ),TriggValue:,触发信号值。,(,dionum ),Interrupt:,中断数据名称,。,( intnum ),2024/11/28,中断指令,ISignalDI,0,1,0,1,中断触发,中断触发,实例:,CONNECT int1 WITH iroutine1;,ISignalDISignal di01,1,int1;,CONNECT int2 WITH iroutine2;,ISignalDI di02,1,int1;,中断功能在单次触发触发后失效。,中断功能持续有效,只有在程序重置或运行指令,IDelete,后才失效。,2024/11/28,中断指令,ISignalDI,限制:,当一个中断数据完成连接后,这个中断数据不允许再次连接到任何中断处理程序 ( 包括已经连接的中断处理程序,)。,如果需要再次连接至任何中断处理程序,必须先使用指令,IDelete,将原连接去除。,PROC main(),CONNECT int1 WITH r1;,ISignalDI di01,1,int1;,WHILE TRUE DO,ENDWHILE,ENDPROC,PROC main(),CONNECT int1 WITH r1;,ISignalDI di01,1,int1;,IDelete int1;,ENDPROC,2024/11/28,中断指令,ISignalDO,ISignalDO,Single,Signal,TriggValue,Interrupt,;,应用:,使用相应的数字输出信号触发相应的中断功能,,必须同指令,CONNECT,联合使用。,Single:,单次中断开关。,(,switch ),Signal:,触发中断信号。,(,signaldo ),TriggValue:,触发信号值。,(,dionum ),Interrupt:,中断数据名称,。,( intnum ),2024/11/28,中断指令,ISignalDO,实例:,CONNECT int1 WITH iroutine1;,ISignalDOSignal do01,1,int1;,CONNECT int2 WITH iroutine2;,ISignalDO do02,1,int1;,0,1,0,1,中断触发,中断触发,中断功能在单次触发触发后失效。,中断功能持续有效,只有在程序重置或运行指令,IDelete,后才失效。,2024/11/28,中断指令,ISignalDO,限制:,当一个中断数据完成连接后,这个中断数据不允许再次连接到任何中断处理程序 ( 包括已经连接的中断处理程序,)。,如果需要再次连接至任何中断处理程序,必须先使用指令,IDelete,将原连接去除。,PROC main(),CONNECT int1 WITH r1;,ISignalDO do01,1,int1;,WHILE TRUE DO,ENDWHILE,ENDPROC,PROC main(),CONNECT int1 WITH r1;,ISignalDO do01,1,int1;,IDelete int1;,ENDPROC,2024/11/28,中断指令,ISignalAI,ISignalAI,Single,Signal,Condition,HighValue,LowValue,DeltaValue,DPos,|,DNeg,Interrupt,;,Single:,单次中断开关。,(,switch ),Signal:,触发中断信号。,(,signalai ),Condition:,中断触发状态。,(,aiotrigg ),HighValue:,最大逻辑值。,(,num ),LowValue:,最小逻辑值。,(,num ),2024/11/28,中断指令,ISignalAI,DeltaValue:,中断复位差值,。,( num ),DPos:,正值中断开关。,(,switch ),DNeg:,负值中断开关。,(,switch ),Interrupt:,中断数据名称,。,( intnum ),ISignalAI,Single,Signal,Condition,HighValue,LowValue,DeltaValue,DPos,|,DNeg,Interrupt,;,2024/11/28,中断指令,ISignalAI,中断触发状态:,AIO_ABOVE_HIGH,模拟量信号逻辑值大于最大逻辑值 (,HighValue )。,AIO_BELOW_HIGH,模拟量信号逻辑值小于最大逻辑值 (,HighValue )。,AIO_ABOVE_LOW,模拟量信号逻辑值大于最小逻辑值 (,LowValue )。,AIO_BELOW_LOW,模拟量信号逻辑值小于最小逻辑值 (,LowValue )。,AIO_BETWEEN,模拟量信号逻辑值处于最小逻辑值 (,LowValue ),与最大逻辑值 (,HighValue ),之间。,2024/11/28,中断指令,ISignalAI,中断触发状态:,AIO_OUTSIDE,模拟量信号逻辑值大于最大逻辑值 (,HighValue ),或小于最小逻辑值 (,LowValue )。,AIO_ALWAYS,总是触发中断,与模拟量信号逻辑值处于最小逻辑值 (,LowValue ),与最大逻辑值 (,HighValue ),无关。,应用:,使用相应的模拟量输入信号触发相应的中断功能,,必须同指令,CONNECT,联合使用。,2024/11/28,中断指令,ISignalAI,实例:,CONNECT int1 WITH iroutine1;,ISignalAISignal ai1,AIO_BETWEEN,2,1,0,int1; ,CONNECT int2 WITH iroutine2;,ISignalAI ai2,AIO_BETWEEN,1.5,0.5,0,int1;,CONNECT int3 WITH iroutine3;,ISignalAI ai3,AIO_BETWEEN,1.5,0.5,0.1,int3;,中断功能在单次触发触发后失效。,中断功能持续有效,只有在程序重置或运行指令,IDelete,后才失效。,2024/11/28,中断指令,ISignalAI,判断中断条件。,(,Condition, HighValue, LowValue ),TRUE,如果没有参变量 ,DPos,与 ,Dneg,ABS(CurrentValue - RefValue) DeltaValue,RefValue := CurrentValue,FALSE,如果使用参变量 ,DPos,(CurrentValue - RefValue) DeltaValue,FALSE,如果使用参变量 ,DNeg,(RefValue - CurrentValue) DeltaValue,FALSE,ABS(CurrentValue - RefValue) DeltaValue,FALSE,RefValue := CurrentValue,执行中断处理,TRUE,TRUE,TRUE,RefValue := CurrentValue,FALSE,TRUE,2024/11/28,中断指令,ISignalAI,限制:,当前最大逻辑值 (,HighValue ),与最小逻辑值 (,LowValue ),必须在模拟量信号所定义的逻辑值范围内。,最大逻辑值 (,HighValue ),必须大于最小逻辑值 (,LowValue )。,中断复位差值 (,DeltaValue ),必须为正数或 0。,指令,ISignalDI,的限制,仍适用。,2024/11/28,中断指令,ISignalAO,ISignalAO,Single,Signal,Condition,HighValue,LowValue,DeltaValue,DPos,|,DNeg,Interrupt,;,Single:,单次中断开关。,(,switch ),Signal:,触发中断信号。,(,signalao ),Condition:,中断触发状态。,(,aiotrigg ),HighValue:,最大逻辑值。,(,num ),LowValue:,最小逻辑值。,(,num ),2024/11/28,中断指令,ISignalAO,DeltaValue:,中断复位差值,。,( num ),DPos:,正值中断开关。,(,switch ),DNeg:,负值中断开关。,(,switch ),Interrupt:,中断数据名称,。,( intnum ),ISignalAO,Single,Signal,Condition,HighValue,LowValue,DeltaValue,DPos,|,DNeg,Interrupt,;,2024/11/28,中断指令,ISignalAO,中断触发状态:,AIO_ABOVE_HIGH,模拟量信号逻辑值大于最大逻辑值 (,HighValue )。,AIO_BELOW_HIGH,模拟量信号逻辑值小于最大逻辑值 (,HighValue )。,AIO_A
展开阅读全文