Vb60+实现计算机与三菱PLC的通信Word文件下载.docx
《Vb60+实现计算机与三菱PLC的通信Word文件下载.docx》由会员分享,可在线阅读,更多相关《Vb60+实现计算机与三菱PLC的通信Word文件下载.docx(12页珍藏版)》请在冰豆网上搜索。
连接电缆的9针端连接在计算机串口上,另一端连接在PLC的RS-422编程口。
系统框图如图一所示:
计算机
三菱PLC
图一
三、软件编程
软件设计主要包括PLC梯形图设计和计算机VB程序、数据库设计。
计算机操作系统为Windows98,编程语言用VisualBasic6.0,数据库选用Access97,梯形图程序在三菱PLC编程软件GPPWIN软件环境设计。
上位机软件实现计算机对PLC内部数据读取、写入参数和保存数据到数据库。
三菱FX2N型PLC编程口通信协议如下:
命令
命令字
控制元件
备注
读元件
X,Y,M,S,T,C,D
读字/位元件状态
写元件
1
写字/位元件状态
置位
7
X,Y,M,S,T,C
位元件置位
复位
8
位元件复位
通信格式:
起始符
首地址
数据区
结束符
和校验
波特率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)
systime"
)=Time
‘系统时间
get_xl"
)=LF
(1)
‘小料当前称量值
get_fjs"
)=LF
(2)
‘方解石当前称量值
get_cs"
)=LF(3)
‘长石当前称量值
get_sys"
)=LF(4)
‘石英砂当前称量值
get_cj"
)=LF(5)
‘纯碱当前称量值
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
"
If
mscomm1.portopen=false
then
mscomm1.portopen=true
End
Sub
(2)数据读取子程序:
Public
Function
GetData(ByVal
StartAddress
As
String,
ByVal
GetBytes
Integer,
Hex_Bytes
String)
String
MSComm1.InputLen
*
2
+
4
MSComm1.Output
STX
CMD_Read
ETX
GetSumChk(CMD_Read
ETX)
‘传送数据组成:
起始符+命令+首地址+数据位+结束符+和检验码
GetData
MSComm1.Input
MSComm1.InBufferCount
0
0
Function
(本资料素材和资料部分来自网络,仅供参考。
请预览后才下载,期待您的好评与关注!
)