浔之漫智控技术-西门子PLC代理商
西门子PLC模块 , 变频器 , 触摸屏 , 交换机
西门子模块6ES7216-2AD23-0XB8参数选型

西门子模块6ES7216-2AD23-0XB8参数选型

 随着计算机信息技术、传感器技术和PLC通讯技术的发展,利用PLC组建的自动生产线和智能生产监控系统,日益受到各个行业的产品生产工厂的青睐。本文所介绍松下PLC 的MEWNET模块的通讯方式,采用了RS232与PC-bbbb形式结合的方式:上位PC通过RS232与被设为主站的PLC连接,下位的各个PLC通过RS484以PC-bbbb的形式连接。这种结合方式的网络,在功能上克服了PC-bbbb模式下,下位PLC需要共享有限的链接继电器和链接寄存器空间,没办法满足需要同时采集、交换和处理大量数据的PLC网络的弊端;在成本上,远远低于以ET-LAN Unit模块为基础的以态网形式的PLC网络;而且该网络模式的上位机可在LabVIEW等软件的支持下构成实时监控界面、下载数据到PLC、到处报表等功能。该网络形式非常适合于生产企业建立监控系统,以实现在线半成本、成品的测试数据的统计和分析,提高产品质量稳定性,为企业带来良好的经济效益。


  关键字:  PLC监控 监控网络 PC-bbbb




  目前,各dapinpai的PLC都具有通讯功能,如松下PLC的FP2系列,可通过多种方式组成PLC网络,其中较为常用的网路形式是PC-bbbb网络。不过现有的PLC还局限于逻辑控制与数据采集方面,其本身不具备数据分析能力,不能生产报表或创建数据库。因此,对于一个完整的自动化生产系统,或者一个完整的工控网络来说,上位组态可以说是必不可少的。而要实现上位机PC与PLC的大量数据交换,两者通讯问题是不可回避的。本文主要以松下FP2系列PLC的MEWNET(Multi-wire bbbb Unit)模块组网后再与上位PC实时通讯的问题展开讨论。
松下FP2系列PLC 支持多种组网方式,除松下公司内部通讯协议的一些组网方式,如PC-bbbb,C-net,S-bbbb等外,还支持一些开放的通讯方式,如RS232、RS485、Porfubus以及以太网等。实际工作中,在组建PLC的监控网络时,要从网络的功能、通讯速度、成本、编程量以及网络维护等因素加以考虑,可选择单一通讯方式组网,也可采用多种通讯方式一起,组成能满足需求的网络。

  要实现一台PC同时与多台松下FP2系列PLC通讯,以太网是为简单可靠的方式,这种方式构成的网络,通讯速度较高,可以达到2Mbp/S的数据量,实时性较强、数据量较大,是一种较佳的组网方式;然而这种方式中,每个PLC都需增加上一个ET-LAN Unit模块, PC机需求的以太网接口也以相同数量增加。现市场上的ET-LAN Unit价格较高,从而整个网络造价较高;对一些数据实时性需求不那么高的场合,这种方式无疑是一种浪费。

  FP2系列PLC的另一种组网方式 ―― PC-bbbb连接,是先通过MEWNET(Multi-wire bbbb Unit)模块把各个PLC以RS485连接起来,设置不同的站号(站号可在有限范围内,任意不重复地设置),然后再通过编程软件 FPwin-GR给每个站号分配链接数据寄存器和链接继电器,以实现PLC与PLC之间的数据交换,PLC间的数据交换速度可达500Kbs。这种方式的PLC组,如果想实现与上位PC机的通讯,可任选一个PLC做主站(主站站号可在设置范围内任意设置),将主站的PLC的编程口或com1以RS-232与PC串口相连,由主站的PLC将其它站点上的数据集中到主站,并发送给PC,以实现PC与PLC组之间的数据交换,其速度可以达115.2Kbp/s。具体的各PLC间以PC-bbbb连接后再通过RS232与PC连接的网络架构图,即PC-bbbb 与RS232组合的方式构成的监控网络,如图1-1


