计算机与松下FP1系列可编程控制器的通信 -PLC技术网(www.plcjs.com)-可编程控制器技术门户


计算机与松下FP1系列可编程控制器的通信 

 (点击题目可以在互联网中搜索该题目的相关内容)
日期:2005-10-28 23:41:41     来源:   作者: 点击:
点击【 大  中  小 】, 可 以 选 择 字 体的大小,以便 你 阅读.
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 
出自:[]
上一篇: 串口通讯的概念及接口电路
下一: 用VC++开发微机与OMRON PLC间的一种通讯程序