各位请帮忙解决一下小石子的问题:
我下载了一个S7-200的应用例子,但发现在STEP7-MICRO/WIN32里用STL照例编程时,
CALL1出现了错误,然后LD M1,1也出现提示错误,请问是不是这例子本身有错,还是
编程时不规范.还有就是当子程序的容量过大时,怎样分段才能STL语言程序转换成LAD
语言程序显示.子程序容量或长度有什么限制.下例应怎样更改才是正确的.
//标题:双向变极调速三相感应电机
//输入
//I0.0 顺时针方向,低速.
//I0.1 顺时针方向,高速.
//I0.2 逆时针方向,低速.
//I0.3 逆时针方向,高速.
//I0.4 停机点动开关(带闭触点),OFF
//I0.5 电机电路断路器(常闭触点).
//输出
//Q0.0 电动起动器,顺时针方向,低速.
//Q0.1 电动起动器,顺时针方向,高速.
//Q0.2 电动起动器,逆时针方向,低速.
//Q0.3 电动起动器,逆时针方向,高速.
//Q0.4 停机信号灯.
//Q0.5 限时等待信号灯.
LD SMO.0 //设置堆栈的栈顶(SM0.0总是1).
CALL1 //调用子程序1.
LD I0.0 //若高速顺时针方向旋转命令
R Q0.1,1 //则复位高速顺时针方向旋转输出(Q0.1=0).
LD I0.1 //若高速顺时针方向旋转命令
R Q0.1,1 //则复位低速顺时针方向旋转输出(Q0.1=0).
LD I0.2 //若低速逆时针方向旋转命令.
R Q0.3,1 //则复位逆时针方向高速旋转输出(Q0.3=0).
LD I0.3 //若高速逆时针方向旋转命令.
R Q0.2,1 //则复位低速逆时针方向旋转输出(Q0.2=0).
LDN Q0.0
AN Q0.1
AN Q0.2
AN Q0.3
= Q0.4
//强制等待状态显示
LD M1,1 //关机后设置的强制等待辅助存储器标志.
A SM0.5 //指示灯以1秒闪烁.
= Q0.5 //点亮强制等待信号灯.
MEND //主程序结束.
//子程序1
SBR1 //子程序1开始.
//互锁
LD I0.0 //如果顺时针方向,低速旋转.
O I0.1 //或顺时针方向,高速旋转.
O I0.2 //或逆时针方向,低速旋转.
O I0.3 //或逆时针方向,高速旋转.
AN I0.4 //与停机点动开关(OFF)动作.
LD I0.1 //或......
O I0.2
O I0.3
A I0.0
OLD
LD I0.2 //或......
O I0.3
A I0.1
OLD
LD I0.2
A I0.3
OLD
LD M1.1 //或正在强制等待.
OLD
S M1.0,1 //则设置互锁状态标志M1.0=1.
//解除互锁
LD I0.4 //如果所有点动开关都没有动作.
AN I0.0
AN I0.1
AN I0.2
AN I0.3
AN M1.1
R M1.0,1 //则解除互锁(M1.0=0).
//顺时针方向低速旋转使能
LDN I0.1 //如果没有顺时针方向高速旋转命令.
LD I0.4 //没有停机命令(OFF).
A I0.5 //没有电动机电路断路器动作命令.
AN Q0.2 //逆时针低速旋转状态位未置位.
AN Q0.3 //逆时针高速旋转状态位未置位.
= M2.0 //则顺时针方向低速旋转使能(M2.0=1).
//顺时针方向高速旋转使能
LDN I0.0 //如果没有顺时针方向低速旋转命令.
LD I0.4 //没有停机命令(OFF).
A I0.5 //没有电动机电路断路器动作命令.
AN Q0.2 //逆时针低速旋转状态位未置位.
AN Q0.3 //逆时针高速旋转状态位未置位.
= M2.1 //则顺时针方向高速旋转使能(M2.1=1).
//逆时针方向高速旋转使能
LDN I0.3 //如果没有逆时针方向高速旋转命令.
LD I0.4 //没有停机命令(OFF).
A I0.5 //没有电机电路断路器动作命令.
AN Q0.0 //顺时针低速旋转状态位未置位.
AN Q0.1 //逆时针高速旋转状态位未置位.
= M2.2 //则逆时针方向低速旋转使能(M2.2=1).
//逆时针方向高速旋转使能
LDN I0.2 //如果没有逆时针方向低速旋转使能.
LD I0.4 //没有停机命令(OFF).
A I0.5 //没有电机电路断路器动作命令.
AN Q0.0 //顺时针低速旋转状态位未置位.
AN Q0.1 //顺时针高速旋转状态位未置位.
= M2.3 //则逆时针方向高速旋转使能.
//顺时针方向低速旋转
LD I0.0 //如果顺时针方向低速旋转命令.
O QO.0 //或顺时针方向低速旋转状态.
AN M1.0 //且没有互锁.
A M2.0 //顺时针方向低速旋转使能.
= Q0.0 //则置顺时针方向低速旋转输出Q0.0=1.
//顺时针方向高速旋转
LD I0.1 //如果顺时针方向高速旋转命令.
O Q0.1 //或顺时针方向高速旋转状态.
AN M1.0 //且没有互锁.
A M2.1 //顺时针方向高速旋转.
= Q0.1 //则置顺时针方向高速旋转输出Q0.1=1.
//逆时针方向低速旋转
LD I0.2 //如果逆时针方向低速旋转命令.
O Q0.2 //或逆时针方向低速旋转状态.
AN M1.0 //且没有互锁.
A M2.2 //逆时针方向低速旋转使能.
= Q0.2 //则置位逆时针方向低速旋转输出Q0.2=1.
//逆时针方向高速旋转
LD I0.3 //如果逆时针方向高速旋转命令.
O Q0.3 //或逆时针方向高速旋转状态.
AN M1.0 //且没有互锁.
A M2.3 //逆时针方向高速旋转使能.
= Q0.3 //则置逆时针方向高速旋转输出Q0.3=1.
LD Q0.4 //关机过程的边沿检测.
EU //上升沿.
S M1.1,1 //将关机过程的辅助存储器标志置位(M1.1=1).
LD M1.1
MOVW 500,VW20 //装载重新起动前必须有等待的时间值(500X10ms).
TON T33,VW20 //起动重新起动要强制等待的定时器(T33).
A T33
R M1.1,1 //定时器溢出后将辅助存储器标志位复位(M1.1=0).
MOVW O,T33 //清除强制等待定时器(T33).
RET //子程序1结束.