实现计算机与三菱PLC的通信.docx

上传人:b****2 文档编号:2249906 上传时间:2023-05-03 格式:DOCX 页数:11 大小:260.92KB
下载 相关 举报
实现计算机与三菱PLC的通信.docx_第1页
第1页 / 共11页
实现计算机与三菱PLC的通信.docx_第2页
第2页 / 共11页
实现计算机与三菱PLC的通信.docx_第3页
第3页 / 共11页
实现计算机与三菱PLC的通信.docx_第4页
第4页 / 共11页
实现计算机与三菱PLC的通信.docx_第5页
第5页 / 共11页
实现计算机与三菱PLC的通信.docx_第6页
第6页 / 共11页
实现计算机与三菱PLC的通信.docx_第7页
第7页 / 共11页
实现计算机与三菱PLC的通信.docx_第8页
第8页 / 共11页
实现计算机与三菱PLC的通信.docx_第9页
第9页 / 共11页
实现计算机与三菱PLC的通信.docx_第10页
第10页 / 共11页
实现计算机与三菱PLC的通信.docx_第11页
第11页 / 共11页
亲,该文档总共11页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

实现计算机与三菱PLC的通信.docx

《实现计算机与三菱PLC的通信.docx》由会员分享,可在线阅读,更多相关《实现计算机与三菱PLC的通信.docx(11页珍藏版)》请在冰点文库上搜索。

实现计算机与三菱PLC的通信.docx

实现计算机与三菱PLC的通信

Vb6.0实现计算机与三菱PLC的通信

  来源:

摘要:

本文介绍了VB进行串口通信的各种基本方式和三菱可编程控制器之间的通信的程序设计,重点介绍了利用MSCOMM.OCX进行串行通信的设计方法。

关键词:

串行通信,   PLC,  VisualBasic6.0

Abstract:

DescribesallkindsofbasicserialportcommunicationmethodsusingVisualBasic6.0anddesignoffreeportcommunicationprogramofMITSUBISHPLC,furthermoresetfocusonthedesigningmethodofserialportcommunicationthroughdynamiclinkedlibraryinVisualBasic6.0

KeyWords:

Serialportcommunication,PLC,VisualBasic6.0

 

一、引言

   在工业生产中,人们常常面临着数据采集与管理。

作为工厂自动化的三大支柱可编程控制器PLC(ProgrammableLogicController),由于其安全可靠,广泛的用于数据采集与控制。

生产过程中,要监视PLC内部的数据与运行状况,选用市场上的人机界面或组态软件,虽然功能丰富,但大都价格昂贵,在一些中小规模的生产场合,人们希望能自己用高级语言开发一个简易实用的通信程序。

微软公司推出的VisualBasic6.0,开发串行通信程序时,有两种方法,一种是用WindowsAPI函数,另一种是用VB支持的通信控件MSCOMM.OCX。

利用WindowsAPI函数是通过调用读写等函数来操作串口。

两种比较,使用MSCOMM.OCX控件编程方便,具有更完善的发送和接收功能。

这里采用了MSCOMM.OCX控件。

本文根据杭州某包装材料公司原料配料控制系统为背景,简述实现计算机与三菱FX系列PLC通信的实现过程。

 

二、硬件与选型

日本三菱公司是国际著名的工厂自动化设备制造商,工业可编程控制器在国内市场占有率一直保持前列。

项目选用三菱FX2N-64MR型PLC,SC-09电缆作为计算机与PLC通信的连线。

连接电缆的9针端连接在计算机串口上,另一端连接在PLC的RS-422编程口。

系统框图如图一所示:

                    

                          

           计算机                         三菱PLC

                         图一

三、软件编程

   软件设计主要包括PLC梯形图设计和计算机VB程序、数据库设计。

计算机操作系统为Windows98,编程语言用VisualBasic6.0,数据库选用Access97,梯形图程序在三菱PLC编程软件GPPWIN软件环境设计。

上位机软件实现计算机对PLC内部数据读取、写入参数和保存数据到数据库。

三菱FX2N型PLC编程口通信协议如下:

命令

命令字

控制元件

    备注

读元件

0

X,Y,M,S,T,C,D

读字/位元件状态

写元件

1

X,Y,M,S,T,C,D

写字/位元件状态

置位

7

X,Y,M,S,T,C

位元件置位

复位

8

