0111 【万泉河】plc编程给循环指令一个出口
我在很多年前,写过一篇文章:《plc编程中的循环语法使用》,这篇文章被多次到处转载, 最新的转载是2023年11月公众号“工控帮”的转载,微信搜一搜就能搜到。
https://mp.weixin.qq.com/s/38hseycwtvtc6zl9b3k4zw
我发表这样文章的本意,就是建议plc的初学者和刚入门的工程师,不要把过多精力放在研究循环上,也不要在程序中有意或者无意地使用过多的循环语句,以使程序变得难读和不容易调试。
比如在tia portal中,如果程序在线监控, 那么循环的这一段代码是无法实时看到数据运行值的。所以要诊断代码逻辑是否有错误,是否在按照预想的轨道运行, 还需要另外额外的工作。
这些额外工作都是非常麻烦,且影响运行效果。比如虽然现在portal 中可以调试使用断点,可以单步调试,但这个时候ob1循环也被迫中断了,程序的基本控制功能也都停止了。所以plc工程师通常是不做这种单步调试的。
然而我这样的宣扬并没有得到如期的效果。很多工程师仍然执迷不悟沉迷于程序中用循环方法解决问题。甚至很多简单问题的解决都要不惜耗费些弯路,做各种前处理后处理,只为了循环这一下的爽5秒。
包括我也推出过80系列的程序例子,演示了如何不使用循环的实现效果,还做了比较。见文章
https://mp.weixin.qq.com/s/a6a1hg6dmuaslrnxwbwmaq
但也仍然没用。很多同行可能摸到编程的机会太少, 太多的绘图,选型,设计,甚至接线工作耗费了他们太多的体力,导致对编程机会异常珍惜,对少有的能大展技能的机会不愿意放过。所以还是普遍表现出对循环语法的热爱。
所以,我总结了一下在高级语言编程中需要用到循环的情形,请工控工程师们可以同比对照参考。
在高级语言中,编程需要用到循环的场景通常有2种。
其中第一种是数据量异常巨大,比如要从数据库中抓取4万条数据进行统计处理。那么显然,写4万句指令是不可理喻的。必须对数据的输入输出做出严谨的分析,找到数据的共同特征点和变化量,用循环语句来搞定。
甚至,如果索引数据复杂多样到连共同的特征值都找不到,就是一堆乱麻数据, 那也宁愿先把这些索引数据保存为文件或者数据库,然后通过数据库方法查询得到,然后再进行统计计算。总之,无论如何打破头我也要使用循环实现。
而第二种是在编程的时候逻辑处理的步数不确定。比如配方数量是在运行中才人工输入的。就只能用循环了。还有是挑选特定值,比如运行数组中挑选匹配值的算法,当条件匹配后,就可以跳出循环了,逻辑的处理步数也同样是在编程时不晓得的。那么这些都需要用到循环。
而除此之外,即便是在高级语言的编程中,都很少再有用到循环语法的情况了。
更可想而知,对于plc系统这样的环境, 能有多少需要循环才能搞定的算法了。
然而我在群交流时提出这样的比较指标之后, 还有人表示不服,不能理解。反问我,如果20套同样的设备,也不要做循环,也罗列调用执行吗?(言外之意,不用循环用罗列的方法是不是太愚蠢了)
答案是当然咯!我80例子中,80个工位都罗列出来的,区区20更何足挂齿呢!
看起来这不用循环把一大票人憋得那是相当难受啊!
这样吧,我来给个出路。
眼光放高一点, 你的工作任务不是一台设备,而是一系列参数不同的设备。你需要做的不仅仅是这台设备的plc程序,而是要做一台能生成一系列不同参数设备的plc程序的电脑端的程序。
即, 你需要的是plc程序+生成plc程序的电脑上的程序,我们不妨叫它plc++程序。而且最好的目标是,这套电脑上的程序的使用者也不是你自己,而是你简单培训后输出的对象,比如设备车间的工人。
公司接到订单以后,根据合同设备配置不同,参数数值也当然不同。那么车间工人除了组装盘柜之外, 还把这些数值输入到你给他的电脑程序的界面,输入完成后,按下“生成plc程序”按钮,则程序自动生成, 生成后再打开编程软件下载到plc,或者更自动点,你的程序都可以驱动指挥tia portal自动将生成的plc程序下载到plc中,hmi画面程序下载到触摸屏中。
这样, 在你和工人都不需要见到程序代码的情况下,程序就已经成功下载到设备中,设备就已经有了灵魂,就已经具备开机运行的条件了。
所以,如果你有天高的技能这回就有了施展的平台了。在这套生成程序的plc++程序里, 你随便怎么折腾都可以,绝对不会有人指责你程序写的好坏。当然我猜, 循环一定是少不了的。因为比如上一个系统80个模拟量+20个伺服包含了自动逻辑, 而下一个系统要你做出79个模拟量+15台伺服的自动控制,这套plc++程序一定相当复杂,没有循环语法是万万达不到的。
当然,也仍然符合我对使用循环语法的场景的论断:循环次数不确定。
那些循环语法的信徒们终于有了释放的出口了。
然后, 你们自然也会比较得出怎么编写plc程序更方便生成plc++程序了。
在苹果A14处理器推动下,台积电10月营收或创新高
工业互联网给传统汽车插上网联和智能的“两翼”
分享一下真正的汽车干货
PCI Express体系结构导读笔记之桥和中断的基础知识
如何搞定开关电源PCB布线设计
PLC编程给循环指令一个出口
美光 高通等七家美企复供华为
电化教育电子音像出版社与中软国际教育签订战略合作协议并预发布开源鸿蒙教育发行版SmartEOS
小米6还没出世就遭到吐槽:荣耀都干不过,还敢让华为颤抖?
透明样本的成像工具-相差(相衬)显微镜
出门问问发布新款智能手表 Apple Watch 5细节曝光
比特币简洁的设计具备怎样的优势
中国以外的全球低增长率为全球光伏市场提供了一幅不同的情景
基于麦克风技术的通信产品设计
Wi-Fi CERTIFIED 6 R2是什么 有哪些特点
创新推出新款外置声卡 支持新一代SuperX-Fi耳机音效
什么是变频器,变频器的基础知识
新能源汽车在市场的普及度越来越高
华为畅享7 Plus千元标杆 直击年轻人的痛点需求
今年CES VR领域布局,华硕都做了哪些工作?