如何提高PLC编程能力 点击:43257 | 回复:507



AncientSword

    
  • 精华:6帖
  • 求助:5帖
  • 帖子:162帖 | 802回
  • 年度积分:367
  • 历史总积分:12484
  • 注册:2006年10月16日
发表于:2017-09-24 22:33:13
楼主

在工控行业混迹了十多年,一直做与PLC相关的项目,就把自己的一些经验做个总结,由于水平有限,有不足之处还望各位多多指教。

我刚接触PLC的时候是拿着一本廖常初老师的关于S7-200的教材入的门,廖老师的书里讲的步进编程的思想对我之后的PLC编程影响很大,这个思想的好处就是一步一步的执行,当进入下一步的时候同时退出上一步,在程序中只有一个活动步,使程序逻辑很清晰,缩小了问题出现的范围,而且在编程之前先画出顺序功能图,如果顺序功能图画的完整,按照功能图做出的程序基本上就没啥问题了。不论大小项目最好画个顺序流程图出来,养成好的习惯能达到事半功倍的效果。以下曾经做过的一个顺序流程图。

    这个顺序功能图虽然花了不少时间,当时工期紧半自动都没试,直接投的自动,管道内可是焦炉煤气,同一根管道又进煤气又进空气,不停的切换,真是捏了一把汗,还好程序基本没啥问题。

    做程序还要进行规划,将程序分成不同的控制单元,尽量减少单元之间的联系,举个简单的例子,项目中要用到罗茨风机,风机口有气动阀门,要求开风机的时候先开阀门,再起动风机,停止的时候要先停止风机后关闭阀门,我们可以将风机和阀门看做一个整体,将风机的起动和停止作为一个单元,别的程序段只负责起动和停止风机,不管风机起动和停止风机单元内部的逻辑关系。

    作为一个合格的编程人员,程序和变量注释一定要写清楚,这是对编程人员最基本的要求,如果你还还在用绝对地址编程,那么需要想想自己是不是该换个工作了。

    另外就是做程序不要怕复杂,不要觉得难就不做了,我们做自控的也算个技术活,用户很容易被忽悠,这是我搞工控这些年经常看到的事,用户提出了要求,只要在合理范围之内我们要尽量去满足,当你完成一次次的挑战之后,你会发现曾经的鸿沟不过是个小水渠,做程序就要自己给自己找困难,流行的一句话就是没有困难创造困难也要向前冲。

对以上我总结五点:

1、编程要有正确的方法,也可称为编程的指导方法。

2、养成画逻辑图的好习惯,画图的过程就是程序构思的过程。

3、规划程序结构,将程序规划成不同功能的小单元,减少不同单元之间的联系。

4、养成建立变量名、增加变量和程序段注释的习惯,一是为自己编程方便,二是为别人读你的程序时方便。

5、不断的挑战自己的极限在能够最大的进步,用户的苛刻要求总是成为你不断进步的推力。

今天就说这几条吧,这说不上是技巧,只是一个指导思想。如果有时间在讲解一下PLC编程的技巧。

1分不嫌少!


楼主最近还看过



流年拾荒

  • 精华:0帖
  • 求助:2帖
  • 帖子:4帖 | 54回
  • 年度积分:58
  • 历史总积分:2418
  • 注册:2017年3月08日
发表于:2017-10-11 09:15:08
61楼

刚毕业就找了一家非标的小公司,虽然累,公司小但是可以自己动手实践,独立做了不少小项目但都是绝对地址,现在在学习通讯。看了楼主的帖子,受益匪浅,试着学习变量。

鲜花属于牛粪

  • 精华:6帖
  • 求助:5帖
  • 帖子:162帖 | 802回
  • 年度积分:367
  • 历史总积分:12484
  • 注册:2006年10月16日
发表于:2017-10-11 12:28:42
62楼

如果有使用组态软件的朋友可以看看这个帖子,


http://bbs.gongkong.com/d/201710/730870_1.shtml

鲜花属于牛粪

  • 精华:6帖
  • 求助:5帖
  • 帖子:162帖 | 802回
  • 年度积分:367
  • 历史总积分:12484
  • 注册:2006年10月16日
发表于:2017-10-11 12:40:08
63楼

学习PLC还是选择资料比较全的作为起步,比如西门子、三菱这类的网络资源比较多,技术支持也给力,电话热线是免费的,网址资源也是免费的,像AB的资源就少的多了,不单热线电话要交年费,网络知识库不是付费会员也看不了,只能搜到答案,就是不给你看内容。AB的PLC在使用中遇到问题要么掏腰包付费,要么寻求供应商,如果供应商不给力,公司又不愿意掏这钱,那就很麻烦。我用西门子的PLC时间比较常一些,遇到绝大部分问题都可以通过网上搜索答案和免费热线解决。

A🐜 蚂蚁 🏁

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 5回
  • 年度积分:0
  • 历史总积分:55
  • 注册:2017年9月14日
发表于:2017-10-11 14:00:23
64楼

万分感谢  感谢分享

