PLC

PLC指令

Posted by sunzhongliang on October 30, 2023

数据寻址

立即寻址

可以立即进行运算操作的数据叫立即数,对立即数直接进行读写的操作寻址称为立即寻址。
立即寻址在指令中通常以常数形式出现,其形式可以按照二进制、十进制、十六进制形式编写。

二进制形式:2#101 16进制形式:16#12F 十进制形式:190

直接寻址

直接寻址 是指指令中直接使用存储器或寄存器地址编号,直接到指定的区域读取或写入,如VB0,VW20等等

间接寻址

间接寻址使用指针访问存储器中的数据,建立一个指针地址并读取内容如下:

定时器

在西门子S7-200SMART当中,定时器有三种,分别是:

  • TON(On-Delay Timer):通电延时指令
    • 使能端导通时开始计时,当计时器到达设定时间时,状态位导通。 如果没有采取其他措施计时器还会运转
  • TOF(Off-Delay Timer):断电延时指令
    • 使能端断开时开始计时,当计时器到达设定时间时,状态位断开。 计时器停止计时并保持在设定时间上
  • TONR(Retentive On-Delay Timer):保持型定时器
    • 使能端导通时,开始计时,当计时器到达设定时间时,状态位导通, 使能端断开后状态位依然导通,再次导通时,当前值在原来保持值的基础上继续递增,可以使用复位指令进行复位,复位后状态位断开
定时器类型 分辨率 用秒表示的最大值 定时器编号
TONR 1ms 32.767s T0, T64
TONR 10ms 327.67s T1-T4, T65-T68
TONR 100ms 3276.7s T5-T31, T69-T95
TON, TOF 1ms 32.767s T32, T96
TON, TOF 10ms 327.67s T33-T36, T97-T100
TON, TOF 100ms 3276.7s T37-T63, T101-T255

计数器

  • CTU(加计数器)
    • 三个输入端:CU使能端,R复位端,PV预置值
    • 当CU使能端检测到有上升沿脉冲信号输入时,计数器的当前值累加, 当前值大于等于预置值时,计数器状态位导通,如果CU一直有上升沿信号输入,计数器当前值会一直累加到最大值32767,期间状态位一直导通
    • 使用R复位端复位后,计数器状态位断开
  • CTD(减计数器)
    • 三个输入端:CU使能端,R复位端,PV预置值
    • 减计数器初始值是0,通常配合SM0.1做初始化
    • 当CU使能端检测到有上升沿脉冲信号输入时,计数器的当前值减一, 当前值为0时,计数器状态位导通,如果CU一直有上升沿信号输入,计数器当前值会一直保持0,期间状态位一直导通
    • 使用R复位端复位后,计数器状态位断开
  • CTUD(加减计数器)
    • 四个输入端: CU使能端,CD使能端,R复位端,PV预置值
    • 当R复位端状态为0时,计数器使能端输入有效
    • 当CU加计数使能端有上升沿脉冲输入时,计数器当前值加1
    • 当CD减计数使能端有上升沿脉冲输入时,计数器当前值减1
    • 当计数器当前值大于等于预置值时,计数器状态位置1
    • 当R复位端状态是1时,计数器被复位,当前值清零
    • 加计数器范围-32768~+32767,若计数器当前值是最大值32767时,如果CU端再次输入上升沿信号脉冲,则计数器当前值立刻变为-32768
    • 如果计数器当前值是最小值-32768,CD端再次输入一个上升沿脉冲信号,其当前值立刻变为32767

计数器编号从C0开始,到C255结束,总共256个

实时时钟

BCD码用16进制就能表示10进制的数,上图状态监视表当中用16进制看就是10进制的数据表示
任意数的BCD码等于用16进制表示这个数的值
比如21的BCD码表示就是2#0010 0001或者16#21,19的BCD码就是2#0001 1001或者16#19

逻辑操作

逻辑取反

指令名:INV_B
将二进制位上的值进行取反操作

逻辑与

指令名:WAND_B
有零出零,全一出一

逻辑或

