工作任务1:彩灯的PLC控制

官方工学老师·24 页·深入(追求细节与边界)·0 次浏览·2 天前
PLC控制移位指令彩灯编程数据传送

彩灯的PLC控制

从数据传送到移位控制,系统掌握彩灯的PLC编程全流程

按 空格/→ 演示下一步

1 / 24 页

全部页面点击任意一页,跳回舞台从这页播放

PLC控制移位指令彩灯编程数据传送

彩灯的PLC控制

从数据传送到移位控制,系统掌握彩灯的PLC编程全流程

1第 1 页 · 彩灯的PLC控制

PLC数据存储区

上页我们用Y0~Y7直接点亮彩灯,但花样程序不会原地踏步——它要记住'现在跑到第几种了'。这个'记数'的地方,就是PLC的数据存储区。

存储区四大类
X输入、Y输出、M辅助继电器、D数据寄存器各占独立的编号空间
位元件X/Y/M
每个地址只表1个开关,状态非0即1,16个位元件=1个字
字元件D
每地址占16位,可存-32768~32767的有符号整数,是PLC的'数字抽屉'
位组合成字
M0~M15连续16位可拼作字看待,MOV指令把常数送入D寄存器
32位双字
两个相邻D组成32位数据,用DMOV指令,最高位为1时代表负数
编号储物柜对应 →PLC存储区

位元件=只能放1封信的小格;字元件D=能装整个包裹的大格,内含16个小夹层

2第 2 页 · PLC数据存储区

数据寻址方式

上页认识了 I、Q、M 这些"储物柜"。CPU 怎么精确定位某一格?这就要谈寻址方式。

直接寻址
地址直接写出,如 I0.0、MW10,写啥找啥
间接寻址
地址存在指针里,CPU 按指针的指向去访问
K 常数
十进制常数写法,如 K50 即十进制 50
H 常数
十六进制常数写法,如 H32,多用于位组合
找朋友两种方式对应 →直接寻址 vs 间接寻址

直接报门牌号 vs 先问指针,指针再报门牌号

$\text{K}50 = \text{H}32 = 110010_2$
3第 3 页 · 数据寻址方式

MOV指令格式与功能

我们已经知道怎么用地址找到 PLC 里的数据,但光找到还不够——彩灯花样要靠寄存器里的初值不断变化,这就需要把数据"搬"过去。MOV 就是干这件事的最基本指令。

指令格式
MOV S D,S 在前为源、D 在后为目标
数据流向
单向搬运,只把 S 复制到 D,不修改也不清空 S
执行方式
连续型每周期执行一次;加 P 后缀为上升沿脉冲触发
操作数范围
源可为常数 K/H、寄存器或位元件;目标多为数据寄存器
工厂传送带送零件对应 →MOV 数据搬运

传送带只往一个方向走,到目标工位就放下,原工位零件原封不动

4第 4 页 · MOV指令格式与功能

MOV指令编程实例

text

用MOV给数据寄存器D赋不同数值,二进制位模式直接决定哪些彩灯亮起。

代码高亮加载中…

MOV 把一个数值(K 表示十进制、H 表示十六进制)写入数据寄存器 D;数值的二进制位模式直接决定 8 盏彩灯的亮灭。

5第 5 页 · MOV指令编程实例

MOV指令执行时序

沿扫描周期看MOV在哪个阶段被读到、源/目标何时被访问、输出何时落点

图解渲染中…
I把所有外部输入一次性拍快照到输入映像寄存器P逐条扫描用户程序,MOV在此阶段被取指执行M存放源/目标操作数的映像寄存器区
6第 6 页 · MOV指令执行时序

块传送指令BMOV

上一页MOV一次只能搬一个数据。彩灯的16盏灯若用花样表驱动,写16条MOV既冗长又难维护——块传送BMOV让你一条指令搬一整块连续数据。

