• «
  • 1
  • 2
  • »
  • Pages: 2/2     Go
洁白的月光
级别: 探索解密
精华主题: 0
发帖数量: 62 个
工控威望: 160 点
下载积分: 526 分
在线时间: 103(小时)
注册时间: 2016-03-12
最后登录: 2018-10-14
查看洁白的月光的 主题 / 回贴
12楼  发表于: 2017-11-16 14:31
刚刚又试验了下,用while语句就没这个毛病。
mov(m8002,k0,d20);
mov(m8002,k0,d21);
while word_to_int(d20)<100 do
d20:=d20+1;
d21:=d20+d21;
end_while;
测试结果正确。
洁白的月光
级别: 探索解密
精华主题: 0
发帖数量: 62 个
工控威望: 160 点
下载积分: 526 分
在线时间: 103(小时)
注册时间: 2016-03-12
最后登录: 2018-10-14
查看洁白的月光的 主题 / 回贴
13楼  发表于: 2017-11-16 14:34
七楼说的是很详细。我也明白了。
f1652577
沧海一声笑!
级别: 探索解密
精华主题: 0
发帖数量: 16 个
工控威望: 116 点
下载积分: 3369 分
在线时间: 26(小时)
注册时间: 2016-04-15
最后登录: 2023-08-18
查看f1652577的 主题 / 回贴
14楼  发表于: 2017-11-17 10:32
@7楼,第一次循环结束,D20=100了,第二个扫描周期,FOR循环都不会执行,应该不会出现你说的那种情况啊!
戆狮
广州三能:自动化设备制造 自动化培训
级别: 略有小成
精华主题: 0
发帖数量: 367 个
工控威望: 486 点
下载积分: 1462 分
在线时间: 592(小时)
注册时间: 2010-08-06
最后登录: 2024-11-12
查看戆狮的 主题 / 回贴
15楼  发表于: 2017-11-17 12:36
FOR D20 :=K0 TO K99    BY K1 DO这条程序有将D20附值=0的功能。将=去掉看看,应该不一样
广州夏谱  工控专家 林生 13602663187 专业自动化设备开发,全实操自动化培训
枫落云端
施主,脚抬一下
级别: 略有小成

精华主题: 0
发帖数量: 341 个
工控威望: 465 点
下载积分: 1547 分
在线时间: 414(小时)
注册时间: 2017-10-10
最后登录: 2024-11-29
查看枫落云端的 主题 / 回贴
16楼  发表于: 2017-11-17 14:18
FOR D20 :=K0 TO K99    BY K1 DO 本身就是一个扫描周期开始后,D20会被赋值为0,所以每个扫描周期都会执行
v13scl
级别: 探索解密
精华主题: 0
发帖数量: 3 个
工控威望: 102 点
下载积分: 684 分
在线时间: 0(小时)
注册时间: 2017-11-27
最后登录: 2017-11-27
查看v13scl的 主题 / 回贴
17楼  发表于: 2017-11-27 19:01
三菱结构化编程视频st qq391962180


结构化编程如果你用MOV的话,就算外行了,实话!不要见怪
kylew
kylew
级别: 略有小成
精华主题: 0
发帖数量: 107 个
工控威望: 214 点
下载积分: 534 分
在线时间: 208(小时)
注册时间: 2010-08-08
最后登录: 2024-11-25
查看kylew的 主题 / 回贴
18楼  发表于: 2017-12-26 21:49
MOV (SM402 ,K0,D20);
MOV (SM402 ,K0,D21);
IF SM402 THEN
    FOR D20 :=K0 TO K99    BY K1 DO
        D20:= D20+K1;
        D21:= D21+D20;
    END_FOR;
END_IF;

1+2+3+.....................+100
这个计算结果为什么是2500,不是应该是5050吗?
我PLC模拟计算的结果是2500
咗臉ヅ微笑ぺ
非吾所愿,奈何已离去……
级别: 工控侠客
精华主题: 0
发帖数量: 471 个
工控威望: 2130 点
下载积分: 29832 分
在线时间: 588(小时)
注册时间: 2017-04-08
最后登录: 2023-07-25
查看咗臉ヅ微笑ぺ的 主题 / 回贴
19楼  发表于: 2017-12-27 08:32
引用
引用第18楼kylew于2017-12-26 21:49发表的  :
MOV (SM402 ,K0,D20);
MOV (SM402 ,K0,D21);
IF SM402 THEN
    FOR D20 :=K0 TO K99    BY K1 DO
        D20:= D20+K1;
.......

FOR循环本身会把D20加一,循环内容又有D20加一,所以实际上算的是1+3+……+99
ヅ微笑面对每一天,即使生活并不美好ヅ
kylew
kylew
级别: 略有小成
精华主题: 0
发帖数量: 107 个
工控威望: 214 点
下载积分: 534 分
在线时间: 208(小时)
注册时间: 2010-08-08
最后登录: 2024-11-25
查看kylew的 主题 / 回贴
20楼  发表于: 2017-12-29 22:01
引用
引用第19楼咗臉ヅ微笑ぺ于2017-12-27 08:32发表的  :

FOR循环本身会把D20加一,循环内容又有D20加一,所以实际上算的是1+3+……+99

明白了!
source08
级别: 网络英雄
精华主题: 0
发帖数量: 538 个
工控威望: 6769 点
下载积分: 7184 分
在线时间: 210(小时)
注册时间: 2011-03-01
最后登录: 2024-11-29
查看source08的 主题 / 回贴
21楼  发表于: 2017-12-30 08:50
学习了。
  • «
  • 1
  • 2
  • »
  • Pages: 2/2     Go