PLC:学习笔记(西门子)4

功能指令及应用(s7-200)
·传送类指令
·运算指令
·子程序
·时钟指令
·中断
·PID指令
·通信指令

一、传送、移位、填充指令
1、传送类
1-1:单一传送(Move):指令格式(MOV* IN,OUT  //*:B、W、DW(LAD中)D(STL中)、R)      功能描述:使能端输入有效时,把数据从IN传到OUT所指的存储单元  数据类型:输入/输出均为一致
1-2:块传送(Block Move):指令格式(BM*    IN,OUT,N   //*:B、W、DW(LAD中)D(STL中)、R; N<=255)  功能表述:使能端有效时把从IN开始的N个数据传送到OUT开始的N个字符存储单元。  数据类型:输入/输出相同
1-3:字节立即传送(Move Immediate):
 字节立即读:BIR    IN,OUT
        字节立即写:BIW    IN,OUT
举例:
LD I0.0
EU
MOVB VB100,VB200
MOVW VW110,VW210
MOVD VD120,VD120
BMB VB130,VB230,4    //传送4个字节
VMW VW140,VW240
BIR IB1,VB270       //从I1物理输入状态立即送到VB270中,不受扫描周期的影响
BIW VB270,QB0 //将VB270中的数据立即从Q0输出,不受扫描周期的影响

2、移位与循环指令
类型:左移、右移、左循环、右循环
2-1:移位指令(shift)
 移出数据存储单元与SM1.1(溢出)相连接。
 移位次数与移位数据长度有关,超出的次数无效(例如字左移20次,实际只有16次)
 若移位操作使得最后数据变为0,则零存储器标志位(SM1.0)自动置位
  左移:SL* OUT,N
  右移:SR* OUT,N
注意:LAD中输入/输出的位置可以不同,但在STL中相同
举例:
LD I0.0
EU
SLB VB0,2
SRW VW10,3

2-2:循环移位指令(Route)
 移出端与另一端相连,同时又与SM1.0(溢出)相连
 移位次数与数据长度有关,若设定值大于数据长度,则取余数,作为移位长度
  左移:RL* OUT,N
  右移:RR* OUT,N
注意:LAD中输入/输出的位置可以不同,但在STL中相同
举例:
LD I0.0
EU
RRW VW0,3

2-3:寄存器移位指令(shift register)
 使能端有效时,每个扫描周期移位一次,注:不要用边沿跳变来控制使能端的状态,不然就失去了应用意义
 移出端与SM1.1(溢出)相连。移位时,一端进入SM1.1,另一端自动补上DATA移入低位
 移位分为正向和反向:
  正向:N>0 最低字节的最低位移入,最高字节的最高位移出
  反向:相反
举例:
LD I0.0
EU
SHRB I0.5,V20.0,5

3、字节交换指令
 功能表述:高字节和低字节进行交换
 数据类型:输入为字
举例:
LD I0.0
EU
SWAP VW10

4、填充指令(Memory fill)
功能表述:将“字”型输入数据IN填充到输出OUT所指的单元开始的N个存储单元中
举例:
LD SM0.1
FILL 10,VW100,12  //将10填充到vw100以后的12个字节中去

二、运算和数学指令
 注:LAD与STL中的区别是,STL中OUT要和IN1、IN2中的一个为同一个地址存储单元。而在LAD中可以不同
所以!!!!:建议使用LAD进行运算和数学指令的编程
1、加法指令:
  功能描述:LAD:IN1+IN2=OUT;   STL:IN+OUT=OUT
  数据类型:输入输出相同(I  DI R)
  STL表示:+* IN1,OUT
2、减法指令:
  功能描述:LAD:IN1-IN2=OUT;  STL:OUT-IN1=OUT
  数据类型:输入输出相同(I  DI R)
  STL表示:-* IN1,OUT
3、乘法指令
 3-1:一般乘法指令
 LAD:IN1*IN2=OUT
 STL:IN1*OUT=OUT
 数据类型:输入输出相同(I  DI R)
 3-2:完全整数乘法:
 LAD:IN1*IN2=OUT
 STL:IN1*OUT=OUT 
 数据类型:输入为INT 输出为DINT 
4、除法指令
 4-1:一般除法指令(Divide)
 LAD:IN1/IN2=OUT
 STL:OUT/IN1=OUT
 数据类型:输入/输出相同,不保留余数(I  DI R)
 4-2:完全整数除法(Divide integer to double integer)
        两个16位符号整数相除,产生一个32的结果,低16位为商,高16位为余数。
 LAD:IN1/IN2=OUT
 STL:OUT/IN1=OUT
举例:
LD I0.0
EU
MOVW VW10,VW16
+I VW12,VW16
MOVW VW10,VW18
-I VW12,VW18
MOVW VW10,VW22
MUL VW12,VD20   //完全乘法 
MOVW VW10,VW24
/I VW12,VW24
MOVW VW10,VW32
DIV VW12,VD32

5、数学函数指令
包括:平方根、自然对数、指数、正弦、余弦、正弦
5-1:平方根命令(square root)
 功能描述:双子长(32)的IN开平方,送入OUT(32)
 数据类型:输入/输出REAL
5-2:自然对数指令(natural logarithm)
 功能描述:将一个双子长(32)的实数IN取自然对数后送到OUT(32)
 数据类型:输入/输出均为REAL
 举例:
LD I0.0
EU
LN VD0,AC0
LN 10.0,VD100
/R VD100,AC0

5-3:指数指令(natural exponential)
 功能描述:将一个双子长(32)的实数IN取以e为底的指数后送到OUT(32)
 数据类型:输入/输出均为REAL 
5-4:正弦(Sine)、余弦(Cos)、正切(Tan):注:输入为“弧度值”
 功能描述:将一个双子长(32)的实数IN取正弦、余弦、正切送到OUT(32)
 数据类型:输入/输出均为REAL
举例:
LD I0.0
EU
MOVR 3.14159,AC0
/R 180.0,AC0
*R 10.0,AC0
COS AC0,AC1
MOVR 3.14159,AC2
/R 180.0,AC2
MOVR 120.0,AC3
*R AC2,AC3
SIN AC3,AC3
+R AC1,AC3     //SIN120°+cos10°

6、增/减指令
 又称自增/自减指令。对无符号或者有符号整数进行自加1或者减1操作
 6-1:增指令(Increment)
      数据类型:字节、INT、DINT
      INC* OUT
 6-2:减指令(Decrement)
      DEC* OUT
举例:
LD I0.0
EU
MOVW AC0,VW50
INCW VW50
MOVD VD100,VD110
INCD VD110

7、逻辑运算指令
包括:逻辑与、逻辑或、逻辑异或、取反。参与运算的可以是:字节、字、双字
7-1:逻辑与(logic and):AND* IN1,OUT
7-1:逻辑或(logic or):OR* IN1,OUT
7-3:逻辑异或(logic exclusive or):XOR*   IN1,OUT
7-4:取反(logic invert):INV* OUT
举例:
LD I0.0
EU
ANDB VB0,AC1
ORB VB0,AC0
XORV VB0,AC2
INVB VB10

三、表功能指令
  一个表:表地址(表的首地址)+最大填表数(TL)+实际填表数(EC)  /!最多100个(字)填表数据!!
   TL存放在表地址所指向的存储单元,第二个字地址所对应的存储单元存EC
   表为“字”存储的
1、表存数指令(add to table)
   LAD:AT_T_TBL
   STL:ATT DATA,TBL (DATA 字型,TBL int型)字型:无符号;int:有符号。
   添加到表的最后一个有效数据之后,且EC+1;
2、表取数指令
   两种方式:先进先出型,后进先出型
   取出后EC-1
   如果试图从一个空表中取出一个数据,则特殊标志寄存器SM1.5置位
 2-1:先进先出(FIFO)
  FIFO TBL,DATA

LD I0.0
 EU
 FIFO VW100,AC0
 2-2:后进先出(LIFO)
  LIFO TBL,DATA

LD I0.0
 EU
 LIFO VW200,AC0

3、表查找指令(table find)
  从数据表中取出符合条件数据的表中标号,编号范围0~99
   STL格式:
 FND= TBL,PTN,INDX (查找条件 =PTN)
 FND<> TBL,PTN,INDX  ()
 FND< TBL,PTN,INDX
 FND> TBL,PTN,INDX
   功能描述:
 TBL:被访问表格的首地址
 PTN:描述查表条件时进行比较的数据
 CMD:比较运算符“?”的编码为1~4的数值(分别代表=,<>,<,>)
   指令执行前:先对INDX内容清0。从INDX开始搜索表TBL,寻找符合由PTN和CMP所决定的条件的数据。如果没有发现,最后INDX为EC;如果找到一个符合条件的数据,则此处的地址存到INDX
举例:
LD I0.0
EU
FND> VW100,VW300,AC0

三、转换指令
包括:数据的类型转换、码的类型转换、数据与码的类型转换
1、数据转换指令
类型:字节、整数、双整数、实数
主要码制:BCD码、ASCII码、十进制数、十六进制数。
目的:不同的数据类型之间进行数学运算,就需要将两者转成同一个类型
1-1:字节与整数
 1-1-1:字节到整数
  LAD:B_I  STL:BTI IN,OUT
  功能描述:字节型输入的IN转换成整数类型,并将其送到OUT。字节型(无符号的),所以没有符号扩展位
  数据类型:输入为字节,输出为INT
 1-1-2:整数到字节
  LAD:I_B  STL:ITB IN,OUT
  功能描述:整数型输入的IN转换成字节类型。并将结果送到OUT。!!输入数超过255时产生溢出
  数据类型:输入为INT,输出为字节
1-2:整数与双整数
 1-2-1:双整数到整数
  LAD:DI_I STL:DTI IN,OUT
  功能描述:双整数输入IN转换成整数类型,并在OUT输出
   
1-3:双整数与实数
1-3-1:实数到双整数
 两条指令ROUND TRUNC
 ROUND IN,OUT (小数部分四舍五入)
 TRUNC IN,OUT(小数部分舍去)
1-3-2:双整数到实数
 DTR IN,OUT
1-3-3:整数到实数
 没有固定的指令,先用ITD再用DTR指令
(!!@@ 字节--整型--双整型--实数,相连接的顺序有特定的转移指令,其他的需要按照顺序转换)

1-4整数与BCD
 BCD binary code decimal 在计算机内用二进制表示十进制。
 范围0~9999(字型)
1-4-1:BCD到整数
 BCDI OUT   STL中in和out使用相同的存储位置,LAD中可以不同
1-4-2:整数到BCD
 IBCD OUT

2、编码和译码指令
2-1编码指令(encode)
 功能描述:将“字”型数据IN的最低有效位(值为1的位)的位号输出到OUT所指定的字节单元的低4位,即,用半个字节来对一个字型数据中16位中的“1”位有效位进行编码
LD I0.0
EU
ENCO VW0,VB10

2-2:译码指令(decode)
 功能描述:将字节型输入数据IN的低4位所表示的位号对OUT所指定的字单元的对应位置1,其他位置0.即,用半个字节的编码进行译码。
LD I0.0
EU
DECO VB0,VW10

3、段码指令
 功能描述:将字节型IN的低4位有效数字产生相应的七段码,输出到OUT所指定的字节单元。
LD I0.0
EU
SEG VB10,QB0

4、ASCII码转换指令
一个字节存储,0-127存储不同的符号
4-1:ascii转为16进制
 功能描述:从IN开始的长度为LEN的16进制转换为ascii码,并将结果送到从OUT开始的字节输出。LEN最大为255
 数据类型:IN、LEN、OUT 均为字节型
LD I0.0
EU
HTA VB10,VB20,4

4-2:16进制转为ascii
 功能描述:从IN开始的长度为LEN的ascii码转换为16进制数,并将结果送到OUT开始的字节输出,LEN的最大长度为255
LD I0.0
EU
ATH VB30,VB40,3

4-3:整数转换为ascii码指令
 功能描述:整数IN转化为一个ascii码字符串。格式FMT指定小数点右侧的转环精度和小数点使用逗号还是点号。转换结果放在OUT指定的连续的字节中。
 ITA IN,OUT,FMT
(!!FMT的低三位为小数点右侧的位数0-5. 低第四位表示逗号(1)、点号(0)表示小数点)
LD I0.0
EU
ITA VW10,VB20,16#0B

4-4:双整数转换为ascii
 功能描述:双整数IN转换为一个ascii字符串。格式FMT同上。 连续的12个字节OUT存储
 DTA IN,OUT,FMT
4-5:实数转为ascii
 功能描述:实数IN转成ascii字符串。FMT如上。结果在OUT 3-15个字节
 RTA IN,OUT,FMT
LD I0.0
EU
RTA VD10,VB20,16#A3

5、字符串转换指令
 ITS IN,FMT,OUT
 DTS IN,FMT,OUT
 RTS IN,FMT,OUT
 STI IN,INDX,OUT
 STD IN,INDX,OUT
 STR IN,INDX,OUT

五、字符串指令
1、字符串长度指令:SLEN IN,OUT
2、字符串复制指令:SCPY IN,OUT
3、字符串链接指令:SCAT IN,OUT
4、从字符串中复制字符串:SSCPY IN,INDX,N,OUT    从indx开始的n个
5、字符串搜索指令:SFND IN1,IN2,OUT  (从in1中搜索in2字符串,out为索引起始位置,最后为搜索字符串首个字符位置!!)
6、字符搜索指令:CFND IN1,IN2,OUT
LD I0.0
EU
MOVB 1,AC0
MOVB 1,AC1
SFND VB0,VB10,AC0
CFND VB0,VB30,AC1
STR VB0,AC1,VD100

六、子程序
包括:建立子程序,子程序的调用,返回
1、子程序的建立:
 编程软件,编辑,插入子程序
2、子程序的调用
2-1:子程序调用指令(CALL)
 LAD: EN使能时进入子程序名的子程序    返回用—(RET)
 STL:CALL 子程序名 返回:CRET
  注意:1、子程序调用时,堆栈自动保存,栈顶置1,其他值为0
  2、累加器可在调用程序和调用子程序之间自由传递。
3、带参数的子程序调用
     子程序最多可传递16个参数。参数在子程序的局部变量表中加以定义。
 局部变量表:变量名、变量类型、数据类型
规则:1、常数参数必须声明类型。如:DW#223
  2、输入或输出参数没有自动数据类型功能。
 3、参数在调用时必须按照一定的顺序排列
(!!???参数表中的数据可为输入/输出。所以CALL 程序名 参数…… 输入输出均可)

七、时钟指令
利用时钟指令可以实现调用系统实时时钟或根据需要设定时钟,对于控制系统的运行监视,运行记录和所有有关实时时间的控制非常方便。
1、读实时时钟指令
 指令描述:读当前时间和日期,并且把它装入一个8字节的缓冲区,操作数T用来指定8个字节缓冲区的地址
 TODR T
2、设定实时时钟指令
 指令描述:包括时间和日期的8字节的缓冲区装入PLC的时钟去。T为8字节的其实地址
 TODW T
注:1、没有使用过时钟指令的PLC,在使用前,要在编程软件中“PLC”一栏中对PLC进行时钟的设定。
   2、所有的日期和时间值均要用BCD表示
   3、系统不检查实时时钟各值是否正确。如2月31日
   4、不能同时在主程序和中断程序中使用读写时钟指令,否则会有致命错误,中断程序中的实时时钟指令将不被执行
   5、cpu224以上才有硬件时钟

八、中断
可在实时处理、运动控制、网络通信中非常重要
1、几个基本概念:
1-1、中断源及种类(中断请求来源  每个中断源分配一个编号加以识别,称作中断事件号)
 通信中断:利用数据接收和发送中断可以对通信进行控制
 输入/输出中断:外部输入中断(利用I0.0-I0.3的上升沿或者下降沿产生中断)、高速计数器中断(响应当前值等于预设值、技术方向改变、计数器外部复位等事件引起的中断)、脉冲串输出中断(响应给定数量的脉冲输出完成所引起的中断,常用在步进电动机的控制中)
 时基中断:包括定时中断和定时器中断
   定时中断:可以用来支持一个周期性的活动,周期时间以1ms为计量单位,周期可以是1-255ms
 定时器中断:利用定时器对一个指定的时间段产生中断,(!!!只能使用分辨率为1ms的定时器T32和T96实现)
1-2、中断优先级
 中断优先级:通信中断、输入/输出中断、时基中断
 注意:!!PLC中按照先来先服务的原则执行中断程序,中断执行时,不会被其他更高的中断打断。!!中断执行时,新出现的中断请求按照优先级高低排队。

2、中断指令
中断执行时 自动保存逻辑堆栈、累加器和某些特殊标志寄存器位,保护现场。
2-1:中断连接指令(attach interrupt)
 功能描述:将一个中断事件和一个中断程序建立联系,并允许这一中断事件
 数据类型:中断程序号INT和中断事件号EVNT均为“字节型”。
2-2:中断分离指令(detach interrupt)
 功能描述:切段一个中断事件和所有程序的联系,从而禁止了该中断事件。
2-3:开中断指令(enable interrupt)、关中断指令(disable interrupt)
 ENI:开中断指令(中断允许指令)。全局开放所有被连接的中断事件。
 DISI:关中断指令。
2-4:清除中断事件指令(clear event)
 功能描述:可从中断队列中清楚所有的EVENT类型的中断事件。队列中清除不需要的中断事件。
2-5:中断条件返回(CRETI)  
 功能描述:条件返回指令,可根据前面的逻辑操作的条件从中断程序中返回。
注:1、多事件可调用一个中断程序,但一个事件不能调用多个中断程序。
 2、系统由其他模式切换到RUN时,就自动关闭了所有的中断
 3、可通过编程在RUN模式下,用ENI开放所有的中断
 4、特别的:在一个程序中使用中断,至少有一次EMI指令
LD I0.0
MOVB 200,SMB34
ATCH INT_EX,10
ENI

//INT_EX
LD SM0.0
MOVW AIW0,VW200

时间: 2024-08-18 03:20:41

PLC:学习笔记(西门子)4的相关文章

西门子PLC学习笔记十五-(数据块及数据访问方式)

一.数据块 数据块是在S7 CPU的存储器中定义的,用户可以定义多了数据块,但是CPU对数据块数量及数据总量是有限制的. 数据块与临时数据不同,当逻辑块执行结束或数据块关闭,数据块中的数据是会保留住的. 数据块分共享数据块.背景数据块.用户自定义数据块,下面分别介绍. 1.共享数据块(全局数据块) 其用于存储全局数据,所有逻辑块(OB.FC.FB)都可以访问共享数据块中的数据. 2.背景数据块(私有存储区) 其用做功能块(FB)的"存储器".FB的参数和静态变量安排在它的背景数据块中.

西门子PLC学习笔记十三-(算术运算指令与控制指令)

今天在写一篇PLC的学习笔记,本篇将介绍PLC最基本的运算指令与控制指令,本篇将直接上截图. 1.基本算数运算指令 1)整数运算 2)长整数运算 3)实数运算 . STL编程示例(16位整数的算术运算) L IW10 //将输入字IW10装入累加器1的低字 L MW12 //将累加器1低字中的内容装入到累加器2的低字 //将存储字MW12装入累加器1的低字 +I //将累加器2低字和累加器1低字相加,结果保存到累加器1的低字中 +68 //将累加器1的低字中的内容加上常数68,结果保存到累加器1