指令格式
BMOV S D n,S源起始地址,D目标起始地址,n为传送个数
批量传送
从S起的n个连续寄存器,一次性复制到从D起的n个寄存器
n的范围
n指定传送点数,三菱FX系列一次最多512点
区域可重叠
源与目标在同一存储区且地址重叠时,PLC自动按正确顺序处理
彩灯应用
把预设花样表批量写入工作区,或将运行结果批量复制到显示区
整排搬书对应 →块传送BMOV

MOV是把1本书从A架搬到B架;BMOV是把A架起连续n本整排搬到B架,位置一一对应

7第 7 页 · 块传送指令BMOV

块设置指令FMOV

BMOV 是把一整排数据「搬」过去;如果只想把同一个值灌进一排连续单元,就轮到 FMOV 了。彩灯场景里,常常需要一次性把'全灭'或'全亮'写入一组灯寄存器。

功能定位
把同一个源数据批量写入 n 个连续目标单元,性质是填充而非搬运。
指令格式
FMOV(P) S D n,结尾加 P 表示脉冲执行(条件 ON 瞬间仅执行一次)。
参数含义
S=源数据(只取一份);D=起始目标地址;n=连续写入的点数。
执行结果
从 D 起的 n 个连续单元全部被 S 的值填满,原值被覆盖。
与 BMOV 对照
BMOV 搬的是一排不同的数据,FMOV 只用一个数据填一排,源只取一份。
一支笔画一排灯笼对应 →FMOV 批量填充

一支笔=源 S,一排灯笼=D 起的 n 个单元,每盏都被涂上相同颜色

FMOV(P)  S  D  nFMOV(P)\;S\;D\;n
8第 8 页 · 块设置指令FMOV

MOV/BMOV/FMOV对比

MOV搬一个,BMOV搬一堆不同的数,FMOV用一个数铺满一片——三件事最容易混。

块传送 BMOV
  • 把N个连续数据原样复制到目标区
  • 源与目标按顺序逐字对应
  • 典型:搬运整段彩灯状态字
  • 等价于连续N条MOV指令
块设置 FMOV
  • 把同一个值写入N个连续目标字
  • 源仅1个字,目标区被批量覆盖
  • 典型:批量清零、批量置位
  • 等价于对同一源连续N条MOV
搬不同数据用BMOV,铺同一个数用FMOV,单点用MOV。三者错用会出bug。
9第 9 页 · MOV/BMOV/FMOV对比

移位寄存器指令SFT

彩灯想依次流水般闪过,MOV每次只能搬一个数据到固定位置。要让'1'沿位串自动后移,就需要SFT——每收到一个脉冲就把'1'推进一步,像传送带一样。

指令格式 SFT S D n
S为输入脉冲源,D为移位寄存器首地址,n为位长度(≤8位一组,超出需级联)
移位机理
每个脉冲上升沿:最高位溢出丢弃,其余位依次后移,S的新值进入最低位
边沿触发
仅在输入信号上升沿执行一次移位,需保证脉冲宽度使PLC能采样到
复位与级联
用RST指令将D区清零;多组SFT首尾相接可扩展成任意长度移位链
彩灯流水实现
周期性脉冲送入S,n盏灯接在D[n-1]~D[0],'1'逐位点亮形成流水效果
传送带运送包裹对应 →移位寄存器

每节拍传送带前进一格=数据后移一格;末端包裹掉落=最高位溢出;新包裹放入起点=新值进入D[0]

10第 10 页 · 移位寄存器指令SFT

SFT移位过程示意

每个移位脉冲触发一次逐位移动:新位从一端进入,旧位从另一端溢出。

图解渲染中…
PULSFT的移位触发条件,每个上升沿移一位A寄存器初值,位串只示意不固定B高位的1被挤出,新0进入
11第 11 页 · SFT移位过程示意

可逆移位寄存器SFTR

SFT像一列只向一个方向传递的彩灯;灯走到终点后要原路返回,就得切换方向。SFTR按位右移,再与SFTL配合,即可组成往复流水灯。

