1 引言W1WW_P4LCJS_COM-PLC-技.术_网
可编程控制器是一种数字运算操作的电子系统,专为在工业环境下应用而设计。它采用了可编程序的存储器,用于其内部存储程序,执行逻辑运算、顺序控制、定时、计数和算术操作等面向用户的指令,并通过数字式或模拟式输入输出控制各种类型的机械的生产过程。可编程控制器及其有关外部设备,都按易于与工业控制系统联成一个整体、易于扩充其功能的原则设计。早期的PLC以数字量的顺序控制为主,提供了简单的慢速的通信功能(只支持RS232、RS485、多采用Modbus协议),现在的PLC不仅具有逻辑运算、顺序控制、定时、计数和算术操作,而且还具有A/D、D/A转换,数值计算和数据处理等功能。它既可以对开关量进行控制,也可以对模拟量进行控制,随着PLC功能不断扩充,它还有通讯联网功能。本文就是基于松下电工的专门通信协议(MEWTOCOL),用VC++开发的上位机与PLC间的通信。
WWcW_PLCJS_COM-PLC-技.术_网
2 松下电工的专用通信协议MEWTOCOL-COM WWW.PLCJS.COM——可编程控制器技术门户
目前,随着PLC的快速发展,越来越多的PLC生产厂商开发了它与计算机的通信功能(主要是利用计算机串口进行通信),本文是以松下FP系列PLC为例,作详细阐述。在一台计算机于PLC之间的通信中,通信由计算机发动,把命令帧发向PLC,PLC将以响应帧作应答,并执行相应的动作。
WWW_P※LCJS_COM-PLC-)技.术_网
(1) 命令帧格式WWcW_PLCJS_COM-PLC-技.术_网
WW.W_PLCJS_COM-PLC-技.术_网
W1WW_P4LCJS_COM-PLC-技.术_网
其中: %:MEWTOCOL-COM的命令帧开始标志(ASCII码为25H)。WWW_PLCJ-S_COM-PLC-技.术_网(可-编程控-制器技术-门户)
H,L:站地址的高位和低位。WWW_PL※CJS_COM-PLC-技.术_网
#:站号特征码(ASCII码为23H)。WWW_PL※CJS_COM-PLC-技.术_网
发送文本:由命令码和数据组成,其主要命令码如表1所示。——可——编——程——控-制-器-技——术——门——户
BCC:校验码,采用异或校验码,BCC为8位。WWW※PLCJS_COM-PL#C-技.术_网(可编※程控※制器技术门户)
(2) 响应帧格式WWW_PL※CJS_COM-PLC-技.术_网
当主站发来命令帧之后,从站将以响应帧作应答。响应帧分为2种,若主站命令帧正确无误,则用“正确响应帧”作应答;如果主站命令帧有错误则用“错误响应帧”作应答。这两种应帧格式下。WWW_P※LCJS_CO※M-PLC-技-.术_网
正确响应帧的格式P_L_C_技_术_网——可——编——程——控-制-器-技——术——门——户
WWW_PLC※JS_COM-PmLC-技.术_网
P.L.C.技.术.网——可编程控制器技术门户
其中 %,H,L,BCC,CR含义与命令帧相同。WW.W_PLC※JS_C,OM-PL,C-技.术_网
$:正确响应的标志(ACSII码为24H)。P_L_C_技_术_网——可——编——程——控-制-器-技——术——门——户
响应文本:应当按照命令帧要求及协议规定组织。plcjs.技.术_网
错误响应帧的格式WWW_P※LCJS_COM-PLC-)技.术_网
WWW_PL※CJS_COM-PLC-技.术_网
WWW_PLC※JS_COM-PmLC-技.术_网
其中%,H,L,BCC,CR含义与命令帧相同。WW.W_PLCJS_COM-PLC-技.术_网
!:错误响应帧的标志(ACSII码为21H)。WWW_P※LCJS_COM-PLC-)技.术_网
错误代码:对于命令及数据传送中的各种错误均规定为代码以识别。W1WW_P4LCJS_COM-PLC-技.术_网
(3) 命令码: MEWTOCOL-COM协议的命令码汇总如表1所示WWW_PLCJS※COM-PLC-技×术_网(可编程控※制器技术门户)
WWW_PL※CJS_COM-PLC-技.术_网
WWW※PLCJS_COM-PL#C-技.术_网(可编※程控※制器技术门户)
(4)常用的命令与格式WWW_PLCJS※COM-PLC-技×术_网(可编程控※制器技术门户)
a)单接点的读WWW_PLCJS※COM-PLC-技.术_网(可※编程控※制器技术门户)
plcjs.技.术_网
WWW.PLCJS.COM——可编程控制器技术门户
错误响应帧与单接点的相同。
WWcW_PLCJS_COM-PLC-技.术_网
WWW※PLCJS_COM-PL#C-技.术_网(可编※程控※制器技术门户)
3 用Visual C++6.0编写串行通信程序WWW_PLCJS※COM-PLC-技.术_网(可※编程控※制器技术门户)
(1) MSComm控件plcjs.技.术_网
串行通讯编程基本过程:设置初始化并打开串行口—配置串口—双向传输数据—校验—释放串口。本文的上位机通信程序是用Visual C++6.0编写的,主要是利用VC++中的一个通信控件MSComm来现的。 该控件屏蔽了通讯过程中的底层操作,程序员应用时只需设置,监控MSComm控件的属性和事件即可完成对串口的初始化和数据的输入输出工作。MSComm控件的主要属性如下:WW.W_PLCJS_COM-PLC-技.术_网
* CommPort :设置并返回通讯端口号,设计时端口号可设为1到16的任何数(默认值为1)。如:SetCommPort(1);即设置当前通讯端口为COM1。——可——编——程——控-制-器-技——术——门——户
* Settings:设置并返回波特率,奇偶校验,数据位长度,停止位长度。WWW_PLCJS_COM-PLC-技.术_网
如:SetSettings(LPCTSTR String);String是一个包括四部分的字符串:第一部分:波特率;P_L_C_技_术_网——可——编——程——控-制-器-技——术——门——户
第二部分:奇偶校验,N表示不校验,E表示偶校验,O表示奇校验,S表示空格校验,M表示符号校验; WWW_PL※CJS_COM-PLC-技.术_网
第三部分:数据为长度,其可选值为4,5,6,7,8;WWW_P※LCJS_CO※M-PLC-技-.术_网