PLC基本指令及程序设计(S7-200为例)

一、PLC的基本逻辑指令
1、逻辑取及线圈驱动指令
 1-1:逻辑取及线圈驱动指令:LD(load)、LDN(load not)、=(out)  LD:用于网络块逻辑运算开始常开触点与母线的连接  LDN:取反指令,常闭触点与母线连接  =:线圈驱动指令   注:1、在分支电路块开始也要用LD\LDN  2、并联的=可连续使用多次   3、在同一程序中不能用双线圈输出!!!即任一元件在程序中只能使用一次=指令   4、T和C作为输出线圈时不用=
 1-2:取反指令NOT:逻辑取反。

2、触点串联指令
 A(and)、AN(and not)   A:与指令。用于单个常开触点的串联 AN:用于单个常闭触点的串联      注:1、A/AN可连续使用多次 2、连续输出电路可反复用=(不是在分支处,而是连续的输出(即在紧贴线圈之前)) 3、A\AN操作数为:I Q M SM T C V S L

3、触点并联指令
  O(or)  ON(or not)  O:或指令。用于单个常开触点的并联连接     ON:或反指令。用于单个常闭触点的并联连接     注:1、O/ON可连续使用

4、置位、复位指令
 S bit,N(从bit位开始连续N个元件置1)    R bit,N(从bit位开始连续N个元件清零)          注:1、两者对立,保持作用只有当相对的作用时才会释放。 2、S/R可以互换次序使用,写在后面的指令具有优先权  3、对T C复位  当前值被清零,但有其特殊性,后面说     4、N的常数范围0-255 也可用变量,一般用常量。

5、RS触发器指令  
 SR(Set Dominant Bistable):置位优先触发器指令。当置位信号(S1)和复位信号(R)都为真时,输出为真。    RS(Reset Dominant Bistable):复位优先触发器指令。     两个为RS触发器,不同的是在同时输入为1(S=R=1)时,哪个优先
6、立即指令
不受PLC循环扫描工作方式的影响。
立即取  LDI bit(I) 立即取反 LDNI bit(I) 立即或 OI bit(I) 立即或反 ONI bit(I)  立即与 AI bit(I)    立即与反ANI bit(I)
立即输出 =I bit
立即置位 SI bit,N(0~128)
立即复位 RI bit,N(0~128)
考虑到稳定性和快速执行,一般不用立即指令

7、边沿脉冲指令
EU(Edge Up) 在上升沿产生脉冲  ED(Edge Down) 在下降沿产生脉冲
(!!注:脉冲宽度为一个扫描周期,所以在程序的其他地方可以用到在此指令之后的线圈)

8、串联电路块的并联连接指令(OLD)
注意:1、块电路的开始也要用LD/LDN指令 2、每次完成一次块电路的并联时写上OLD命令(在并联完成之后) 3、OLD无操作数
实质:块电路完成逻辑运算后,结果存放在堆栈栈顶,OLD指令把栈顶最上面两层的内容进行“或”操作,再将结果存放在栈顶。
LD I0.0
A M0.0
LD I0.1
AN M0.1
OLD
LDN I0.2
A M0.2
OLD
A M0.3
= Q0.0

9、并联电路块的串联连接指令(ALD)and load
注:1、在块电路开始时要使用LD/LDN指令 2、每次完成一次块电路的串联连接后写上ALD 3、ALD无操作数
实质:块电路逻辑运算后,结果存放在堆栈栈顶,ALD命令将最上面的两层内容进行“与”操作,再将结果存放在栈顶
LD I0.0
O I0.1
LD M0.0
A M0.1
LD M0.2
AN M0.3
OLD 
ALD
= Q0.0