图1-1――PC通过RS232与主站连接,所有<aPLC通过RS485以PC-bbbb形式连接>
图1-1――PC通过RS232与主站连接,所有PLC通过RS485以PC-bbbb形式连接





  以PC-bbbb 与RS232组合的方式构成的监控网络,从硬件上降低了网络的成本。但 PC-bbbb 组网形式下,各个PLC站点需要共享链接数据寄存器与链接继电器,而链接数据寄存器与链接继电器的数量很有限 ―― 链接数据寄存器总量只有128个字,链接继电器总量也只有64个字 ,因此,站点越多,每个站点能分配到的链接数据寄存器与链接继电器数量就越少。虽然在数据传输时可以用索引寄存器分时处理数据,但大量数据会拥挤在主站,占用大量的主站的内存,从而大大降低通讯效率,降低数据实时性。所以对于需要快速采集、交换和处理大量数据的PLC组态监控系统,这种处理法显然是不能满足要求的。

  对于需要快速采集、交换和处理大量数据的PLC组态监控系统来说,要想利用这种低成本的PC-bbbb与RS232组合的方式,实现PLC监控,必须解决数据量的处理问题。

  根据松下MEWNET模块的开放通讯协议《松下MEWTOCOL通讯协议》,可以轻松的读取与PC连接的以PC- bbbb 形式连接的各个PLC上的数据,包括直接通过RS232与PC连接的主站PLC和通过RS485连接的其他各站点PLC。 通讯格式“%01#RDD0000000026**”表示读取站点“01”上的数据寄存器“DT0”到“DT26”上的数据,而“01”表示与PC相连接的PLC,也就是主站站号(注意:“”为“carriage return”,是“回车”符,即字符串“\r”)。根据《松下MEWTOCOL通讯协议》,把站号代码“01”改为“02”,即可以读写站点“02”上的数据,但实际读取的结果是没有任何信息返回。再尝试其它站点,如“03、04、05……”结果是相同的。也就是说,通过PS232只能读取PC-bbbb中与PC直接连接的PLC的数据(该PLC在此处被设为01站),并不能读取PC-bbbb 网络中,通过RS485连接的各站点PLC的数据。

  然而使用松下公司的编程软件FPWIN-GR,可以通过设定通讯站点,轻松地通过RS-232读取PC-bbbb 网络各站点PLC的任何数据 ――包括RS484连接的各PLC。站点设置的方法如图1-2.1和1-2.2:

图1-2.1
图1-2.1



  通过点击“通讯站点指定”后就出现如图1-3:

图1-2.2
图1-2.2



  以上设置通讯站号的方法,可以轻松地通过RS-232读取PC-bbbb 网络各站点PLC的任何数据,可实现程序的上下载,在线监控等。即,编程软件FPWIN-GR通过编程口以RS-232方式实现了对PC-bbbb网络其它站点PLC的通讯。也就是说,存在一种协议,可以使PC成功地读写PC-bbbb网络的各PLC的数据。只要破解此通讯协议,即可在编写组态监控系统时,使用该协议直接读取其它站点的数据,不需要再把其它站点的数据发送给主站,也不需要对站点上的数据作任何处理,从而提高了通讯速率,解决大量数据在主站拥挤,占用了主站大量的内存,数据实时性较差等问题。然而《松下MEWTOCOL通讯协议》对此并没有作任何说明,所以,要解决该通讯协议问题,需要截取编程软件FPWIN-GR在运行“通讯站号指定”,成功读取其他站点PLC时,与PC串口的通讯数据,进行分析。

  为了了解FPWIN-GR在“通讯站号指定”时串口数据流,可以使用串口通讯数据监控软件PORTMON.EXE,通过以下操作截取:步,运行PORTMON.EXE,设置“与PLC通讯的串口进行监控”的各项参数;第二步,运行FPWIN-GR,确定PC与PLC能正常通讯后,指定通讯站点(如图:1-2.1,1-2.2);第三步,截取。通讯数据监控软件截取的界面如图1-3所示。

