西门子模块6GK7243-1GX00-0XE0原装代理
西门子模块6GK7243-1GX00-0XE0原装代理
1.行业介绍
一次性塑料杯、塑料碗开始广泛传播始于上世纪70年代末,凭借其便捷、卫生等特质,使其在餐饮业备受器重。塑料杯和塑料碗制造业的快速发展主要是因为这些塑料制品是方便和省时的。目前,塑料杯和塑料碗广泛应用于饮料店、热冷饮店、奶茶店、酒店、餐厅和咖啡店,提供各种塑料杯装的外带饮品和现场使用。
随着我国经济的持续发展和科学技术的突飞猛进,该设备被广泛应用于一次性塑料杯制造领域的取杯自动化作业,可以快速从一次性塑料杯成型机中取出并叠放到设定数量。很好的提高了生产效率、节约了人工成本,降低了劳动强度、改善了生产环境。
工作原理:制杯机取杯机械手通过伺服电机来进行XY轴控制手臂前进到成型机模具中,通过真空发生器来吸取塑料杯,取出后通过设定参数叠放到输送带上,通过输送带传送到包装机上进行包装。
2.系统设计方案
2.1方案背景
制杯机取杯机械手是根据传统的人工拾取叠放塑料杯设计开发的一款全自动的取杯叠放设备,相对于人工操作叠杯,自动取杯机械手更快,叠放精度更高,无人工接触更加卫生。全自动制杯机取杯机械手控制多采用PLC控制系统,PLC不但能满足客户的控制要求,而且系统稳定性好、可操控性高。本文主要以永宏PLC在制杯机取杯机械手上的应用为背景,对该方案的硬件设计、软件设计和实施结果(应用效果)进行了详细的阐述和说明。
2.2 客户需求
根据机械结构和工艺要求,客户要求拥有以下功能,首先要求可进行手动控制步进电机、气缸等,有模拟启动和单独停机功能,HMI显示当前当前机械手运行状态、主机当前角度显示等功能。总而言之,制杯机取杯机械手既需要很好的实现多种控制要求,同时也需要很好的实现多种工艺要求。制杯机取杯机械手具体工艺及功能要求下表。
要求1 | 可进行单独手动XY轴控制 |
要求2 | 拥有急停、暂停、停机三种停止方式 |
要求3 | 伺服运行参数可进行触摸屏设置 |
要求4 | 具有依次模拟运行和配合主机运行功能 |
要求5 | 触摸屏实时显示当前机械手运行状态 |
要求6 | 具有设备不运行报警提示功能 |
要求7 | 各工位能单独启停操作 |
要求8 | 能控制成型机的启停与制杯动作 |
… | … |
3.硬件配置
制杯机取杯机械手组装机需要控制2个伺服电机和1个变频器以及多个气缸。所以采用1台FBs-40MCT2-AC(主机)作为整台设备的控制系统;并使用1个FBs-B2DA(模拟量板)进行PLC对变频器的频率控制;上位机采用HMI触摸屏界面用于数据监控及参数设置。运动控制采用用伺服驱动及电机和变频器及电机;其它执行单元选用气缸,普通电机等;检测单元选用编码器和接近开关。整套配置方案能够帮助客户节约很多系统成本。整套配置方案能够帮助客户节约很多系统成本。
4.工艺流程
制杯机取杯机械手的工艺流程主要分为四个流程:机械手控制,输送带控制,主机控制,制杯控制。还有辅助的报警功能等。
机械手控制:XY轴伺服电机进行取杯放杯动作。
输送带控制:对叠放好的塑料杯进行传送。
主机控制:控制变频器启停以及频率变化。
制杯控制:塑料杯成型控制。
5.结论(实施结果)
通过现场调试,制杯机取杯机械手组装机具有结构简单、操作简单、便于维护、生产效率高、生产质量高等优点,设备的运行效率为2-3s/板,而且设备在运行过程中运行平稳、生产效率高;从而可以为客户提高生产效率,降低劳动强度,节约人工成本,改善生产环境。该设备在一次性塑料杯领域得到了越来越广泛的应用,以其高速度、高精度、高稳定性和很强的适用性,同时也得到了越来越多的客户认可。
一、 概叙
目前有许多组态软件可用于设计PLC的监控画面,他们使用起来都非常简单;一些公司也提供了一套编程接口,可使用编程语言实现PC机与PLC的通讯。显然,目前已经存在的组态软件有着简单易用的优势,而使用语言自己开发监控界面,需要一定的编程经验,一般人用不了,但若掌握它,则有着更加灵活的设计思路,可以实现更为复杂的画面以及功能,其前期设计工作量较大,但标准模块做出来以后,以后开发界面的工作量甚至比使用目前的组态软件都要小得多。下面主要以Siemens 的PLC为例,介绍如何设计标准化的监控界面的一些技巧,这对于使用当前的组态软件的人也有一定的借鉴意义。
二、 需要掌握的知识
本软件与Siemens PLC的通讯需要借助于Siemens Simatic Net V6.3软件,主要使用该软件建立PC站,PC机与PLC的通讯以及使用的各种连接方式均由该软件和Step 7 V5.3实现,因此编程这块不需要考虑连接类型等,设计监控软件当然需要设计标准的通讯模块,这方面的内容已在工控网上发布:<运用VC#编程通过OPC方式实现PC机与西门子PLC通讯>通讯编程方面的内容本文不会再介绍。
三、 界面设计
我曾经看过不同厂家组态的界面,各式各样,即使是同一个人在两个不同的机床上设计的界面也是差别很大,其实,对于机床控制行业而言,无外乎提供下面的一些元素给用户:
<1>、机床状态界面
这是一般HMI都需要提供给用户的基本信息,如:滑台所处的位置(原位、攻进位置、终位) 机床是否在原位,液压是否启动,润滑是否已开始计时,油位是否正常等一系列状态信息。
<2>、机床流程界面
用于表达当前机床位于哪个动作状态,例如我设计的一个流程界面如下(仅作为试验用):
提供流程显示,并不等于你必须使用Step7的Graph编程,他只是提供给用户一些信息:该机床有哪些动作,当前处于哪个动作。
<3>、机床控制界面
此界面用于通过界面上设计的按钮控制机床,对于这一点有些争议,有些人认为,监控软件应该纯粹用于监视,而不因该去控制机床,而有些人则希望设计得更方便于用户操作。因此该界面是否使用,根据个人的设计风格而定。
<4>、数据设定界面
用于提供一个让用户输入参数的途径,譬如工艺参数,此界面在数控机床上使用的比较多,而一些组合机床则不需要使用。
<5>、报警信息界面
用于向用户提供各种详细的当前报警,以及报警历史,报警查询等功能,完善的报警功能直接决定着一个组态界面是否设计得成功,这一点国外做的比较好,而国人则一般忽视这一点。
<6>、机床诊断界面
用于给用户提供PLC各变量的状态信息,下面是我设计的一个简单界面,向WinCC这种组态软件都有专门的控件提供(我没使用过这种控件,故不能肯定)。
<7>、系统设定
用于设定该软件的连接名、连接类型、在机床诊断界面中变量显示的范围,报警变量检索范围等一系列参数, 该功能不需要提供给用户,该功能也不需要使用,本人设计它,只是让该软件具有更大的通用性,我已经做到,通过系统设定,不需要任何编程,就可以连接到任意不同位置的S7-300PLC上,因此它简化了我后面对特定机床的编程。至少在连接这一方面,只需设定参数即可以。
上面的设计模式是借鉴了Siemens 840D数控系统的HMI界面模式,把不同的内容放到不同的部分显示,当然若显示内容比较少,也可以把几个画面合到一起显示(考虑美观因素),而内容比较多时,譬如机床流程界面不能内容全部显示出来,则可以把机床分成不同的控制对象,每一个流程界面只显示一个控制对象的流程,此时在界面上应该参考840D数控系统的竖排软健方式,可以在流程界面的右侧竖着摆一排按钮,用于切换不同的控制对象。
四、 设计技巧(使用VC#讲解)
<1>总体框架
上面共用到8个窗体,及一个用于在窗体间通讯的静态类: MainControl。下面的一排按钮放在frmPanel窗体中,它为程序的启动窗口,也是主控窗口,先通过Screen.PrimaryScreen检测当前显示器的尺寸,而另外的7个窗体分别对应每一个按钮,他们均在MainControl类中被创建,只是处于掩藏状态,当在frmPanel类中按下某个按钮时,就会通过MainControl类把相应的窗体显示出来,而把之前显示的窗体掩藏。有人认为不需要那么多的窗体,只需要一个
TabControl控件就可以搞定,确实如此,但那样大量的代码在一个窗体中,不便于管理。
下面给出frmPanel窗体的装载事件执行的代码:
//设定摆放位置
screenRect=Screen.PrimaryScreen.WorkingArea;
MainControl.ScreenRect=screenRect;
//创建各种显示窗体
MainControl.Createbbbb();
//打开连接
MainControl.OpenConnection(S7Connection.ServerType.OPC_SimaticNET);
this.Left=this.screenRect.Left;
this.Top=screenRect.Top+screenRect.Height-this.Height;
this.Width=screenRect.Width;
//让个按钮处于按下状态
this.tbPanel.Buttons[0].Pushed=true;
currButton=0;
//打开个窗体
MainControl.Getbbbb(0).Show();
由于每个界面都要对PLC数据进行实时的扫描,并且当出现故障时,在当前的可视界面中需要显示故障信息,因此可以创建一个包含定时器和故障显示的基类窗体frmBase,其他窗体均继承于它,这样可以节省代码的编写,以及代码的管理。
有一定编程基础的人应该很容易了解以上的设计思路。
<2>、流程界面设计
可以单独设计一个标准类:Graph,用于在指定的位置,根据给定的流程文字描述全自动的绘制流程图,该类应该具备边界自动的检测功能,即当绘制到左边或者右边时,应该自动换行,本人在Graph类中大量使用了GDI+对象,并且使用了线性渐变画笔,设计细节这里就不讲了,但使用该类进行流程的绘制时,编写的代码则异常简单,上面截图中显示的流程,只需下面几行代码就可以实现:
private void frmGraph_Load(bbbbbb sender, System.EventArgs e) {
MainControl.SetbbbbStyle(1);
dc=this.CreateGraphics();
//流程图的文字描述
bbbbbb[] strName={"机床初始步","夹具夹紧",
"移动工作台锁紧机构松开","移动工作台拔销", "移动工作台前进至二工位位置","移动工作台插销",
"移动工作台锁紧","二工位右滑台前进至加工位置","二工位右滑台加工完成返回","移动工作台锁紧机构松开",
"移动工作台拔销","移动工作台前进至三工位位置","移动工作台插销",
"移动工作台锁紧","三工位右滑台前进至加工位置","三工位右滑台功丝","三工位右滑台功丝返回",
"移动工作台锁紧机构松开", "移动工作台拔销","移动工作台返回至原位","移动工作台插销", "移动工作台锁紧", "夹具松开"};
//创建graph对象
graph=new Graph(strName,Color.DarkKhaki,Color.RoyalBlue,new Rectangle(10,40,MainControl.ScreenRect.Width-30,MainControl.ScreenRect.Height-35),dc);
//设定第0步为当前步
graph.SetStep(0);
}
在定时器中,根据检测的PLC信息,实时调用graph.SetStep()函数即可。
扩充:可以在系统设定界面中,让用户输入流程的文字描述,以及与其对应的PLC数据,然后流程图的产生以及动态更新完全有程序自动实现,这样可以大大减少以后的机床组态,这就是编程语言的优点,在前期工作做好后,以后可以实现界面的自动生成。
<3>、机床诊断界面的设计
该界面也可以实现标准化,即编写一次后,以后就不需要再编写了,上面的界面是我用GDI+绘制出来的,连鼠标响应函数都是自己编写,程序异常复杂,我自己以后就不想在看它了,因此本界面不建议读者使用GDI+,而应该使用标准控件,譬如DataGrid控件,设计样式可以参考840D的诊断界面。
<4>、系统设定界面
报警历史以及设定数据均可以使用微软的SQL Server数据库实现,本人为了减少软件的依赖性,没有使用数据库,因此也就没有编写报警的保存,实际上应该编写。对于上面参数的保存可以放到注册表中,也可以使用类的序列化和反序列化,本人使用的是后者,具体细节读者可以查阅资料。
这里主要讲一讲报警方面的设定问题。
我们可以制定一套PLC编程规范:把某一区域的M变量或者DB块变量规定为报警触发位,当这一区域的某一个位被触发后,就表示相应的报警产生,同时指定与每一位对应的报警号,其报警号的命名可以按如下方式规定:
e.g. M60.5 对应的报警号应该为605
DB10.DBX57.1对应的报警号应该为571这种命名规则有利于用户输入大量的报警信息而不会出错,但不容许在一个PLC程序中即使用了M变量,又使用了DB块变量作为故障触发位,否则按照上面的报警号命名规则,会出现605究竟是对应M60.5,还是对应DB10.DBX60.5
有了上面的规则,我们就可以使用程序创建报警模板,让用户在Excel中把报警文本编写好以后,再由程序导回来,譬如对于上面输入的参数,当点击”创建报警模板”按钮,它会在指定的Excel文件中插入如下的信息: