当前位置:首页>>基于VC5.0的PC与松下PLC的通讯及其应用

基于VC5.0的PC与松下PLC的通讯及其应用

发布时间:2015-08-26作者:沧海一土

1 引言

    随着PLC应用范围的不断扩大,PLC与PC之间通讯技术的应用需求越来越广泛。通过PLC的编程口进行通讯不仅可以减少系统的本钱及复杂性,同时可以减少PLC方面软件的复杂程度和编程量。本文根据实际工程中的经验进行总结,介绍了利用VC++中MFC实现PC与松下FP0系列PLC编程口进行串行通讯的程序设计基本方法。

2 PC与FP0 PLC之间的通讯协议和接口

    在一个规模较大的纺织产业控制系统中,经常有几十个、几百个甚至更多的测温顺控制对象。即使速度很高的系统,也很难满足要求。为了降低危险,进步可靠性,必须将任务分散,而分散的设备需要通过一定的手段连接起来,其中数据通讯和系统互连是该系统的关键技术之一。松下FP0系列PLC具有较强的通讯功能,可以适合各种产业自动化网络的不同需要, 其中包括以太网协议及通用接口、H型链接通讯系统(H-LINK)、P型链接系统(OPTICAL LINK)、W型链接系统(WIRE-LINK)和C-NET链接系统,还有远程I/O通讯系统(REMOTE I/O),它们通过RS-485、RS-232或专用网络插座在PLC-PLC、计算机与PLC之间进行通讯。但是要利用这些系统协议,必须采用专用高级通讯单元,这势必增加系统的本钱。为了节省开支,纺织产业系统可以直接采用松下电工最基础的专用通讯协议-NEWTOCOL。

    NEWTOCOL分为两部分:一是NEWTOCOL-COM,即关于计算机通讯的协议;二是NEWTOCOL-DATA,即关于数据传输协议。

    2.1  NEWTOCOL-COM的帧格式

    (1) 命令发送帧

    (2) 正确响应帧
    img]周奉磊-b2.jpg border=0>

    (3) 错误响应帧
    img]周奉磊-b3.jpg border=0>

    2.2  NEWTOCOL-DATA的帧格式

    (1) 命令发送帧
    img]周奉磊-b4.jpg border=0>

    (2) 正确响应帧
    img]周奉磊-b5.jpg border=0>

    (3) 错误响应帧
    img]周奉磊-b6.jpg border=0>

    通过该协议可更加快捷地传送系统所需的数据,设置PLC所需的参数。FP0 PLC与上位机链接通讯协议如图1所示:

图1 FP0 PLC 与上位机链接通讯协议

