跳转至

PLC

4453 个字 114 行代码 10 张图片 预计阅读时间 19 分钟

question

  • 变送器规格
  • 定时器

系统组成和硬件构成

简单介绍常识

电源

负载电源(PM)

  • 为各种模块、其他负载提供外接 24V 电源。
  • 为部分 PS 模块提供 24V 电源。

系统电源(PS)

  • 通过背板总线为模块提供内部所需的电源(外部负载回路还需由 PM 接线来供电
  • 只能为 CPU 和本机加模块供电。

AI 连接

AI 接口接收 420mA 电流输入,如何连接

  • PLC 为每个输入分配好了独立的内存地址

I0.0 false I0.1 true

  • 输出也分配了独立的内存

内存:内部存储器 断电不保存

外部存储器 - 无法直接处理

PLC(可编程逻辑控制器)的主要组件包括以下部分:

1. CPU(中央处理单元)

- 功能PLC 的核心组件,负责处理程序逻辑、执行运算、存储数据,并控制其他模块的运行。 - 组成: - 处理器:执行用户编写的控制程序(梯形图、STL 语言等。 - 存储器: - ROM(只读存储器):存储 PLC 固件和系统程序。 - RAM(随机存取存储器):存储用户程序、运行时数据、I/O 状态等。 - EEPROM/Flash:用于掉电保持用户程序和参数。 - 通讯接口:用于与上位机、HMI(人机界面)或其他设备通讯(如 RS-232、RS-485、Ethernet


路(channel)是什么意思

路是通道的意思,一个通道可以理解为一条路

每个通道独立传输一个信号(数字量或模拟量

示例:

  • 数字量通道:8 通道输入模块 → 8 个独立开关信号接口(如按钮、传感器
  • 模拟量通道:4 通道模拟输入模块 → 可同时采集 4 路温度 / 压力信号(如 0-10V 电压输入
  • 高速计数器通道:单相 8ch 模块 → 支持 8 个独立计数器(如统计电机转速)

2. DI(数字输入,Digital Input)

- 功能:用于接收外部开关量信号(如按钮、限位开关、光电传感器等。 - 特点: - 只接收两种状态的信号:0(低电平)1(高电平)。 - 常见电压等级:DC 24V、DC 12V、AC 220V 等。 - 可能分为漏型(NPN)源型(PNP)输入。


3. DO(数字输出,Digital Output)

- 功能:用于控制外部设备的开关状态(如继电器、电磁阀、信号灯等。 - 类型: - 继电器输出(Relay Output):使用继电器控制,适用于高电压、高电流负载。 - 晶体管输出(Transistor Output): - NPN 输出(低电平有效) - PNP 输出(高电平有效) - 可控硅输出(Triac Output):适用于交流负载。 - 特点: - 只能输出开(1)关(0)信号。 - 典型输出电压:DC 24V、AC 220V 等。


4. AI(模拟输入,Analog Input)

- 功能:用于接收外部模拟信号(如压力传感器、温度传感器、流量计等。 - 类型: - 电压输入(0-10V、±10V。 - 电流输入(4-20mA、0-20mA。 - 特点: - 需要 A/D(模数转换)转换,将模拟信号转换为数字信号供 CPU 处理。 - 通常具有分辨率(如 12-bit、16-bit)影响信号精度。


5. AO(模拟输出,Analog Output)

- 功能:用于输出模拟信号控制外部设备(如变频器、伺服驱动器、调光系统等。 - 类型: - 电压输出(0-10V、±10V。 - 电流输出(4-20mA、0-20mA。 - 特点: - 需要 D/A(数模转换)转换,将数字信号转换为模拟信号输出。 - 输出信号可以用于调节电机速度、阀门开度等。

冗余系统与可靠度

无故障概率:单元设备在规定的环境温度、湿度、振动和使用方法及维护措施等条件下,在规定的工作期限内,设备无故障地发挥规定功能的概率。

  • 并联可以提高系统的可靠性(冗余)
  • 冗余设计: 1oo1、1oo2、2oo2、2oo3

可靠度的计算

第二个题计算的时候,可以按照中间的块是否有效进行分类讨论;

  • 如果有效,则可以等效为左边的块
  • 如果无效,则可以等效为串联电路

可以使用下面的代码进行验证

枚举法——计算成功的概率
from itertools import product

# 定义成功的条件
success_conditions = [
    (1, 3),
    (1, 4, 5),
    (2, 5),
    (2, 3, 4)
]

# 生成所有可能的情况
all_cases = list(product([0, 1], repeat=5))

# 计算每种情况的概率
probabilities = {}
total_probability = 0
for case in all_cases:
    probability = 0.8 ** sum(case) * 0.2 ** (5 - sum(case))
    probabilities[case] = probability
    total_probability += probability

# 计算成功的概率
success_probability = 0
for case, probability in probabilities.items():
    for condition in success_conditions:
        if all(case[i-1] == 1 for i in condition):
            success_probability += probability
            break

# 输出结果
print("所有可能的情况及其对应的概率:")
for case, probability in probabilities.items():
    print(f"{case}: {probability}")

print(f"所有情况的概率之和为:{total_probability}")
print(f"成功的概率为:{success_probability}")

数据类型

可支持二进制、十进制、十六进制、BCD 码、ASCII 码、时间、日期等格式的数据

1D = 2W = 4B = 32bit

1 real = 4 byte = 32 bit

常见的数据类型 描述 位数 常数举例 编程举例
BOOL 二进制位 1 TRUE/FALSE I3.2
BYTE 字节 8 B#16#2F IB3,由 I3.0~I3.7 组成的一个字节
WORD 无符号字 16 W#16#247D MW100,MB100,MB101 组成的字
DWORD 无符号双字 32 DW#16#149E857A MD100
LWORD 长字 64 LW#16#ADAC1EF5 -
INT 有符号整数 16 -362 -32768~32768
DINT 有符号长整数 32 L#23 -2147483648~2147483647
REAL IEEE 浮点数 32 20.1234 -
S5TIME SIMATIC 时间 16 S5T#1H3M50S -
TIME IEC 时间 32 T#1H3M50S -
LTIME IEC 时间 64 T#11350d20h25m14s830ms652μs315ns -
CHAR ASCII 字符 8 '2A' -

位、字节、字、双字的关系

地址

地址区域 可以访问的地址单位 符号及标识方法 说明
过程映像输入区 · 字节 · · 双字 I·IB·IW·ID 对应输入模块端口
过程映像输出区 · 字节 · · 双字 Q·QB·QW·QD 对应输出模块端口
标志位存储区 · 字节 · · 双字 M·MB·MW·MD 全局变量区
数据块 · 字节 · · 双字 DBX·DBB·DBW·DBD OPN DB打开
· 字节 · · 双字 DIX·DIB·DIW·DID OPN DI打开
定时器 T -
计数器 C -
本地数据区 · 字节 · · 双字 L·LB·LW·LD 局部变量
  • 不建议绝对地址寻址 , 确有需要,可修改数据块属性(非优化模式

每一通道均配置独立的地址,应用程序根据地址实现 IO 操作开关量 1/0 模块

  • 开关量 IO:每个通道的地址占 1 位(1bit16 通道模块的地址占 2 字节,32 通道模块地址占 4 字节模拟量 1/0 模块
  • 模拟量 IO 模块:每个模拟量地址为 16 位(2 字节)8 通道模块的地址占 16 字节,2 通道模块地址占 4 字节

I/O 地址生成方式:在配置硬件时,系统自动提供缺省地址(推荐使用,通常地址是够用的,也可手动设置地址

过程映像区

过程映像区(Process Image)是 PLC(可编程逻辑控制器)中用于存储输入和输出信号状态的区域。它位于 CPU 的系统存储区中,用于在程序执行过程中提供一致的输入和输出信号状态

程映像区的更新机制:过程映像区在每个扫描周期中更新一次。

  • 输入、输出地址是不同的(IQ。模块地址在硬件配置时生成或指定。端口状态与映像区周期性自动映射。
  • 支持绝对地址访问,用 % 开头。非必要情况下建议优先对映像区读写。
  • 支持变量名称访问,不容易搞错。建议自己定义变量名称,容易记忆。
  • 即读即写指令中应加 :P

寻址方式

立即寻址 | 直接给出操作数的值

x.y - x: 字节数:0-65536 - y: 位数:0-7

直接给出操作数的值

直接寻址 | 直接给出地址

给出操作数的地址,直接访问存储器中的数据

寄存器间接寻址和存储器间接寻址有什么区别?

存储器间接寻址

指令中给出的地址不是操作数的直接地址,而是指向操作数地址的指针。

寄存器间接寻址 | 循环操作

I0.0开始的 64 个连续位状态,通过循环方式逐个转存到从DB1.DBX10.0开始的连续 64 个位中

多个开关量信号的批量采样,批量存放到数据块中

寄存器间接寻址
L     P#0.0
LAR1  
L     P#10.0
LAR2
L     64 //把64装入A1,相当于循环的次数

n1:   T     #loopcounter  //把累加器A1内容放入临时变量loopcounter(首次执行值为64)
      OPN   %DB1   //需在DB块属性中设置为不选取“优化的访问”
      CLR //清除A1的内容
      A     I[AR1,P#0.0]
      =     DBX[AR2,P#0.0]
      L     P#0.1 //将地址偏移量0.1装入累加器A1
      +AR1 //AR1加上偏移量0.1,指向下一个地址
      L     P#0.1
      +AR2
      L     #loopcounter      //把loopcounter中的内容载入A1
      LOOP  n1                //A1自动减1,若A1不为0则循环到n1,否则跳出循环;相当于是一个跳转的指令

A I[AR1,P#0.0]

  • A:将指定地址的位状态加载到累加器A1
  • I:输入存储器(I存储器
  • [AR1, P#0.0]:使用地址寄存器AR1的值作为基地址,偏移量为0.0的地址。
  • 功能:将I存储器中由AR1(当前值为0.0)和偏移量0.0确定的地址处的位状态加载。

= DBX[AR2, P#0.0]

  • =:将累加器A1的内容存储到指定地址。
  • DBX:数据块中的位存储器。
  • [AR2, P#0.0]:使用地址寄存器AR2的值作为基地址,偏移量为0.0的地址。
  • 功能:将累加器A1中的位状态存储到DBX存储器中由AR2(当前值为10.0)和偏移量0.0确定的地址处。

把从DB2.DBD400开始的连续 32 0-100 的模拟量,逐个通过UNSCALE函数转换为 0-27648 范围的某一个数值,并采用循环方式输出到地址从300.0开始的 32 个模拟量输出端口

多个阀位信号的批量输出!

L     P#400.0
LAR1  
L     P#300.0
LAR2
L     32 //循环次数
n2:   T     #loopcounter
      OPN   %DB2
      L     DBD[AR1,P#0.0] //从DB2中DBD400开始循环
      T     #V_out
      CALL  "UNSCALE"
          IN     :=#V_out
          HI_LIM :=1.0000000e+002
          LO_LIM :=0.0000000e+000
          BIPOLAR:=FALSE
          RET_VAL:=#ret
          OUT    :=#V_dec
      L     #V_dec
      T     QW[AR2,P#0.0] // 将转换后的值存入到QW300.0开始的地址当中
      L     P#4.0     //移动AR1的偏移量,实现顺序读取
      +AR1
      L     P#2.0
      +AR2
      L     #loopcounter
      LOOP  n2

这里为什么 AR1 的偏移量是 4.0,而 AR2 的偏移量是 2.0 呢?

  1. AR2 输出的是 INT2 个字节,所以是 2.0
  2. AR1 输入的是 REAL,DW,所以是四个字节
  • UNSCALE 函数: 输出:0-27648 输入是模拟量,把模拟量输入映射到实数INT上面

程序表示

LAD( 梯形图 )STL( 语句表 )FBD( 功能块图 )SCL( 结构化语言,如类 Pascal 语言 )GRAPH( 图表化语言 ) 等,LAD FBD 可以互相转化,其他不可互相转化

编程语言对应:
- STEP 7:用于西门子 PLC 编程的软件,支持结构化编程。
- C 语言:一种通用的编程语言,也支持结构化编程。

1. LAD(梯形图 Ladder Diagram

特点: - 图形化语言:使用图形符号表示逻辑关系,类似于继电器控制电路图。 - 直观易懂:适合电气工程师和初学者,易于理解和调试。 - 逻辑结构清晰:通过梯级(Rung)表示逻辑关系,从上到下执行。

应用场景: - 常用于简单的逻辑控制和顺序控制。 - 适合处理开关量信号和基本的逻辑运算。

软继电器:梯形图中某些编程元件沿用了继电器这一名称 能流:即“概念电流”,从左向右流动 母线:可想象左正右负的直流电源,右母线有时可以不画出

2. FBD(功能块图 Function Block Diagram

特点: - 模块化编程:通过功能块(Function Block)实现模块化编程,提高代码复用性。 - 图形化语言:使用图形符号表示功能块和信号流向。 - 适合复杂控制:适合处理复杂的逻辑关系和算法。

应用场景: - 常用于复杂的逻辑控制、过程控制和算法实现。 - 适合处理模拟量信号和复杂的数学运算。

3. SCL(结构化控制语言 Structured Control Language

特点: - 文本化语言:类似于高级编程语言(如 C、Pascal,使用文本编写代码。 - 结构化编程:支持结构化编程概念,如循环、分支、函数等。 - 灵活性高:适合处理复杂的算法和数据处理。

应用场景: - 常用于复杂的算法实现、数据处理和高级控制逻辑。 - 适合处理大量的数据和复杂的数学模型。

4. STL(语句表 Statement List

操作码 操作数(<=1个)

过程:读取指令、翻译代码、执行指令

  • A1,A2 累加器
  • AR1
  • AR2

特点: - 文本化语言:使用文本编写代码,类似于汇编语言。 - 底层编程:适合处理底层的硬件操作和优化。 - 执行效率高:由于接近机器语言,执行效率较高。

应用场景: - 常用于对执行效率要求较高的场合。 - 适合处理实时性要求高的控制任务。

模拟量读取
L   %IW 256:P   //从端口地址(如256)读入转换结果,:P 表示脉冲采集
T   #Dec_in//存入临时变量Dec_in,#abc表示临时变量,变量名abc
CALL "SCALE"//直接调用系统函数,以下是输入输出参数
    IN      :=#Dec_in//入口参数:十进制转换结果
    HI_LIM  :=2.000000e+002//入口参数:工程量上限200,kPa(本身没有单位概念) 
    LO_LIM  :=0.000000e+000//入口参数:工程量下限0
    BIPOLAR :=FALSE//入口参数:TRUE为双极性,FALSE为单极性
    RET_VAL :=#ret//出口参数:返回值(准确-0,错误-其它值) 
    OUT     :=#In_result//出口参数:工程量转换结果
  • 通过 := 运算符将变量的值传递给函数参数。
  • :P 表示脉冲采集
  • #abc 表示临时变量,变量名abc
  • 2.000000e+002 是科学计数法表示的 200
  • % 是一个前缀,用于表示特定的数据类型或地址空间
  • 工程量是指以物理计量单位或自然计量单位所表示的各个分项或子分项工程和构配件的数量单位
CALL "UNSCALE"                // 直接调用系统提供的转换函数,以下是输入输出参数
    IN     := #Out             // 入口参数:阀位值0 ~ 100%浮点数
    HI_LIM := 1.000000e+002   // 入口参数:阀位上限100
    LO_LIM := 0.000000e+000   // 入口参数:阀位下限0
    BIPOLAR := FALSE           // 入口参数:TRUE为双极性输出,FALSE单极性输出
    RET_VAL := #Err            // 出口参数:返回值
    OUT    := #Out_result      // 出口参数:十进制转换结果存入临时变量

L     #Out_result              // 将#Out_result的值加载到累加器1
T     %QW416:P                 // 十进制转换结果输出到过程输出缓冲区,如416
  • CALL 是调用函数的关键字

程序结构

组织块(OB)

  • OB1 :对应于 C 语言中的main()函数,是程序的入口点。
  • 其他 OB :对应于中断函数,用于处理特定的中断事件。

设置不同的组织块,用以完成不同的功能

每一个 OB 块都对应为一种有不同优先级的中断,优先级从 1(最低)到 26(最高)

OB 说明 OB 编号 优先级(默认) 可能的 OB 个数 备注
启动 系统从停止切换到运行状态时调用,进行初始化 100,≥123 1(1) 0-100 多个启动 OB 按编号由小到大依次执行
程序循环 基本组织块,每隔循环周期执行 1 1,≥123 1(1) 0-100 同上
时间中断 根据设置的日期、时间定时启动执行 10-17,≥123 2-24(2) 0-20 -
循环中断 按照设定的时间间隔循环执行 30-38,≥123 2-24(8-17) 0-20 OB 块中程序执行时间应小于时间间隔

函数 / 块(FC FB

  • FC(Function):子程序或函数,通过赋实参来调用。
  • FB(Function Block):函数块,通过背景数据块赋值来调用。

数据块(DB)全局变量

  • 数据块是 PLC 最主要的数据存储区,需要用户自己定义,相当于 C 语言全局变量
  • 主要存放 IO 结果、中间运算结果和状态、与其他设备或系统交互的数据等 , 块内数据可定义 bool、byte、int、real、date、time 等多种数据类型
  • 数据块应先定义、后访问,可根据需要定义不同数据块
  • 数据块分为共享数据块和背景数据块,本质都是全局变量 - 共享数据块:在多个程序块中使用,类似于 C 语言中的全局变量。 - 背景数据块定义:附属于某个 FB 块、数据结构与 FB 输入输出数据格式完全相符的数据块,可以理解为 FB 批量赋值的数据块,也可以当作一般 DB 块用

系统函数(SFB/SFC)

类似于库函数

  • SFB(System Function Block):系统功能块,提供特定的系统功能。
  • SFC(System Function):系统功能,提供特定的系统服务。

调用关系

  • OB 块只能被系统调用(被事件触发,不可以被其他程序调用。
  • OB 块可以调用 FB FC
  • FB FC 可以调用其他 FB、FC。
  • 系统为每个优先级分配 64KB 的临时变量(L 堆栈,供组织块、程序块使用。
  • 嵌套越深,占用 L 堆栈越多,需防止“爆栈”现象。

定时器

要求掌握 SS TON

STL LAD LAD 扩展形式 描述
SS SS S_ODTS 保持型接通延时定时器
SP SP S_PULSE 脉冲定时器
SE SE S_PEXT 扩展的脉冲定时器
SD SD S_ODT 接通延时定时器
SF SF S_OFFDT 断开延时定时器
R R - 定时器复位

SS(保持型接通延时定时器)

LAD图

SDL
A   %I0.0
L   S5T#10s
SP  %T1
A   %I0.1
R   %T1
A   %T1
=   %Q0.0

SS 定时器,即保持型接通延时定时器,是西门子 PLC 中的一种定时器类型。它具有以下特点和工作原理:

  1. 保持功能:一旦逻辑位有上升沿发生,定时器启动计时,延时时间到,输出高电平“1”,即使逻辑位为“0”也不影响定时器的工作。
  2. 复位要求:必须用复位指令才能使定时器复位。
  3. 上升沿触发SS 定时器为上升沿触发,即当输入信号从 0 变为 1 时,定时器开始计时。

工作原理

  1. 启动计时:当输入信号(逻辑位)从 0 变为 1 时,定时器开始计时,此时输出为 0
  2. 计时过程:在计时过程中,即使输入信号再次变为 0,定时器也会继续计时,直到达到预设的时间。
  3. 输出高电平:当定时器计时结束时,输出变为高电平“1”,并保持这个状态,直到复位信号有效。
  4. 复位:只有当复位信号有效时,定时器才会复位,输出变为低电平“0”,并停止计时。

应用示例

假设有一个按钮 I0.0,当按下按钮时,定时器 T0 开始计时,1 秒后,无论按钮是否按下,输出 Q0.0 都会变为高电平“1”,并保持这个状态,直到按下复位按钮 I0.1,定时器复位,输出 Q0.0 变为低电平“0”[4]。

类型 描述 应用场景
SS(保持型接通延时定时器) 当输入条件为 ON 时开始计时,即使输入条件变为 OFF,定时器也会继续计时直到达到设定值。 设备启动后的延时操作。
SP(脉冲型定时器) 当输入条件为 ON 时立即动作,但经过设定的时间后,即使输入条件仍为 ON,定时器也会变为 OFF 状态。 产生脉冲信号,如控制电机的启动和停止。
SE(扩展的脉冲型定时器) 只要输入条件出现 ON 状态,无论持续时间多长,定时器都会保持 ON 状态直到达到设定值。 产生稳定脉冲信号,如控制灯光的闪烁。
SD(接通延时定时器) 当输入条件为 ON 时开始计时,当达到设定值时动作。如果输入条件变为 OFF,定时器会立即停止计时。 输入条件为 ON 时的延时操作,如设备启动延时。
SF(断开延时定时器) 当输入条件为 ON 时不动作。当输入条件变为 OFF 时开始计时,当达到设定值时动作。 输入条件消失后的延时操作,如设备停止延时。
R(定时器复位) 用于复位定时器,使其重新开始计时。 重新启动定时器的场景。

TON 定时器

类型 描述 应用场景
TP(启动脉冲定时器) 当输入条件为 ON 时立即动作,但经过设定的时间后,即使输入条件仍为 ON,定时器也会变为 OFF 状态。 产生脉冲信号,如控制电机的启动和停止。
TON(启动接通延时定时器) 当输入条件为 ON 时开始计时,当达到设定值时动作。如果输入条件变为 OFF,定时器会立即停止计时。 输入条件为 ON 时的延时操作,如设备启动延时。
TONR(记录一位信号为 1 的累计时间) 用于记录输入条件为 ON 的累计时间。 统计设备运行时间的场景。
RT(复位定时器) 用于复位定时器,使其重新开始计时。 重新启动定时器的场景。
PT(加载定时时间) 用于加载定时器的设定值。 动态调整定时器设定值的场景。

程序指令

根据图片内容,我将操作码指令分为以下几类,并提供示例使用和讲解:

累加器数据装入

L means load

  • L:将 A1 中的数据移入 A2,并将操作数内容(如 20)装入 A1

示例使用
L 20
讲解:执行该指令后,A1的值变为20,同时A1中原数据被移入A2。

累加器数据传送

T means transfer

  • T:把 A1 中的内容传送到目标位置(如 MW6A1 中原数据不变。

示例使用
T MW6
讲解:执行该指令后,A1的值被传送到MW6,但A1的值保持不变。

地址寄存器地址装入

  • LAR1(LAR2):将操作数装入 AR1(AR2,若指令中没有给出操作数,则将 A1 内容装入 AR1(AR2

示例使用
LAR1 20
讲解:执行该指令后,AR1的值变为20。如果指令中没有给出操作数,则AR1的值将变为A1的值。

地址寄存器地址传送

  • TAR1(TAR2):将 AR1(AR2)的内容传送给目标位置,若指令中没有给出操作数,则将 AR1(AR2)的内容传送给 A1

示例使用
TAR1 MW6
讲解:执行该指令后,AR1的值被传送到MW6。如果指令中没有给出操作数,则AR1的值将被传送到A1。

地址寄存器地址交换

  • CAR:交换 AR1 AR2 的内容。

示例使用
CAR
讲解:执行该指令后,AR1和AR2的值将被交换。

比较指令

  • >II 为整数型比较(累加器中低 16
  • >DD 为长整数比较。
  • >RR 为浮点数比较。

示例使用
>I A2
讲解:执行该指令后,如果A2的值大于A1的值(低16位),则RLO置“1”,否则RLO置“0”。

数值运算指令

数值运算指令

加法

  • +I:将 A2 A1 相加,结果的 16 位和放入 A1 低字。
  • +D:将 A2 A1 相加,结果的 32 位和放入 A1
  • +R:将 A2 A1 相加,结果的浮点数和放入 A1

示例使用
+R A2
讲解:执行该指令后,A2与A1相加,结果的浮点数和放入A1。

减法

  • -I:将 A2 A1 相减,结果的 16 位差放入 A1 低字。
  • -D:将 A2 A1 相减,结果的 32 位差放入 A1
  • -R:将 A2 A1 相减,结果的浮点数差放入 A1

示例使用
-R A2
讲解:执行该指令后,A2从A1中减去,结果的浮点数差放入A1。

乘法

  • *I:将 A2 A1 相乘,结果的 32 位积放入 A1
  • *D:将 A2 A1 相乘,结果的 64 位积放入 D
  • *R:将 A2 A1 相乘,结果的浮点数积放入 A1

示例使用
*R A2
讲解:执行该指令后,A2与A1相乘,结果的浮点数积放入A1。

除法

  • /I:将 A2 除以 A1,结果的 16 位商放入 A1 低字,余数放入 A1 高字。
  • /D:将 A2 除以 A1,结果的 32 位商放入 A1D 相除无余数
  • /R:将 A2 除以 A1,结果的浮点数商放入 A1

示例使用
/R A2
讲解:执行该指令后,A2除以A1,结果的浮点数商放入A1。

绝对值

  • ABS:对 A1 32 位实数取绝对值,结果放入 A1

示例使用
ABS
讲解:执行该指令后,A1的值取绝对值,结果放入A1。

位逻辑运算

与操作

  • A
  • 与非AN

或操作

  • O
  • 或非ON

赋值操作

  • 赋值

状态操作

  • 置位S
  • 复位R

状态位

首次检测位(FC)

  • 定义:首次检测位(FC)用于指示新逻辑串的开始。
  • 作用
    • FC = 0 时,表示新逻辑串开始。当执行位逻辑指令时,系统会直接将操作数内容保存到 RLO 位中,并将 FC 位置 1
    • FC = 1 时,操作数与 RLO 进行逻辑运算,并将结果存于 RLO
  • 特殊指令:当执行到 RS= 等指令时,FC 会清 0,表示逻辑串结束。
  • 用途:通过 FC 来区分不同的逻辑串。

逻辑操作结果(RLO,Result of Logic Operation)

  • 定义:逻辑操作结果(RLO)用于存储位逻辑指令或算术比较指令的结果。
  • 作用
    • 存储位逻辑指令(如 ANDOR 等)的执行结果。
    • 存储算术比较指令(如 >< 等)的执行结果。
  • 特点:所有的逻辑运算结果均存储在此处。

系统开发案例

bangbang 控制

bangbang 控制(位式控制)在 85 度,温度开关 I0.5 对应 83 度,I0.6 对应 85 度,I0.2 触发时进入工作,低于 83 ON(Q100.3,高于 85OFF(Q100.3I0.7 异常警报,产生异常警报时停止加热,等待下一轮。

Bang-Bang 控制(也称为位式控制、两位控制、开关控制)是一种最简单的反馈控制策略,其输出只有两个状态:开(ON)或关(OFF。它根据系统当前状态是否超过某个阈值,决定是否启动或停止执行器。

这里相当于把开关当作了温度计,高于 83 按下I0.5 , 高于 85 按下I0.6

      A     I 0.2         // 启动信号
      AN    I 0.7         // 且无异常
      S     M 0.0         // 设置加热工作状态 M0.0

      A     I 0.7         // 如果异常
      R     M 0.0         // 复位加热工作状态

// ------------------------
// 加热控制主逻辑
// ------------------------
      A     M 0.0         // 如果处于加热控制状态
      AN    I 0.6         // 且温度还没达到85°C(高位开关没动作)
      =     M 0.1         // 设置加热状态 M0.1(=1)

      A     I 0.5         // 如果温度已经超过83°C
      A     I 0.6         // 并且达到85°C
      O     I 0.7         // 或者异常发生
      R     M 0.1         // 清除加热状态 M0.1

// ------------------------
// 输出控制
// ------------------------
      A     M 0.1
      =     Q 100.3       // 控制输出加热器 ON/OFF

电机的优先启动控制

工艺要求:有五个电机 M1~M5,

每个电机都有启动和停止按钮(无自锁)

要求按顺序启动,即 M1 不开,M2 不能开,M2 不开,M3 不能开 . 前级电机停止,则后面的电机也停止

请设计 PLC 控制程序设计分析:

5 个电机的启动按钮分别记为 B1—B5,输入信号地址分配为:%I0.0%I0.1%I0.2%I0.3%I0.4

5 个电机的停止按钮分别记为 B6—B10,输入信号地址分配为:%I1.0%I1.1%I1.2%I1.3%I1.04

控制 5 个电机的接触器记为 KM1—KM5,输出信号地址分配为:%Q4.0%Q4.1%Q4.2%Q4.3%Q4.4

提醒:先设计出一个电机的启停控制程序 再设计出五个电机的启停控制程序最后设计出五个电机的关联开关程序

通风机的监控

工艺要求:有 3 个通风机,设计一个监控系统,监视风机的运转,要求: 当有2个或2个以上风机运转的时候,信号灯持续发亮; 1个风机运转的时候,信号灯以1Hz的频率闪烁; 当全部风机停止运转的时候,信号灯以2.5Hz的频率闪烁; 请设计PLC控制程序 设计过程风机的状态(3个)—— %I0.0 %I0.1 %I0.2 信号灯输出(1个 —— %Q4.0

延时开关(注意设计自锁)

有一台开关泵和一台开关阀,开关阀安装与泵的出口。请设计一段控制程序,满足: (1)当输入信号为ON时,立即打开阀门,过3秒后启动开关泵 (2)当输入信号为OFF时,立即关闭开关泵,过5秒后关阀

(输入信号地址 %I0.4 开关阀输出地址 %Q4.4 开关泵输出地址 %Q4.5

原料输送系统(延时开关)

某原料输送系统的控制点包括:

  • 启动按钮1 个,常开无自锁。
  • 停止按钮1 个,常闭无自锁。
  • 低位料位开关:L1。
  • 高位料位开关:L2。
  • 输送电机:M。
  • 开关阀:V。

输入输出 I/O 分配表 | 地址 | 注释 | |--------|--------------------| | %I 0.0 | 启动按钮 | | %I 0.1 | 停止按钮 | | %I 0.2 | 料位开关L1(低位) | | %I 0.3 | 料位开关L2(高位) | | %Q 4.0 | 输送电机M | | %Q 4.1 | 开关阀V |

控制要求:

1)按下启动按钮后,系统进入工作状态; 2)工作状态下: - 当储罐A中无料时,启动电机M,10s后再打开阀V; - 当储罐A中料满时,关闭阀V,10s后再关闭电机M; 3)按下停止按钮后,系统进入停机状态:并立即关闭开关阀V,经10s后再关闭输送电机M。

实验课

硬件构成

NI、NO、AI、AO

接线端子: - DX:用于信号和器件中间进行隔离 - BX:用于电气连接,上面连正极,下面连负极,第三层放中间线

L:正极 M:负极