10、逻辑入栈(LPS)、逻辑读栈(LRD)、逻辑出栈(LPP)
LPS(logic push):逻辑入栈指令(分支电路的开始指令)。在梯形图上,用于生成一条新的母线。从堆栈使用上来讲,LPS指令的作用是把栈顶复制后压入堆栈。
LRD(logic read):逻辑读栈指令。从堆栈使用来说,LRD读取最近的LPS压入堆栈的内容,而堆栈本身不进行PUSH和POP操作
LPP(logic pop):逻辑出栈指令(分支电路结束指令),从堆栈使用上来讲,LPP把堆栈弹出一级,堆栈内容依次上移。
特别说明:由于受堆栈空间的限制(9层堆栈),LPS\LPP指令的连续使用应当小于9次
LD I0.0
LPS      (将i0.0的内容压入堆栈) 
LD M0.0
O M0.1
ALD 
= Q0.0
LRD  (读取i0.0的内容进行另一个分支的运算)
LD M0.2   (??因为LRD是读取,所以I0.0没有出来,//   正确:后面为一个“完整的逻辑块”,所以还要重新用一个LD装入)
A M0.3
LDN M0.4
A M0.5
OLD
ALD
= Q0.1
LPP
A M1.0 (因为LPP弹出的堆栈I0.0,所以后面是I0.0的后续结构,不再用LD,不是一个"逻辑块")
= Q0.2
LD M1.1
ON M1.2     (后面一个完整的逻辑块,所以用LD  LD为网络逻辑运算块开始的标识)
ALD
= Q0.3
另一个例子
LD M0.0
LPS 
A M0.1
LPS
AN M0.2
= Q0.0
LPP
A M0.3
= Q0.1
LPP
A M0.4
LPS
A M0.5
= Q0.2
LPP
AN M0.6
= Q0.3
再一个例子
LD M0.0
LPS
A M0.1
LPS
A M0.2
LPS
A M0.3
= Q0.0
LPP
= Q0.1
LPP
= Q0.2
LPP
= Q0.3
特别提醒:LPS和LPP必须成对使用,中间可以有LRD(不进行压栈和出栈操作,只是读取)

11、装入堆栈指令LDS(load stack)
复制堆栈中的第n个值到栈顶,而“栈底”丢失 注:编程中使用较少
LDS n (0~8)

12、与ENO指令
ENO在STL中无EN输入,在STL中栈顶值必须为1才能向下执行。
ENO(布尔能流输出端):若,指令盒的能流输入有效,则执行没有错误,ENO置位,将能流向下传递。
LD I0.0
+I VW200,VW204
AENO
ATCH INT_,10

12、比较指令
将两个数值或者字符串按照一定的条件比较,条件成立时,触点就闭合,所以实质上是一个位指令。
类型:字节比较,整数比较,双字整数比较,实数比较,字符串比较
注:字节比较是无符号的,整数比较是有符号的。双字比较也是有符号的。实数比较是有符号的。字符串比较比较两个字符串的ASCII码。   LD
LDW>= C30,30
= Q0.0
LD I0.0
AR< VD1,95.8
= Q0.1
LD I0.1
OB> VB10,VB20
= Q0.2

13、定时器
设置预定值,递增值(从0开始递增到预定值,发生动作)
类型(s7-200):接通延时定时器(TON)、有记忆接通延时定时器(TONR)、断开延时定时器(TOF)
定时器编号包含的变量信息:定时器位(?相当于位逻辑,产生触点动作)、定时器当前值(当前所累计的时间,用16位“符号”整数表示,最大32767)
注:不同类型的定时器有不同的编号,不能混淆
TONR 1ms   T0, T64
 10ms            T1~T4,   T65~T68
        100ms     T5~T31   T69~T95
TON,TOF 1ms   T32,T96
 10ms     T33~T36  T97~T100
 100ms     T37~T63  T101~T255
(32个为一组,最后一个(右下角)到最后255)
定时器的指令:TON T***,PT(预定值):接通延时定时器,断电自动复位定时器当前值
       TONR T***,PT:记忆接通延时定时器,断电不复位,复位只能用复位指令R !!
       TOF T***,PT:断开延时定时器,断电复位定时器当前值
应用举例:
LD I0.0
TON T35,4
TONR T2,10
TOF T36,3   (因为没有逻辑运算,所以不用O、LPS、LPP等指令连接!!!)
定时器刷新方式!:
1ms  :系统每隔1ms刷新一次。与扫描周期及程序处理无关,采用中断刷新方式。(!若扫描周期大于1ms,当前值可在一个扫描周期内不一致!)
10ms :系统每个扫描周期开始时自动刷新。每个扫描周期内刷新一次,一个扫描周期内值不变,保持一致!
100ms:定时器指令执行时被刷新。仅被用在定时器指令在每个扫描周期执行一次的程序中。
(!!??!!定时器可以理解为一个独立的元件,其定时器位和定时器当前值与CPU的扫描周期无关。所以才有了刷新方式不同!刷新方式实质是CPU内存数据区中定时器位和当前值在扫描周期什么时候改变,这才是搭建定时器和扫描周期的桥梁。注:1ms中断刷新中,程序仍然按照母线自上而下,自左而右的顺序执行,中断刷新只是在一个扫描周期内将定时器位变量的值刷新!! 扫描周期就相当于嵌入式c语言中的while(1){ },只是循环和某些器件(IO,某些定时器)的刷新作用,而变量和其他外部设备并不因为扫描周期的刷新而复位!所以,变量能够累计、暂存)
时间间隔定时器:
BITIM(beginning interval time):读取1ms计数器的当前值,存于OUT(LAD中OUT所连接的变量),最大2的32次方。49.7天
CITIM(calculate interval time):计算当前时间与IN(LAD中的IN)所提供的时间差将差值送于OUT(LAD)最大2的32次方,49.7天
举例:要求I0,0持续接通20s后,Q0.0输出
LD I0.0
EU
BITIM VD200
LD I0.0
CITIM VD200,VD204
LDD> VD204,20000
= Q0.0

14、计数器
用来累计输入脉冲的次数。累计脉冲输入端信号上升沿的个数。
几个基本概念:
种类:增计数器(CTU)、增减计数器(CTUD)、减计数器(CTD)
编号(计数器名称+数字(0~255) 如C6):其包含两方面信息“计数器的位”(开关量,是否发生动作)、“计数器当前值”(存储单元,存储计数器当前累计的脉冲个数)。
输入端和操作数:
设定值输入:类型为INT型,一般情况下用常数做为计数器的设定值
计数器指令:
1、增计数器(CTU):首次扫描为0,一直计数到设定值,计数器位动作,然后继续计数到32767停止!只有当“复位输入端”有效,或者使用“复位指令”时,计数器自动复位:计数器位为OFF,当前值为0
举例:
LD I0.0
LD I0.1
CTU C20,3

LD C20
= Q0.0
(!!!!一定注意:LD之后的CU R的顺序不能错,即I0.0为CU,I0.1为R)

2、增减计数器(CTUD):CU用于递增计数,CD用于递减计数。注:增减计数器 特有的是当前值会循环(递增是32767下一个为-32768,递减相反!)
举例:
LD I0.0
LD I0.1
LD I0.2
CTUD C30,5

LD C30
= Q0.0
(!!!!一定注意:CU CD R的顺序不能错)

3、减计数器(CTD):首次扫描计数器位为OFF,当前值为PV(预设定值),当当前值减小到0时,计数器位为ON!!
举例:
LD I0.0
LD I0.1
CTD C40,4

LD C40
= Q0.0
(!!!一定注意:CD R  的顺序不能错)

二、PLD程序控制指令
目的:使程序结构灵活,优化程序结构
主要包括:结束、暂停、看门狗、跳转、循环、顺序控制等
1、结束及暂停指令(END MEND STOP)
 END:有条件结束指令
MEND:无条件结束指令
注意:1、结束指令只能用在主程序中,中断和子程序中不能使用。 2、有条件结束指令可用在无条件结束指令之前结束主程序 3、可利用程序执行的结果状态、系统状态或外部社设置切换条件来调用“有条件结束指令”,使程序结束  4、软件编程时,自动会有一个MEND在主程序结尾,不用手动输入。 5、!!特别注意:使用线圈形式编程,指令不含操作数
STOP:使用线圈形式编程。指令形式中不含操作数。作用:使主机CPU从RUN模式切换到STOP
     特别的:在中断程序中执行STOP时,中断“立即停止处理”,并且忽略之后所有挂起的中断,“继续扫描程序剩余部分”在本次扫描结束后将主机RUN-STOP

2、看门狗复位指令(WDR)
WDR(watchdog reset):可以把警戒时钟刷新,即延长扫描周期,有效的避免看门狗超时错误。以线圈编程。无操作数
特别小心:WDR会使扫描时间过长,所以在中止本次扫描前,如下操作将被禁止:
通信(自由口除外)
IO刷新(立即IO除外)
强制刷新
SM位刷新(SM0、SM5~SM29的位不能被刷新)
运行时间诊断
扫描时间超过25s时,10ms、100ms定时器不能正常计时
中断程序中的STOP指令(具体理解可以参考刚才所说的stop)
举例:
LD SM5.0   //检查IO错误
O SM4.0 //运行时检查编程
O I0.3 //外部切换条件
STOP
LD I0.5
END  //条件结束
LD I0.6
EU
WDR
BIW QB2,QB2

3、跳转及标号指令(JMP LBL)
JMP(jump to label):当输入有效时,程序跳到标号处运行
LBL(label):指令跳转的目标标号(!!!!0~255)
使用说明:1、JMP\LBL配合使用且只能在同一程序块中(同一主程序,子程序或者同一中断程序)

4、循环指令(FOR NEXT)
FOR INDX,INIT,FINAL
.
.
NEXT
当前循环计数(index value of current loop count)、循环初值INIT(starting value)、循环终值(ending value)
操作数均为INT(整型,有符号)
使用说明:
1、for next 必须成对使用
2、可循环嵌套,最多8层。
3、每次是能输入EN有效时,指令自动复位各个参数
4、初值大于终值,循环不执行
5、注意对INDX的控制

5、诊断LED指令
新版CPU的指令
SF/DIAG指示灯来显示。CPU故障:红光(SF)   诊断时:根据是否为黄光判断
DLED IN(字节型数据!!!!)
如果IN等于0:不发光
如果IN大于0:发光*(黄色)
举例:
LD I0.0
= Q0.Q

LD SM0.0   //EN使能DIAG_LED功能模块的EN端
DLED MB0

三、PLC编程初步
1、梯形图(LAD)编程基本规则
 1-1:PLC内部元器件触点的使用次数是无限制的
 1-2:每一行从左端母线开始,然后触点连接,最后以线圈或者指令盒结束
 1-3:线圈和指令盒不能直接连接在左端母线上!!如有需要,可用中间继电器在中间做牵引
 1-4:应把串联多的电路块尽量放在最上面,并联多的尽量在最左边。

转载于:https://www.cnblogs.com/keepgoing707/p/4941132.html

PLC:学习笔记(西门子)3相关推荐

  1. PLC学习笔记(三):PLC结构(2)

    目录: PLC学习笔记(一):概述 PLC学习笔记(二):PLC结构(1) PLC学习笔记(三):PLC结构(2)

  2. PLC学习笔记(一):概述

    目录: PLC学习笔记(一):概述 PLC学习笔记(二):PLC结构(1) PLC学习笔记(三):PLC结构(2)

  3. PLC学习笔记(二):PLC结构(1)

    目录: PLC学习笔记(一):概述 PLC学习笔记(二):PLC结构(1) PLC学习笔记(三):PLC结构(2)

  4. 欧姆龙plc学习笔记(四)

    1,线 关于横线和竖线,可以用ctrl+(4个方向键)来画,同一个位置,画同样的一条线(不管方向是相同还是相反),这条线会消失. 线也可以直接用输入字母指令来实现,比如or 2,注释改颜色 工具-选项 ...

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

    今天师傅给讲了讲做自己主动化控制的总体的思路,特进行一下记录,做个备忘. 1.需求分析 本次的项目是对楼宇循环供水的控制,整个项目须要完毕压力.压差.温度等的获取及显示.同一时候完毕电机的控制. 2. ...

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

    本篇是学习S7-300的一个小程序,用于对PLC开发简单直观的认识. 1.三项异步电动机电路图 2.PLC控制接线图 从图中可以看出控制按钮接PLC 信号模块SM的I0.0.I0.1端口,输出信号从Q ...

  7. 西门子博图PLC学习笔记 (1)两个输出的的振荡电路

    摘要:本程序用的是西门子PLC CPU 是1214C DC/DC/DC 写的双输出振荡电路 文章目录 一.两个输出的的振荡电路 二.LAD梯形图实例 1.自保持 2.振荡电路 总结 一.两个输出的的振 ...

  8. 西门子PLC学习笔记二十一-(中断处理一)

    中断处理用来实现对特殊内部事件或外部事件的快速响应.CPU检测到中断请求时,立即响应中断,调用中断源对应的中断程序(OB).执行完中断程序后,返回被中断的程序中. 中断源类型主要有:I/O模块的硬件中 ...

  9. 西门子逻辑运算指令_西门子PLC学习笔记七-(位逻辑指令)

    位逻辑指令处理的对象为二进制位信号.存储在状态字"RLO"中. 1.触点与线圈指令 1)常开触点 在PLC中规定:操作数为1,则常开触点"动作(闭合)":操作数 ...

  10. 西门子PLC学习笔记十-(计数器)

    S7-300/400的计数器一般占两个字节,是16位的.CPU最多可以使用64~512个计数器,计数器地址编号为C0~C511 1.S_CUD(加减计数器) 加减计数器波形图: 2.S_CU(加计数器 ...

最新文章

  1. SparkStreaming Exception in thread main java.lang.IllegalArgumentException xxx is not a valid
  2. 基于PyTorch重写sklearn,《现代大数据算法》
  3. malloc和calloc的区别
  4. 【codevs1041NOIP01TG】Car的旅行路线,最短路中的数学题
  5. scala数组与java数组对比
  6. 【luogu1967】【noip2013】 货车运输 [生成树kruskal LCA ]
  7. Facebook 游戏开发更新文档 API 参考文档 v5.0
  8. 2017微信小程序全套源代码 最新 最全 好用
  9. 2022-07-17 mysql使用的flex/yacc语法练习
  10. 历代iPhone的分辨率
  11. 关键字synchronized与volatile详解
  12. 如何评价 IEEE Access 成为了 Top 期刊?
  13. android hdmi拔插广播,Android drivers/switch驱动详解(用于通过GPIO状态检测耳机、HDMI等的插拔状态)...
  14. Unity之使物体透明化和还原
  15. PHP 图片去除水印 去除logo
  16. 如何在线文字转语音?
  17. 在线教育20年:在线教育的未来发展趋势
  18. BIM咨询服务合同示范文本(直接套用)
  19. 从零开始之驱动发开、linux驱动(六十七、内核调试篇--printk使用)
  20. git本地分支 远程分支简单操作(后续更新)

热门文章

  1. 磷酸铁锂电池充电过压保护
  2. 国内有那些chia矿池,chia矿池排行那几家比较靠谱
  3. AVR单片机开发3——定时器T0 查询方式
  4. python进行对应分析_对应分析
  5. Matlab-图片上画线
  6. 日常使用计算机出现的小问题(一)win10操作系统设备和驱动器栏目中出现空白图标该如何删除?删除一次刷新又重新出现
  7. php 465端口发送邮件,云服务器使用SSL加密465端口发信样例及Demo
  8. 联发科MT33xx GNSS模块固件升级流程
  9. dell跳过开机硬件检测_戴尔笔记本关闭开机硬件自检
  10. 网工知识角-思科华为的网络工程师常用工具盘点