X,Y,M,S,T,C

位元件复位

     通信格式:

 起始符

命令字

首地址

数据区

结束符

和校验

     波特率9600,偶校验,8位数据位,一位停止位。

  在新建工程的表单上添加MSCOMM.OCX控件,初始化程序:

    PrivateSubForm_Load()

    MSComm1.CommPort=1'选择COM1口

    MSComm1.Settings="9600,e,7,1" 

    EndSub

系统参数主画面如下图所示:

 

                          图二

   数据读取子程序:

PublicFunctionGetData(ByValStartAddressAsString,ByValGetBytesAsInteger,ByValHex_BytesAsString)AsString

 MSComm1.InputLen=GetBytes*2+4

 MSComm1.Output=STX+CMD_Read+StartAddress+Hex_Bytes+ETX+GetSumChk(CMD_Read+StartAddress+Hex_Bytes+ETX)

  ‘传送数据组成:

起始符+命令+首地址+数据位+结束符+和检验码

 GetData=MSComm1.Input

 MSComm1.InBufferCount=0

 MSComm1.InputLen=0

EndFunction

   如需读取数据,通过调用GetData子程序。

   参数设置程序可参考读取子程序,只是改变命令而已。

Access97数据库中包含三个表单,包括参数表、记录表、报警记录表。

通过如下子程序是将实际称量值(记录表)更新到数据库:

 

PrivateSubSaveData()

DimiAsInteger

DimvalidAsBoolean

OnErrorResumeNext

valid=True

Data1.Recordset.AddNew

Data1.Recordset.Fields("dtime")=TimeSerial(OnHour,OnMinute,OnSecond)

Data1.Recordset.Fields("systime")=Time     ‘系统时间

Data1.Recordset.Fields("get_xl")=LF

(1)     ‘小料当前称量值

Data1.Recordset.Fields("get_fjs")=LF

(2)      ‘方解石当前称量值

Data1.Recordset.Fields("get_cs")=LF(3)     ‘长石当前称量值

Data1.Recordset.Fields("get_sys")=LF(4)     ‘石英砂当前称量值

Data1.Recordset.Fields("get_cj")=LF(5)       ‘纯碱当前称量值

OnErrorResumeNext

Data1.Recordset.Update                   ‘更新数据库记录

Data1.Recordset.MovePrevious

EndSub

程序中,LF(i)变量对应为图二系统参数表单中实称值。

保存参数子程序只是对数据库操作,程序结构可参考以上子程序。

上位机与PLC通信质量的好坏,对系统的安全可靠运行影响极大,因此,编写程序时,除了在两者之间的通信协议上保持绝对一致和采取相应的容错技术外,还要考虑系统的整体容错技术,防止系统的不正常。

四、结束语

   串行通信是目前计算机与其他设备之间通信广泛采用的方式之一,传送数据准确,程序稳定运行是系统开发的主要目的。

本设计中充分利用计算机和PLC的资源,在几乎不增加设备开支的情况下成功的实现上位机与PLC之间的通信。

 

参考文献

1、美国·MicrosoftVisalBasic6.0Controlsreference控件参考手册

2、舒继武·VisualBasic中通信及应用·微型机与应用,1996;

3、陈小欧·Windows环境下串口异步通信程序设计·电子技术应用

利用VB6.0实现PC与三菱PLC的通信

哈尔滨李松颖

本文介绍的PC与三菱FX系列PLC通信,是通过PLC的编程口与PC机的串口进行的,采用SC-09编程电缆作为计算机与PLC通信的连线。

电缆的9芯D形插头连接在计算机串口上,另一端连接PLC的RS-422编程口。

编写PC的通信程序可采用汇编语言、各种高级语言,也可以采用工控组态软件或直接采用PLC厂家的通信软件。

本文采用VB6.0软件,它必须依据所连接PLC的通信规程来编写通信协议,所以先简单介绍FX系列PLC的通信协议。

一、FX系列PLC的通讯协议

1.数据传输格式

FX系列PLC采用异步格式,由1位起始位、7位数据位、l位偶校验位及l位停止位组成,波特率为9600bps,字符为ASCiⅡ码。

2.通信命令

FX系列PLC有4条通信命令,即读命令、写命令、强制通命令、强制断命令。

表1中,X为输入继电器;Y为输出继电器;M为辅助继电器;S为状态元件;T为定时器;C为计数器;D为数据寄存器。

