用户登陆 用户注册
您的位置:首页> 技术文章>内容正文
计算机与松下FP1系列可编程控制器的通信
[正文]:计算机与松下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的监视与控制。



网站首页 培训课程 维修指南
技术文章 家电专栏 供应信息
求购信息 培训资讯 展会信息
电脑专栏 教程下载 资料下载
常用软件 PLC教程 PLC资料
变频伺服 低压电器 维修资料
人机界面 自控仪表 工控机类
文章标题: 搜文章
中国工控资源网手机版 2012
电话:010-67577139 13811659603
培训咨询QQ:657167934 471895637 销售咨询QQ:623769457
联系邮箱:zggkzyw@163.com
 京ICP备11002135号
报时(2026-04-06 00:47:59) 流量统计