• «
  • 1
  • 2
  • 3
  • »
  • Pages: 2/3     Go
qq240559043
干就完了
级别: 略有小成
精华主题: 0
发帖数量: 192 个
工控威望: 332 点
下载积分: 4111 分
在线时间: 143(小时)
注册时间: 2012-06-06
最后登录: 2024-11-15
查看qq240559043的 主题 / 回贴
12楼  发表于: 2024-08-09 22:20
M0        :=(D0=1 AND NOT X5 AND X7 AND X8) OR D2=1 OR D5=1 OR D12 =1;
IF M0= TRUE AND LDP(TRUE,M1) THEN
    D100        :=D100+1;
END_IF;
IF M0= TRUE AND LDP(TRUE,M2) THEN
    D101        :=D101+1;
END_IF;
IF M0= TRUE AND LDP(TRUE,M3) THEN
    D102        :=D102+1;
END_IF;
IF M0= TRUE AND LDP(TRUE,M4) THEN
    D103        :=D103+1;
END_IF;    
IF M0= TRUE AND LDP(TRUE,M5) THEN
    D104        :=D104+1;
END_IF;    
IF M0= TRUE AND LDP(TRUE,M6) THEN
    D105        :=D105+1;
END_IF;    
IF M0= TRUE AND LDP(TRUE,M7) THEN
    D106        :=D106+1;
END_IF;    


其实我看出来你想说什么了,是我的会我会用标签的布尔数组,要加的数据也是数组;
用FOR去写就好了。我觉得你一定会用变址,因为你的思想已经被束缚了
ayusecret
级别: 略有小成
精华主题: 0
发帖数量: 182 个
工控威望: 260 点
下载积分: 804 分
在线时间: 73(小时)
注册时间: 2021-10-31
最后登录: 2024-11-16
查看ayusecret的 主题 / 回贴
13楼  发表于: 2024-08-10 08:15
引用
引用第12楼qq240559043于2024-08-09 22:20发表的  :
M0        :=(D0=1 AND NOT X5 AND X7 AND X8) OR D2=1 OR D5=1 OR D12 =1;
IF M0= TRUE AND LDP(TRUE,M1) THEN
    D100        :=D100+1;
END_IF;
IF M0= TRUE AND LDP(TRUE,M2) THEN
.......

拜托,你以为我给出的代码是真实场景呀,能用一个If的情况下我为什么要写那么多IF,而且你以为真实情况下是M4,M5,M6,M7情况下可以用For循环?
我的设想是用一个If带后面所有上升沿,和梯形图一样,懂?我觉得你才是思想被束缚的人,能用IF尽量用IF
暴躁小白兔
级别: 探索解密
精华主题: 0
发帖数量: 147 个
工控威望: 195 点
下载积分: 3709 分
在线时间: 91(小时)
注册时间: 2021-05-11
最后登录: 2024-11-15
查看暴躁小白兔的 主题 / 回贴
14楼  发表于: 2024-08-12 10:58
引用
引用第2楼ayusecret于2024-08-02 08:21发表的  :
[attachment=301886]
没人讨论,我来给出我的测试结果,D0,D1的不同结果让我对ST的上升沿和下降沿的使用保持谨慎,毕竟这已经是我第二次在ST边沿指令时发现的问题了,第一次引贴:http://www.ymmfa.com/read-gktid-1728792.html


我咋记得说明书上提到过,ST文本中慎用脉冲信号,不保证准确性
17625606414
级别: 家园常客
精华主题: 0
发帖数量: 410 个
工控威望: 586 点
下载积分: 119 分
在线时间: 150(小时)
注册时间: 2022-07-11
最后登录: 2024-11-17
查看17625606414的 主题 / 回贴
15楼  发表于: 2024-08-12 16:43
引用
引用第14楼暴躁小白兔于2024-08-12 10:58发表的  :


我咋记得说明书上提到过,ST文本中慎用脉冲信号,不保证准确性

跟ST没关系,跟怎么写有关系
ayusecret
级别: 略有小成
精华主题: 0
发帖数量: 182 个
工控威望: 260 点
下载积分: 804 分
在线时间: 73(小时)
注册时间: 2021-10-31
最后登录: 2024-11-16
查看ayusecret的 主题 / 回贴
16楼  发表于: 2024-08-12 17:16
引用
引用第15楼17625606414于2024-08-12 16:43发表的  :

跟ST没关系,跟怎么写有关系

可能我对ST用法理解不到位,但你能帮忙分析下以下结果么,为啥M1 On,D0+1,M2,M3常On且不受指令影响可以强制On/Off.
这个写法对应的梯形图究竟是长啥样的能帮忙写下吗

烽火御龙天
级别: 略有小成
精华主题: 0
发帖数量: 45 个
工控威望: 322 点
下载积分: 2657 分
在线时间: 32(小时)
注册时间: 2022-09-15
最后登录: 2024-11-14
查看烽火御龙天的 主题 / 回贴
17楼  发表于: 2024-08-13 09:45
图片:
引用
引用第11楼ayusecret于2024-08-09 18:24发表的  :