西门子PLC学习笔记三(S7-300信号模块)

本篇为阳胜峰老师第二讲视频学习笔记 1.数字量模块 1)数字量输入模块 数字量输入模块将现场过程送来的数字信号电平转换成S7-300内部信号电平. A.数字量输入模块SM321(需要外接24V电源供电) SM321有四种类型的模块:直流16点输入.直流32点输入.交流16点输入.交流8点输入,其中常用的是直流的输入. 附图: B.数字量输出模块SM322(需要外接24V电源供电) 数字量输出模块SM322将S7-300内部信号电平转换成国产所要求的外表信号电平,可直接用于驱动电磁阀.接触器.小型

西门子PLC学习笔记二-(工作记录)

今天师傅给讲了讲做自己主动化控制的总体的思路,特进行一下记录,做个备忘. 1.需求分析 本次的项目是对楼宇循环供水的控制,整个项目须要完毕压力.压差.温度等的获取及显示.同一时候完毕电机的控制. 2.设计 使用西门子的Step7工具进行梯形图编程,完毕自己主动化控制. 使用西门子的WinCC5.5进行自己主动化人机界面的设计实现. 3.Step7进行编程的步骤 1)进行硬件组态 因为西门子的设备型号已经选定好,故依据实物的型号,先进行硬件组态,组态结果图例如以下: 注: 1.本图需和现场的实物连

