您的位置:控制工程论坛网论坛 » PLC与PAC » 计算机与松下FP1系列可编程控制器的通信

218hty

218hty   |   当前状态:在线

总积分:9071  2025年可用积分:0

注册时间: 2006-08-18

最后登录时间: 2019-06-25

空间 发短消息加为好友

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

218hty  发表于 2007/7/11 8:19:48      821 查看 2 回复  [上一主题]  [下一主题]

手机阅读

 

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。

1楼 0 0 回复
  • 218hty

    218hty   |   当前状态:在线

    总积分:9071  2025年可用积分:0

    注册时间: 2006-08-18

    最后登录时间: 2019-06-25

    空间 发短消息加为好友

    218hty   发表于 2007/7/11 6:53:32

    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

    2楼 回复本楼

    引用 218hty 2007/7/11 6:53:32 发表于2楼的内容

  • 钟灵山

    钟灵山   |   当前状态:在线

    总积分:7804  2025年可用积分:0

    注册时间: 2006-12-25

    最后登录时间: 2011-12-24

    空间 发短消息加为好友

    钟灵山   发表于 2007/7/11 8:19:48

    3楼 回复本楼

    引用 钟灵山 2007/7/11 8:19:48 发表于3楼的内容

总共 , 当前 /