您的位置:控制工程论坛网论坛 » PLC与PAC » 300教程之三

ytzidonghua

ytzidonghua   |   当前状态:在线

总积分:11263  2025年可用积分:0

注册时间: 2006-09-18

最后登录时间: 2024-08-02

空间 发短消息加为好友

300教程之三

ytzidonghua  发表于 2007/10/27 18:16:58      3502 查看 3 回复  [上一主题]  [下一主题]

手机阅读

3.1  S7-300/400的编程语言
3.1.1  PLC编程语言的国际标准
IEC 61131是PLC的国际标准,1992~1995年发布了IEC 61131标准中的1~4部分,我国在1995年11月发布了GB/T 15969-1/2/3/4(等同于IEC 61131-1/2/3/4)。
IEC 61131-3广泛地应用PLC、DCS和工控机、 “软件PLC”、数控系统、RTU等产品。
定义了5种编程语言
1) 指令表IL(Instruction list):西门子称为语句表STL。
2) 结构文本ST(Structured text):西门子称为结构化控制语言(SCL)。
3) 梯形图LD(Ladder diagram):西门子简称为LAD。
4) 功能块图FBD (Function block diagram):标准中称为功能方框图语言。
5) 顺序功能图SFC(Sequential function chart):对应于西门子的S7 Graph。
 
3.1.2  STEP 7中的编程语言
梯形图、语句表和功能块图是3种基本编程语言,可以相互转换。
      1.顺序功能图(SFC) :STEP 7中的S7 Graph
    2.梯形图(LAD)
直观易懂,适合于数字量逻辑控制。“能流”(Power flow)与程序执行的方向。
3. 语句表(STL):功能比梯形图或功能块图强。
 
4.功能块图(FBD):“LOGO!”系列微型PLC使用功能块图编程。
5.结构文本(ST):STEP 7的S7 SCL(结构化控制语言)符合EN 61131-3标准。
SCL适合于复杂的公式计算、复杂的计算任务和最优化算法,或管理大量的数据等。
6.S7 HiGraph 编程语言
图形编程语言S7 HiGraph 属于可选软件包,它用状态图(state graphs)来描述异步、非顺序过程的编程语言。
7.S7 CFC 编程语言
可选软件包CFC(Continuous Function Chart,连续功能图)用图形方式连接程序库中以块的形式提供的各种功能。
8.编程语言的相互转换与选用
在STEP 7编程软件中,如果程序块没有错误,并且被正确地划分为网络,在梯形图、功能块图和语句表之间可以转换。如果部分网络不能转换,则用语句表表示。
语句表可供喜欢用汇编语言编程的用户使用。语句表的输入快,可以在每条语句后面加上注释。设计高级应用程序时建议使用语句表。
梯形图适合于熟悉继电器电路的人员使用。设计复杂的触点电路时最好用梯形图。
    功能块图适合于熟悉数字电路的人使用。
    S7 SCL编程语言适合于熟悉高级编程语言(例如PASCAL或C语言)的人使用。
    S7 Graph,HiGraph和CFC可供有技术背景,但是没有PLC 编程经验的用户使用。S7 Graph对顺序控制过程的编程非常方便,HiGraph适合于异步非顺序过程的编程,CFC适合于连续过程控制的编程。
3.2  S7-300/400 CPU的存储区
3.2.1 数制
    1.二进制数
二进制数的1位(bit)只能取0和1这两个不同的值,用来表示开关量的两种不同的状态。该位的值与线圈、触点的关系。ON/OFF,TURE/FALSE。二进制常数:2#1111_0110_1001_0001。
2.十六进制数
十六进制的16个数字是0~9和A~F, 每个占二进制数的4位。B#16#,W#16#,DW#16#, W#16#13AF(13AFH)。逢16进1,例如B#16#3C=3×16+12=60。
3.BCD码
    BCD码用4位二进制数表示一位十进制数,十进制数9对应的二进制数为1001。
最高4位用来表示符号,16/32位BCD码的范围。BCD码实际上是十六进制数,但是各位之间逢十进一。296对应的BCD码为W#16#296,或2#0000 0010 1001 0110。
2#0000 0001 0010 1000对应的十进制数也是296,对应的十进制数为
 。
3.2.2 基本数据类型
 