指令格式
SFTR S D n1 n2:S、D为位元件,S取补入位,D存移位区
右移规则
每次把D右移n1位,最低端n1位溢出;S的高n1位补入D最高n1位
参数边界
n1为每次移位数,n2为总位数,并须满足n1≤n2
往复切换
到右端后改用SFTL向左移;SFTR只负责右移,不会检测端点并自动掉头
触发方式
应提供上升沿以保证每次只移一拍;条件持续ON时会在后续扫描中重复移位
双向排队通道对应 →SFTR移位控制

右入口补入时,队列整体右移、左端溢出;反向入口配对SFTL,队列便反向移动。

12第 12 页 · 可逆移位寄存器SFTR

SFTR双向移位时序

纵向读SFTR双向时序:触发→移位→状态→换向,四环节分列展示。

图解渲染中…
B2SFTR右移:S位补入最高位D7,向低位移,D0溢出C2SFTL左移:S位补入最低位D0,向高位移,D7溢出D1换向节点:判断M0/M1状态决定续跑或切换E1反向切换必须先RST清移位状态
13第 13 页 · SFTR双向移位时序

字移位指令WSFT

前面讲的 SFT 是把一个个位往前推。如果想让一整组数据(比如 D0~D5 里的温度值)整体挪一格,就需要用字移位指令 WSFT。

移位单位是字
WSFT 每次把 16 位数据当作一个整体移动,不是逐位
指令格式
WSFT S D n,S 是源字、D 是起始字、n 是连续字个数(≤512)
方向朝末位移
源字填入首字,其余顺序上移一格,末位字被移出丢失
32 位用 DWSFT
每次移两个 16 位字组成的一个 32 位数据
与 SFT 的区别
SFT 移位对象是位(bit),WSFT 移位对象是字(word)
传送带搬箱子对应 →字移位 WSFT

每个箱子是完整一件货物,整箱推进一格,新箱子补入,末位箱子掉出

14第 14 页 · 字移位指令WSFT

算术左右移指令

WSFT 让字整块搬家,搬的是字与字之间的次序。这页降到字内部——ASL 和 ASR 两个算术移位指令,专做有符号数的位平移,核心问题是:右移时符号位该怎么补?

ASL算术左移
操作数整体左移1位,最低位自动补0,最高位溢出送入进位标志CF
ASR算术右移
操作数整体右移1位,最高位保留原符号位,最低位移出送CF
符号位复制
ASR右移时新空出的最高位用原符号位填补而不是补0——这是与一般右移的本质区别
×2与÷2的近似
ASL近似把有符号数乘以2,ASR近似除以2并保持正负;但ASL可能溢出,正数变负
士兵列队向右齐步走对应 →ASR的符号位复制

队尾士兵离队进CF;队首将军位置不能空就复制自己填进新空位,所以将军一直在,正负性不变

15第 15 页 · 算术左右移指令

逻辑移位 vs 算术移位

逻辑移位和算术移位都叫移位,但对无符号和有符号数的处理截然不同。选错模式,符号位会被悄悄破坏。

逻辑移位
  • 左右移位空位一律补 0
  • 适用无符号数(BIN / HEX)
  • 右移等价于无符号数除以 2ⁿ
  • 左移等价于乘以 2ⁿ,高位溢出丢弃
算术移位
  • 左移补 0;右移补符号位(最高位)
  • 适用有符号数(补码表示)
  • 右移保持正负号,等价于带符号除以 2ⁿ
  • 左移同逻辑,但溢出可能改变正负
无符号数据用逻辑移位;有符号数据右移必须用算术移位,否则符号位被清零。三菱 PLC 由指令码区分,CPU 自动选择对应行为。
16第 16 页 · 逻辑移位 vs 算术移位

循环左右移指令ROL/ROR

上页算术移位把溢出的位丢掉,但ROL/ROR不一样——被挤出的位不消失,而是绕回首端。一圈转完,所有位都还在。

ROL循环左移
所有位左移一位,最高位回到最低位,首尾闭合
ROR循环右移
所有位右移一位,最低位回到最高位,首尾闭合
进位标志参与
被移出的位同时送入进位标志,可串接跨字旋转
与算术移位的边界
算术移位溢出位丢失并补0;循环移位所有位都保留,无0填充
8个LED围成一圈的环形灯对应 →ROL/ROR循环移位