西门子PLC学习笔记四-(控制三项异步电动机的启动停止)

本篇是学习S7-300的一个小程序,用于对PLC开发简单直观的认识. 1.三项异步电动机电路图 2.PLC控制接线图 从图中可以看出控制按钮接PLC 信号模块SM的I0.0.I0.1端口,输出信号从Q4.1输出 3.PLC SM模块选择 1)输入模块选择 SM321 DI32*24V 2)输出模块选择 SM322 DO32*AC120/230/1A 4.硬件组态图如下: 5.编辑符号变量 6.编写梯形图程序 7.编写程序 程序解释: sb1_start使用开路符号表示:当接通时整条线路都接通,默

西门子PLC学习笔记一(S7-300简介)

使用了Step7有几天了,现在系统的学习一下,现记录一下学习的内容. 1.S7-300硬件结构 S7-300或者S7-400的PLC是模块式的PLC,各种模块式相互独立的,分别安装在机架上.硬件结构如图: DI:数字量输入模块,DO:数字量输出模块,AI:模拟量输入模块,AO:模拟量输出模块 2.S7-CPU模块 S7-CPU模块可分为紧凑型.标准型.革新型.户外型.故障安全型.特种型CPU. CPU312C表示是紧凑型CPU: CPU313C-2DP表示集成了PROFIBUS-DP协议的紧凑型

