0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

PLC编程给循环指令一个出口

opkgjew 来源:万泉河 2024-01-11 15:34 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

0111 【万泉河】PLC编程给循环指令一个出口

我在很多年前,写过一篇文章:《PLC编程中的循环语法使用》,这篇文章被多次到处转载, 最新的转载是2023年11月公众号“工控帮”的转载,微信搜一搜就能搜到。

https://mp.weixin.qq.com/s/38HseYCWtVTC6zL9b3k4Zw

我发表这样文章的本意,就是建议PLC的初学者和刚入门的工程师,不要把过多精力放在研究循环上,也不要在程序中有意或者无意地使用过多的循环语句,以使程序变得难读和不容易调试。

比如在TIA PORTAL中,如果程序在线监控, 那么循环的这一段代码是无法实时看到数据运行值的。所以要诊断代码逻辑是否有错误,是否在按照预想的轨道运行, 还需要另外额外的工作。

这些额外工作都是非常麻烦,且影响运行效果。比如虽然现在PORTAL 中可以调试使用断点,可以单步调试,但这个时候OB1循环也被迫中断了,程序的基本控制功能也都停止了。所以PLC工程师通常是不做这种单步调试的。

然而我这样的宣扬并没有得到如期的效果。很多工程师仍然执迷不悟沉迷于程序中用循环方法解决问题。甚至很多简单问题的解决都要不惜耗费些弯路,做各种前处理后处理,只为了循环这一下的爽5秒。

包括我也推出过80系列的程序例子,演示了如何不使用循环的实现效果,还做了比较。见文章 <0822 【万泉河】解读一个用循环法PK万泉河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++程序了。

审核编辑:黄飞

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • plc
    plc
    +关注

    关注

    5055

    文章

    14966

    浏览量

    489647
  • 模拟量
    +关注

    关注

    5

    文章

    567

    浏览量

    27947
  • Portal
    +关注

    关注

    1

    文章

    30

    浏览量

    10787

原文标题:0111 【万泉河】PLC编程给循环指令一个出口

