技术中心
 
 

松下PC-link网络与PC通讯问题--解读松下未公开的PLC通讯协议

   日期:2007-03-30     来源:中国测控网     作者:管理员    

摘要

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


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




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

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

  FP2系列PLC的另一种组网方式 ―― PC-link连接,是先通过MEWNET(Multi-wire Link 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-link连接后再通过RS232与PC连接的网络架构图,即PC-Link 与RS232组合的方式构成的监控网络,如图1-1


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




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

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

  根据松下MEWNET模块的开放通讯协议《松下MEWTOCOL通讯协议》,可以轻松的读取与PC连接的以PC- Link 形式连接的各个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-Link中与PC直接连接的PLC的数据(该PLC在此处被设为01站),并不能读取PC-Link 网络中,通过RS485连接的各站点PLC的数据。

  然而使用松下公司的编程软件FPWIN-GR,可以通过设定通讯站点,轻松地通过RS-232读取PC-link 网络各站点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-link 网络各站点PLC的任何数据,可实现程序的上下载,在线监控等。即,编程软件FPWIN-GR通过编程口以RS-232方式实现了对PC-Link网络其它站点PLC的通讯。也就是说,存在一种协议,可以使PC成功地读写PC-Link网络的各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-Link的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-Link网络上PLC的数据--不但可读取通过RS232直接与PC连接的PLC,而且还可读取PC-Link中,其他站点PLC的数据。

  即,结论1:要通过RS-232直接读取PC-link网络的各个站点的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
 
  
  
  
  
 
更多>同类技术
 
全年征稿 / 资讯合作