用VB6.0实现PC机与三菱FX2n系列PLC编程口的通信 |
2013-01-17 10:48 作者:华 健 王国强 来源:硅谷网-《硅谷》杂志 HV: 编辑: 【搜索试试】
|
|
据《硅谷》杂志2012年第21期刊文称,介绍三菱FX2n系列PLC编程口串口通信的连接、通信协议、读/写命令和格式,用VB6.0实现读/写PLC数据寄存器的方法。
关键词:PC机;PLC;串口通信;VisualBasic6.0
0引言
三菱公司的FX2n系列PLC(可编程控制器)具有可靠性高、抗干扰能力强、使用方便等特点,广泛应用于工业控制和数据采集等场合,由于PLC本身不具有显示和直接操作的功能,在使用过程中,要监视PLC内部的运行状况和数据,可选用人机界面或组态软件,虽然它们使用方便、直观,但价格昂贵;PC机的数据处理、数据保存,报表打印等功能是FX2nPLC所不具有的,在PC机上我们用微软公司VisualBasic6.0的通信控件MSCOMM.OCX实现读取和修改PLC内部数据的功能,再利用Access2003关系数据库系统保存采集的数据和PLC的运行参数。
要实现PC机与FX2nPLC的串口通信,有专用的FX2n-232-BD通讯模块,而三菱FX2n系列PLC自身所带的编程口在完成下载程序后就处于闲置状态,因此我们用编程口来实现PC机与FX2nPLC的串口通信。
1通信的硬件连接
三菱FX2n系列PLC的编程口是RS-422接口,PC机的串口通信口是RS-232接口,两者不能直接连接,要用三菱公司的SC-09适配电缆才能实现串口通信。
2三菱FX2nPLC的通信协议
通信协议采用三菱FX2n系列PLC编程口专用通信协议,PC机向PLC发送读/写命令,PLC接受命令和向PC机传送数据。
1)数据传输格式。
三菱FX2n系列PLC采用异步格式,有1位起始位,7位数据位,1位奇偶校验位和1位停止位,波特率位9600bit/s,字符为ASCII码。
2)通信命令。
三菱FX2n系列PLC有4条通信命令(CMD),分别是读命令、写命令、强制通命令、强制断命令,表1中,X为输入继电器、Y为输出继电器、M为辅助继电器、S为状态寄存器、T为时间寄存器、C为计数器、D为数据寄存器。
表1三菱FX2n系列PLC通信命令表
命令 命令码(ASCII) 目标软元件 功能
读命令 30H X,Y,M,S,T,C,D 读软元件状态、数据
写命令 31H X,Y,M,S,T,C,D 把数据写入软元件
强制通命令 37H X,Y,M,S,T,C 强制某位ON
强制断命令 38H X,Y,M,S,T,C 强制某位OFF
3)控制字符。
PC机与三菱FX2n系列PLC的串行通信时,数据是以帧为单位发送和接受的,控制字符ENQ(05H)、ACK(06H)、NAK(15H)可以单独构成字符帧,其余的字符帧在发送或接受时必须用控制字STX(02H)和ETX(03H)分别作为该帧的起始标志和结束标志,各控制字符的含义如表2所示。
表2控制字符意义
控制字符 ASCII码 含义
ENQ 05H PC机向PLC发出请求
ACK 06H PLC应答接受“正确”
NAK 15H PLC应答接受“出错”
STX 02H 信息帧开始标志
ETX 03H 信息帧结束标志
4)报文格式。
①PC机向PLC发送“读命令”报文格式如下:
STX CMD 数据段 ETX SUMH SUML
其中,STX为02H,表示报文信息开始;ETX为03H,表示报文信息结束;CMD为30H,表示是读命令;SUMH、SUML为和校验码,是从CMD到ETX的所有字符的ASCII码十六进制相加和的最低两位数,数据段的格式如下:
字节1~4 字节5~6
软元件首地址 读字节数
PLC接受到读命令后,向PC机发送数据,报文格式如下:
STX 数据段 ETX SUMH SUML
其中,数据段是n个数据,一个数据占两个字节,分高位和低位,格式如下:
第1数据 第2数据 … 第n数据
高位 低位 高位 低位 高位 低位 高位 低位
②PC机向PLC发送“写命令”报文格式如下:
STX CMD 数据段 ETX SUMH SUML
其中,STX为02H,表示报文信息开始;ETX为03H,表示报文信息结束;CMD为31H,表示是写命令;SUMH、SUML为和校验码,是从CMD到ETX的所有字符的ASCII码十六进制相加和的最低两位数,数据段的格式如下:
字节1~4 字节5~6 第1数据 第2数据 … 第n数据
软元件首地址 写字节数 高位 低位 高位 低位 高位 低位 高位 低位
PLC接受到写命令后,向PC机发送控制字符ACK或NAK,作为回答。
5)三菱FX2n系列PLC的数据寄存器(D)是数据处理用的数值存储元件,用于存放A/D模块采集的数据和一些控制参数。每一个数据寄存器都是16位的二进制数,最高位是符号位,最高位为0时表示正数,为1时,表示负数,存放时占用两个字节:低位在前,高位在后。
3用VB6.0实现读/写PLC的数据
VB6.0的MSCOMM.OCX控件可以实现与PLC的串口通信,读取FX2nPLC数据寄存器中的采样数据,修改FX2nPLC数据寄存器中的控制参数,并使用Access2003保存这些数据。
3.1读取FX2nPLC数据寄存器的数据
首先PC机向PLC发送“读命令”报文,PLC接受后先判断报文是否正确,如果报文正确就向PC机发送数据寄存器中的n个数据;当MSCOMM控件的接受缓冲器达到n个数据后,取出数据段的第1个数据,有二个字节,是4位十六进制数,先把它变成16位带符号的二进制数,再转换成十进制数后保存到变量;然后取出第2个数据,转换成十进制数后保存,直到第n个数据。
3.2修改FX2nPLC数据寄存器的数据
首先将输入框中十进制的数据转换成16位二进制数,再变成二个字节的4位十六进制数,加上数据寄存器的首地址,组成“写命令“的报文发送给PLC,然后等待PLC发送控制字符,当PLC返回的字符是“ACK”时,表示写入正确,数据修改成功。
3.3读/写FX2nPLC数据寄存器首地址的计算:
地址算法:address=address*2+1000h,再转换成ASCII码。
在PC机发送的报文中,和校验码SUMH、SUML是由通信命令(CMD)、数据段、结束标志(ETX)的所有字符的ASCII码十六进制相加和的最低两位数,可以通过计算得到,不能算错。
4结束语
用PC机和PLC组成的上、下位的监控系统在工业控制和监控中应用十分广泛,本文介绍的PC机与三菱FX2n系列PLC编程口的串口通信,不要增加任何串口设备,降低了成本;用VB6.0作为开发工具实现通信和数据保存,简单方便,性能稳定,具有一定的实用价值。
作者简介:
华健(1962-),男,江苏苏州人,工程师,研究方向:计算机维护、网络设施维护。 |
|
|
|
【对“用VB6.0实现PC机与三菱FX2n系列PLC编程口的通信”发布评论】 |
版权及免责声明:
① 本网站部分投稿来源于“网友”,涉及投资、理财、消费等内容,请亲们反复甄别,切勿轻信。本网站部分由赞助商提供的内容属于【广告】性质,仅供阅读,不构成具体实施建议,请谨慎对待。据此操作,风险自担。
② 内容来源注明“硅谷网”及其相关称谓的文字、图片和音视频,版权均属本网站所有,任何媒体、网站或个人需经本网站许可方可复制或转载,并在使用时必须注明来源【硅谷网】或对应来源,违者本网站将依法追究责任。
③ 注明来源为各大报纸、杂志、网站及其他媒体的文章,文章原作者享有著作权,本网站转载其他媒体稿件是为传播更多的信息,并不代表赞同其观点和对其真实性负责,本网站不承担此类稿件侵权行为的连带责任。
④ 本网站不对非自身发布内容的真实性、合法性、准确性作担保。若硅谷网因为自身和转载内容,涉及到侵权、违法等问题,请有关单位或个人速与本网站取得联系(联系电话:01057255600),我们将第一时间核实处理。
|
|