初学三菱st语言的问题有了解的朋友请帮忙解答一下 点击:276 | 回复:8



guyunqianwan

    
  • 精华:0帖
  • 求助:2帖
  • 帖子:2帖 | 8回
  • 年度积分:173
  • 历史总积分:216
  • 注册:2017年1月08日
发表于:2021-01-15 15:34:09
楼主
求助帖30分-已结帖

我做了简单的测试  works2 1.77f

在函数内写了以下句子  

IF ok<In_1 THEN

Par:=TRUE;

 ELSE IF ok>In_2 THEN

Par:=FALSE;

 END_IF;

END_IF;

函数:=Par;

在主程序调用了以上函数

传入参数:函数(ok,In_1,In_2)   ok,In_1,In_2参数都是word型 函数返回值bool型

点位1:=函数(ok,5,9);

点位2:=函数(ok,11,20);


我理解情况是:

1:设定ok值为 0 那么 点位1 点位2 都为true

2:设定ok值<5那么  点位1为true 点位2true

3:   设定ok值>=5且<9 那么 点位1为false 点位2true

4:设定ok值为11~20 那么 点位1为false 点位2false

5: 设定ok值为>=20 那么点位1false 点位2false

实际情况是:

1:设定ok值为 0 那么 点位1 点位2 都为true

2:设定ok值<5那么  点位1为true 点位2true

3:  设定ok值>=5且<9 那么 点位1为true 点位2true

4:设定ok值为11~20 那么 点位1为false 点位false

5: 设定ok值为>=20 那么点位1false 点位2false

为什么实际情况下ok值未超过20时  点位2却false了呢 ??

如果上面的问题是因为函数释放了 ok值取值在11~20时未运行 点位2复位为初始false状态

那么点位1 为什么在ok值取值为5~9时 点位1又为ture状态

是程序运行问题吗?

用西门子scl使用同样代码他的结果是函数未得到运行则无论点位1,点位2都初始为false的情况




小楼居士

  • 精华:0帖
  • 求助:0帖
  • 帖子:3帖 | 76回
  • 年度积分:2
  • 历史总积分:65
  • 注册:2009年4月13日
发表于:2021-01-15 16:45:58
1楼

你少了个ELSE

IF ok<In_1 THEN

   Par:=TRUE;

ELSE IF ok>In_2 THEN

   Par:=FALSE;

ELSE

   将其它要考虑的写在这里!

END_IF;


guyunqianwan

  • 精华:0帖
  • 求助:2帖
  • 帖子:2帖 | 8回
  • 年度积分:174
  • 历史总积分:217
  • 注册:2017年1月08日
发表于:2021-01-15 17:10:30
2楼

"小楼居士" 的回复,发表在1楼
        对内容: 【你少了个ELSEIF okIn_2 THEN   Par:=FALSE;ELSE   将其它要考虑的写在这里!END_IF;...】进行回复:

        -----------------------------------------------------------------

首先感谢老铁的热心回复但是  我看的手册IF语句里面的用法

根据下列规则处理 IF 语句: 

1.如果第一个表达式的值为 TRUE,执行在 THEN之后的语句 END_IF之后恢复程序。 

2.如果第一个表达式的值为 FALSEELSIF分支的表达式将估算。如果 ELSIF分支的一个布 尔表达式为 TRUE, 执行在 THEN之后的语句 END_IF之后恢复程序。 

3. 如果没有 ELSIF分支的布尔表达式为 TRUE,执行在 ELSE之后的语句(或,如果没有 ELSE 分支,无更多的语句可执行) END_IF之后恢复程序。 ELSIF语句的任意数字都可以被编程。 

注意可以没有任意的 ELSIF分支和 /ELSE分支。可以用同样的方式解释犹如没有语句证 明分支的存在。

幸福的小石头

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 316回
  • 年度积分:907
  • 历史总积分:943
  • 注册:2015年5月27日
发表于:2021-01-15 17:15:28
3楼

伙计,你都这么多分段情况了,用IF不嫌麻烦吗?Case语句,他不香吗??

guyunqianwan

  • 精华:0帖
  • 求助:2帖
  • 帖子:2帖 | 9回
  • 年度积分:175
  • 历史总积分:218
  • 注册:2017年1月08日
发表于:2021-01-15 21:06:27
4楼

西门子image.png

三菱image.png不知道哪个是一定成立的    同样操作赋值   点位4的状态不一样 如果和运行机制有关 请指点一下啊  好烦!!!!

guyunqianwan

  • 精华:0帖
  • 求助:2帖
  • 帖子:2帖 | 10回
  • 年度积分:175
  • 历史总积分:218
  • 注册:2017年1月08日
发表于:2021-01-16 21:18:21
5楼

算是解决   从的c的说法 局部变量未指定初值  所以值为随机值 st应该也是一样 

对酒当歌

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 109回
  • 年度积分:36
  • 历史总积分:82
  • 注册:2020年4月07日
发表于:2021-02-25 08:34:41
6楼

学习了,楼主辛苦

wangxiangfei11

  • 精华:0帖
  • 求助:0帖
  • 帖子:7帖 | 76回
  • 年度积分:8
  • 历史总积分:84
  • 注册:2011年9月15日
发表于:2021-02-25 09:13:44
7楼

为了写ST而写ST,你那要求用梯形图一下子就搞定了。你要明白什么场合使用ST语言。并不是用ST就好。有时反而是累赘。盲目崇拜ST,已显示自己牛逼。任何语言都只是工具而已。厉害的不是使用什么语言,而是解决问题的方法。是思想。

Smile-lyc

  • [版主]
  • 精华:179帖
  • 求助:45帖
  • 帖子:4050帖 | 20134回
  • 年度积分:1193
  • 历史总积分:109754
  • 注册:2006年8月04日
发表于:2021-03-03 14:40:00
8楼

感谢求助者和答疑者对求助答疑板块的厚爱,赠人玫瑰,手留余香。

对于求助者要求:

1、请在一个月内自行结贴,把悬赏积分(如果设置积分悬赏求助)发放给答疑者;

2、如果在求助答疑过程中,自己已经有效解决问题,建议大家把解决问题方法在自己求助帖分享,有效分享可以获得50积分奖励。



相关主题

官方公众号

智造工程师