登录
首页 PLC论坛 西门子SIEMENS
回帖 发帖
正文

主题:S7-200请教

点击:2166 回复:5

本人看了一点点S7-300的资料,如果一个系统有N个电机具有类似的启动和停止条件,那么只要编一个通用的FB,再通过不同的实参调用就能控制各个电机。我想问的是在S7-200里有没有这样类似的功能? 比如说通过传递局部变量调用一个相同的子程序来控制N个类似的电机!?如果有的话,请赐教如何做?
04-04-01 15:38
200中的子程序也可以传递参数,实现你所说的功能。
04-04-01 17:06
你的描述太不清楚了
04-04-01 19:41
比如有三台一样的电机,控制启停如下:
第一台:I0.0 启动   I0.1  停止   Q0.0  运行输出
第二台:I0.2 启动   I0.3  停止   Q0.1  运行输出
第三台:I0.4 启动   I0.5  停止   Q0.2  运行输出
如果按模块化编程则要编三个子程序来分别控制三个电机(当然这种简单的出可以放在一个子程序里):
SBR_0                        SBR_1                    SBR_2
LD  I0.0                      LD  I0.2                  LD  I0.4
O   Q0.0                     O   Q0.1                 O   Q0.2
AN I0.1                      AN I0.3                   AN I0.5
=   Q0.0                    =   Q0.1                  =   Q0.2
现在我想的就是按S7-300里的结构化编程,编一个电机控制的通用子程序,再通过不同的参数,就能实现三个相似的电机的控制.如下:
//Main
LD    M0.0                           //假设M0.0为调用的标志位
CALL SBR_0,I0.0,I0.1,Q0.0    //调用电机1  
CALL SBR_0,I0.2,I0.3,Q0.1    //调用电机2
CALL SBR_0,I0.4,I0.5,Q0.2    //调用电机3
//SBR_0
变量申明如下:
L0.0    start     IN     BOOL     启动
L0.1    stop     IN     BOOL     停止  
L0.2    on        IN     BOOL     运行
LD     start
O      on
AN    stop
=      on
不知以上对否?传递参数是不是按主程序里调用时赋的变量顺序和子程序里的局部变量按顺序一一对应? 请指教!谢谢dzfa
04-04-02 08:55
基本上没错,只是ON参数应该设为IN_OUT类型,而不是IN类型。
04-04-02 09:22
哦对!只有这样主程序才能调用它的返回值输出!多谢!
04-04-02 09:26

工控新闻

更多新闻资讯