1.位(bit):位数据的数据类型为BOOL(布尔)型。I3.2的意义。
2.字节(Byte)
3.字(Word)表示无符号数。取值范围为W#16#0000~W#16#FFFF。
4.双字(Double Word)表示无符号数。范围DW#16#0000_0000~DW#16#FFFF_FFFF。
5.16位整数(INT,Integer)是有符号数,补码。最高位为符号位,为0时为正数,取值范围为-32 768~32 767。
6.32位整数(DINT,Double Integer)最高位为符号位,取值范围为  MB100     M表示内部存储区
-2 147 483 648~2 147 483 647。
 
图3-6  字节、字和双字

3.2.3 复合数据类型与参数类型
1.复合数据类型
通过组合基本数据类型和复合数据类型可以生成下面的数据类型:
(1)    数组(ARRAY)
(2)    结构(STRUCT)
(3) 字符串(STRING)是最多有254个字符(CHAR)的一维数组。
(4) 日期和时间(DATE_AND_TIME)用于存储年、月、日、时、分、秒、毫秒和星期,占用8个字节,用BCD格式保存。星期天的代码为1,星期一~星期六的代码为2~7。
例如DT#2004-07-15-12:30:15.200为2004年7月15日12时30分15.2秒。
(5) 用户定义的数据类型UDT (user-defined data types)。
在数据块DB和逻辑块的变量声明表中定义复合数据类型。
2.参数类型
为在逻辑块之间传递参数的形参(formal parameter,形式参数)定义的数据类型:
(1) TIMER(定时器)和COUNTER(计数器):对应的实参(actual parameter,实际参数)应为定时器或计数器的编号,例如T3,C21。

(2) BLOCK(块):指定一个块用作输入和输出,实参应为同类型的块。
3.2.5  系统存储器   (存储器RAM = 用户RAM + 系统RAM)
1.过程映像输入/输出(I/Q)
在扫描循环开始时,CPU读取数字量输入模块的输入信号的状态,并将它们存入RAM中过程映像输入(process image input,PII)中。
在扫描循环中,用户程序计算输出值,并将它们存入过程映像输出表(process image output,PIQ)。在循环扫描结束时将过程映像输出表的内容写入数字量输出模块。
I和Q均以按位、字节、字和双字来存取,例如I0.0,  Q4.0、IB0, IW0和ID0。
与直接访问I/O模块相比的优缺点。
 
2.内部存储器标志位(M)存储器区   MB1
3.定时器(T)存储器区
时间值可以用二进制或BCD码方式读取。
4.计数器(C)存储器区
计数值(0~999)可以用二进制或BCD码方式读取。
5.共享数据块(DB)与背景数据块(DI)
DB为共享数据块,DBX2.3,DBB5,DBW10和DBD12。
DI为背景数据块,DIX, DIB,DIW和DID。
6.外设I/O区(PI/PO)
    外设输入(PI)和外设输出(PQ)区允许直接访问本地的和分布式的输入模块和输出模块。可以按字节(PIB或PQB)、字(PIW或PQW)或双字(PID或PQD)存取,不能以位为单位存取PI和PO。
3.2.6  CPU中的寄存器
1.累加器(ACCUx)
累加器用于处理字节、字或双字的寄存器。S7-300有两个32位累加器(ACCU1和ACCU2),S7-400有4个累加器(ACCU1~ACCU4)。数据放在累加器的低端(右对齐)。
2.状态字寄存器(16位)
首次检测位/FC, 逻辑运算结果(RLO);
状态位STA不能用指令检测;
OR位暂存逻辑“与”的操作结果(先与后或);
算术运算或比较指令执行时出现错误,溢出位OV被置1。
OV位被置1时溢出状态保持位OS位也被置1,OV位被清0时OS仍保持为1,用于指明前面的指令执行过程中是否产生过错误。
条件码 1(CC1)和条件码0(CCO)综合起来用于表示在累加器1中产生的算术运算或逻辑运算的结果与0的大小关系、比较指令的执行结果或移位指令的移出位状态。
二进制结果位(BR)在一段既有位操作又有字操作的程序中,用于表示字操作结果是否正确。在梯形图的方框指令中,BR位与ENO有对应关系,用于表明方框指令是否被正确执行:如果执行出现了错误,BR位为0,ENO也为 0;如果功能被正确执行,BR位为 1,ENO也为 1。
 
