这就是梯形图反直觉的地方
plc吧
全部回复
仅看楼主
level 1
一样的功能,梯形图和ST表示
就是标志位满足,让整数变为2,否则是0.梯形图得先赋值0,然后满足标志位赋值2
而ST直接判断就行了,满足条件置2,否则置0
2025年04月23日 15点04分 1
level 10
这有什么反直觉,你看到都只是表象,
1,st你不是也写了两次赋值吗?
执行不也是适配吗?只是看起来做选择而不是依次适配,
实际上是一样的,
2,PLC无论是什么语言编程都是等效的梯形图,只是形式不同,在其内部都是一样,
编译器编译完成东西也是一样的,
哪怕是C、C#这些东西编译后,编译器都是做一个等效的代码,
并不按你的逻辑去思考的,它会梳理逻辑,按等效去编译,
3,在梯形图你完全可以使用FC,看起来就会和IF一样,
IF是系统已经设定好的“语法结构”,编译器会识别它,
它就是系统功能,已经设定好了,内部和梯形图逻辑就是一样的,
所以要说反直觉的应该是st,它的表现形式让你误以为计算机是做选择,
实际上计算机的逻辑是梯形图这样一步步适配的,
2025年04月23日 17点04分 4
要讲那么深的话,据说不管什么语言编程,最后都要转化成只有0和1组合的机器语言才能被识别。
2025年04月23日 17点04分
@马口P保护协会 是这样的,编译器都是等效逻辑的,当你反编译后得到的东西与你设计东西是完全不同的,什么语言都是这样的,但问题出在你的举例偏颇,不是计算机或梯形图有什么怪异之处,是你搞反了层级,
2025年04月23日 17点04分
level 10
我们可以再次举例,因为你使用的例子是布尔量,
如果改成一个寄存器里面存储0~9,不同数值输出10个不同的字符串,
那么TF语句中就需要使用更多的ELSE才行,
这时会更直观的看出是依次适配的,并不是作选择,
这时是不是和梯形图是不是非常像,
这时如果使用具有此种功能的函数,
你只需输入寄存器地址和文本信息,
又会觉得计算机是在作选择的错觉,
其只是功能封装了看起来像是而已,
2025年04月23日 17点04分 7
当然计算机真的要检索一个东西其算法会有无数种,但也是一个一个适配,只是执行的位置不同,进行快速的筛选,
2025年04月23日 17点04分
level 10
是你举例太偏颇,实际上梯形图更接近计算机运行逻辑,
TF是语法结构,是底层专门支持的,因此才是反直觉的,
这是AI的总结,
### **核心结论**
1. **「选择」是假象**:无论是 `IF-THEN-ELSE` 还是查表法,本质都是 **通过地址映射值**,计算机并无「决策」能力。
2. **梯形图的哲学**:工业控制中,梯形图的「并行」逻辑是对硬件扫描过程的抽象,与查表法异曲同工。
3. **工程优化方向**:
- **高频调用** → 用查表法(O(1))。
- **可维护性** → 封装映射关系(如字典/类)。
- **硬件控制** → 直接使用梯形图或寄存器操作。
这种设计模式体现了 **计算机科学的本质之一:通过抽象隐藏复杂性,让机器行为看起来更「智能」**。
2025年04月23日 17点04分 8
最后一句话是本质,你不能用一个已经底层封装的功能与比较简单的逻辑图作对比,它们不是一层的,
2025年04月23日 17点04分
看一下下面的例子,新手用梯形图会出现双线圈错误,但是用选择就没问题了。梯形图里,不等于1的时候,那一行不是真的不执行,而是会把线圈置零。而case的话,不等于1,那一段是真的不执行
2025年04月23日 17点04分
level 1
还有一个例子,梯形图就是新手会犯的错误,双线圈了
而st语言的case或者if判断没有问题
2025年04月23日 17点04分 9
LD中用SET和RST一样的可以避开双线圈, 1-单纯的逻辑,同样的程序,用LD和ST,LD的扫描周期会更短, 2-实际程序中,肯定有大量的数据运算和操作,所以目前自动化行业,主流语言就是LD与ST混编,LD写流程,ST处理数据。其他语言少之又少,
2025年04月23日 19点04分
@彬在俊😈 还有SCL,感觉和ST就是叫法不一样,差不多的东西。ST全程结构化文本,SCL全程结构化控制语言。就像西红柿和番茄一样
2025年04月23日 20点04分
我认为,双线圈这个说法,就是不理解扫描机制的人魔幻化出来的词语。建议问问ai,了解一下扫描赋值原理和输出原理
2025年04月24日 02点04分
@马口P保护协会 我认为你这个写法并不等效,故意歪曲了梯形图的用法,我还是那句话,计算机不存在选择意思,是你觉得而已,你使用”语法结构”,它底层已经做好的功能,不是的逻辑,你似计算机在作选择,其实是功能做成这样让你觉得“智能”,实际上梯形图大写法更接近现实逻辑,
2025年04月24日 02点04分
level 10
其实我们这么想,
古代科学家为了计算天文数据发明了对数和对数表,
在查表时实际上人也是一个一个对比才行,除非你是天才可以记住所有对数值,这像我们看到的梯形图,
而使用辅助方法快速查表就像计算机里运用不同的检索算法,
而我们看到的只是封装好的功能,看起来很智能,
2025年04月23日 17点04分 10
level 9
只能说各有所长,另外你这个梯形图翻译成scl不是这样写吧。你这个是n1=0;if b1=1, n1=2。这个更新是按扫描顺序刷新的最后n1=2。如果用线圈,也是按当次扫描周期最后一次的线圈状态来决定的。
2025年04月23日 22点04分 11
@咩啧 而且对于处理器来说,梯形图,scl,st最终都会被编译成指令表IL语言。给楼主建议是尽早对语言去魅
2025年04月23日 23点04分
level 10
B1不成立时,常闭导通,0赋值给N1
B1成立时,常开导通,2赋值给N1
和ST思路是一样的。
这个思路和ST不也一样吗。
个人观点,仅供参考。
2025年04月24日 00点04分 12
本身就是歪曲梯形图的用法,实际并不等效的图,
2025年04月24日 02点04分
看我下面发的PLC的st内部实际梯形图
2025年04月24日 03点04分
第一张是我简化了,要是把b1换成更复杂的串并联还有等于判断的话呢,第一行取反都不好加,其实不需要加取反条件,梯形图这样写,就是不管如何先赋值0,满足条件会变成2输出,不满足就保持0
2025年04月24日 04点04分
@马口P保护协会 所以你是知道能用一样的思路去编,也知道正确的写法,然后非要制造点不同,制造点错误,来说事儿是吧
2025年04月24日 04点04分
level 1
没看懂,你这两个程序根本不等效啊,上面那个缺了一个取反的b0,或者下面的scl等效过来是先等于,然后再单if没有else,你拿两个根本不等效的程序说什么呢。。。。
2025年04月24日 01点04分 13
没做错,不需要取反看下面的图,前面是简化版。梯形图逻辑就是先置0,满足其他条件置别的数,前面的置0被覆盖了,不满足,那置零保持到扫描结束,就输出0.而ST就是正常逻辑,满足条件给别的数,否则置0
2025年04月24日 14点04分
@马口P保护协会 这怎么能一样?else不就是b0的取反?也就是下面的那个程序,和上面那个是不一样的逻辑。。。
2025年04月24日 14点04分
@马口P保护协会 不是,看一下我后面新发的图片
2025年04月24日 14点04分
@马口P保护协会 多学学吧,你以为你说的那个等效,其实根本不等效。。。双线圈本质是两个if else 第二个把第一个覆盖了,所以梯形图等效的st一样会有这个问题,你要是想说st写法更简单,那确实是,但是你要是想说一样的程序,梯形图和st处理结果不一样,那我只想问你,你确定是一样的程序吗?
2025年04月24日 15点04分
level 1
所以压根就不是一样的功能。。。。何况说穿了梯形图和st scl都是低级语言,简单研究一下是可以的,你要往里雕花就真的浪费时间了。。。
2025年04月24日 02点04分 14
level 10
看一下,这是三菱显示的st实际梯形图,
看似st不用双线圈,实际上是用了跳转,
是可以多次给线圈操作的,
本质上CASE更加类似于附带参数的条件转移,
看起来更智能,实际上梯形图才是真实的样子,
st 仿佛更直观,其实是人类故意封装出来的,
表面逻辑并不是实际运行逻辑,方便理解而已,
因此梯形图不反直觉,恰恰是真实逻辑,
z
2025年04月24日 03点04分 15
为什么人类要发明梯形图,因为梯形图更能直观反映逻辑,你举的例子简单, 如果多层嵌套做不同类型、长短不一判断时文本语言会特别的复杂,调试起来也特别的复杂,而梯形图反而投机取巧,比如上面那个人使用并联,逻辑简单还功能等效,梯形图的灵活性让PLC执行起来效率更好,也更好调试,
2025年04月24日 03点04分
文本语言看似简单,其实它封装好的功能内部使用的逻辑更复杂,就是自己做的FC也是一样的,外观看起来只用输入参数,实际上内部很复杂,比直接程序更繁琐,但是其好处是可以多次套用,同样可以节约开发成本,不是梯形图有问题,是有点东西已经封装了
2025年04月24日 04点04分
level 1
就这个,梯形图要先永远置零,随后满足条件给其他数字,和正常的编程逻辑思维不一样
正常的思维应该就是ST那样,满足条件给别的数字,否则置0
2025年04月24日 14点04分 16
很你说了多少次?st是封装好的结构语句,相当于梯形图里面的功能指令,你拿现成的功能比有什么意思呢?梯形图才是原始的逻辑,梯形图也可以功能指令和FC,如果使用功能指令不是就看起来一样?你这种对比有什么意思呢?
2025年04月24日 14点04分
你在st里面使用“结构语句”,到了梯形图非使用最简单的逻辑连接,这种对比在一个层面吗?那以后梯形图里面你永远不要用功能指令和FB了,全部用继电器,
2025年04月24日 15点04分
@18964379 就这个,加常闭触点再移下面试试,太费脑了。之前是被简化了,b要看成一堆复杂逻辑
2025年04月25日 00点04分
level 1
n2:=sel(b2,0,2);甚至可以这样简单
2025年04月25日 12点04分 17
1