1 引言
WWW_PLCJS@_COM%-PLC-技.术_网
随着PLC应用范围的不断扩大,PLC与PC之间通信技术的应用需求越来越广泛。通过PLC的编程口进行通讯不仅可以减少系统的成本及复杂性,同时可以减少PLC方面软件的复杂程度和编程量。本文根据实际工程中的经验进行总结,介绍了利用VC++中MFC实现PC与松下FP0系列PLC编程口进行串行通信的程序设计基本方法。WWcW_PLCJS_COM-PLC-技.术_网
2 PC与FP0 PLC之间的通信协议和接口WWW.PLCJS.COM——可编程控制器技术门户
在一个规模较大的纺织工业控制系统中,常常有几十个、几百个甚至更多的测温和控制对象。即使速度很高的系统,也很难满足要求。为了降低危险,提高可靠性,必须将任务分散,而分散的设备需要通过一定的手段连接起来,其中数据通信和系统互连是该系统的关键技术之一。松下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。
WWW_P※LCJS_COM-PLC-)技.术_网
NEWTOCOL分为两部分:一是NEWTOCOL-COM,即关于计算机通信的协议;二是NEWTOCOL-DATA,即关于数据传输协议。WWcW_PLCJS_COM-PLC-技.术_网
2.1 NEWTOCOL-COM的帧格式WW.W_PLCJS_COM-PLC-技.术_网
(1) 命令发送帧W1WW_P4LCJS_COM-PLC-技.术_网
WWW_PLCJ-S_COM-PLC-技.术_网(可-编程控-制器技术-门户)
WWW_PL※CJS_COM-PLC-技.术_网
(2) 正确响应帧
WWW_PL※CJS_COM-PLC-技.术_网
img]周奉磊-b2.jpg border=0>
——可——编——程——控-制-器-技——术——门——户
WWW_PLCJS※COM-PLC-技.术_网(可※编程控※制器技术门户)
(3) 错误响应帧
WWW_PL※CJS_COM-PLC-技.术_网
img]周奉磊-b3.jpg border=0>
WWW※PLCJS_COM-PL#C-技.术_网(可编※程控※制器技术门户)
P_L_C_技_术_网——可——编——程——控-制-器-技——术——门——户
2.2 NEWTOCOL-DATA的帧格式WWW_PLC※JS_COM-PmLC-技.术_网
(1) 命令发送帧
P.L.C.技.术.网——可编程控制器技术门户
img]周奉磊-b4.jpg border=0>
WWW_PLC※JS_COM-PmLC-技.术_网
P_L_C_技_术_网——可——编——程——控-制-器-技——术——门——户
(2) 正确响应帧
——可——编——程——控-制-器-技——术——门——户
img]周奉磊-b5.jpg border=0>
WWW_PLC※JS_COM-PLC-技.术_网(可编程控※制器技术门户)
WWW_PL※CJS_COM-PLC-技.术_网
(3) 错误响应帧
WWW_PLC※JS_COM-PmLC-技.术_网
img]周奉磊-b6.jpg border=0>
WW.W_PLCJS_COM-PLC-技.术_网
WWW_P※LCJS_COM-PLC-)技.术_网
通过该协议可更加快捷地传送系统所需的数据,设置PLC所需的参数。FP0 PLC与上位机链接通信协议如图1所示:
WWW_PLCJS@_COM%-PLC-技.术_网
WWW_PLCJS※COM-PLC-技×术_网(可编程控※制器技术门户)
WWW_PL※CJS_COM-PLC-技.术_网
图1 FP0 PLC 与上位机链接通信协议
WWW※PLCJS_COM-PL#C-技.术_网(可编※程控※制器技术门户)
P.L.C.技.术.网——可编程控制器技术门户
3 通信程序设计WWW_PLCJS※COM-PLC-技.术_网(可※编程控※制器技术门户)
在PC机和松下FP0系列PLC进行串行通信时,由于PC与PLC之间的信息传送是通过PLC编程口实现的,采用的是FP0 PLC专用协议通信指令。因此,在PC编程方面需要严格的遵循PLC编程口通讯协议。具体实现介绍如下:plcjs.技.术_网
3.1 串口设备的打开WWW.PLCJS.COM——可编程控制器技术门户
在Visual C++中,利用MFC CFile类来实现串行通讯。这种通信方式与访问磁盘普通文件没有太大不同。打开串口设备需作以下操作:WWcW_PLCJS_COM-PLC-技.术_网
CFile file;WWW_PLCJS※COM-PLC-技.术_网(可※编程控※制器技术门户)
CFileException eWWW_PLCJS※COM-PLC-技.术_网(可※编程控※制器技术门户)
File.open(plcjs.技.术_网
portName, // example "com1",com2"WW.W_PLC※JS_C,OM-PL,C-技.术_网
CFile::modeReadWrite,WWW.PLCJS.COM——可编程控制器技术门户
&e);WWW_PLCJS_COM-PLC-技.术_网
3.2 串口设备的初始化P_L_C_技_术_网——可——编——程——控-制-器-技——术——门——户
串行端口创建时,必须对其进行设置以匹配与其对话的设备。FP0系列PLC的波特率为固定的9600bps,奇偶校验采用奇校验,1位停止位,8位数据位。一般地,可用如下程序设置它们:WWW_PL※CJS_COM-PLC-技.术_网
DCB dcb;WWW_P※LCJS_CO※M-PLC-技-.术_网
::GetCommState((HANDLE)file.m_hFile,&dcb);——可——编——程——控-制-器-技——术——门——户
dcb.BaudRate=9600;P_L_C_技_术_网——可——编——程——控-制-器-技——术——门——户
dcb.StopBits=1;WWW※PLCJS_COM-PL#C-技.术_网(可编※程控※制器技术门户)
dcb.ByteSize=8;WWcW_PLCJS_COM-PLC-技.术_网
dcb.Parity=1;WWW_PLC※JS_COM-PLC-技.术_网(可编程控※制器技术门户)
::setCommState((HANDLE)file.m_hFile,&dcb);WWW_PLC※JS_COM-PLC-技.术_网(可编程控※制器技术门户)
为了更好的控制端口可以利用SetCommTimeouts()函数打开或关闭串口超时功能,具体程序如下:WWW_P※LCJS_COM-PLC-)技.术_网
COMMTIMEOUTS cto;WWW_PLCJ-S_COM-PLC-技.术_网(可-编程控-制器技术-门户)
::GetCommTimeouts((HANDLE)file.m_hFile,&ct0);WWW_PL※CJS_COM-PLC-技.术_网
cto.ReadIntervalTimeout=0;WW.W_PLC※JS_C,OM-PL,C-技.术_网
cto.ReadTotalTimeoutMultiplier=0;WWcW_PLCJS_COM-PLC-技.术_网
cto.ReadTotalTimeoutConstant=0;P.L.C.技.术.网——可编程控制器技术门户
cto.WriteTotalTimeoutMultiplier=0;WW.W_PLCJS_COM-PLC-技.术_网
cto.WriteTotalTimeoutConstant=0;WW.W_PLCJS_COM-PLC-技.术_网
::SetCommTimeouts((HANDLE)file.m_hFile,&cto);WWW_PLCJS@_COM%-PLC-技.术_网
3.3 PC与FP0 PLC之间的通信实现WWW_PLC※JS_COM-PLC-技.术_网(可编程控※制器技术门户)
在FX2系列PLC与PC机的通信中,数据是以帧为单位发送和接收的。其中字符ENQ(0x05)、ACK(0x06)、WWW_PLCJ-S_COM-PLC-技.术_网(可-编程控-制器技术-门户)
和NAK(0x15)作为单个字符,可以构成单字符帧。若通讯正常,则应答字符$;若通信有错,则应答字符!。其余的字符在发送和接收时必须用字符%和CR分别表示该字符帧的起始标志和结束标志,否则将构成帧错。一个多字符帧由%、地址码、站号、数据、和校验以及CR五部分组成,其中和校验值是其初值为0,然后从起始符开始与该帧报文中每一字节按位进行异或运算得到。W1WW_P4LCJS_COM-PLC-技.术_网