图3-9  状态字的结构
 
3.数据块寄存器:DB和DI寄存器分别用来保存打开的共享数据块和背景数据块的编号。
3.3  位逻辑指令
    位逻辑指令用于二进制数的逻辑运算。位逻辑运算的结果简称为RLO。
3.3.1  触点指令
1.    触点与线圈
A(And,与)指令来表示串联的常开触点。
O (Or,或)指令来表示并联的常开触点。
AN (And Not,与非)来表示串联的常闭触点,
ON (Or Not)来表示并联的常闭触点。
输出指令“=”将RLO写入地址位,与线圈相对应。L20.0是局域变量。将梯形图转换为语句表时,局域变量L20.0是自动分配的。
A(    
          A         I 0.0
          AN        I 0.1
          O         I 0.2
          )     
          A         I 0.3
          ON         C 5
          =         L 20.0
          A         L 20.0
          =         Q 4.3
          A         L 20.0
          =         Q 4.4
          A         L 20.0
          AN        I 3.4
=         Q 4.6
 
2.    取反触点 
 
3.电路块的串联和并联
 
4.中线输出指令  下面是图3-14(b)中第一行对应的语句表。
        A        I0.0
      AN        I0.1
      =         M0.1
      A         M0.1
      A         I0.3
      =         Q4.3
 

 

 

 
 
Network 1:
A        I0.3
A        I0.0    
FP
=        Q4.5 
Network 2:           
A        I0.3
A        I0.0
FN
=        Q4.3
 
A         I0.3
A(    
A         I0.4
BLD      100  
FN        M0.1
       )     
   =         Q4.5
【例3-1】设计故障信息显示电路,故障信号I0.0为1使Q4.0控制的指示灯以1Hz的频率闪烁。操作人员按复位按钮I0.1后,如果故障已经消失,指示灯熄灭。如果没有消失,指示灯转为常亮,直至故障消失。
 
设置CPU的属性时,在“Cycle/Clock Memory”标签页令M1为时钟存储器字节,其中的M1.5提供周期为1s的时钟脉冲。   
SET与CLR(Clear)指令将RLO(逻辑运算结果)置位或复位,紧接在它们后面的赋值语句中的地址将变为1状态或0状态。
SET            //将RLO置位
= M0.2        //M0.2的线圈“通电”
CLR            //将RLO复位
= Q4.7        //Q4.7的线圈“断电”

1楼 0 0 回复
  • 匿名

    匿名   |   当前状态:离线

    总积分:0  2025年可用积分:0

    注册时间: 0001-01-01

    最后登录时间: 0001-01-01

    空间 发短消息加为好友

    匿名   发表于 2007/8/24 10:54:28

    看到你这里的文章和博客中的文字,感觉你很愿意传播PLC技术.我们(人邮社图灵公司)正在出版一套西门子的翻译书籍(西门子自动化系统入门(第3版), 

     西门子S7-300/400 PLC编程——LADPBD描述(第3版),


     西门子S7-300/400 PLC编程——STLSCL描述(第3版),


     西门子自动化系统实战——S7PCS7应用实例,


     西门子PROFINET工业通信指南,


     西门子PROFIBUS工业通信指南(2)

    ),也想拓宽到本版领域,很希望能够找到像你这样精通技术又愿意传播技术的作者.我的Email:shuli@ptpress.com.cn
    2楼 回复本楼

    引用 匿名 2007/8/24 10:54:28 发表于2楼的内容

  • 强强

    强强   |   当前状态:离线

    总积分:4136  2025年可用积分:0

    注册时间: 2007-08-18

    最后登录时间: 2008-03-03

    空间 发短消息加为好友

    强强   发表于 2007/9/14 15:10:36

    3楼 回复本楼

    引用 强强 2007/9/14 15:10:36 发表于3楼的内容

  • therun

    therun   |   当前状态:离线

    总积分:2246  2025年可用积分:0

    注册时间: 2007-10-25

    最后登录时间: 2008-08-06

    空间 发短消息加为好友

    therun   发表于 2007/10/27 18:16:58

    4楼 回复本楼

    引用 therun 2007/10/27 18:16:58 发表于4楼的内容

总共 , 当前 /