小弟一月份接到一个设备改造任务,由我负责PLC编程。我原是学计算机的,因为此前成功改进了一台测试设备的测试程序(VB开发的),所以领导就这样安排了,理由是两者都是编程(不是我开玩笑,当时差点儿“晕倒”
,再三推辞,领导当时拿出了“礼贤下士”的姿态,声称就当学习学习,没有什么事情是百分百成功的,没办法只能接受了
)。就这样开始了PLC的学习之路,从论坛上下了一些学习资料、到图书馆借了两本书(借书之前就搞清楚了一些必要的因素如先把PLC品牌定好,这样效率高多了)。
整个控制系统不算复杂,关键是控制7个气缸的动作,出错后要能够定位到点,考虑到输入按钮比较多,输出部件也多(负责设计的老工程师原先都是基于继电器线路考虑的),因此前两天我主动请战提出用触摸屏(算是“初生牛犊不怕虎”还是“无知者无畏”啊?),这下控制就复杂了一些(原来自动部分由PLC控制,手动则由继电器线路控制,
后来我了解到,之所以要用PLC是因为全部控制使用继电器线路比较复杂,器件较多,且今后还要增加不同型号的产品,成本会超出计划,尤其是时间继电器价格不便宜 ,所以才提出这样的设计框架,“晕”啊
)。
刚开始编PLC时,老工程师带的年轻助工说控制线路设计好了,还用Festo的工具软件模拟了一下效果,当时以为这事简单了,只要把继电器控制线路“翻译”成PLC梯形图就行了,但随着对加工过程控制的了解,发现这样简单的“翻译”,先不说极大的浪费了PLC资源,就连一些必要的控制都无法完成,而另一方面“形势”变得急转而下,领导要求必须在3本月底完成改造任务。认识到问题的复杂性和“严重性”,我不得不放弃做一名翻译的理想,毅然决定转回来“吃老本”,按照加工过程控制的要求用计算机编程的思维方式来重新构思整个控制系统
,所以我现在的这个程序中都是大量的条件判断、MOV、RST及WAND、WXOR这类指令(感觉有点儿汇编的味道,仔细想想,PLC指令系统就可以认为是一套专用的宏汇编系统)。
这段时间以来,我觉得用计算机编程的思维方式处理PLC编程,最容易出错的地方就是由PLC的“扫描工作方式”引发的问题,特别是FEND之前的“主程序”段,一定要时刻注意条件(输入变化、软元件变化、“保持型”软元件)动态变化后程序的跳转方向。
最后,有一个问题想请有经验的达人给予指导,就是如何考虑“急停”功能:按照PLC的“扫描工作方式”,在如下的梯形图1中,当“X000急停按钮”接通时,对动作输出部分可以做到“即时”响应,即可以精确的监测到究竟是“M999”还是“M998”完成了“急停”功能,而图2中,如果在执行到第1023步之后的时刻才发现需要终止下面的输出动作,这时按下“X000急停按钮”,想要终止第1049步的“Y016”输出(假设此时满足D21=2、D51=2),似乎不能完成,必须要等到下一个扫描周期才能接通“M999”断开第1049步,虽然PLC的扫描是以us计的,但这样的“不精确”,就会产生“滞后”隐患了。 小弟第一次编PLC,衷心期望有经验的达人给予指点,谢谢!
[ 此帖被jinsinfo在2010-03-03 10:56重新编辑 ]