|
|
马上注册,结识高手,享用更多资源,轻松玩转三维网社区。
您需要 登录 才可以下载或查看,没有帐号?注册
x
我用是西门子224的PLC。步进电机为5相混合式的,0.72/0.36度。我编了个程序让电机右转500个脉冲后停止。应该是很简单的程序,可是我编出来老师出毛病。所以在这让大家看一下。! i6 Q" H+ A4 o. B0 y. r
MAIN
6 W9 f9 y2 U" B& vnetwork1# \) ?& B& N( s8 n3 P: Z3 }) {
LD SM0.0 I1.0按下时初始化中间继电器8 ^/ [7 ~* j& g
A I1.0" N3 g0 X0 V0 C3 G( ]; A+ v2 T
S M0.1, 10 {! ?6 }' j& P9 \* ~) Z% z
S M1.0, 14 c8 ]. W0 w3 i# B" C' V. q+ j
S M2.0, 1( P& G3 D# z# [8 c
network2$ H6 _ A9 k9 a4 K: {
LD I0.1 I0.1按下时停止电机0 W$ G+ Y0 j. z; H
R M1.0, 1 复位中间继电器
+ e2 T8 O7 \' U L: s; DR M0.1, 18 y* U- O% [# k) l2 o
R Q0.6, 1
# A4 ^1 x/ c. HR M2.0, 1
3 g9 w O- f+ m# J$ ?: v: Y9 `network3
6 b# C2 Q+ M; s4 {$ P; e BLD I1.3 I1.3按下时电机开始右转& N& y. o0 s3 K+ p7 b
A M0.1
) `( @6 l( D% O3 ?CALL 右转1 Y$ L9 B6 q+ k9 i( k$ j
. J ?* `. i6 @) z右转子程序
* C. k+ ^( l9 q" T: q4 ]LD SM0.02 ]7 X4 C# U# u6 G" s0 ^
A M2.0
" S& A. w9 i+ Z3 p' u( l. \/ LA M1.0/ p! g9 p: I* B0 i) V! k8 _
R Q0.7, 1 设置转动的方向
9 N/ a4 w! A" F% F6 BMOVB 16#85, SMB77
5 M6 E9 R( ]( iMOVW 5000, SMW78 + C* N9 v e+ ^1 @0 D( ?) R7 f6 e" ^
MOVD 500, SMD824 z+ r' N- a6 j: R3 }6 b* N, o
ATCH 到位中断, 20 设置中断. ?( ~2 J, n5 }/ h" W9 L5 R& e
ENI
* I4 _2 e; U$ k+ R4 p! f- `PLS 1$ Y; R8 h( I, l5 _+ N
" w+ u9 N! o; q$ E5 {
中断程序
; a5 O' u0 C. z2 j" ]LD SM0.0' H+ R/ w8 H: l, N' P% |8 k
S Q0.6, 1 让q0.6置1,显示中断程序已运行
, O( _4 s7 s! F3 Z! n9 w7 }1 i" pR M1.0, 1 使电机不在运行# x; j. H! I& e( L
R M0.1, 15 b# J- z7 E8 E$ z
+ y+ b" A( u1 i& v) f6 R" D0 a现在问题是Q0.6的灯亮了,但是电机还在转,发出脉冲的Q0.1位还是亮的。按理说Q0.6, V0 \1 ~3 y4 J3 W. t( d8 O
亮了,中断程序就是执行了。但是中断执行了,为什么电机还转 啊?还有一个问题,我设置的是- c& ^/ A4 Y) l' Y% V
半步运行,按理说1000个脉冲才是一圈啊,但是现在500个脉冲就转了一圈。Q0.6是在电机转了半圈后亮的2 X" _' B7 C* f4 q* q, B1 j
。感觉很奇怪啊。% a. L6 D+ g* u$ t3 D
再这里请各位给予解答啊 |
|