从入门到精通:西门子 PLC 基本指令全解析

发布时间:2025-06-14
来源:
点击:28

1749890942655.png

  • 一、西门子 PLC 基本指令分类

  • 西门子 PLC 的基本指令主要分为以下几类:

    1. 位逻辑指令
    2. 定时器指令
    3. 计数器指令
    4. 数据传送指令
    5. 算术运算指令
    6. 比较指令
    7. 移位指令
    8. 程序控制指令
  •  
  • 下面我们将分别介绍这些指令的功能和用法。
  • 二、位逻辑指令

  • 位逻辑指令是 PLC 编程中最基本的指令,用于处理二进制位信号(0 或 1)常见的位逻辑指令包括:

  • LD(Load)指令

  • 功能:将堆栈顶部的值赋给指定的输出地址。
    示例:= Q0.0(将堆栈顶部的值赋给输出点 Q0.0)
  • A(And)指令

  • 功能:逻辑或非操作,将堆栈顶部的值与指定地址的值的反码进行或运算。
    示例:ON M0.1(将堆栈顶部的值与 M0.1 的反码进行或运算)
  • O(Or)指令

  • 功能:逻辑与非操作,将堆栈顶部的值与指定地址的值的反码进行与运算。
    示例:AN I0.1(将堆栈顶部的值与 I0.1 的反码进行与运算)
  • AN(And Not)指令

  • 功能:逻辑或操作,将堆栈顶部的值与指定地址的值进行或运算。
    示例:O Q0.0(将堆栈顶部的值与 Q0.0 的值进行或运算)
  • ON(Or Not)指令

  • 功能:逻辑与操作,将堆栈顶部的值与指定地址的值进行与运算。
    示例:A M0.0(将堆栈顶部的值与 M0.0 的值进行与运算)
  • =(Assign)指令

  • 功能:将输入信号状态加载到堆栈顶部。
    示例:LD I0.0(将输入点 I0.0 的状态加载到堆栈)
  •  

  • 三、定时器指令

  • 定时器指令用于实现时间控制功能,西门子 PLC 提供了多种类型的定时器,如接通延时定时器(TON)、断开延时定时器(TOF)和保持型接通延时定时器(TONR)。

  • TON(Timer On-Delay)指令

  • 功能:保持型接通延时定时器,与 TON 类似,但在计时过程中即使输入信号断开,已累计的时间也不会丢失。
    示例:TONR T35, 200(T35 为定时器编号,200 为设定值)
  • TOF(Timer Off-Delay)指令

  • 功能:当输入信号断开时,定时器开始计时,达到设定时间后输出信号断开。
    示例:TOF T34, 50(T34 为定时器编号,50 为设定值)
  • TONR(Retentive Timer On-Delay)指令

  • 功能:当输入信号接通时,定时器开始计时,达到设定时间后输出信号接通。
    示例:TON T33, 100(T33 为定时器编号,100 为设定值,单位取决于定时器的分辨率)
  •  

  • 四、计数器指令

  • 计数器指令用于对输入脉冲进行计数,西门子 PLC 提供了增计数器(CTU)、减计数器(CTD)和增减计数器(CTUD)。

  • CTU(Counter Up)指令

  • 功能:增减计数器,可根据增计数输入(CU)和减计数输入(CD)的信号进行增计数或减计数。
    示例:CTUD C22, PV=100(C22 为计数器编号,PV 为设定值 100)
  • CTD(Counter Down)指令

  • 功能:减计数器,在装载输入信号(LD)接通时,将设定值装入计数值,每收到一个下降沿脉冲,计数值减 1,当计数值减到 0 时,输出信号接通。
    示例:CTD C21, PV=50(C21 为计数器编号,PV 为设定值 50)
  • CTUD(Counter Up/Down)指令

  • 功能:增计数器,每收到一个上升沿脉冲,计数值加 1,当计数值达到设定值时,输出信号接通。
    示例:CTU C20, PV=100(C20 为计数器编号,PV 为设定值 100)
  •  

  • 五、数据传送指令

  • 数据传送指令用于在不同存储区之间传输数据,常见的数据传送指令有:

  • MOVB(Move Byte)指令

  • 功能:双字传送,将一个双字(32 位)的数据从源地址传送到目标地址。
    示例:MOVD MD30, LD10(将位存储器 MD30 的数据传送到局部数据寄存器 LD10)
  • MOVW(Move Word)指令

  • 功能:字传送,将一个字(16 位)的数据从源地址传送到目标地址。
    示例:MOVW VW100, MW20(将数据寄存器 VW100 的数据传送到位存储器 MW20)
  • MOVD(Move Double Word)指令

  • 功能:字节传送,将一个字节的数据从源地址传送到目标地址。
    示例:MOVB IB0, QB0(将输入字节 IB0 的数据传送到输出字节 QB0)
  •  

  • 六、算术运算指令

  • 算术运算指令用于对数据进行数学运算,常见的算术运算指令有:

  • ADD(Addition)指令

  • 功能:除法运算,将两个数相除,结果存放在目标地址。
    示例:DIV VW50, AC1(将数据寄存器 VW50 的值除以累加器 AC1 的值,结果存放在 AC1)
  • SUB(Subtraction)指令
  • 功能:乘法运算,将两个数相乘,结果存放在目标地址。
    示例:MUL DBD20, MD40(将双字 DBD20 的值与位存储器 MD40 的值相乘,结果存放在 MD40)
  • MUL(Multiplication)指令
  • 功能:减法运算,将两个数相减,结果存放在目标地址。
    示例:SUB MW10, AC0(将位存储器 MW10 的值减去累加器 AC0 的值,结果存放在 AC0)
  • DIV(Division)指令
  • 功能:加法运算,将两个数相加,结果存放在目标地址。
    示例:ADD IW2, VW40(将输入字 IW2 的值与数据寄存器 VW40 的值相加,结果存放在 VW40)
  •  

  • 七、比较指令

  • 比较指令用于比较两个值的大小关系,常见的比较指令有:

  • ==(Equal)指令

  • 功能:不等于比较,如果两个值不相等,则输出为 1,否则为 0。
    示例:<>R AC1, 3.14(比较累加器 AC1 的值是否不等于 3.14)
  • >(Greater Than)指令
  • 功能:小于等于比较,如果左边的值小于或等于右边的值,则输出为 1,否则为 0。
    示例:<=D MD30, 1000(比较位存储器 MD30 的值是否小于或等于 1000)
  • <(Less Than)指令
  • 功能:大于等于比较,如果左边的值大于或等于右边的值,则输出为 1,否则为 0。
    示例:>=I C20, 50(比较计数器 C20 的当前值是否大于或等于 50)
  • >=(Greater Than or Equal)指令
  • 功能:小于比较,如果左边的值小于右边的值,则输出为 1,否则为 0。
    示例:
  • <=(Less Than or Equal)指令
  • 功能:大于比较,如果左边的值大于右边的值,则输出为 1,否则为 0。
    示例:>D MD100, LD20(比较位存储器 MD100 的值是否大于局部数据寄存器 LD20 的值)
  • <>(Not Equal)指令
  • 功能:等于比较,如果两个值相等,则输出为 1,否则为 0。
    示例:==I IW10, VW20(比较输入字 IW10 的值与数据寄存器 VW20 的值是否相等)
    1. ==(Equal)指令

    2. >(Greater Than)指令

    3. <(Less Than)指令

    4. >=(Greater Than or Equal)指令

    5. <=(Less Than or Equal)指令

    6. <>(Not Equal)指令

  •  

  • 八、移位指令

  • 移位指令用于对数据进行位移操作,常见的移位指令有:

  • SHL(Shift Left)指令

  • 功能:循环右移,将数据向右移动指定的位数,右边移出的位补到左边。
    示例:ROR VW30, 4(将数据寄存器 VW30 的值循环右移 4 位)
  • SHR(Shift Right)指令
  • 功能:循环左移,将数据向左移动指定的位数,左边移出的位补到右边。
    示例:ROL MB5, 1(将位存储器 MB5 的值循环左移 1 位)
  • ROL(Rotate Left)指令
  • 功能:逻辑右移,将数据向右移动指定的位数,左边空出的位补 0。
    示例:SHR MD20, 3(将位存储器 MD20 的值向右移动 3 位)
  • ROR(Rotate Right)指令
  • 功能:逻辑左移,将数据向左移动指定的位数,右边空出的位补 0。
    示例:SHL VW100, 2(将数据寄存器 VW100 的值向左移动 2 位)
    1. SHL(Shift Left)指令

    2. SHR(Shift Right)指令

    3. ROL(Rotate Left)指令

    4. ROR(Rotate Right)指令

  •  

  • 九、程序控制指令

  • 程序控制指令用于控制程序的执行流程,常见的程序控制指令有:

JMP(Jump)指令

功能:无条件跳转,程序执行到该指令时,将跳转到指定的标号处继续执行。
示例:JMP Label1(跳转到标号 Label1 处)

JC(Jump on Carry)指令

功能:进位跳转,如果进位标志位为 1,则跳转到指定的标号处。
示例:JC Error(如果进位标志位为 1,则跳转到标号 Error 处)

JZ(Jump on Zero)指令

功能:零跳转,如果结果为 0,则跳转到指定的标号处。
示例:JZ Finish(如果结果为 0,则跳转到标号 Finish 处)

CALL(Call)指令

功能:调用子程序,程序执行到该指令时,将跳转到指定的子程序处执行。
示例:CALL SBR_1(调用子程序 SBR_1)

RET(Return)指令

功能:从子程序返回,子程序执行到该指令时,将返回到调用该子程序的下一条指令处继续执行。
示例:RET(从子程序返回)
免责声明:本站所提供信息均来源于网友提供或网络搜集,由本站编辑整理,如涉及版权问题,请联系本站管理员予以更改或删除
旗下服务
在线课程 现场培训
微信公众号
© 2019-现在 版权所有,并保留所有权利。ICP备案证书号:沪ICP备18011190号-4

沪公网安备 31011202007493号