图1-3
图1-3



  在串口通讯数据截取界面上发现,在打开串口后,串口数据流有一串“%%EE#0C174.”并返回“%EE$0C72”“%EE#0C174.”在松下公司公开的《松下MEWTOCOL通讯协议》中并没有任何说明,该语句只在“通讯站号指定”设置时才会出现。为了验证“%EE#0C174”在解决PC读取除主站外的其他PLC时,为有效的通讯协议语句,进行以下操作:一,关闭FPWIN-GR,并关闭PC-bbbb的PLC网络的电源;二,重新上电,运行串口调试助手,发送“%01#RDD0000000026**\r”,结果返回“%01$RC021”(根据《松下MEWTOCOL协议》,“%01$RC021”表示读取指令执行成功);三,发送“%%EE#0C174” 返回“%EE$0C72”(结果与FPWIN-GR指定通讯站点读取其他站点PLC的方法中,串口调试助手所捕捉到的内容相同);四,利用串口调试助手发送“%02#WCSY0030**\r”后,2#的PLC的Y0051状态变亮,即对2站Y0051的写操作成功;五,再读取“02”站点其它数据寄存器的数据,触发内外继电器,结果都能实现,可以正常通讯;六,将“02”改为“03;04;05等”,分别读取其它站点的数据,结果都能一一实现正常通讯。即发送“%%EE#0C174”返回“%EE$0C72”,即可读取PC-bbbb网络上PLC的数据--不但可读取通过RS232直接与PC连接的PLC,而且还可读取PC-bbbb中,其他站点PLC的数据。

  即,结论1:要通过RS-232直接读取PC-bbbb网络的各个站点的PLC数据,需在读取其它站点前先发送字符串“%%EE#0C174”, 并正常返回“%EE$0C72.”,触发开启网络功能。。但要注意,此功能非断电保持,PLC在每次断电重新启动后要再次发送此字符串,才能读写其它站点数据。

  在实现与其它站点通讯后,发送“%01#RDD0000000026**\r”读取主站上的数据,结果返回错误代码“%01!2403”,证明与PC相连的站点——“01”站(主站),不能再以“%01#RDD0000000026**\r”的格式读取数据。此时断开PLC电源,再重新启动PLC。发送“%01#RDD0000000026**\r”结果有正常数据返回。由此可知,发送“%EE$0C72”,成功读写其他站点的PLC,开启了网络功能后,直接按照《松下MEWTOCOL协议》的格式,并不能读写与PC通过RS232相连的站号为01的PLC的站号,站号“01”失效。

  为了解决这个问题,再次运行串口数据监控软件PORTMON.EXE与FPWIN-GR,如图1-2.1、图1-2.2,将“通讯站指定”选择“01站点”也就是与PC连接的PLC站号,FPWIN-GR会出现如图1-4的警告信息:

图1-4
图1-4



  警告信息显示此时与PLC通讯出现错误,与截取的到的错误代码“%01!2403”一致,均表示为传输格式错误。将“通讯站点指定”指回“本站”实现正常通讯,截取到的数据如图1-5