亮的LED就是1,每移一次就转一格,转一圈又回到原位

17第 17 页 · 循环左右移指令ROL/ROR

数字左右移指令SLD/SRD

算术/逻辑移位都是按 1 bit 挪数据,但 BCD 数里一个十进制位就是 4 bit。SLD/SRD 就是按 4 bit 整体搬动的指令,特别适合数码管扫描显示。

移动单位
每次执行搬动 1 个十进制位,即 4 bit 一组
移出/移入规则
高位移出丢弃,低位补 0;不循环、不带进位
必须用脉冲执行
连续型每扫描周期都移一位会失控,要用 SLDP/SRDP
典型应用
4 位 BCD 数码管动态扫描时,逐位移出送显示
机械里程表数字翻滚对应 →SLD/SRD 4 位移位

里程表每位是独立齿轮但联动翻转——SLD/SRD 把 4 bit 视为一个十进制位一起搬

18第 18 页 · 数字左右移指令SLD/SRD

四种移位指令对比

SFT处理位,WSFT/SLD/ROL处理字;单位选错彩灯就乱码。

位移位 SFT
  • 操作单个位 X/Y/M/S
  • 移出位进溢出位M8021
  • 简单流水灯、≤16步序列
  • 需配SFTR才能反向移位
字移位组
  • 操作整个16位字 D
  • 字整体丢/循环/位级丢
  • 多组彩灯并行、数据队列
  • 子指令分工见下方裁决
SFT适合≤16步单组彩灯;多组并行用字级;字内位操作选SLD,需回卷选ROL,整字队列选WSFT。
19第 19 页 · 四种移位指令对比

彩灯控制系统设计流程

从控制要求到稳定运行的彩灯系统,要依次走完四步,前一步的输出就是后一步的输入。

1
需求分析
梳理灯数、点亮顺序、节奏等控制要求,列成清单
2
I/O分配
为每个灯、每个按钮分配输入/输出地址,绘制分配表
3
程序设计
用MOV、移位等指令把花型写入数据区,搭梯形图
4
调试优化
用编程软件模拟运行,针对异常调整时序与逻辑
20第 20 页 · 彩灯控制系统设计流程

彩灯控制系统程序

iecst

一段完整程序:用MOV装花样表,BMOV批量复制,再配合SFT/ROL做移位动画

代码高亮加载中…

MOV装花样表、BMOV批量复制,再配合SFT做位流水、ROL做字旋转,三者组合实现多花样彩灯切换

21第 21 页 · 彩灯控制系统程序

彩灯花样时序图

时序图从上往下读:四列分别是主控与三种花样模式,主控按时间节点发出切换信号,模式内部呈现不同灯序变化。

图解渲染中…
M1模式1:四盏灯逐个点亮,跑完一轮后等待切换M2模式2:四盏灯同步闪,亮0.5s灭0.5sM3模式3:四盏灯循环移位,类似走马灯
22第 22 页 · 彩灯花样时序图

核心知识点自测

点击作答

对16位数据执行右移1位操作时,逻辑右移指令与算术右移指令的核心区别在于什么?

23第 23 页 · 核心知识点自测

课后思考

先自己想,再看参考答案,带着问题走出课堂。

1为什么SFT指令每次扫描周期只能移位一位?结合PLC扫描机制说说。

参考答案PLC采用循环扫描,SFT每次执行只移一次,扫描周期内结果固定,因此移位速度受扫描周期限制。

2彩灯从8盏扩展到16盏,SFTR和WSFT哪个更方便?为什么?

参考答案WSFT更方便。WSFT以字为单位移动,16盏=1个字可一次移完;SFTR按位操作需配置16位,步骤更繁琐。

3高速流水线上MOV指令的实时性够用吗?什么情况会成为瓶颈?

参考答案高速场合MOV受扫描执行方式限制可能成为瓶颈。需用中断、立即刷新指令或高速I/O模块绕过周期限制。

24第 24 页 · 课后思考