• «
  • 1
  • 2
  • »
  • Pages: 2/2     Go
黄辉冯某某
微信 F1049305119
级别: 略有小成
精华主题: 0
发帖数量: 362 个
工控威望: 494 点
下载积分: 1321 分
在线时间: 157(小时)
注册时间: 2022-03-21
最后登录: 2025-02-22
查看黄辉冯某某的 主题 / 回贴
12楼  发表于: 2023-11-13 13:15
图片:
图片:
松下的写法,不知道算不算满足要求
QQ 302961958
闲鱼  ucldnaqk ,有一些二手学习硬件低价出售
欢迎私聊
方奇10010
级别: 略有小成
精华主题: 0
发帖数量: 98 个
工控威望: 209 点
下载积分: 1608 分
在线时间: 56(小时)
注册时间: 2021-07-29
最后登录: 2025-02-17
查看方奇10010的 主题 / 回贴
13楼  发表于: 2023-11-26 15:04
引用
引用第2楼zmrs163于2023-10-23 08:43发表的  :
D2=2^D0-1

牛逼
ljb6688
级别: 论坛先锋
精华主题: 0
发帖数量: 1824 个
工控威望: 1970 点
下载积分: 114570 分
在线时间: 1978(小时)
注册时间: 2009-12-08
最后登录: 2025-02-21
查看ljb6688的 主题 / 回贴
14楼  发表于: 2023-12-04 15:02
卧虎藏龙啊,开眼长见识了
电气自动化,智能化控制,数据远传采集。工控元件代理,机器人附件    
工控菜鸟
菜鸟一只
级别: 论坛先锋
精华主题: 0
发帖数量: 954 个
工控威望: 1131 点
下载积分: 13865 分
在线时间: 295(小时)
注册时间: 2017-04-12
最后登录: 2025-02-22
查看工控菜鸟的 主题 / 回贴
15楼  发表于: 2024-01-28 09:07
果然程序的尽头是数学
source08
级别: 网络英雄
精华主题: 0
发帖数量: 543 个
工控威望: 6775 点
下载积分: 9426 分
在线时间: 214(小时)
注册时间: 2011-03-01
最后登录: 2025-02-22
查看source08的 主题 / 回贴
16楼  发表于: 2024-02-01 10:46
引用
引用第2楼zmrs163于2023-10-23 08:43发表的  :
D2=2^D0-1


优秀,又学习了。
233708757
级别: 略有小成
精华主题: 0
发帖数量: 152 个
工控威望: 299 点
下载积分: 363 分
在线时间: 99(小时)
注册时间: 2008-03-04
最后登录: 2025-02-17
查看233708757的 主题 / 回贴
17楼  发表于: 6天前
厉害牛逼啊
罗玩玩
级别: 正式会员
精华主题: 0
发帖数量: 14 个
工控威望: 60 点
下载积分: 433 分
在线时间: 27(小时)
注册时间: 2022-12-01
最后登录: 2025-02-18
查看罗玩玩的 主题 / 回贴
18楼  发表于: 5天前
根据三菱PLC的指令特性,可以通过以下步骤实现D2低N位置位的需求:

数学原理验证
公式D2 = 2^D0 -1在数学上是成立的。例如:

当D0=4时,2^4 -1 = 15(二进制00001111),低4位全为1。
当D0=5时,2^5 -1 = 31(二进制00011111),低5位全为1。
三菱PLC实现方法
由于三菱PLC没有直接的指数运算指令,需通过移位指令或循环乘法实现幂运算:

方法一:使用移位指令(推荐)
若PLC支持以寄存器值作为移位次数,可用以下代码:
     MOV K1 D10     ; 将1存入临时寄存器D10[[2]]
     SFL  D10 D0    ; 将D10左移D0次(需确认指令支持寄存器指定次数)[[16]]
     SUB  D10 K1 D2 ; D2 = 2^D0 -1[[8]]
方法二:循环乘法(通用方案)
通过循环实现2的D0次方计算:
     MOV K1 D10     ; 初始化D10=1
     MOV D0 D11     ; 设置循环次数为D0
     LOOP:
     CMP  D11 K0    ; 检查循环次数是否完成
     JLE  EXIT      ; 若D11≤0则跳转退出[[12]]
     MUL  D10 K2 D10; D10 *=2(等价于左移1位)[[13]]
     DEC  D11       ; 循环次数减1
     JMP  LOOP      ; 继续循环
     EXIT:
     SUB  D10 K1 D2 ; D2 = D10 -1[[8]]
注意事项
寄存器位数限制:若D0值较大(如≥16),需使用32位寄存器(如D1:D0组合)避免溢出。
指令兼容性:不同型号PLC支持的指令可能略有差异,需参考具体手册调整语法。
效率优化:对于固定范围D0值(如≤16),可预先计算掩码值并存入表格,通过查表直接读取
黄辉冯某某
微信 F1049305119
级别: 略有小成
精华主题: 0
发帖数量: 362 个
工控威望: 494 点
下载积分: 1321 分
在线时间: 157(小时)
注册时间: 2022-03-21
最后登录: 2025-02-22
查看黄辉冯某某的 主题 / 回贴
19楼  发表于: 3天前
图片:
这样行不行
QQ 302961958
闲鱼  ucldnaqk ,有一些二手学习硬件低价出售
欢迎私聊
gxtmdb82164
级别: 论坛先锋
精华主题: 0
发帖数量: 785 个
工控威望: 1163 点
下载积分: 431 分
在线时间: 619(小时)
注册时间: 2019-09-22
最后登录: 2025-02-21
查看gxtmdb82164的 主题 / 回贴
20楼  发表于: 前天
使用SFR指令应可以3行搞定
初始化0xffff到D0
将目标位数用16相减获得移位数,比如说sub K16 n D1,n=6时,D1是10
SFR D0 D1,将0xffff右移10位,因为高位补0,最终的结果在D0中是6个1
307900508
级别: 探索解密
精华主题: 0
发帖数量: 141 个
工控威望: 172 点
下载积分: 1161 分
在线时间: 47(小时)
注册时间: 2021-05-29
最后登录: 2025-02-21
查看307900508的 主题 / 回贴
21楼  发表于: 昨天
学习一下,高手在民间
  • «
  • 1
  • 2
  • »
  • Pages: 2/2     Go