第一次被人说是新手,那我请教一下你,图中类型梯形图逻辑用ST如何体现,或者用你那强大的Codesys要如何写,能有如此底气的可能也就是CodeSys没类似问题而已,有的话估计也就不会这么说了
[attachment=302117]



刚刚测试了一下  可以这样子写呀
本帖最近评分记录:
  • 下载积分:+1(攻城狮老王)
    ayusecret
    级别: 略有小成
    精华主题: 0
    发帖数量: 182 个
    工控威望: 260 点
    下载积分: 804 分
    在线时间: 73(小时)
    注册时间: 2021-10-31
    最后登录: 2024-11-16
    查看ayusecret的 主题 / 回贴
    18楼  发表于: 2024-08-13 09:57
    引用
    引用第17楼烽火御龙天于2024-08-13 09:45发表的  :



    刚刚测试了一下  可以这样子写呀


    不行,有问题,你把IF M0 THEN改成IF SM412 THEN,就知道你的值一直在加,和梯形图的执行效果不一样
    攻城狮老王
    工控人一名,欢迎骚扰。
    级别: 略有小成
    精华主题: 0
    发帖数量: 218 个
    工控威望: 246 点
    下载积分: 1601 分
    在线时间: 63(小时)
    注册时间: 2022-03-22
    最后登录: 2024-11-12
    查看攻城狮老王的 主题 / 回贴
    19楼  发表于: 2024-08-13 17:06
    可以用个布尔数组

    引用
    引用第17楼烽火御龙天于2024-08-13 09:45发表的  :



    刚刚测试了一下  可以这样子写呀
    攻城狮老王
    工控人一名,欢迎骚扰。
    级别: 略有小成
    精华主题: 0
    发帖数量: 218 个
    工控威望: 246 点
    下载积分: 1601 分
    在线时间: 63(小时)
    注册时间: 2022-03-22
    最后登录: 2024-11-12
    查看攻城狮老王的 主题 / 回贴
    20楼  发表于: 2024-08-13 17:06
    我就喜欢 这样的贴子
    bnnyygy
    bnnyygy
    级别: 家园常客
    精华主题: 0
    发帖数量: 500 个
    工控威望: 608 点
    下载积分: 1802 分
    在线时间: 503(小时)
    注册时间: 2016-09-20
    最后登录: 2024-11-17
    查看bnnyygy的 主题 / 回贴
    21楼  发表于: 2024-08-14 15:45
    通用写法

    IF ib_IN  and vb_b=FALSE THEN

    上升沿执行语句;

    END_IF;

    vb_b:=ib_IN;


    以上就是取ib_IN的上升沿。

    下降沿类似,理论上支持ST的PLC都可以通用。
    本帖最近评分记录:
  • 下载积分:+5(apei2014) 真诚感谢!
    ayusecret
    级别: 略有小成
    精华主题: 0
    发帖数量: 182 个
    工控威望: 260 点
    下载积分: 804 分
    在线时间: 73(小时)
    注册时间: 2021-10-31
    最后登录: 2024-11-16
    查看ayusecret的 主题 / 回贴
    22楼  发表于: 2024-08-14 16:20
    引用
    引用第21楼bnnyygy于2024-08-14 15:45发表的  :
    通用写法

    IF ib_IN  and vb_b=FALSE THEN

    上升沿执行语句;
    .......

    很遗憾,还是有问题。可以自己验证下,D0还是会自增
    代码1:
    M0:=TRUE;
    ib_IN:=SM412;
    IF ib_IN  AND vb_b=FALSE THEN
        IF LDP(SM400,M0) THEN
            INC(SM400,D0);
        END_IF;
    END_IF;
    vb_b:=ib_IN;
    代码2:
    M0:=TRUE;
    ib_IN:=SM412;
    IF ib_IN  AND vb_b=FALSE THEN
        INC(LDP(SM400,M0),D0);
    END_IF;
    vb_b:=ib_IN;
    bnnyygy
    bnnyygy
    级别: 家园常客
    精华主题: 0
    发帖数量: 500 个
    工控威望: 608 点
    下载积分: 1802 分
    在线时间: 503(小时)
    注册时间: 2016-09-20
    最后登录: 2024-11-17
    查看bnnyygy的 主题 / 回贴
    23楼  发表于: 2024-08-14 22:24
    引用
    引用第22楼ayusecret于2024-08-14 16:20发表的  :

    很遗憾,还是有问题。可以自己验证下,D0还是会自增
    代码1:
    M0:=TRUE;
    ib_IN:=SM412;
    .......



    奥,不好意思,仔细看了一下,你是想在IF里面用 上升沿指令  LDP?



    考虑通用性,一般我都用我那个通用写法,不会用PLC自带的 上升沿指令之类的。

    只要支持ST,欧姆龙,西门子,汇川我用着目前好像没发现什么问题,三菱感觉ST比较羸弱,所以很少使用,一般都是小工程用用FX系。

    麻烦的程序逻辑还是建议用梯形图,ST还是偏向数据处理计算。
    • «
    • 1
    • 2
    • 3
    • »
    • Pages: 2/3     Go