设为首页
收藏本站
PLC技术网
开启辅助访问
切换到宽版
登录
注册哦
只需一步,快速开始
微信扫码登录
门户
Portal
论坛
BBS
导读
Guide
排行榜
Ranklist
搜索
搜索
本版
文章
帖子
用户
PLC论坛-全力打造可编程控制器专业技术论坛
»
论坛
›
工控技术交流区
›
『国外:三菱/西门子/欧姆龙/松下』
›
西门子博图移位和循环指令
返回列表
发新帖
[西门子]
西门子博图移位和循环指令
[复制链接]
26674
|
0
|
2024-5-23 17:45:17
|
显示全部楼层
|
阅读模式
1、SHR:右移
可以使用“右移”指令将输入 IN 中操作数的内容按位向右移位,并在输出 OUT 中查询结果。参数 N 用于指定移位的位数。
如果参数 N 的值为“0”,则将输入 IN 的值复制到输出 OUT 的操作数中。
如果参数 N 的值大于位数,则输入 IN 的操作数值将向右移动该位数个位置。
无符号值移位时,用零填充操作数左侧区域中空出的位。如果指定值有符号,则用符号位的信号状态填充空出的位。
图中1位置:要进行右移操作的数;
图中2位置:要进行移位的位数;
图中3位置:右移执行后结果存储地址;
图中4位置:可执行的数据类型;
下图展示数据进行右移位的原理:
以下面实例检验运行结果:
有实例运行:输入为字节型数据”DB_1”.B_1=16#80转换为二进制:1000_0000移位数2结果为”DB_1”.B_2=16#20转换为二进制:0010_0000
PS:右移位指令条件成立M_1为ON执行一次,条件再次成立结果保持不变。
2、SHL:左移
使用“左移”指令将输入 IN 中操作数的内容按位向左移位,并在输出 OUT 中查询结果。参数 N 用于指定将指定值移位的位数。
如果参数 N 的值为“0”,则将输入 IN 的值复制到输出 OUT 的操作数中。
如果参数 N 的值大于位数,则输入 IN 的操作数值将向右移动该位数个位置。
用零填充操作数右侧部分因移位空出的位。注意与右移指令的区别。
左移指令与右移指令原理基本一致,区别在于符号位,左移为有低位向高位移动,低位自动补0,而右移指令是有高位向低位移动,固存在符号位问题。
原理展示:
下面看一下实例运行结果:
“DB_1”.B_1=16#01转换二进制为0000_0001执行指令移位数2结果存储在”DB_1”.B_2=16#04转换为二进制为0000_0100
3、ROR:循环右移
使用“循环右移”指令将输入 IN 中操作数的内容按位向右循环移位,并在输出 OUT 中查询结果。参数 N 用于指定循环移位中待移动的位数。用移出的位填充因循环移位而空出的位。
如果参数 N 的值为“0”,则将输入 IN 的值复制到输出 OUT 的操作数中。
如果参数 N 的值大于可用位数,则输入 IN 中的操作数值仍会循环移动指定位数。注意与右移指令区别。
下面来看一下移位原理图展示:
有图中可以看出循环右移与右移的差异,循环移位指令也常被用于经典的跑马灯程序。设定好移位指令执行的间隔时间就可以达到跑马灯的效果。
下面是参数表:
结合实例展示如下:如果将IN改为MB100执行此指令M100.7-M100.0按顺序依次为ON,如果换为输出点,就可以驱动外部指示灯。
4、ROL:循环左移
使用“循环左移”指令将输入 IN 中操作数的内容按位向左循环移位,并在输出 OUT 中查询结果。参数 N 用于指定循环移位中待移动的位数。用移出的位填充因循环移位而空出的位。
如果参数 N 的值为“0”,则将输入 IN 的值复制到输出OUT 的操作数中。
如果参数 N 的值大于可用位数,则输入 IN 中的操作数值仍会循环移动指定位数。
指令执行与循环右移原理一样,只是移动方向变为向左,不在赘述。
移位与循环移位在PLC编程中有着非常广泛及巧妙的用法,理解后可结合实际案例灵活运用。
本帖子中包含更多资源
您需要
登录
才可以下载或查看,没有账号?
注册哦
x
回复
举报
返回列表
发新帖
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
注册哦
本版积分规则
发表回复
回帖后跳转到最后一页
非标自动化
回复楼主
返回列表
『国外:三菱/西门子/欧姆龙/松下』
『国产:台达/汇川/信捷产品交流区』