零度浪子001
级别: 探索解密
精华主题: 0
发帖数量: 50 个
工控威望: 112 点
下载积分: 928 分
在线时间: 25(小时)
注册时间: 2024-03-08
最后登录: 2026-01-07
查看零度浪子001的 主题 / 回贴
楼主  发表于: 2025-10-11 17:21
图片:

程序开始用M8000连续接通一直给D4写1,为啥最终结果D4是16
零度浪子001
级别: 探索解密
精华主题: 0
发帖数量: 50 个
工控威望: 112 点
下载积分: 928 分
在线时间: 25(小时)
注册时间: 2024-03-08
最后登录: 2026-01-07
查看零度浪子001的 主题 / 回贴
1楼  发表于: 2025-10-13 08:09
引用
引用第1楼工控小c于2025-10-11 17:30发表的  :
因为循环最后运行,你试试循环放在前面看看


循环继续执行,是没问题,但有一个问题,每次扫描到for循环,循环条件D2都是从1开始吗。PLC的第一个扫描周期D2应该就等于4了,如果不再从1开始那就不再就如for循环了,后面的扫描只会把D4变为1啊
零度浪子001
级别: 探索解密
精华主题: 0
发帖数量: 50 个
工控威望: 112 点
下载积分: 928 分
在线时间: 25(小时)
注册时间: 2024-03-08
最后登录: 2026-01-07
查看零度浪子001的 主题 / 回贴
2楼  发表于: 2025-10-13 09:53
引用
引用第5楼飞皇123于2025-10-13 08:27发表的  :
先给个初始值,然后进循环,扫描到最后就是这样


初始值是用M8000给的,除非每次进入for循环,循环条件都是从1开始的
零度浪子001
级别: 探索解密
精华主题: 0
发帖数量: 50 个
工控威望: 112 点
下载积分: 928 分
在线时间: 25(小时)
注册时间: 2024-03-08
最后登录: 2026-01-07
查看零度浪子001的 主题 / 回贴
3楼  发表于: 2025-10-14 16:02
引用
引用第7楼工控小c于2025-10-13 12:54发表的  :

D2是循环次数,你这样写相当于每个扫描周期都先把D4赋值1,然后循环再计算D4=((((2*1)*2)*2)*2)



也就是说,PLC每个扫描周期进入for循环时,先把D2置为1,然后再循环吗