西门子PLC学习笔记七-(位逻辑指令)

位逻辑指令处理的对象为二进制位信号.存储在状态字"RLO"中. 1.触点与线圈指令 1)常开触点 在PLC中规定:操作数为1,则常开触点"动作(闭合)":操作数为0,则常开触点"复位(断开)".常开触点使用的操作数是I.Q.M.L.D.T.C 2)常闭触点 在PLC中规定:操作数为1,则常开触点"动作(断开)":操作数为0,则常开触点"复位(闭合)".常开触点使用的操作数是I.Q.M.L.D.T.C 3)输

西门子PLC学习笔记五-(编程语言、数据类型)

1.编程语言 PLC的编程语言有STL(语句表).LAD(梯形图).FBD(功能块图).GRAPH(顺序功能图).SCL(结构化控制语言).HiGraph(图形编程语言).CFC(连续功能图)等.Step7中STL.LAD.FBD是基本的编程语言,并且在step7软件中可以进行自动转换. 2.数据类型 1)基本数据类型 2)复杂数据类型 复杂数据类型需要预先定义,其变量只能在全局数据块中声明,可以作为参数或逻辑块的局部变量. Step7中支持的类型有:数组.结构.字符串.日期.时间.用户自定义类

西门子PLC学习笔记十九-(FB编程)