3 通讯程序设计

    在PC机和松下FP0系列PLC进行串行通讯时,由于PC与PLC之间的信息传送是通过PLC编程口实现的,采用的是FP0 PLC专用协议通讯指令。因此,在PC编程方面需要严格的遵循PLC编程口通讯协议。具体实现介绍如下:

    3.1 串口设备的打开

    在Visual C++中,利用MFC CFile类来实现串行通讯。这种通讯方式与访问磁盘普通文件没有太大不同。打开串口设备需作以下操纵:

    CFile file;
    CFileException e
    File.open(
    portName,      // example "com1",com2"
    CFile::modeReadWrite,
    &e);

    3.2 串口设备的初始化

    串行端口创建时,必须对其进行设置以匹配与其对话的设备。FP0系列PLC的波特率为固定的9600bps,奇偶校验采用奇校验,1位停止位,8位数据位。一般地,可用如下程序设置它们:

    DCB dcb;
    ::GetCommState((HANDLE)file.m_hFile,&dcb);
    dcb.BaudRate=9600;
    dcb.StopBits=1;
    dcb.ByteSize=8;
    dcb.Parity=1;
    ::setCommState((HANDLE)file.m_hFile,&dcb);

    为了更好的控制端口可以利用SetCommTimeouts()函数打开或封闭串口超时功能,具体程序如下:

    COMMTIMEOUTS cto;
    ::GetCommTimeouts((HANDLE)file.m_hFile,&ct0);
    cto.ReadIntervalTimeout=0;
    cto.ReadTotalTimeoutMultiplier=0;
    cto.ReadTotalTimeoutConstant=0;
    cto.WriteTotalTimeoutMultiplier=0;
    cto.WriteTotalTimeoutConstant=0;
    ::SetCommTimeouts((HANDLE)file.m_hFile,&cto);

    3.3 PC与FP0 PLC之间的通讯实现

    在FX2系列PLC与PC机的通讯中,数据是以帧为单位发送和接收的。其中字符ENQ(0x05)、ACK(0x06)、和NAK(0x15)作为单个字符,可以构成单字符帧。若通讯正常,则应答字符$;若通讯有错,则应答字符!。其余的字符在发送和接收时必须用字符%和CR分别表示该字符帧的起始标志和结束标志,否则将构成帧错。一个多字符帧由%、地址码、站号、数据、和校验以及CR五部分组成,其中和校验值是其初值为0,然后从起始符开始与该帧报文中每一字节按位进行异或运算得到。

    (1) 应用MFC CFile类实现对串口设备的读、写操纵的代码

    //读串口
    char m_Readbuff[UINT n];
    uint nByte=file.read(
    &m_ReadBuff,      //缓存储冲
    UINT nCount //所读字节数
    //写串口
    char m_WriteBuff[UINT n];
    file.Write(
    &m_WriteBuff,     //存储缓冲
    UINT nCount      //缩写字节数
    );

    (2) PC机实现与PLC通讯的程序代码

    char m_WriteBuff[10];
    char m_ReadBuff[10];
     UINT nByte=0;
      m_WriteBuff[0]=0x05    //ENQ
    //写串口
    file.Write(
    m_WriteBuff,     //存储缓冲
        //所读字节数
    );
    //读串口
    nByte=file.Read(
    m_ReadBuff,     //存储缓冲
    //所写字节数
    );
    switch (m_ReadBuff[0])
      {
    case : 0x24    //应答$,通讯正常
      //添加相关处理代码
    break;
    case : 0x21 
      //应答!,通讯故障
      //添加相关处理代码
     break;
      }

    3.4 PC对PLC内各软设备进行读、写操纵

    FP0系列PLC的所有开关量输进、输出以及各软设备对PC机都是透明的,只有当PLC的计时器和计数器的设定值采用常数时,以及文件寄存器内的数据,PC机不能对其进行读写。不论PLC处在“STOP”状态还是“RUN”状态,PC机都可以按1.1所列的命令对PLC进行读、写操纵。这里仅给出PC机与PLC通讯所用多字符帧的格式及简单示例,实际应用时只需将多字符帧中的字符ASCII码(十六进制)按顺序赋予相应的字符数组m_WriteBuff,m_ReadBuff,即可实现对PLC的操纵。

    (1) 读操纵
    img]周奉磊-b7.jpg border=0>

   
    (2) 写操纵

    微机对PLC软设备进行写操纵的多字符帧的编制格式如下表所示: img]周奉磊-b8.jpg border=0>

   
    PLC接收到写操纵多字符帧格式后,若接收到数占有效,则应答$(0x24),该字符帧如下表所示: img]周奉磊-b9.jpg border=0>

   
    若接收数据无效或和校验出错,则应答字符!(0X21),该字符帧如下表所示: img]周奉磊-b10.jpg border=0>
   
    3.5  封闭串口设备

    PC机与PLC通讯完毕后,PC机封闭一个已打开的串口设备只需如下一条语句即可完成。

    File.Close();

4 应用实例

    以上介绍了利用MFC实现PC与FX2系列PLC串行通讯的基本方法及其关键部分程序代码。上面的程序代码为基础,不仅可以编制用于以PLC为现场主控机的监控系统软件,而且可编制出微机与其他具有串行通讯能力设备的串行通讯程序。本人已成功使用VC5.0实现PLC与上位机之间的通讯,并应用于青岛大学纺织服装学院开发的掉毛量测试仪。该测试仪控制系统采用PLC 控制步进电机方案,有效地进步了工作效率,使操纵职员通过PC的显示可以监测并控制仪器的工作。兔毛织物掉毛量测试仪已可靠运行一年,实践证实它具有控制灵活、使用简单、功能扩充方便、抗干扰性能强的特点。没有出现任何通讯连接的题目。

公司简介

宜科(天津)电子有限公司是中国工业自动化的领军企业,于2003年在天津投资成立,销售和服务网络覆盖全国。作为中国本土工业自动化产品的提供商和智能制造解决方案的供应商,宜科在汽车、汽车零部件、工程机械、机器人、食品制药、印刷包装、纺织机械、物流设备、电子制造等诸多领域占据领先地位。宜科为智慧工厂的整体规划实施提供自系统层、控制层、网络层到执行层自上而下的全系列服务,产品及解决方案涵盖但不局限于云平台、MES制造执行系统、工业现场总线、工业以太网、工业无线通讯、机器人及智能设备组成的自动化生产线、自动化电气控制系统集成、智能物流仓储系统等,以实现真正智能化的生产制造,从而带来生产力和生产效率的大幅提升,以及对生产灵活性和生产复杂性的管理能力的大幅提升。多年来,宜科以创新的技术、卓越的解决方案和产品坚持不懈地为中国制造业的发展提供全面支持,并以出众的品质和令人信赖的可靠性、领先的技术成就、不懈的创新追求,在业界独树一帜。帮助中国制造业转型升级,加速智能制造进程,成为中国工业4.0智慧工厂解决方案当之无愧的践行者。

更多详情>>

联系我们

  • 联系人:章清涛
  • 热线:18611695135
  • 电话:
  • 传真:
  • 邮箱:18210150532@139.com

Copyright © 2015 ilinki.net Inc. All rights reserved. 智汇工业版权所有

电话:010-62314658 邮箱:service@ilinki.net

主办单位:智汇万联(北京)信息技术有限公司

京ICP备15030148号-1