木子0225

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 37回
  • 年度积分:0
  • 历史总积分:16
  • 注册:2006年3月09日
发表于:2017-10-11 15:45:46
65楼

做工控、编程就是要比别人耐得住寂寞,承受得住压力,敢于挑战和创新,常说100个人编程执行一个功能那就会有100种方法,但肯定有一种最好的方法,要做的不仅是实现功能,还要找出最好的方法,以上浅见,各位见笑了!

鲜花属于牛粪

  • 精华:6帖
  • 求助:5帖
  • 帖子:162帖 | 802回
  • 年度积分:367
  • 历史总积分:12484
  • 注册:2006年10月16日
发表于:2017-10-11 18:25:51
66楼

带有手动和自动的程序块,在自动转到手动的时候,要求设备处于停止状态,最好做一个复位操作,使自动转换到手动的时候处于停机状态,

以上是一个阀门的例子,带有手动和自动功能,如果阀门在自动程序中是打开的状态,在自动转为手动的时候,如果没有一个周期断开的程序,转到手动时就会自动保持,使阀门保持原来的打开的状态。当然如果想让阀门保持自动程序的状态,去掉接通一次的功能就行。


鲜花属于牛粪

  • 精华:6帖
  • 求助:5帖
  • 帖子:162帖 | 802回
  • 年度积分:367
  • 历史总积分:12484
  • 注册:2006年10月16日
发表于:2017-10-11 18:38:53
67楼

悬赏200分的一个问题,如何读取CPU IP地址的求助终于有论坛的朋友给出了答案,AB的资料真的不好找,在KnowedgeBase库中搜到相关的问题,就是不能看答案,郁闷,还好咱们工控网友能人无数。

根据CPU的IP地址做了一段选择程序,将不同的参数分配给了不同的CPU,这也样10台PLC就用了一个程序,如果程序需要修改也只要修改一个程序就行了。

其实很简单,首先读取CPU的IP地址,用最后一个字节作为区别不同CUP,不同的CPU执行不同的程序段,如果有相同类设备,只有很少部分程序不一样的情况可以试着这样做一些。

丶丶繁华丶丶

  • 精华:0帖
  • 求助:3帖
  • 帖子:3帖 | 111回
  • 年度积分:93
  • 历史总积分:778
  • 注册:2015年11月27日
发表于:2017-10-11 20:15:22
68楼

楼主体会很深呀 ,赞同楼主的观点!!

阿甘

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 20回
  • 年度积分:0
  • 历史总积分:99
  • 注册:2017年10月11日
发表于:2017-10-11 23:25:00
69楼

顺序流程图很重要,能让很多问题变的简单

鲜花属于牛粪

  • 精华:6帖
  • 求助:5帖
  • 帖子:162帖 | 802回
  • 年度积分:367
  • 历史总积分:12484
  • 注册:2006年10月16日
发表于:2017-10-12 21:27:50
70楼

做程序的时候最好规划一下,如果程序有几个不相关的程序组成,那么最好将他们分开,不要放在一个程序中,拿AB的PLC来说,AB的PLC程序分为Task、Program、Routine,AOI文件,Tasks任务组分为周期性任务、事件中断和连续执行任务,周期性任务主要用于对执行时间有要求的周期执行的任务,如PID就常放在周期任务中,周期任务在西门子PLC中叫时间中断,顾名思义其执行不是按照整个程序的扫描周期执行,而是按照一定的时间执行,如每间隔100ms执行一次。由于PLC的执行周期受循环程序,跳转程序,主控指令等的影响,每个周期执行的时间不会相同,所以对执行时间比较苛刻的场合还是用周期性任务比较合适。时间中断常常用于对某个事件作出立即响应,执行完成后再去执行PLC连续任务,这类任务编程人员用的不是太多,但是也是程序不可忽略的一部分。连续任务讲的就是连续执行的任务,从主程序开始连续扫描,完成一个扫描周期后再进入下一个扫描周期。大多数的程序都会在这个任务中执行。

在任务下可以建立Program,Program字面的意思就是程序了,每一个Program有自己的符号表,也可以叫局部变量表,局部变量只能在Program中使用,不能被触摸屏、上位机以及其他通信伙伴调用。Program下有多个Routine,每个Program中必须有一个主的Routine,其它Routine通过主Routine进行调用。

这样一级一级下来程序结构就比较明朗了,查问题也好查了。

以上图片中就是我将的一个程序的结构,结构化设计的程序条理比较清晰,如果是多个人做程序,这一每个人分一部分,最后倒入到一个程序中。

我这里只是那AB的PLC举个例子,每家PLC规划的结构和名称不相同。

觉得上面讲的有点复杂了,简单点说就是首先要将程序分为:时间中断执行部分、事件中断执行部分、连续执行部分,然后根据程序的关联性将程序分成不同的单元,使程序结构清晰。

每个回复不能太长,搞不好就被系统给删除了,所以还是一段一段的来吧。

