全国服务热线 15821971992
公司新闻

西门子模块总代理商-邯郸

发布时间: 2023-02-14 10:53 更新时间: 2023-10-26 04:00

S7-200的程序有三种:主程序、子程序、中断程序。

主程序只有一个,名称为OB1。

子程序可以达到64个,名称分别为SBR0~SBR63。子程序可以由子程序或中断程序调用。

中断程序可以达到128个,名称分别为INT0~INT127。中断方式有输入中断、定时中断、高速计数中断、通信中断等中断事件引发,当CPU响应中断时,可以执行中断程序。

由这三种程序可以组成线性程序和分块程序两种结构。

一、线性程序结构

_线性程序是指一个工程的全部控制任务都按照工程控制的顺序写在一个程序中,比如写在OB1中。程序执行过程中,CPU不断地扫描OB1,按照事先准备好的顺序去执行工作,如图:

显然,线性程序结构简单,一目了然。但是,当控制工程大到一定程序之后,仅仅采用线性程序就会使整个程序变得庞大而难于编制、难于调试了。

二、分块程序结构

分块程序是指一个工程的全部控制任务被分成多个小的任务块,每个任务块的控制任务根据具体情况分别放到子程序中,或者放到中断程序中。程序执行过程中,CPU不断地调用这些子程序或者被中断程序中断,3914424628.jpg

分块程序虽然结构复杂一些,但是可以把一个复杂的过程分解成多个简单的过程。对于具体的程序块容易编写,容易调试。从总体上看,分块程序的优势是十分明显的。

在S7-200编程中,子程序想必大家都用过,使用子程序可以更好地组织程序结构,便于阅读和调试,也可以缩短程序代码。但是使用子程序也有一些需要注意的地方,除了子程序在同一周期内被多次调用时,不能使用上升沿、下降沿、定时器和计数器之外,还有子程序中局部变量的特点,在编程多次调用带参数子程序时要特别注意。下面就是前些天热线上遇到的一个Case,非常有代表性,在这里跟大家分享。
E:您好,西门子技术支持。
C:您好,我想问下,200子程序是不是多次调用时会不好使?
E:不会啊,您是不是在子程序里使用了沿指令或者定时器?
C:没有啊,我就编了一句很简单的开关程序,开关闭合,线圈导通,然后主程序里调用了两次这个子程序,结果个I点闭合了,两个Q点都导通了。
E:(心里活动:看来是和子程序的局部变量有关了,估计客户程序逻辑有问题)那请您描述一下您的子程序吧,我帮您看看。

    西门子S7-1200CPU订货型号:

    6ES7211-1BE40-0XB0CPU 1211C   AC/DC/Rly,6输入/4输出,集成2AI
    6ES7211-1AE40-0XB0CPU 1211C   DC/DC/DC,6输入/4输出,集成2AI
    6ES7211-1HE40-0XB0CPU 1211C   DC/DC/Rly,6输入/4输出,集成2AI
    6ES7212-1BE40-0XB0CPU 1212C   AC/DC/Rly,8输入/6输出,集成2AI
    6ES7212-1AE40-0XB0CPU 1212C   DC/DC/DC,8输入/6输出,集成2AI
    6ES7212-1HE40-0XB0CPU 1212C   DC/DC/Rly,8输入/6输出,集成2AI
    6ES7214-1BG40-0XB0CPU 1214C   AC/DC/Rly,14输入/10输出,集成2AI
    6ES7214-1AG40-0XB0CPU 1214C   DC/DC/DC,14输入/10输出,集成2AI
    6ES7214-1HG40-0XB0CPU 1214C   DC/DC/Rly,14输入/10输出,集成2AI
    6ES7215-1BG40-0XB0CPU 1215C   AC/DC/Rly,14输入/10输出,集成2AI/2AO
    6ES7215-1AG40-0XB0CPU 1215C   DC/DC/DC,14输入/10输出,集成2AI/2AO
    6ES7215-1HG40-0XB0CPU 1215C   DC/DC/Rly,14输入/10输出,集成2AI/2AO
    6ES7217-1AG40-0XB0CPU 1217C   DC/DC/DC,14输入/10输出,集成2AI/2AO
    A5ESIEMCORE918 BASED ON: SIMATIC S7-1200, CPU 1212C, COMPACT CPU, DC/DC/DC, ONBOARD I/O: 8 DI 24V DC; 6 DO 24 V DC; 2 AI 0 - 10V DC, POWER SUPPLY: DC 20.4 - 28.8 V DC, PROGRAM/DATA MEMORY: 50 KB


S7-200编程语言的基本单位是语句,而语句的构成是指令,每条指令有两部分:一部分是操作码,另一部分是操作数。操作码是指出这条指令的功能是什么,操作数则指明了操作码所需要的数据所在。所谓寻址,就是寻找操作数的过程。S7-200 CPU的寻址分三种:立即寻址、直接寻址、间接寻址。

1.立即寻址

在一条指令中,如果操作码后面的操作数就是操作码所需要的具体数据,这种指令的寻址方式就叫立即寻址。

如:在传送指令中:MOV IN OUT——操作码“MOV”指出该指令的功能把IN中的数据传送到OUT中,其中IN——源操作数,OUT——目标操作数。

若该指令为:MOVD 2505 VD5003918866871.jpg

功能:将十进制数2505传送到VD500中,这里2505就是源操作数。因这个操作数的数值已经在指令中了,不用再去寻找,这个操作数即立即数。这个寻址方式就是立即寻址方式。而目标操作数的数值在指令中并未给出,只给出了要传送到的地址VD500,这个操作数的寻址方式就是直接寻址。

2.直接寻址

在一条指令中,如果操作码后面的操作数是以操作数所在地址的形式出现的,这种指令的寻址方式就叫直接寻址。

如:MOVD VD400 VD500

功能:将VD400中的双字数据传给VD500

3.间接寻址

在一条指令中,如果操作码后面的操作数是以操作数所在地址的地址形式出现的,这种指令的寻址方式就叫间接寻址。

如:MOVD 2505 *VD500

*VD500是指存放2505的地址的地址。

如VD500中存放的是VB0,则VD0则是存放2505的地址。

该指令的功能:将十进制数2505传送给VD0地址中。


联系方式

  • 地址:上海杨浦 上海市松江区广富林路4855弄88号3楼
  • 邮编:200093
  • 电话:15821971992
  • 经理:聂聪
  • 手机:15821971992
  • 传真:021-33556143
  • QQ:2724917714
  • Email:2724917714@qq.com