你现在位置:首页>技术论文>数据通讯>正文
利用MFC实现PC与三菱PLC编程口的通信技术
日期:2006-4-30 10:18:27 来源:本文摘自《PLC&FA》  
点击: 作者:未知
点击【】放大字体.

1  引言

WWW_PL※CJS_COM-PLC-技.术_网

    可编程序控制器作为当代工业自动化的主要支柱之一,随着其应用范围的不断扩大,PLC与PC之间通信技术的应用也越来越广泛。
WW.W_PLC※JS_C,OM-PL,C-技.术_网

plcjs.技.术_网

    通过PLC的编程口进行通讯不仅可以减少系统的成本及复杂性,同时可以减少PLC方面软件的复杂程度和编程量。
W1WW_P4LCJS_COM-PLC-技.术_网

WW.W_PLC※JS_C,OM-PL,C-技.术_网

    本文根据实际工程中的经验进行总结,介绍了利用VC++中MFC实现PC与三菱FX2系列PLC编程口进行串行通信的程序设计基本方法。
plcjs.技.术_网

2  通信程序设计

WWW_PL※CJS_COM-PLC-技.术_网

    在PC机和三菱FX2系列PLC进行串行通信时,由于PC与PLC之间的信息传送是通过PLC编程口实现的,采用的是PLC专用协议通信指令。因此,在PC编程方面需要严格的遵循PLC编程口通讯协议。具体实现介绍如下。
WWW_P※LCJS_COM-PLC-)技.术_网

WW.W_PLCJS_COM-PLC-技.术_网

2.1 串口设备的打开
WW.W_PLCJS_COM-PLC-技.术_网

在Visual C++中,利用MFC CFile类来实现串行通讯。这种通信方式与访问磁盘普通文件没有太大不同。打开串口设备需作以下操作:
P.L.C.技.术.网——可编程控制器技术门户

CFile file;
WWW_PLCJS_COM-PLC-技.术_网

CFileException e;
WW.W_PLCJS_COM-PLC-技.术_网

file.Open (
WWW_PLCJ-S_COM-PLC-技.术_网(可-编程控-制器技术-门户)

   portName, //example "COM1","COM2"
WWW_PLCJS※COM-PLC-技×术_网(可编程控※制器技术门户)

   CFile::modeReadWrite,  
WWW.PLCJS.COM——可编程控制器技术门户

   &e);
WWW※PLCJS_COM-PL#C-技.术_网(可编※程控※制器技术门户)

WWW.PLCJS.COM——可编程控制器技术门户

2.2 串口设备的初始化
WWW_PLCJS※COM-PLC-技.术_网(可※编程控※制器技术门户)

    串行端口创建时,必须对其进行设置以匹配与其对话的设备。FX2系列PLC的波特率为固定的9600bps,奇偶校验采用偶校验,1位停止位,7位数据位。
P.L.C.技.术.网——可编程控制器技术门户

W1WW_P4LCJS_COM-PLC-技.术_网

一般地,可用如下程序设置它们:
WW.W_PLCJS_COM-PLC-技.术_网

DCB dcb;  
WWW.PLCJS.COM——可编程控制器技术门户

::GetCommState( (HANDLE)file.m_hFile, &dcb );
plcjs.技.术_网

dcb.BaudRate = 9600;
WWcW_PLCJS_COM-PLC-技.术_网

dcb.ByteSize = 7   ;
WWW_PL※CJS_COM-PLC-技.术_网

dcb.StopBits = 1   ;
WWW※PLCJS_COM-PL#C-技.术_网(可编※程控※制器技术门户)

dcb.Parity   = 2   ;
WW.W_PLCJS_COM-PLC-技.术_网

::SetCommState((HANDLE)file.m_hFile, &dcb );
WWW_PLCJS_COM-PLC-技.术_网

为了更好的控制端口可以利用SetCommTimeouts()函数打开或关闭串口超时功能,具体程序如下:
WWW※PLCJS_COM-PL#C-技.术_网(可编※程控※制器技术门户)

COMMTIMEOUTS cto; 
WWW_PLCJS_COM-PLC-技.术_网