指令名:WOR_B
有一出一,全零为零

逻辑异或

指令名:WXOR_B
相同为零,相异为一

同位互锁

当一个输入点需要控制一个状态位的不同状态时

移位循环

移位指令

移位指令分两种,分别是左移位右移位, 分别可以移位操作的数据类型有字节(B), (W),双字(DW)

循环移位

循环移位指令分两种,分别是左循环右循环, 分别可以移位操作的数据类型有字节(B), (W),双字(DW)

寄存器移位

寄存器移位跟其他移位指令有所不同,它主要的区别是可以左右移位,并且还可以补位

程序控制

FOR-NEXT指令

  • FOR指令是一个循环指令,遇到NEXT指令结束一次循环。FOR和NEXT必须成对出现
  • 驱动:单驱
  • 输入端信息:
    • INDEX表示当前计数值,数据类型为INT
    • INIT指令表示循环起始值,数据类型为INT
    • FINAL指令表示循环结束值,数据类型为INT
  • FOR-NEXT最大嵌套深度为8层,循环执行次数越多,所使用的扫描周期耗时越长

跳转指令

跳转指令是用来跳过部分程序使其不执行,必须在同一程序块内部实现跳转,分为跳转指令(JMP)和标号指令(LBL).
执行跳转命令后,被跳过的程序段中组件状态:

  • 结束子程序调用后,被执行过的程序段中的Q、M、S、C等保持跳转前的状态
  • 1ms和10ms分辨率的定时器,跳转后不受影响
  • 100ms分辨率的定时器,跳转期间停止工作,但是不复位,相当于暂停

顺序控制

顺序控制继电器,数据地址范围S0.0-S31.7,共256个位

指令名称 梯形图 功能说明
顺序步开始 SRC 一个顺序控制段的开始,当输入为1时,允许SCR段动作,必须用SCRE指令结束
顺序步转换 ——(SCRT) SCRT指令表示步骤切换,当输入为1时对应下一个被置位,当前SCR段停止工作
顺序步结束 -(SCRE) 执行SCRE指令,结束由SCR开始到SCRE之间的程序段工作

RET指令

RET指令配合子程序使用,当子程序执行到特定条件之后,可以添加RET指令会自动返回到主程序。

一般情况下,开发工具会自动在子程序段的段位添加RET指令,即:子程序全部执行完成后返回到主程序

END指令

END指令只能用在主程序里面,当条件满足,提前结束主程序扫描,END后面的程序不再扫描

STOP指令

STOP指令可以将CPU从运行模式切换到停止模式来终止程序的执行

WDR看门狗

看门狗复位指令可以将扫描的允许时间增加500ms。主扫描的最大绝对持续时间为5s,如果持续时间达到5s,cpu会无条件切换为stop模式

通信

ModBus通信

Modbus通信连接方式是通过RS485线将多个PLC设备连接,使用RS485线进行通信。
多个PLC设备共同连接交换机,然后电脑再连接交换机进行程序编写,编写完成后需要分别下载程序到主站和从站当中,调试完成后交换机可以去掉

半双工通信:通信的双方都可以发送信息,但不能双方同时发送(当然也就不能同时接收)。这种通信方式是一方发送另一方接收,过一段时间后再反过来,通信效率较低。
全双工通信:通信的双方可以同时发送和接收信息。双向交替通信或双向同时通信则需要两条信道,每个方向各一条。双向同时通信的效率最高。

以太网通信

以太网通信连接方式是通过以太网连接交换机将多个PLC设备连接,使用网线进行通信。
多个PLC设备共同连接交换机,然后电脑再连接交换机进行程序编写,只需要下载程序到主站即可

TCP通信

TCP通信连接方式也是通过以太网连接交换机将多个PLC设备连接,使用网线进行通信。
多个PLC设备共同连接交换机,然后电脑再连接交换机进行程序编写,编写完成后需要分别下载程序到主站和从站当中

触摸屏

详见: 触摸屏组态通信

本文首次发布于 孙忠良 Blog, 作者 [@sunzhongliang] , 转载请保留原文链接.