文章出处:【微信号:PLC标准化编程,微信公众号:PLC标准化编程】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    LTC6804中每发送一个字节,就是发送NACK指令而不是ACK指令

    Category: Software Product Number: LTC6804-1 在LTC6804中文数据中,使用IIC主控器中,NACK表示主控器否定确认,为什么在编程实例中,每发送一个字节,就是发送
    发表于 05-22 06:01

    PROFINET转RS232:扫码枪配“翻译官”,PLC终于听懂了

    PROFINET转RS232:扫码枪配“翻译官”,PLC终于听懂了 在汽车制造车间,每一个零部件都应有自己的“身份证”。从螺丝到发动机,扫码枪的每
    的头像 发表于 04-28 14:56 155次阅读
    PROFINET转RS232:<b class='flag-5'>给</b>扫码枪配<b class='flag-5'>个</b>“翻译官”,<b class='flag-5'>PLC</b>终于听懂了

    【快速温变循环】快速温变循环试验箱的“循环”之道:宏展科技如何定义“循环

    在军工、航天、汽车电子等高端制造领域,快速温变循环试验是验证产品可靠性的核心手段。然而,“循环”到底如何定义?是简单的升降温,还是对速率、驻留时间、温变曲线精度、
    的头像 发表于 04-16 09:38 441次阅读
    【快速温变<b class='flag-5'>循环</b>】快速温变<b class='flag-5'>循环</b>试验箱的“<b class='flag-5'>循环</b>”之道:宏展科技如何定义“<b class='flag-5'>一</b><b class='flag-5'>个</b><b class='flag-5'>循环</b>”

    TIA Portal中的WAIT指令如何影响PLC扫描周期

    PLC 编程中,我们常常强调扫描周期的重要性,但很多时候它像“黑盒子”——我们知道它存在,却很少能直观地感受到它的影响。
    的头像 发表于 04-02 09:54 246次阅读
    TIA Portal中的WAIT<b class='flag-5'>指令</b>如何影响<b class='flag-5'>PLC</b>扫描周期

    路由器出口欧盟要做CE认证吗

    答案是肯定的。只要你的路由器具备Wi-Fi、蓝牙等无线发射功能,出口欧盟就必须办理CE认证,具体适用的是RED指令
    的头像 发表于 03-25 17:40 584次阅读
    路由器<b class='flag-5'>出口</b>欧盟要做CE认证吗

    线性化编程与结构化编程的不同点

    线性化编程是将整个用户程序连续放置在循环程序块(OB1)中,按顺序执行的编程范式。这种结构与PLC
    的头像 发表于 03-16 16:58 665次阅读
    线性化<b class='flag-5'>编程</b>与结构化<b class='flag-5'>编程</b>的不同点

    高低温试验箱试验功能全解析:恒温 / 循环 / 可编程怎么选?

    广东宏展科技提供高精度高低温试验箱,覆盖电子、汽车等行业,具备恒温、高低温循环及可编程功能,满足多场景测试需求。
    的头像 发表于 02-04 08:59 4189次阅读
    高低温试验箱试验功能全解析:恒温 / <b class='flag-5'>循环</b> / 可<b class='flag-5'>编程</b>怎么选?

    三菱PLC特殊辅助继电器指令功能用法教程

    ‌三菱PLC的M8000指令大全‌包括了系列特殊功能寄存器,这些寄存器在PLC的运行中起着重要的作用。
    的头像 发表于 01-23 16:22 2223次阅读
    三菱<b class='flag-5'>PLC</b>特殊辅助继电器<b class='flag-5'>指令</b>功能用法教程

    使用博图(TIA Portal)监控PROFINET从站通讯状态的两方法

    。在数据块中定义array of bool类型的变量(如state),长度根据从站数量确定(通常为1024位)。 调用DeviceStates指令 在OB1或其他循环组织块中,调用
    的头像 发表于 01-17 11:21 1683次阅读
    使用博图(TIA Portal)监控PROFINET从站通讯状态的两<b class='flag-5'>个</b>方法

    labview初学,请教循环嵌套的使用

    实现功能:while循环用于读取200smart plc点位变化,通过这个点位变化,往
    发表于 10-23 17:48

    编程逻辑控制器PLC是什么?如何实现上网通信?

    编程逻辑控制器(PLC)是种专为工业环境设计的数字运算操作电子系统,其核心是通过可编程存储器存储逻辑运算、顺序控制、定时、计数和算术运算等指令
    的头像 发表于 09-22 17:27 1325次阅读

    人工智能行业如何使用for循环语句进行循环

    人工智能行业可以使用以下是关于for循环在不同编程语言中的基本用法说明: Python中的for循环: 主要用于遍历序列(列表、元组、字符串等) 典型结构:for item in sequence
    的头像 发表于 09-10 12:55 765次阅读

    编程软件连接PLC出现IP冲突时如何解决?

    般来说,每个PLC都有自己的IP地址,用以和其他设备进行通信。而如果同网络出现相同IP的设备,就会导致IP冲突、数据丢包或ping不通等问题。而如果IP地址没有冲突,不在
    的头像 发表于 07-31 17:08 1325次阅读
    <b class='flag-5'>编程</b>软件连接<b class='flag-5'>PLC</b>出现IP冲突时如何解决?

    打印机出口要做哪些认证

    打印机出口要做哪些认证?——按出口地区全面解析(含欧盟、美国、东南亚)、欧盟市场(如德国、法国)CE认证(强制)适用指令:LVD指令:电气
    的头像 发表于 07-25 17:43 1620次阅读
    打印机<b class='flag-5'>出口</b>要做哪些认证

    投影仪RED认证——出口欧洲市场必备

    投影仪出口欧洲市场,必须办理CE认证,其中核心部分之就是RED认证(Radio Equipment Directive,无线电设备指令)。如果投影仪带有无线功能(如Wi-Fi、蓝牙、无线投屏),就属于RED
    的头像 发表于 07-14 17:04 1410次阅读
    投影仪RED认证——<b class='flag-5'>出口</b>欧洲市场必备