::GetCommTimeouts((HANDLE)file.m_hFile,&cto);
P.L.C.技.术.网——可编程控制器技术门户

cto.ReadIntervalTimeout =0;   
P_L_C_技_术_网——可——编——程——控-制-器-技——术——门——户

cto.ReadTotalTimeoutMultiplier =0;  
WWW_PLC※JS_COM-PmLC-技.术_网

cto.ReadTotalTimeoutConstant =0;    
WWW_PLCJS_COM-PLC-技.术_网

cto.WriteTotalTimeoutMultiplier=0;  
WWW_P※LCJS_CO※M-PLC-技-.术_网

cto.WriteTotalTimeoutConstant =0;   
WWW_PLCJS※COM-PLC-技×术_网(可编程控※制器技术门户)

::SetCommTimeouts((HANDLE)file.m_hFile,&cto);
——可——编——程——控-制-器-技——术——门——户

P_L_C_技_术_网——可——编——程——控-制-器-技——术——门——户

WWW_P※LCJS_COM-PLC-)技.术_网

图1      多字符帧的组成
WWW_PLCJS※COM-PLC-技.术_网(可※编程控※制器技术门户)

WW.W_PLCJS_COM-PLC-技.术_网

2.3 PC与PLC间的通信
WWW_PLC※JS_COM-PLC-技.术_网(可编程控※制器技术门户)

    FX2系列PLC与PC机的通信中,数据是以帧为单位发送和接收的。其中字符ENQ(0x05)、ACK(0x06)、和NAK(0x15)作为单个字符,可以构成单字符帧。其余的字符在发送和接收时必须用字符STX(0x02)和ETX(0x03)分别表示该字符帧的起始标志和结束标志,否则将构成帧错。一个多字符帧由字符STX、命令码、数据、字符ETX以及和校验五部分组成,其中和校验值是将命令码到ETX之间的所有字符的ASCII码(十六进制数)相加,取所得和的最低二位数。多字符帧格式如图1所示。表1示出FX2系列PLC与PC通信所用的命令码。
P_L_C_技_术_网——可——编——程——控-制-器-技——术——门——户

WWW_PLCJS※COM-PLC-技.术_网(可※编程控※制器技术门户)

WWW_PLCJ-S_COM-PLC-技.术_网(可-编程控-制器技术-门户)

WWW_PLC※JS_COM-PmLC-技.术_网

    在刚开始通信时,PC机首先要发送一个控制字符ENQ(0x05),去查询PLC是否做好通信准备,同时也检查一下PC机与PLC的连接是否正确。若通讯正常,则应答字符ACK(0x06);若通信有错,则应答字符NAK(0x15)。
W1WW_P4LCJS_COM-PLC-技.术_网

W1WW_P4LCJS_COM-PLC-技.术_网

(1) 应用MFC CFile类实现对串口设备的读写操作的代码
W1WW_P4LCJS_COM-PLC-技.术_网

//读串口
WWW_P※LCJS_COM-PLC-)技.术_网

char m_ReadBuff[UINT n];
WW.W_PLC※JS_C,OM-PL,C-技.术_网

  UINT nByte=file.Read (
——可——编——程——控-制-器-技——术——门——户

&m_ReadBuff,   //buffer to store byte
WW.W_PLC※JS_C,OM-PL,C-技.术_网

UINT nCount     //number of bytes to read
WWW_PLCJS※COM-PLC-技.术_网(可※编程控※制器技术门户)

);
plcjs.技.术_网

//写串口
plcjs.技.术_网

char m_WriteBuff[UINT n];
WWW_PL※CJS_COM-PLC-技.术_网

  file.Write (
W1WW_P4LCJS_COM-PLC-技.术_网

&m_WriteBuff,  //buffer to store byte
WWW_PLCJS@_COM%-PLC-技.术_网

UINT nCount    //number of bytes to write

本新闻共3页,当前在第11 2  3  
WWW_PL※CJS_COM-PLC-技.术_网

评论内容
载入中...
载入中...
P
L
C



|










|


P
L
C









·最新招聘信息
·最新求职信息
·推荐产品
·推荐厂商
·栏目热门排行
·站内热门排行