数据寻址
立即寻址
可以立即进行运算操作的数据叫立即数,对立即数直接进行读写的操作寻址称为立即寻址。
立即寻址在指令中通常以常数
形式出现,其形式可以按照二进制、十进制、十六进制形式编写。
二进制形式: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] , 转载请保留原文链接.