图1-5
图1-5



  通过多次试验发现,使用FPWIN-GR读写本站PLC数据时,出现的通讯语句是以“%EE#……”开头的,并不是《松下MEWTOCOL通讯协议》中陈述的以主站号为代码为开头的。“%01#……”。

  为验证“EE”是否为这种网络模式下的有效主站站号,将原的“%01#RDD0000000026**\r”改成“%EE#RDD0000000026**\r”尝试读取主站站点数据,结果为正常返回数据,也就说可以读取源站数据,再将“%EE#RDD0000000026**\r”改为“%02#RDD0000000026**\r”也可以读取“02”站点数据,将“02”改为“03;04;05等,分别读取其它站点的数据,结果都能一一实现正常通讯。 通过进一步的实验验证,无论是01站,还是02、03站直接通过RS232与PC连接,在该网络形式下,需要将源站站号改为“EE”,才可以实现与PC的通讯。由此可得以下结论,

  结论2:在发送“%EE#0C174”,启用了网络通讯功能后,不能再用主站站号作读写操作的站号代码,如“%01#……”读写主站数据,要以“%EE#……”代替主站站号,才能实现与其通讯。经过试验还发现,在开启网络功能后,只要将与PC通过RS232连接的PLC的站号设为EE,无论该站是原来的02、03还是04站, PC都可直接读写该PLC。即图1-1所示的PLC网络中,需要输入指令“%EE#0C174”,PC才可以直接读写除本站外的PLC,而本站的PLC在开启网络功能后,需要将本站站号设为EE,才可以继续读写本站。

  综合了以上试验结果,以松下FP2系列PLC的MEWNET(Multi-wire bbbb Unit)模块组网的PLC监控网络,需要用 “%EE#0C174”语句开启网络通讯功能,以读取主站之外的PLC数据,而主站PLC的站号,在开启网络通讯功能后,需要将主板站号设为EE,才可以再次对主站PLC读写,以便实现对整个网络的PLC的数据的读写等操作。 该网络可以通过VB、VC、Labview 等编程软件通讯程序的支持,实现与PC-bbbb形式的 的PLC的通讯。再与其它成熟的组态软件组成二次开发,便可实现功能强大的组态监控系统,该类系统可实现实时监控界面、快速采集、交换和处理大量数据、下载数据到PLC、导出报表等功能,而且硬件成本较,适合于生产企业建立监控系统,以实现在线半成品、成品的测试数据的统计和分析,提高产品质量稳定性,为企业带来良好的经济效益。

一、前言
  C#语言是.NET技术的核心开发语言,是一种简单、现代、面向对象和类型安全的编程语言,它实现了快速应用程序开发、跨平台部署,能够访问平台固有的资源,支持COM和.NET技术,具有C++语言的强大功能、Java语言的跨平台特性和Delphi语言的方便快捷等众多的品质。FP∑是日本松下电工株式会社生产的小型可编程序控制器,它有许多规格,具有体积小、重量轻、功能齐全、编程简单、价格便宜等优点,在工业控制中应用十分广泛。 本文在bbbbbbs xp下用Visual Studio .NET 2003编制一个简单的通信程序,探讨使用MSComm控件对FPG-C24R2 PLC进行串行通信的实现方法。

二、ActiveX控件的引入
  你必须有Mscomm.srg, Mscomm32.ocx,Mscomm32.dep文件在你的bbbbbbs的System目录下(注意WinNT下是System32),而且它必须正确的注册。你可以装VB6.0来获得,安装VB.6.0后,MSComm控件就自动在你的计算机上注册了,这比手工注册控件省事多了,Visual.Studio.NET2003在项目工程中(Solution)插入MSComm控件的具体步骤:新建程序后,点击Tools(工具)-->Add/Remove Toolbox items(添加/移除工具箱项)就打开了Customize Toolbox(自定义工具箱)对话框,再选择COM Components(COM组件)项,并在出现控件中就可以找到Microsoft Communications Control,version 6.0,选上该项,再点击"OK",就会在Toolbox控件工具箱中看到MSComm控件的电话图标了,将它拖到窗体(bbbb)就可以了。

三、通信协议
  FP∑系列PLC通信系统的基本协议是松下电工的专用通信协议-MEWTOCOL;PLC与计算机的通信协议是MEWTOCOL-COM。该协议采用异步通信方式,其波特率有300bps、600bps、1200bps、2400bps、4800bps、9600bps、19200bps、38400bps、57600bps、115200bps等多种可选,且报文长度可变可固定。该方式通信协议如下:
图1和图2分别为上位机发送的上位机链接命令帧读DM区数据的命令格式和由PLC返回的应答帧格式。当PLC接收到从上位机发来的ASCII码命令时自动返回ASCII码应答。

  其中,%为起始符,标记每一帧报文的开始,CR为结束符,标记每一帧报文的结束,BCC为两字节的帧校验码FCS,它是从开始符"%"到正文结束的所有字符的ASCII码按位异或的结果,HL为PLC的站地址,为两位16进制数,如00则表示台PLC。#、$标注该帧报文为何种类型,上位机的命令帧由不固定的字节数组成,针对不同的识别码有不同的帧长度。但基本格式大体一致。