鲜花属于牛粪

  • 精华:6帖
  • 求助:5帖
  • 帖子:162帖 | 802回
  • 年度积分:367
  • 历史总积分:12484
  • 注册:2006年10月16日
发表于:2017-10-12 21:43:02
71楼

将程序层次划分完成后,完成最基本的规划,开始规划每个单元的程序,首先要将一些常用程序建立起来:

1、主程序

程序执行的起点。

2、公共程序

不属于任何部分或与多个子程序先关的部分。

3、初始化程序。

最好在PLC起动的时候做一个初始化,防止不必要的错误出现。

4、报警程序。

程序的报警部分放在这个里面。

5、设备的控制部分。

我常常采用的方法是将每个设备做成一个块,每个块分为手动和自动部分。这样在手动状态下可以对每个设备进行单独操作,在自动程序下,只需要从自动程序段中获取连接变量的值就行了。如下图所示

6、自动控制部分。

自动程序的逻辑部分都放在这个程序中,最终逻辑的执行结果去控制设备控制部分的程序。

7、通讯部分。

通讯的读写、诊断部分放在这里。

8、其它专用的程序部分。

以上是我做程序的一些习惯,仅供参考。


鲜花属于牛粪

  • 精华:6帖
  • 求助:5帖
  • 帖子:162帖 | 802回
  • 年度积分:367
  • 历史总积分:12484
  • 注册:2006年10月16日
发表于:2017-10-12 21:55:58
72楼

做程序要熟悉工艺,首先确定起点或是设备的初始状态,程序执行完后要回到初始状态,也就是熟悉流程图的起始步,程序在执行中的暂停和急停部分也是不可忽略的部分,要全局考虑。以外停机可能造成意想不到的错误,所以在PLC上电后初始化程序很重要,大部分设备在停电后都要回到初始位置,所以初始化常常是让设备回到初始位置。

qqapple123

  • 精华:0帖
  • 求助:1帖
  • 帖子:2帖 | 32回
  • 年度积分:0
  • 历史总积分:302
  • 注册:2013年3月02日
发表于:2017-10-14 20:21:07
73楼

绝对是大神级。。膜拜了

pdengong

  • [版主]
  • 精华:20帖
  • 求助:71帖
  • 帖子:1936帖 | 3670回
  • 年度积分:936
  • 历史总积分:54944
  • 注册:2011年4月11日
发表于:2017-10-14 20:34:55
74楼

楼主可以加个好友指点我怎么学习PLC

北冥游鱼

  • 精华:0帖
  • 求助:0帖
  • 帖子:2帖 | 14回
  • 年度积分:0
  • 历史总积分:58
  • 注册:2014年6月23日
发表于:2017-10-15 08:41:58
75楼

顺控指令确实挺方便的,一步一步根据条件执行,也许是见识没有那么多,我所见到的程序没有多少用顺控写的

AncientSword

  • 精华:6帖
  • 求助:5帖
  • 帖子:162帖 | 802回
  • 年度积分:367
  • 历史总积分:12484
  • 注册:2006年10月16日
发表于:2017-10-15 08:49:05
76楼

做什么事都要持之以恒,做的多了就熟练了,编程如此,其他事亦如此。走万里路,读万卷书,实践,读书,实践,读书…………,如此反复而已。

将卖油翁的故事赠给大家:

陈康肃公尧咨善射,当世无双 ,公亦以此自矜。尝射于家圃,有卖油翁释担而立,睨之,久而不去。见其发矢十中八九,但微颔之。
康肃问曰:”汝亦知射乎?吾射不亦精乎?”翁曰:”无他, 但手熟尔。”康肃忿然曰:”尔安敢轻吾射!”翁曰:”以我酌油知之。”乃取一葫芦置于地,以钱覆其口,徐以杓酌油沥之,自钱孔入,而钱不湿。因曰:”我亦无他,唯手熟尔。”康肃笑而遣之。
此与庄生所谓解牛斫轮者何异?

小湫

  • 精华:0帖
  • 求助:0帖
  • 帖子:2帖 | 30回
  • 年度积分:0
  • 历史总积分:100
  • 注册:2017年10月15日
发表于:2017-10-16 19:48:22
77楼

很有道理,我现在卡在应用指令出不来了

wyd0106008

  • 精华:0帖
  • 求助:2帖
  • 帖子:4帖 | 174回
  • 年度积分:0
  • 历史总积分:790
  • 注册:2009年8月01日
发表于:2017-10-17 21:17:43
78楼

楼主体会很深呀 ,赞同楼主的观点!!!

antai186

  • 精华:0帖
  • 求助:0帖
  • 帖子:1帖 | 4回
  • 年度积分:0
  • 历史总积分:62
  • 注册:2017年9月22日
发表于:2017-10-18 13:58:52
79楼

看着多的书也是几页我才能看但是还是实际的好

纯晴柳丁

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 184回
  • 年度积分:0
  • 历史总积分:106
  • 注册:2016年3月13日
发表于:2017-10-18 21:50:11
80楼

学习了                         


热门招聘
相关主题

官方公众号

智造工程师