计算机与松下FP1系列可编程控制器的通信
作者:东莞智捷电气 加入时间:2005-4-20 0:48:54
      计算机与松下FP1系列可编程控制器的通信



The Communication Between PC and NASI FP1 Series PLC
武汉科技大学信息科学与工程学院 甘朝辉 张 震
Gan Zhaohui Zhang Zhe
摘 要:本文介绍了松下公司PLC通信协议MEWTOCOL-COM,并在Windows下编程实现了松下FP1系列PLC与计算机的通信。
关键词:通信协议 RS232 PLC
AbstractThe 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.
Key wordsCommunication Protocol RS232 PLC
分类号TN919 文献标识码A 文章编号1606-5123200206-0048-0
1 引 言
可编程控制器以下简称PLC由于其高可靠性、编程简单、通用性强、体积小、结构紧凑、安装维护方便等特点,而在工业控制中得到了广泛应用。由于计算机在图形显示、数据处理、打印报表、中文显示等方面有很强的功能,因此在诸如柔性制造系统的现代化大型控制系统中常常将多台PLC与计算机联接起来构成多级分布控制系统。在此类系统的构成中,关键问题之一是如何实现PLC与计算机之间的通信。不同系列的PLC与计算机通信方式各不相同,本文以松下公司的FP1系列PLC为对象,分析了通信接口及通信协议,并在Windows 98Se中用Borland C++Bulider 5.0编制了一个简单的通信程序。
2 松下FP1系列PLC与计算机之间的通信接口及通信协议
2.1 通信接口
FP1系列的通信接口采用标准9芯RS232接口,接线如图1所示。
1 PC的RXD端与PLC的TXD端联接,使PC接收到PLC发出的数据。
2 PC的TXD端与PLC的RXD端联接,使PC发出的数据被PLC接收到。
3 PC与PLC的SG端互联,使两者的工作基准地电平相同。
4 PC与PLC的RTS端互联,PC在此引脚发出讯号, 通知
PLC可以向PC发送数据。
5 PC与PLC的CTS端互联,PLC在此引脚发出讯号,通知PLC可以向PC发送数据。
2.2 通信协议
松下FP1系列PLC与计算机之间的通信协议为松下公司专用的MEWTOCOL-COM协议。该协议采用异步通信方式,其波特率有1200、2400、4800、9600、19200、38400、57600、115200bps等多种可选,且报文长度可变可固定。该协议格式分为命令消息Command Message,正常响应消息Response Message-normal,出错响应消息Response Message-error三种。

其中,%为起始符,标记每一帧报文的开始,CR为结束符,标记每一帧报文的结束。
AD为PLC的站地址,为两位16进制数,如00则表示第一台PLC。
#、$、标注该帧报文为何种类型。
Command code为命令代码,如后文的例1中的“RD”,表示读数据区。Response code为响应代码一般返回接收到的命令消息中的命令代码。ErrorH和ErrorL为出错代码,是两位16进制数,可根据其值在协议中查出错误的描述。
Text code为命令参数,如例1命令消息中“D0110501107”,“D”表示数据寄存器,“01105 01107”表示第1105号至1107号,而在例1响应消息中,“6300 4433 0A00”则表示DT1105至DT1107中数据分别为6300、4433、0A00。
BCCH和BCCL为前面字符串的BCC校验码的高、低位,为两位16进制数。其初值为0,然后从起始符开始与该帧报文中每一字节按位进行异或运算得到。
例1:读取DT1105至DT1107中的数据的命令消息如下:
% 01 # RD D01105 01107 57 CR
若DT1105至DT1107中数据分别为6300、4433和0A00,PLC返回的响应消息如下:
% 01 $ RD 6300 4433 0A00 62 CR
3 PC与松下FP1系列PLC通信的WINDOWS编程实现
在本程序中用到了MSCOMM32.OCX控件,该控件可在MS Visual Basic 6.0的光盘中找到,但需注册,安装一遍VB即可解决。
第一步:C++Builder 5.0中导入MSCOMM32.OCX控件,新建一个Application。在其主窗体中添加一个MSComm控件,命名为MSComm1,并设置其属性值。注意波特率及校验方式要与PLC的设置一致。再添加一个Label控件和一个Button控件,分别命名为Labell和Buttonl。
第二步:在Buttonl的OnClick事件中添加如下代码。
int i
AnsiString outs
Ole Variant buf
outs=″%01#RDD011050110757\r″∥设置命令消息
ifMSComml->PortOpen==falseMSComml->PortOpen=true∥打开端口
buf=outs
MSComml->Output=buf
i=0
whilei<=10000000i++∥延时,等待PLC发回响应消息
outs=″″
buf=MSComml->Input∥接收响应消息
outs=WideStringbuf
ifouts=″″Labell->Caption=outs
else Labell->Cabell->"接收不到";
若想采用其它命令消息,则必须计算其BCC校验码,可采用如下函数实现。
AnsiString BCCProAnsiString ComdMesg

unsigned char bcc
unsigned char*tempc
char ab
AnsiString BccH
AnsiString BccL
AnsiString temp
int bcc-int
int i
temp=ComdMesg
tempc=ComdMesg.c-str
bcc=0
fori=0i< temp.Lengthi++bcc^=tempci
bcc-int=bcc
BccH=bcc-int/16
BccL=bcc-int%16
BccH=IntToHexBccH
BccL=IntToHexBccL
temp=ComdMesg+BccH+BccL+″\r″
return temp

使用这个函数便可将所有你要发送的命令消息自动加上两位16进制BCC码和结束符。
4 结 论
本文所有程序均在Windows 98SeBorland C++Bulider 5.0环境中调试通过,并多次长时间运行测试,以验证其准确性与稳定性,收到了令人满意的效果,通信十分稳定可靠。读者可在本文的基础上,参考松下公司的MEWTOCOL-COM协议,便可轻松实现PC与松下FP1系列PLC的通信,以完成上位机对PLC的监视与控制。
参 考 文 献
1NASI可编程控制器FP系列FP1硬件技术手册.松下电工株式会社,1999
2松下PLC MEWTOCOL-COM通信协议.松下电工株式会社,1999
3范逸之. Visual Basic与RS232串行通讯控制. 中国青
年出版社,2000

友情链接 自助链接 管理页面
top
 
版权所有:东莞智捷电气自动化公司   电话:0769-2723100  网页设计:第三D建站资讯网