3.通信控制字符

FZ系列PLC采用面向字符的传输规程,用到5个通信控制字符,如表2所示。

4.报文格式

PC机向PLC发送的报文格式如表3所示。

其中,STX为开始标志;ETS为结束标志;CMD为命令的ASCⅡ码:

SUMH、SUML为从CMD到ETX按字节求累加和,溢出不计。

由于每字节十六进制数变为两字节ASCⅡ代码,故校验和为SUMH与SUMI。

PLC向PC机发送的应答报文格式如表4所示。

二、PC通信程序的编写

1.通信口初始化

,MSComm控件简介:

VB带有专门管理串行通讯的MSComm控件。

只需设置几个主要参数就可以实现PLC与PC间的串行通讯。

要完成通信必须设置MSComm的相关属性值,即通信口初始化,其步骤如下:

(1)CommPort:

设置或传回通信连接端口代号。

(2)Settings:

设置初始化参数。

以字-符串的形式设置或传回连接速度、奇偶校验、数据位、停止位等4个参数。

(3)PortOpen:

设置或传回通信连接端口的状态。

(4)Input:

从输入寄存器传回并移除字符。

(5)Output:

将一个字符串写入输出寄存器。

(6)InputLen:

指定由串行端口读入的字符串长度。

(7)InBufferCount:

传回在接收寄存器中的字符数。

2.通讯程序举例

首先,在窗体开始设计之前,添加MSComm控件和按钮、文本框、标签等。

(1)PC从PLC中读取数据

假设PC要从PLC中读入从D123开始的4个字节的数据(占用两个数据寄存器:

D123、D124),其报文如表5所示。

根据三菱FX系列PLC编程口通信协议,地址算法为

address=address×2+1000h

将地址123转换成十六进制为7Bh,因此首地址为:

address=addressx2+1000h=7Bhx2+1000h=10F6h.

再转换成ASCII码为31h,30h,46h,36h

校验和SUM=30H+31H+30H+46H+36H+30H+34H+03H=174H,溢出部分不计,故SUMH为"7",SUML为"4",相应的ASCⅡ码为“37H”和“34H”。

PLC的应答报文格式如表6所示。

(2)把数据写入PLC

例如,向PLC的D123数据寄存器写入数据“1234ABCD”的报文格式如表7所示

本文介绍的利用VB6.O实现PC与三菱PLC通信的基本方法,切实可行,具有广泛的实用价值。

对初学者很有帮助。

三菱FXPLC与VB通讯的实现

 

 

 

你想了解吗?

滑环电机无刷无环液阻起动器、磁控(磁饱和)软启动器、高低压电机液阻起动器与液阻调速器

编辑:

电机软启动网-电机软起动网  发表时间:

2008-11-10  阅读次数:

246

1.硬件   采用SC-09编程电缆,连接PC串口与PLC编程口实现通讯。

2.PLC编程口的通信协议简介      

       1)、DEVICE READ(读出软设备状态值)计算机向PLC发送:

3.具体程序说明    MSComm控件简介用来提供简单的串行端口通信功能,也可以用来创建功能完备、事件驱动的高级通信工具。

Mscomm控件提供了一系列标准通信命令的使用界面。

使用它可以建立与串行端口的连接,通过串行端口再连接到其它设备(如调制解调器、PLC),发出命令,交换数据,以及监视和响应串行连接中发生的事件和错误。

    数据读与写采用函数input和output 

(1)窗口加载程序    Private Sub Form_Load()     MSComm1.CommPort = 1 ‘选择COM1口     MSComm1.Settings = "9600,e,7,1"     If mscomm1.portopen=false then mscomm1.portopen=true    End Sub 

(2)数据读取子程序:

     Public Function GetData(ByVal StartAddress As String, ByVal GetBytes As     Integer, ByVal Hex_Bytes As String) As String     MSComm1.InputLen = GetBytes * 2 + 4     MSComm1.Output = STX + CMD_Read + StartAddress + Hex_Bytes + ETX + GetSumChk(CMD_Read + StartAddress + Hex_Bytes + ETX)     ‘传送数据组成:

起始符+命令+首地址+数据位+结束符+和检验码     GetData = MSComm1.Input     MSComm1.InBufferCount = 0     MSComm1.InputLen = 0    End Function

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 解决方案 > 解决方案

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2