The Communication Between PC and NASI FP1 Series PLC
WW.W_PLC※JS_C,OM-PL,C-技.术_网 武汉科技大学信息科学与工程学院 甘朝辉 张 震 WWW.PLCJS.COM——可编程控制器技术门户 Gan Zhaohui Zhang Zhe P.L.C.技.术.网——可编程控制器技术门户 摘 要:本文介绍了松下公司PLC通信协议MEWTOCOL-COM,并在Windows下编程实现了松下FP1系列PLC与计算机的通信。 WWW_PLC※JS_COM-PmLC-技.术_网 关键词:通信协议 RS232 PLC WWW.PLCJS.COM——可编程控制器技术门户 AbstractThe paper introduces the MEWTOCOL-COM communication protocol of NASI PLC.A small program in Windows is written to complete the communication between computer with NASI FP1 series PLC. P.L.C.技.术.网——可编程控制器技术门户 Key wordsCommunication Protocol RS232 PLC WW.W_PLCJS_COM-PLC-技.术_网 分类号TN919 文献标识码A 文章编号1606-5123200206-0048-0 WWcW_PLCJS_COM-PLC-技.术_网 1 引 言 ——可——编——程——控-制-器-技——术——门——户 可编程控制器以下简称PLC由于其高可靠性、编程简单、通用性强、体积小、结构紧凑、安装维护方便等特点,而在工业控制中得到了广泛应用。由于计算机在图形显示、数据处理、打印报表、中文显示等方面有很强的功能,因此在诸如柔性制造系统的现代化大型控制系统中常常将多台PLC与计算机联接起来构成多级分布控制系统。在此类系统的构成中,关键问题之一是如何实现PLC与计算机之间的通信。不同系列的PLC与计算机通信方式各不相同,本文以松下公司的FP1系列PLC为对象,分析了通信接口及通信协议,并在Windows 98Se中用Borland C++Bulider 5.0编制了一个简单的通信程序。 ——可——编——程——控-制-器-技——术——门——户 2 松下FP1系列PLC与计算机之间的通信接口及通信协议 WWW_PLCJS※COM-PLC-技.术_网(可※编程控※制器技术门户) 2.1 通信接口 WWW_PLC※JS_COM-PLC-技.术_网(可编程控※制器技术门户) FP1系列的通信接口采用标准9芯RS232接口,接线如图1所示。 ——可——编——程——控-制-器-技——术——门——户 1 PC的RXD端与PLC的TXD端联接,使PC接收到PLC发出的数据。 WWW_P※LCJS_COM-PLC-)技.术_网 2 PC的TXD端与PLC的RXD端联接,使PC发出的数据被PLC接收到。 WWW_P※LCJS_CO※M-PLC-技-.术_网 3 PC与PLC的SG端互联,使两者的工作基准地电平相同。 plcjs.技.术_网 4 PC与PLC的RTS端互联,PC在此引脚发出讯号, 通知 WWW_PLCJS_COM-PLC-技.术_网 PLC可以向PC发送数据。 plcjs.技.术_网 5 PC与PLC的CTS端互联,PLC在此引脚发出讯号,通知PLC可以向PC发送数据。 WWW_P※LCJS_CO※M-PLC-技-.术_网 2.2 通信协议 WWW_PLCJS※COM-PLC-技.术_网(可※编程控※制器技术门户) 松下FP1系列PLC与计算机之间的通信协议为松下公司专用的MEWTOCOL-COM协议。该协议采用异步通信方式,其波特率有1200、2400、4800、9600、19200、38400、57600、115200bps等多种可选,且报文长度可变可固定。该协议格式分为命令消息Command Message,正常响应消息Response Message-normal,出错响应消息Response Message-error三种。 WWW_PL※CJS_COM-PLC-技.术_网 其中,%为起始符,标记每一帧报文的开始,CR为结束符,标记每一帧报文的结束。 ——可——编——程——控-制-器-技——术——门——户 AD为PLC的站地址,为两位16进制数,如00则表示第一台PLC。 plcjs.技.术_网 #、$、标注该帧报文为何种类型。 P.L.C.技.术.网——可编程控制器技术门户 Command code为命令代码,如后文的例1中的“RD”,表示读数据区。Response code为响应代码一般返回接收到的命令消息中的命令代码。ErrorH和ErrorL为出错代码,是两位16进制数,可根据其值在协议中查出错误的描述。 WWW_PLC※JS_COM-PmLC-技.术_网 Text code为命令参数,如例1命令消息中“D0110501107”,“D”表示数据寄存器,“01105 01107”表示第1105号至1107号,而在例1响应消息中,“6300 4433 0A00”则表示DT1105至DT1107中数据分别为6300、4433、0A00。 WW.W_PLC※JS_C,OM-PL,C-技.术_网 BCCH和BCCL为前面字符串的BCC校验码的高、低位,为两位16进制数。其初值为0,然后从起始符开始与该帧报文中每一字节按位进行异或运算得到。 WWW_PLCJ-S_COM-PLC-技.术_网(可-编程控-制器技术-门户) 例1:读取DT1105至DT1107中的数据的命令消息如下: ——可——编——程——控-制-器-技——术——门——户 % 01 # RD D01105 01107 57 CR WWW_P※LCJS_COM-PLC-)技.术_网 若DT1105至DT1107中数据分别为6300、4433和0A00,PLC返回的响应消息如下: WWW_PLCJS_COM-PLC-技.术_网 % 01 $ RD 6300 4433 0A00 62 CR WWW_PLC※JS_COM-PLC-技.术_网(可编程控※制器技术门户) 3 PC与松下FP1系列PLC通信的WINDOWS编程实现 WWW_PLCJS※COM-PLC-技.术_网(可※编程控※制器技术门户) 在本程序中用到了MSCOMM32.OCX控件,该控件可在MS Visual Basic 6.0的光盘中找到,但需注册,安装一遍VB即可解决。 WWW_PLCJS※COM-PLC-技×术_网(可编程控※制器技术门户) 第一步:C++Builder 5.0中导入MSCOMM32.OCX控件,新建一个Application。在其主窗体中添加一个MSComm控件,命名为MSComm1,并设置其属性值。注意波特率及校验方式要与PLC的设置一致。再添加一个Label控件和一个Button控件,分别命名为Labell和Buttonl。 WWW.PLCJS.COM——可编程控制器技术门户 第二步:在Buttonl的OnClick事件中添加如下代码。 WWW_PLC※JS_COM-PLC-技.术_网(可编程控※制器技术门户) int i WWW_PLC※JS_COM-PLC-技.术_网(可编程控※制器技术门户) AnsiString outs WWW※PLCJS_COM-PL#C-技.术_网(可编※程控※制器技术门户) Ole Variant buf P_L_C_技_术_网——可——编——程——控-制-器-技——术——门——户 outs=″%01#RDD011050110757\r″∥设置命令消息 WWW_PLCJS※COM-PLC-技×术_网(可编程控※制器技术门户) ifMSComml->PortOpen==falseMSComml->PortOpen=true∥打开端口 W1WW_P4LCJS_COM-PLC-技.术_网 buf=outs WWW_P※LCJS_CO※M-PLC-技-.术_网 MSComml->Output=buf ——可——编——程——控-制-器-技——术——门——户 i=0 WWW_PLCJS@_COM%-PLC-技.术_网 whilei<=10000000i++∥延时,等待PLC发回响应消息 WWW_PLCJS※COM-PLC-技.术_网(可※编程控※制器技术门户) outs=″″ WWW_P※LCJS_CO※M-PLC-技-.术_网 buf=MSComml->Input∥接收响应消息 WWW_P※LCJS_COM-PLC-)技.术_网 outs=WideStringbuf WWW.PLCJS.COM——可编程控制器技术门户 ifouts=″″Labell->Caption=outs WWW_PL※CJS_COM-PLC-技.术_网 else Labell->Cabell->"接收不到"; WWW_PL※CJS_COM-PLC-技.术_网 若想采用其它命令消息,则必须计算其BCC校验码,可采用如下函数实现。 WWW_PLC※JS_COM-PmLC-技.术_网 AnsiString BCCProAnsiString ComdMesg WWcW_PLCJS_COM-PLC-技.术_网 ——可——编——程——控-制-器-技——术——门——户 unsigned char bcc P_L_C_技_术_网——可——编——程——控-制-器-技——术——门——户 unsigned char*tempc WWW.PLCJS.COM——可编程控制器技术门户 char ab WWW_PLCJS_COM-PLC-技.术_网 AnsiString BccH P.L.C.技.术.网——可编程控制器技术门户 AnsiString BccL P.L.C.技.术.网——可编程控制器技术门户 AnsiString temp WW.W_PLC※JS_C,OM-PL,C-技.术_网 int bcc-int WWW_PL※CJS_COM-PLC-技.术_网 int i WWcW_PLCJS_COM-PLC-技.术_网 temp=ComdMesg WW.W_PLCJS_COM-PLC-技.术_网 tempc=ComdMesg.c-str WWW_PLCJS_COM-PLC-技.术_网 bcc=0 P_L_C_技_术_网——可——编——程——控-制-器-技——术——门——户 fori=0i< temp.Lengthi++bcc^=tempci WWW_PLCJS※COM-PLC-技.术_网(可※编程控※制器技术门户) bcc-int=bcc WWW_P※LCJS_COM-PLC-)技.术_网 BccH=bcc-int/16 WW.W_PLCJS_COM-PLC-技.术_网 BccL=bcc-int%16 WW.W_PLC※JS_C,OM-PL,C-技.术_网 BccH=IntToHexBccH WWW_PLCJ-S_COM-PLC-技.术_网(可-编程控-制器技术-门户) BccL=IntToHexBccL WW.W_PLCJS_COM-PLC-技.术_网 temp=ComdMesg+BccH+BccL+″\r″ WW.W_PLC※JS_C,OM-PL,C-技.术_网 return temp WWW_P※LCJS_COM-PLC-)技.术_网 WWW_P※LCJS_CO※M-PLC-技-.术_网 使用这个函数便可将所有你要发送的命令消息自动加上两位16进制BCC码和结束符。 WWW.PLCJS.COM——可编程控制器技术门户 4 结 论 WWcW_PLCJS_COM-PLC-技.术_网 本文所有程序均在Windows 98SeBorland C++Bulider 5.0环境中调试通过,并多次长时间运行测试,以验证其准确性与稳定性,收到了令人满意的效果,通信十分稳定可靠。读者可在本文的基础上,参考松下公司的MEWTOCOL-COM协议,便可轻松实现PC与松下FP1系列PLC的通信,以完成上位机对PLC的监视与控制。 WWW.PLCJS.COM——可编程控制器技术门户 参 考 文 献 WWW_PLCJS※COM-PLC-技×术_网(可编程控※制器技术门户) 1NASI可编程控制器FP系列FP1硬件技术手册.松下电工株式会社,1999 WWcW_PLCJS_COM-PLC-技.术_网 2松下PLC MEWTOCOL-COM通信协议.松下电工株式会社,1999 WWW_PLCJS※COM-PLC-技.术_网(可※编程控※制器技术门户) 3范逸之. Visual Basic与RS232串行通讯控制. 中国青 WWW※PLCJS_COM-PL#C-技.术_网(可编※程控※制器技术门户) 年出版社,2000 |