ayusecret
级别: 略有小成
精华主题: 0
发帖数量: 181 个
工控威望: 259 点
下载积分: 802 分
在线时间: 72(小时)
注册时间: 2021-10-31
最后登录: 2024-11-12
查看ayusecret的 主题 / 回贴
楼主  发表于: 2024-08-01 08:46
引用手册


大家认为IF里面的上升沿指令条件常On,运行效果是不是你要的预期,欢迎测试讨论.
ayusecret
级别: 略有小成
精华主题: 0
发帖数量: 181 个
工控威望: 259 点
下载积分: 802 分
在线时间: 72(小时)
注册时间: 2021-10-31
最后登录: 2024-11-12
查看ayusecret的 主题 / 回贴
1楼  发表于: 2024-08-02 08:21


没人讨论,我来给出我的测试结果,D0,D1的不同结果让我对ST的上升沿和下降沿的使用保持谨慎,毕竟这已经是我第二次在ST边沿指令时发现的问题了,第一次引贴:http://www.ymmfa.com/read-gktid-1728792.html
ayusecret
级别: 略有小成
精华主题: 0
发帖数量: 181 个
工控威望: 259 点
下载积分: 802 分
在线时间: 72(小时)
注册时间: 2021-10-31
最后登录: 2024-11-12
查看ayusecret的 主题 / 回贴
2楼  发表于: 2024-08-09 18:24
引用
引用第9楼qq240559043于2024-08-09 14:21发表的  :
果然是新手

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

ayusecret
级别: 略有小成
精华主题: 0
发帖数量: 181 个
工控威望: 259 点
下载积分: 802 分
在线时间: 72(小时)
注册时间: 2021-10-31
最后登录: 2024-11-12
查看ayusecret的 主题 / 回贴
3楼  发表于: 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
ayusecret
级别: 略有小成
精华主题: 0
发帖数量: 181 个
工控威望: 259 点
下载积分: 802 分
在线时间: 72(小时)
注册时间: 2021-10-31
最后登录: 2024-11-12
查看ayusecret的 主题 / 回贴
4楼  发表于: 2024-08-12 17:16
引用
引用第15楼17625606414于2024-08-12 16:43发表的  :

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

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

ayusecret
级别: 略有小成
精华主题: 0
发帖数量: 181 个
工控威望: 259 点
下载积分: 802 分
在线时间: 72(小时)
注册时间: 2021-10-31
最后登录: 2024-11-12
查看ayusecret的 主题 / 回贴
5楼  发表于: 2024-08-13 09:57
引用
引用第17楼烽火御龙天于2024-08-13 09:45发表的  :



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


不行,有问题,你把IF M0 THEN改成IF SM412 THEN,就知道你的值一直在加,和梯形图的执行效果不一样
ayusecret
级别: 略有小成
精华主题: 0
发帖数量: 181 个
工控威望: 259 点
下载积分: 802 分
在线时间: 72(小时)
注册时间: 2021-10-31
最后登录: 2024-11-12
查看ayusecret的 主题 / 回贴
6楼  发表于: 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;