签到有奖
消息提醒
运维工程师专区
官方商城
扫码分享好友 任选多种周边
哪位可以提供scout中st编写的伺服控制实例,初次接触想找一个实例学习一下。如有请发邮箱18553207992@163.com
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
帖子链接:https://www.ad.siemens.com.cn/club/bbs/post.aspx?a_id=1548293&b_id=46&s_id=0&num=2
下面的Axismove是我写的最简单的例子,可以参考
PROGRAM AxisMove
//input x [1\2\3\4\5\6\7\8\29] select the axis
//booncestart=1 active the axis then set home 0
//setvalue mubiaoposition=100.0,then boOnceFinish=1,the axis start position
//boOnceFinish falldown trig,then stop and inactive the axis
VAR_TEMP
myRetDINT : DINT;
END_VAR
VAR
fe1, fe2 : F_TRIG;
re1, re2 : R_TRIG;
myRetBool : ARRAY[0..7] OF BOOL;
arrayPositionAxis : ARRAY[1..29] OF posAxis;
arrayPositionAxis[1] := IndexConveyor;
arrayPositionAxis[2] := IndexConveyor;
arrayPositionAxis[3] := IndexConveyor;
arrayPositionAxis[4] := IndexConveyor;
arrayPositionAxis[5] := IndexConveyor;
arrayPositionAxis[6] := IndexConveyor;
arrayPositionAxis[7] := IndexConveyor;
arrayPositionAxis[8] := IndexConveyor;
arrayPositionAxis[9] := QuickConveyor;
arrayPositionAxis[10] := PressConveyor1;
arrayPositionAxis[11] := PressConveyor2;
IF xx >= 1 AND xx<= 11 AND boOnceStart THEN
IF arrayPositionAxis[xx].control = INACTIVE THEN //轴是否已激活
myRetDINT :=
_enableaxis(
axis := arrayPositionAxis[xx]
// ,enablemode := ALL
// ,servocontrolmode := ACTIVE
// ,servocommandtoactualmode := INACTIVE
// ,nextcommand := IMMEDIATELY
// ,commandid := (0,0)
// ,forcecontrolmode := INACTIVE
// ,stwbitset := 0
// ,movingmode := DO_NOT_CHANGE
);
END_IF;
re1( clk := arrayPositionAxis[xx].control = ACTIVE);
IF re1.q THEN //轴是否已激活
_homing(
,homingmode := DIRECT_HOMING
,homepositiontype := DIRECT
// ,homeposition := 0.0
// ,velocitytype := USER_DEFAULT
// ,velocity := 100.0
// ,positiveacceltype := USER_DEFAULT
// ,positiveaccel := 100.0
// ,negativeacceltype := USER_DEFAULT
// ,negativeaccel := 100.0
// ,positiveaccelstartjerktype := USER_DEFAULT
// ,positiveaccelstartjerk := 100.0
// ,positiveaccelendjerktype := USER_DEFAULT
// ,positiveaccelendjerk := 100.0
// ,negativeaccelstartjerktype := USER_DEFAULT
// ,negativeaccelstartjerk := 100.0
// ,negativeaccelendjerktype := USER_DEFAULT
// ,negativeaccelendjerk := 100.0
// ,velocityprofile := USER_DEFAULT
// ,mergemode := SEQUENTIAL
IF arrayPositionAxis[xx].control = ACTIVE AND
arrayPositionAxis[xx].positioningstate.homed = yes AND
boOnceFinish THEN //轴已激活,已归零,启动定位
_pos(
// ,direction := USER_DEFAULT
// ,positioningmode := ABSOLUTE//relative
,position := mubiaoposition
// ,blendingmode := USER_DEFAULT
fe1( clk := boOnceFinish);
arrayPositionAxis[xx].motionstatedata.motionstate = STANDSTILL AND
fe1.q THEN
myRetDINT := _stop(axis := arrayPositionAxis[xx], stopmode := STOP_AND_ABORT );
myRetDINT := _disableaxis(axis := arrayPositionAxis[xx], disablemode := ALL );
boOnceStart :=FALSE;
;
END_PROGRAM
西门子的全球资源中心里在应用样例中搜索SIMOTION ,选择英文网页,不过大部分的库都是加密的,如果你们有西门子的技术支持,可以找他们要旋切刀的Demo,这个里面功能部分是坐在库里面的,里面包含了Pos Move enable disable enablecamming disablecamming 等指令的应用,这个库是没有加密的。
或者你有旧版Souct 安装包的话(4.3或4.4),在安装包里也能找到这个库。
分享
扫码分享好友 任选多种好礼
收藏
有帮助
欢迎您访问支持中心!
丰富的视频,全方位的文档,大量的网友交流精华……
为了更好的完善这些内容,我们诚邀您在浏览结束后,花20秒左右的时间,完成一个用户在线调查!
感谢您的支持!
密码至少8位,包含大、小写字母,数字和符号至少三种。
允许邮箱和手机接收来自支持中心网站的信息
我已同意《支持中心网站注册协议和隐私政策》
微信登录扫码一键登录
验证码登录
密码登录
二维码失效点击重试
打开微信扫一扫,快速登录/注册
未注册手机验证后自动登录,注册即代表同意《支持中心网站注册协议和隐私政策》
三日内免验证登录
短信登录
登录