FB块可被OB1调用多次,功能的所有形参和静态数据都存储在一个单独的.被指定给该功能块的数据块(DB)中,该数据块被称为背景数据块.当调用FB时,该背景数据块会自动打开,实际参数的值被存储在背景数据块中:当块退出时,背景数据块中的数据仍然保持. 下面通过案例设计介绍FB如何编写吧. 案例:目前有3个贮水箱,每个水箱有2个液位传感器,UH1.UH2.UH3为高液位传感器,"1" 有效:UL1.UL2.UL3为低液位传感器,"0"有效.Y1.Y2.Y3分别为3个贮水水箱

西门子PLC学习笔记十四-(用户程序结构及执行)

PLC用户程序的总体结构如下图: 1.组织块(OB):操作系统与用户程序的接口,决定用户程序的结构. 组织块是由操作系统调用的,用于控制扫描循环和中断程序的执行,PLC的启动和错误处理,不同的CPU可以使用的组织块不都一致. 常用OB块和其对应的优先级 上表中的OB1是循环扫描的主程序,其优先级最低.处理OB90不能中断OB1的执行外,其余的OB块均可以.OB100~OB102为启动组织块,分别代表CPU的三种启动方式,即暖启动.热启动.冷启动.OB100为暖启动组织块.OB101为热启动组织块