四、编程实现
  启动Visual.Studio.NET2003,便可进入Visual C#.NET窗口环境,建立bbbbbbs应用程序,建立项目名称(complc),生成项目窗体(combbbb)。在窗体上添加通信按钮button1、退出按钮button2,并在工具窗体控件栏选中Microsoft Communications Control,version 6.0控件,如图3。

代码如下:

using System; using System.Text; using System.Drawing; using System.Collections; using System.ComponentModel; using System.bbbbbbs.bbbbs; using System.Data; namespace complc { ///  /// bbbb1 的摘要说明。 ///  public class combbbb : System.bbbbbbs.bbbbs.bbbb { private AxMSCommLib.AxMSComm axMSComm1; private System.bbbbbbs.bbbbs.TextBox textBox1; private System.bbbbbbs.bbbbs.TextBox textBox2; private System.bbbbbbs.bbbbs.Button button1; private System.bbbbbbs.bbbbs.Button button2; private System.bbbbbbs.bbbbs.Label label1; private System.bbbbbbs.bbbbs.Label label2; ///  /// 必需的设计器变量。 ///  private System.ComponentModel.Container components = null; public combbbb() { // bbbbbbs 窗体设计器支持所必需的 InitializeComponent(); // TOD 在 InitializeComponent 调用后添加任何构造函数代码 } ///  /// 清理所有正在使用的资源。 ///  protected override void Dispose( bool disposing ) { if( disposing ) { if (components != null)  { components.Dispose(); } } base.Dispose( disposing ); } /// bbbbbbs 窗体设计器生成的代码 ///  /// 应用程序的主入口点。 ///  [STAThread] static void Main() { Application.Run(new combbbb()); } private void button1_Click(bbbbbb sender, System.EventArgs e) { bbbbbb ms,rd = "" ; int i; if (!axMSComm1.PortOpen) axMSComm1.PortOpen = true;  //打开串口 axMSComm1.bbbbbLen = 0; //清除接收缓冲区 axMSComm1.DTREnable = true;  //置DTR有效 axMSComm1.RTSEnable = true;  //置RTS有效 axMSComm1.bbbbbMode = MSCommLib.bbbbbModeConstants.combbbbbModeText; //置为二进制输入方式 axMSComm1.RThreshold = 1;  //设置为接收缓冲区每接收一个字符将引发一次OnComm事件 ms=textBox1.Text;  // 输入如:%01#RDD9001590016或%01#RDD0100601036 axMSComm1.Output = ms+tobcc(ms)+(char)13; // sleep(30); rd += axMSComm1.bbbbb; textBox2.Text = rd; } private void combbbb_Load(bbbbbb sender, System.EventArgs e) { axMSComm1.CommPort = System.Convert.ToInt16(1);    //设为com1 axMSComm1.Settings = "9600,n,8,1"; } public bbbbbb tobcc(bbbbbb s)    //帧校验函数FCS { int t = 0; char[] chars = s.ToCharArray(); for(int i = 1;i <= s.Length-1;i++) { t = t^=(char)chars[i]; } return t.Tobbbbbb().Subbbbbbb(1,2); } private void button2_Click(bbbbbb sender, System.EventArgs e) { Application.Exit();  } } }

五、结论
  本文所有程序均在bbbbbbs XP, Visual.Studio.NET2003环境中调试通过,该通信方式简单,通信十分稳定可靠,从而在工业控制的小型监控系统中有着广阔的应用前景。读者可在本文的基础上,参考松下公司的MEWTOCOL-COM协议,便可轻松实现PC与松下FP∑系列PLC的通信,以完成上位机对PLC的监视与控制。


展开全文
优质商家推荐 拨打电话