//干涉
AxisStatus.bInterferenceError:=FALSE;
FOR i:=1 TO 4 BY 1 DOIF AxisSignal.bInterference[i] THENAxisStatus.bInterferenceError:=TRUE;END_IF
END_FOR//正负软限位
AxisStatus.bPositiveLimitError:=FALSE;
AxisStatus.bNegativeLimitError:=FALSE;
IF AxisOther.bPositionLimit THENIF (AxisStatus.nActualPosition>=AxisOther.nPositiveLimitAND AxisControl.bJogForward)OR (AxisParameter.nPosition>=AxisOther.nPositiveLimit AND AxisControl.bMoveAbsolute)OR ((AxisParameter.nDistance+AxisStatus.nActualPosition)>=AxisOther.nPositiveLimitAND (AxisControl.bMoveRelativeAND NOT AxisStatus.bMoveRelativeBusy)) THENAxisStatus.bPositiveLimitError:=TRUE;END_IFIF (AxisStatus.nActualPosition<=AxisOther.nNegativeLimitAND AxisControl.bJogBackward)OR (AxisParameter.nPosition<=AxisOther.nNegativeLimit AND AxisControl.bMoveAbsolute)OR ((AxisParameter.nDistance+AxisStatus.nActualPosition)<=AxisOther.nNegativeLimitAND (AxisControl.bMoveRelativeAND NOT AxisStatus.bMoveRelativeBusy)) THENAxisStatus.bNegativeLimitError:=TRUE;END_IF
END_IF//扭矩软限位
AxisStatus.bTorqueLimitError:=FALSE;
IF AxisOther.bTorqueLimit THENIF AxisOther.nTorque>=AxisOther.nTorqueLimit THENAxisStatus.bTorqueLimitError:=TRUE;END_IF
END_IF//控制允许
bMoveAllow:=TRUE;
IF AxisStatus.bInterferenceError
OR AxisStatus.bPositiveLimitError
OR AxisStatus.bNegativeLimitError
OR AxisStatus.bTorqueLimitError
OR AxisStatus.nAxisErrorID>0
OR AxisStatus.bHomeError
OR AxisStatus.bJogError
OR AxisStatus.bMoveRelativeError
OR AxisStatus.bMoveAbsoluteError
OR AxisStatus.bMoveVelocityError
OR AxisControl.bHalt
OR AxisControl.bStop
OR SystemControl.bStop
OR SystemControl.bEmergency THENbMoveAllow:=FALSE;
END_IF//使能
IF AxisStatus.nAxisErrorID>0
OR NOT AxisControl.bPower
OR AxisStatus.bHomeBusy
OR SystemControl.bEmergency THENbPowerAllow:=FALSE;
ELSEbPowerAllow:=TRUE;
END_IF//回原点
IF bMoveAllow
AND NOT AxisStatus.bJogBusy
AND NOT AxisStatus.bMoveRelativeBusy
AND NOT AxisStatus.bMoveAbsoluteBusy
AND NOT AxisStatus.bMoveVelocityBusy
AND AxisControl.bHome THENbHomeAllow:=TRUE;
ELSEbHomeAllow:=FALSE;
END_IF//正向点动
IF bMoveAllow
AND NOT AxisStatus.bHomeBusy
AND NOT AxisStatus.bMoveRelativeBusy
AND NOT AxisStatus.bMoveAbsoluteBusy
AND NOT AxisStatus.bMoveVelocityBusy
AND NOT AxisSignal.bPositiveSensor
AND AxisControl.bJogForward THENbJogForwardAllow:=TRUE;
ELSEbJogForwardAllow:=FALSE;
END_IF//负向点动
IF bMoveAllow
AND NOT AxisStatus.bHomeBusy
AND NOT AxisStatus.bMoveRelativeBusy
AND NOT AxisStatus.bMoveAbsoluteBusy
AND NOT AxisStatus.bMoveVelocityBusy
AND NOT AxisSignal.bNegativeSensor
AND AxisControl.bJogBackward THENbJogBackwardAllow:=TRUE;
ELSEbJogBackwardAllow:=FALSE;
END_IF//相对运动
IF bMoveAllow
AND NOT AxisStatus.bHomeBusy
AND NOT AxisStatus.bJogBusy
AND NOT AxisStatus.bMoveAbsoluteBusy
AND NOT AxisStatus.bMoveVelocityBusy
AND NOT AxisSignal.bPositiveSensor
AND NOT AxisSignal.bNegativeSensor
AND AxisControl.bMoveRelative THENbMoveRelativeAllow:=TRUE;
ELSEbMoveRelativeAllow:=FALSE;
END_IF//绝对运动
IF bMoveAllow
AND NOT AxisStatus.bHomeBusy
AND NOT AxisStatus.bJogBusy
AND NOT AxisStatus.bMoveRelativeBusy
AND NOT AxisStatus.bMoveVelocityBusy
AND NOT AxisSignal.bPositiveSensor
AND NOT AxisSignal.bNegativeSensor
AND AxisControl.bMoveAbsolute THENbMoveAbsoluteAllow:=TRUE;
ELSEbMoveAbsoluteAllow:=FALSE;
END_IF//速度运动
IF bMoveAllow
AND NOT AxisStatus.bHomeBusy
AND NOT AxisStatus.bJogBusy
AND NOT AxisStatus.bMoveRelativeBusy
AND NOT AxisStatus.bMoveAbsoluteBusy
AND NOT AxisSignal.bPositiveSensor
AND NOT AxisSignal.bNegativeSensor
AND AxisControl.bMoveVelocity THENbMoveVelocityAllow:=TRUE;
END_IF
IF NOT bMoveAllow THENbMoveVelocityAllow:=FALSE;
END_IF//加速度
AxisParameter.nAcceleration:=AxisParameter.nVelocity*2/AxisParameter.nAccelerationTime;
AxisParameter.nJogAcceleration:=AxisParameter.nJogVelocity*2/AxisParameter.nAccelerationTime;//减速度
AxisParameter.nDeceleration:=AxisParameter.nVelocity*2/AxisParameter.nDecelerationTime;
AxisParameter.nJogDeceleration:=AxisParameter.nJogVelocity*2/AxisParameter.nDecelerationTime;//加加速度
AxisParameter.nJerk:=AxisParameter.nAcceleration*2/AxisParameter.nAccelerationTime;
AxisParameter.nJogJerk:=AxisParameter.nJogAcceleration*2/AxisParameter.nAccelerationTime;//位置比较
IF ABS(AxisStatus.nActualPosition-AxisParameter.nPosition)<AxisOther.nPositionCompareMax THEN AxisStatus.bPositionCompare:=TRUE;
ELSEAxisStatus.bPositionCompare:=FALSE;
END_IF//扭矩
AxisStatus.nActualTorque:=AxisOther.nTorque;//轴功能块
ReadActualPosition(Axis:=AxisRef , Enable:=TRUE , Valid=> , Busy=> , Error=> , ErrorID=> , Position=>AxisStatus.nActualPosition );ReadActualVelocity(Axis:=AxisRef , Enable:=TRUE , Valid=> , Busy=> , Error=> , ErrorID=> , ActualVelocity=>AxisStatus.nActualVelocity );  ReadAxisError(Axis:=AxisRef , Enable:=TRUE , Valid=> , Busy=> , Error=> , ErrorID=> , AxisErrorID=>AxisStatus.nAxisErrorID );Power(Axis:=AxisRef , Enable:=bPowerAllow , Enable_Positive:=AxisOther.bPositiveEnable , Enable_Negative:=AxisOther.bNegativeEnable , Override:=AxisParameter.nOverride , BufferMode:=MC_Aborting , Options:= , Status=>AxisStatus.bPowerState , Busy=> , Active=> , Error=> , ErrorID=> );Stop(Axis:=AxisRef , Execute:=NOT bMoveAllow AND NOT AxisControl.bHalt , Deceleration:=AxisParameter.nDeceleration , Jerk:=AxisParameter.nJerk , Options:= , Done=> , Busy=> , Active=> , CommandAborted=> , Error=> , ErrorID=> );Halt(Axis:=AxisRef , Execute:=AxisControl.bHalt , Deceleration:=AxisParameter.nDeceleration , Jerk:=AxisParameter.nJerk , BufferMode:=MC_Aborting , Options:= , Done=> , Busy=> , Active=> , CommandAborted=> , Error=> , ErrorID=> );Reset(Axis:=AxisRef , Execute:=AxisControl.bReset OR SystemControl.bReset , Done=> , Busy=> , Error=> , ErrorID=> );Jog(Axis:=AxisRef , JogForward:=bJogForwardAllow , JogBackwards:=bJogBackwardAllow , Mode:=MC_JOGMODE_CONTINOUS , Position:= , Velocity:=AxisParameter.nJogVelocity , Acceleration:=AxisParameter.nJogAcceleration , Deceleration:=AxisParameter.nJogDeceleration , Jerk:=AxisParameter.nJogJerk , Done=>AxisStatus.bJogDone , Busy=>AxisStatus.bJogBusy , Active=> , CommandAborted=> , Error=>AxisStatus.bJogError , ErrorID=> );
(*
Home(Axis:=AxisRef , Execute:=bHomeAllow , Position:=DEFAULT_HOME_Position , HomingMode:=MC_DefaultHoming , BufferMode:=MC_Aborting , Options:= , bCalibrationCam:=TRUE , Done=>AxisStatus.bHomeDone , Busy=>AxisStatus.bHomeBusy , Active=> , CommandAborted=> , Error=>AxisStatus.bHomeError , ErrorID=> );
*)
MoveRelative(Axis:=AxisRef , Execute:=bMoveRelativeAllow , Distance:=AxisParameter.nDistance , Velocity:=AxisParameter.nVelocity , Acceleration:=AxisParameter.nAcceleration , Deceleration:=AxisParameter.nDeceleration , Jerk:=AxisParameter.nJerk , BufferMode:=MC_Aborting , Options:= , Done=>AxisStatus.bMoveRelativeDone , Busy=>AxisStatus.bMoveRelativeBusy , Active=> , CommandAborted=> , Error=>AxisStatus.bMoveRelativeError , ErrorID=> );MoveAbsolute(Axis:=AxisRef , Execute:=bMoveAbsoluteAllow , Position:=AxisParameter.nPosition , Velocity:=AxisParameter.nVelocity , Acceleration:=AxisParameter.nAcceleration , Deceleration:=AxisParameter.nDeceleration , Jerk:=AxisParameter.nJerk , BufferMode:=MC_Aborting , Options:= , Done=>AxisStatus.bMoveAbsoluteDone , Busy=>AxisStatus.bMoveAbsoluteBusy , Active=> , CommandAborted=> , Error=>AxisStatus.bMoveAbsoluteError , ErrorID=> );MoveVelocity(Axis:=AxisRef , Execute:=bMoveVelocityAllow , Velocity:=AxisParameter.nVelocity , Acceleration:=AxisParameter.nAcceleration , Deceleration:=AxisParameter.nDeceleration , Jerk:=AxisParameter.nJerk , Direction:=AxisParameter.nDirection , BufferMode:=MC_Aborting , Options:= , InVelocity=>AxisStatus.bMoveVelocityState , Busy=>AxisStatus.bMoveVelocityBusy , Active=> , CommandAborted=> , Error=>AxisStatus.bMoveVelocityError , ErrorID=> );AxisHome(Axis:=AxisRef , sAmsNetId:=AxisOther.sAmsNetId ,nPort:=AxisOther.nPort ,nHomeMethod:=AxisParameter.nHomeMethod ,bHome:=bHomeAllow , bReset:=AxisControl.bReset OR SystemControl.bReset ,bBusy=>AxisStatus.bHomeBusy , bDone=>AxisStatus.bHomeDone , bError=>AxisStatus.bHomeError ,nErrorId=> ,nWriteControlWord=>AxisStatus.nControlWord );
//复位报警
IF bReset THENbError:=FALSE;nErrorId:=0;
END_IF//步
CASE nHomeStep OF0://复位动作bBusy:=FALSE;bDone:=FALSE;Reset.Execute:=FALSE;IF bHome AND NOT bError THENbBusy:=TRUE;nHomeStep:=10;END_IF10://调用复位功能块Reset.Execute:=TRUE;IF Reset.Done THENReset.Execute:=FALSE;nHomeStep:=20;ELSIF Reset.Error THENReset.Execute:=FALSE;nHomeStep:=1000;END_IF20://写入伺服,回零加速度,回零高速,回零低速,回零方式nWriteHomeAcceleration:=3276800;nWriteHomeVelocityHigh:=32768;nWriteHomeVelocityLow:=5678;nWriteHomingMethod:=nHomeMethod;//读取伺服,判断参数是否写入IF nWriteHomeAcceleration=nReadHomeAccelerationAND nWriteHomeVelocityHigh=nReadHomeVelocityHighAND nWriteHomeVelocityLow=nReadHomeVelocityLowAND nWriteHomingMethod=nReadHomingMethod AND tonDelayStep.Q THENnHomeStep:=30;END_IF//延时tonDelayStep(IN:=TRUE , PT:=T#1S , Q=> , ET=> );//延时报警tonDelayAlarm(IN:=TRUE , PT:=T#5S , Q=> , ET=> );IF tonDelayAlarm.Q THENnHomeStep:=1000;END_IF30://写入伺服,回零模式nWriteModesOfOperation:=6;//读取伺服,判断参数是否写入IF nWriteModesOfOperation=nReadModesOfOperation THENnHomeStep:=50;END_IF//延时报警tonDelayAlarm(IN:=TRUE , PT:=T#5S , Q=> , ET=> );IF tonDelayAlarm.Q THENnHomeStep:=1000;END_IF50://写入伺服,接通主回路电nWriteControlWord:=2#110;//延时tonDelayStep(IN:=TRUE , PT:=T#1S , Q=> , ET=> );IF tonDelayStep.Q THENnHomeStep:=60;END_IF60://写入伺服,伺服准备好nWriteControlWord:=2#111;//延时tonDelayStep(IN:=TRUE , PT:=T#1S , Q=> , ET=> );IF tonDelayStep.Q THENnHomeStep:=70;END_IF70://写入伺服,伺服运行nWriteControlWord:=2#1111;//延时tonDelayStep(IN:=TRUE , PT:=T#1S , Q=> , ET=> );IF tonDelayStep.Q THENnHomeStep:=80;END_IF80://写入伺服,启动回零nWriteControlWord:=2#11111;//延时tonDelayStep(IN:=TRUE , PT:=T#1S , Q=> , ET=> );IF tonDelayStep.Q THENnHomeStep:=90;END_IF90://读取伺服,判断回零是否完成IF nReadStatusWord.10AND nReadStatusWord.12 AND NOT nReadStatusWord.13 THENnHomeStep:=100;END_IF//延时报警tonDelayAlarm(IN:=TRUE , PT:=T#120S , Q=> , ET=> );IF tonDelayAlarm.Q THENnHomeStep:=1000;END_IF100://调用复位功能块Reset.Execute:=TRUE;IF Reset.Done THENReset.Execute:=FALSE;nHomeStep:=110;ELSIF Reset.Error THENReset.Execute:=FALSE;nHomeStep:=1000;END_IF110://写入伺服,循环同步位置模式nWriteModesOfOperation:=8;//读取伺服,判断模式是否写入IF nWriteModesOfOperation=nReadModesOfOperation THENbBusy:=FALSE;bDone:=TRUE;nHomeStep:=0;END_IF1000://故障,写入伺服,循环同步位置模式nWriteModesOfOperation:=8;//读取伺服,判断模式是否写入IF nWriteModesOfOperation=nReadModesOfOperation THENbBusy:=FALSE;bError:=TRUE;nHomeStep:=0;END_IF
END_CASE//复位定时器
IF nHomeLastStep<>nHomeStep THENnHomeLastStep:=nHomeStep;tonDelayStep(IN:=FALSE , PT:= , Q=> , ET=> );tonDelayAlarm(IN:=FALSE , PT:= , Q=> , ET=> );
END_IF//高低脉冲信号(脉冲触发读写参数)
tonDelayHigh(IN:=bBusy AND NOT tonDelayLow.Q , PT:=T#10MS , Q=> , ET=> );
tonDelayLow(IN:=tonDelayHigh.Q , PT:=T#10MS , Q=> , ET=> );//写入回零加速度
FB_EcCoESdoWrite_609A(sNetId:=sAmsNetId , nSlaveAddr:=nPort , nSubIndex:=16#00 , nIndex:=16#609A , pSrcBuf:=ADR(nWriteHomeAcceleration) , cbBufLen:=SIZEOF(nWriteHomeAcceleration) , bExecute:=tonDelayHigh.Q AND (nWriteHomeAcceleration<>nReadHomeAcceleration) , tTimeout:= , bBusy=> , bError=> , nErrId=> );//读取回零加速度
FB_EcCoESdoRead_609A(sNetId:=sAmsNetId , nSlaveAddr:=nPort , nSubIndex:=16#00 , nIndex:=16#609A , pDstBuf:=ADR(nReadHomeAcceleration) , cbBufLen:=SIZEOF(nReadHomeAcceleration) , bExecute:=tonDelayHigh.Q , tTimeout:= , bBusy=> , bError=> , nErrId=> );//写入回零高速
FB_EcCoESdoWrite_6099_1(sNetId:=sAmsNetId , nSlaveAddr:=nPort , nSubIndex:=16#01 , nIndex:=16#6099 , pSrcBuf:=ADR(nWriteHomeVelocityHigh) , cbBufLen:=SIZEOF(nWriteHomeVelocityHigh) , bExecute:=tonDelayHigh.Q AND (nWriteHomeVelocityHigh<>nReadHomeVelocityHigh) , tTimeout:= , bBusy=> , bError=> , nErrId=> );//读取回零高速
FB_EcCoESdoRead_6099_1(sNetId:=sAmsNetId , nSlaveAddr:=nPort , nSubIndex:=16#01 , nIndex:=16#6099 , pDstBuf:=ADR(nReadHomeVelocityHigh) , cbBufLen:=SIZEOF(nReadHomeVelocityHigh) , bExecute:=tonDelayHigh.Q , tTimeout:= , bBusy=> , bError=> , nErrId=> );//写入回零低速
FB_EcCoESdoWrite_6099_2(sNetId:=sAmsNetId , nSlaveAddr:=nPort , nSubIndex:=16#02 , nIndex:=16#6099 , pSrcBuf:=ADR(nWriteHomeVelocityLow) , cbBufLen:=SIZEOF(nWriteHomeVelocityLow) , bExecute:=tonDelayHigh.Q AND (nWriteHomeVelocityLow<>nReadHomeVelocityLow) , tTimeout:= , bBusy=> , bError=> , nErrId=> );//读取回零低速
FB_EcCoESdoRead_6099_2(sNetId:=sAmsNetId , nSlaveAddr:=nPort , nSubIndex:=16#02 , nIndex:=16#6099 , pDstBuf:=ADR(nReadHomeVelocityLow) , cbBufLen:=SIZEOF(nReadHomeVelocityLow) , bExecute:=tonDelayHigh.Q , tTimeout:= , bBusy=> , bError=> , nErrId=> );//写入回零方式
FB_EcCoESdoWrite_6098(sNetId:=sAmsNetId , nSlaveAddr:=nPort , nSubIndex:=16#00 , nIndex:=16#6098 , pSrcBuf:=ADR(nWriteHomingMethod) , cbBufLen:=1 , bExecute:=tonDelayHigh.Q AND (nWriteHomingMethod<>nReadHomingMethod) , tTimeout:= , bBusy=> , bError=> , nErrId=> );//读取回零方式
FB_EcCoESdoRead_6098(sNetId:=sAmsNetId , nSlaveAddr:=nPort , nSubIndex:=16#00 , nIndex:=16#6098 , pDstBuf:=ADR(nReadHomingMethod) , cbBufLen:=1 , bExecute:=tonDelayHigh.Q , tTimeout:= , bBusy=> , bError=> , nErrId=> );
(*
//写入控制字
FB_EcCoESdoWrite_6040(sNetId:=sAmsNetId , nSlaveAddr:=nPort , nSubIndex:=16#00 , nIndex:=16#6040 , pSrcBuf:=ADR(nWriteControlWord) , cbBufLen:=SIZEOF(nWriteControlWord) , bExecute:=tonDelayHigh.Q , tTimeout:= , bBusy=> , bError=> , nErrId=> );
*)
//读取状态字
FB_EcCoESdoRead_6041(sNetId:=sAmsNetId , nSlaveAddr:=nPort , nSubIndex:=16#00 , nIndex:=16#6041 , pDstBuf:=ADR(nReadStatusWord) , cbBufLen:=SIZEOF(nReadStatusWord) , bExecute:=tonDelayHigh.Q , tTimeout:= , bBusy=> , bError=> , nErrId=> );//写入运行模式
FB_EcCoESdoWrite_6060(sNetId:=sAmsNetId , nSlaveAddr:=nPort , nSubIndex:=16#00 , nIndex:=16#6060 , pSrcBuf:=ADR(nWriteModesOfOperation) , cbBufLen:=SIZEOF(nWriteModesOfOperation) , bExecute:=tonDelayHigh.Q AND (nWriteModesOfOperation<>nReadModesOfOperation) , tTimeout:= , bBusy=> , bError=> , nErrId=> );//读取运行模式
FB_EcCoESdoRead_6061(sNetId:=sAmsNetId , nSlaveAddr:=nPort , nSubIndex:=16#00 , nIndex:=16#6061 , pDstBuf:=ADR(nReadModesOfOperation) , cbBufLen:=SIZEOF(nReadModesOfOperation) , bExecute:=tonDelayHigh.Q , tTimeout:= , bBusy=> , bError=> , nErrId=> );//复位
Reset(Axis:=Axis , Execute:= , Done=> , Busy=> , Error=> , ErrorID=> );
//arAmsNetId转换sAmsNetId
sAmsNetId:='';
sAmsNetId:=BYTE_TO_STRING(arAmsNetId[0]);
FOR i:=1 TO 5 BY 1 DOsAmsNetId:=CONCAT(sAmsNetId,'.');sAmsNetId:=CONCAT(sAmsNetId,BYTE_TO_STRING(arAmsNetId[i]));
END_FOR//描述信息
ACT_comment();//干涉(若有则添加)//轴功能块控制
FOR i:=1 TO nAxisMaxNum BY 1 DOaxis[i].other.sAmsNetId:=sAmsNetId;axis[i].other.nPort:=axis[i].com.nPort;axis[i].other.nTorque:=INT_TO_LREAL(axis[i].com.nTorque);axis[i].signal.bNegativeSensor:=axis[i].com.nDigitalInputs.0;axis[i].signal.bPositiveSensor:=axis[i].com.nDigitalInputs.1;axis[i].signal.bHomeSensor:=axis[i].com.nDigitalInputs.2;axis[i].FB(AxisRef:=axis[i].REF , SystemControl:=system.control ,AxisControl:=axis[i].control , AxisParameter:=axis[i].parameter ,AxisOther:=axis[i].other ,AxisSignal:=axis[i].signal , AxisStatus=>axis[i].status );IF axis[i].status.bHomeBusy THENaxis[i].com.nControlWord:=axis[i].status.nControlWord;ELSEaxis[i].com.nControlWord:=USINT_TO_UINT(axis[i].com.arControlWord[1])+SHL(USINT_TO_UINT(axis[i].com.arControlWord[2]),8);END_IF
END_FOR

TwinCAT 3 轴程序相关推荐

  1. 信捷PLC程序 八轴程序,有伺服也有步进,内部有伺服和步进计算公式换算

    信捷PLC程序 八轴程序,有伺服也有步进,内部有伺服和步进计算公式换算,模块化编程框架,包含各功能区规划,伺服步进电机DOG+JOG,气缸手动,公式计算数据处理,报警功能区,自动步进S调用等 研究透彻 ...

  2. 松下6轴程序模板 plc采用FP-XHC60T ,标准可带6轴程序

    松下6轴程序模板 1:plc采用FP-XHC60T ,标准可带6轴程序. 2:昆仑通态触摸屏程序(触摸屏附带配方功能,以及产能统计:) 3:项目各种功能完整. 该程序为标准框架, a.故障, b.复位 ...

  3. 松下PLC FP-XHC60T 程序 两个PLC通信控制11个轴 程序稳定已批量生产 注释完整 带威纶通触摸屏程序

    松下PLC FP-XHC60T 程序 两个PLC通信控制11个轴 程序稳定已批量生产 注释完整 带威纶通触摸屏程序

  4. 西门子smart200和西门子伺服V90三轴程序

    西门子smart200和V90伺服程序 西门子smart200和西门子伺服V90三轴程序 包括smart200PLC 程序和西门子smart触摸屏程序,详细注释,控制系统详细说明书,IO表,电气原理图 ...

  5. 西门子smart200和西门子伺服V90三轴程序 包括smart200PLC 程序和西门子smart触摸屏程序

    西门子smart200和V90伺服程序 西门子smart200和西门子伺服V90三轴程序 包括smart200PLC 程序和西门子smart触摸屏程序,详细注释,控制系统详细说明书,IO表,电气原理图 ...

  6. 西门子PLC伺服大型20轴程序modbus通讯RS232通讯MES通讯气缸

    西门子PLC伺服大型20轴程序modbus通讯RS232通讯MES通讯气缸,通讯,机械手,模拟量等,各种FB块 PTO控制20多个轴,100多个气缸,控制2台机器人. 5台PLC智能IO通讯,Modb ...

  7. 西门子PLC伺服大型20轴程序modbus通讯RS232通讯MES通讯气缸,通讯

    西门子PLC伺服大型20轴程序modbus通讯RS232通讯MES通讯气缸,通讯,机械手,模拟量等,各种FB块 PTO控制20多个轴,100多个气缸,控制2台机器人. 5台PLC智能IO通讯,Modb ...

  8. 信捷PLC程序,八轴程序,有伺服也有步进,内部有伺服和步进计算公式换算,模块化编程框架

    信捷PLC程序,八轴程序,有伺服也有步进,内部有伺服和步进计算公式换算,模块化编程框架,包含各功能区规划,伺服步进电机DOG+JOG,气缸手动,公式计算数据处理,报警功能区,自动步进S调用等. 研究透 ...

  9. 松下6轴程序模板 1:plc采用FP-XHC60T ,标准可带6轴程序

    松下6轴程序模板 1:plc采用FP-XHC60T ,标准可带6轴程序. 2:昆仑通态触摸屏程序(触摸屏附带配方功能,以及产能统计:) 3:项目各种功能完整. 该程序为标准框架, a.故障, b.复位 ...

  10. 包膜机西门子PLC和维纶触摸屏程序,西门子1512和5台1214C通讯控制20轴程序

    包膜机西门子PLC和维纶触摸屏程序,西门子1512和5台1214C通讯控制20轴程序 博图V14.1和维纶触摸屏程序,带扫码枪和远程IO 1>内含PLC程序.触摸屏程序:程序带有20轴,4路扫码 ...

最新文章

  1. 1014 装箱问题 CODE[VS]
  2. css中一些必要的公共样式
  3. 做方差分析需要正态性检验吗_检验工序要做PFMEA吗?检验如何做PFMEA?
  4. 1.用代码演示String类中的以下方法的用法 (2018.08.09作业)
  5. DataTable/DataSet汇出Excel
  6. Java Swing 如何关闭当前窗口?
  7. 关于多表的leftJoin(转)
  8. 免费实时汇率查询接口
  9. cropper layui实现图片剪切
  10. 微信QQ的二维码登录原理浅析
  11. 直观理解Beta分布
  12. 心脏出血(Heartbleed)漏洞浅析、复现
  13. 荣耀3ch30-u10 android5,华为荣耀3C联通版 (H30-u10 2G RAM)一键救砖教程,轻松刷回官方系统...
  14. 电路中的基础元件-无源晶振详谈
  15. iOS app脚手架
  16. Vue报错-npm ERR,missing script: serve npm ERR, A complete log of this run can be found in:
  17. 世界上最远的距离 - 泰戈尔
  18. Android 和 iPhone 界面布局示例
  19. J_link无法调试
  20. [Openwrt 项目开发笔记]:Openwrt平台搭建(一)

热门文章

  1. 一台电脑同时启动多个java_一台电脑如果运行多个相同的程序
  2. Kali内Nmap端口扫描与高级扫描
  3. centos7 RPM包之rpm命令
  4. OPPO K9 Pro刷root强解锁BL刷面具Magisk框架 oppo k9pro root教程
  5. Java Map是否有序?
  6. Netty框架介绍及实战
  7. 替换和修复系统User32.dll文件
  8. html5跳转页面接收参数,HTML页面跳转及参数传递问题
  9. RIP、OSPF、ISIS协议的区别
  10. iOS | OC 面向对象的编程