首页 上一页 1 2 下一页 尾页

用VB实现S7-300PLC与PC机的普通串口通信 点击:1870 | 回复:25



天下三分明月夜

    
  • 精华:3帖
  • 求助:0帖
  • 帖子:114帖 | 3593回
  • 年度积分:0
  • 历史总积分:7688
  • 注册:2008年3月16日
发表于:2008-05-04 21:23:43
楼主

用VB实现S7-300 PLC与PC机的普通串口通信
The Implement of Communication Between S7-300 PLC
and Personal Computer
(陕西科技大学电气与电子工程学院)李光明 李妍 李茜
Li, Guangming Li, Yan Li, Qian
摘要:现代工业应用中,串行通信是一种使用相当广泛的通信方式,其配线数少,容易实现,长久以来一直被广泛采用。而Visual Basic在开发可视化环境下的监控系统时具有其独特的优势,倍受青睐。本文以VB在西门子PLCS7-300与上位机通信中的应用为例,提出了VB在串行通信中一种新的应用方法。
关键词:Visual Basic;可编程控制器;串行通信;上位机
中图分类号:TP273 文献标识码:A
Abstract: Serial communication is a widely used communication method in the applications of modern industry. It has little wiring and is easy to realize. So it has been used for a long time. Moreover, Visual Basic has its special advantage in development of inspection system in viewable environment. This paper takes the communication between SIMATIC S7-300 and the computer as an example, puts forward the new idea of the usage of Visual Basic in serial communication.
Keywords: Visual Basic; PLC; serial communication; host computer
1.引言
现代工业控制系统通常以PC机为上位机,通过与现场工控设备如PLC等的数据交换与处理,实现对工业生产的过程控制。这就促进了上位机与现场工控设备通信手段的不断发展和完善。
西门子S7-300 PLC因其功能强、速度快、扩展灵活,在广大工业控制领域中占有重要地位。目前,S7-300PLC与PC的通信是通过专用接口卡5611卡和MPI电缆实现的。通信软件为STEP7、PRODAVE_S7_mini以及功能十分强大的WinCC。但是,对于较小的工业控制系统使用这样的软硬件,成本相对昂贵,同时对操作人员的技术要求也较高。本文提出了通过VB自编通信程序,使用普通串口,实现上位机与PLC的自由通信。
2.串行通信
随着科技的发展,RS-232串行通信设备硬件开发实现了集成化、简单化,且使用方便,因而应用越来越广泛。另外,同属串行通信的RS-485网络也被大量应用在工业环境中,而长距离、抗噪声的优点也使其得到了迅速发展。
RS-232协议是控制中经常用到的计算机串口协议,基于物理层,直接与硬件打交道。而VB提供了通信控件,简单易用,使其在开发可视环境下的监控系统时具有独特的优势。
2.1 RS-232串行通信
RS-232串行通信端口是每台计算机上的必要配备,通常有COM1和COM2两个端口。目前RS-232是PC机与通信工业中应用最广泛的一种串行接口,被定义为一种在低速率串行通讯中增加通讯距离的单端标准。RS-232采取不平衡传输方式,即所谓单端通讯。但工业环境通常会有噪声干扰传输线路,在用RS-232串行通信进行传输时经常会受到外界的电气干扰而使信号发生错误。为了解决上述问题,RS-485串行通信方式应运而生了。
2.2 RS-485串行通信
RS-485是一种多发送器的电路标准,允许双导线上一个发送器驱动32个负载设备。负载设备可以是被动发送器、接收器或收发器(发送器和接收器的组合)。RS-485电路允许共用电话线通讯。电路结构是在平衡连接电缆两端有终端电阻,在平衡电缆上挂发送器、接收器、组合收发器。RS-485标准没有规定在何时控制发送器发送获接收机接收数据的规则。MPI接口就是一个RS-485串行通信接口。
3.设计方案
任何指令在传输线路上均以数字形式存在,即一串高低电平。因此,使用VB的通信控件对线路上的数据侦听并进行分析至关重要。
3.1 硬件连接
PLC上的数据传输端口为RS-485串行通信端口,而PC上的COM口为RS-232串行通信端口。为使数据侦听能够进行,需用到RS-232/RS-485转换器ADAM-4520。ADAM-4520转换器能够在配置RS-232的系统上使用RS-485信号。它将RS-232信号转换成独立的RS-485信号,不需要改变计算机的硬件或软件。
数据从同一端口采集,同时经过MPI电缆和ADAM-4520,分别经过5611卡和COM口进入PC。连接方法如图一所示:

3.2 软件实现
3.2.1 MSComm简介
在开发通信程序时,主要用到的是VB的通信控件MSComm。
MSComm (Microsoft Common Control简称MSComm)控件通过串行端口传输和接收数据,为应用程序提供串行通信功能。该控件屏蔽了通信过程中的底层操作,程序员只需设置并监视MSComm控件的属性和事件,结合其它VB提供的控件就可完成对串口的初始化和数据的发送接收。
在本设计中,采用二进制接收方式,即InputMode属性设为ComInputModeBinary;在Settings属性中设置S7-300 PLC与计算机通信的波特率,最低为19200bps。
3.2.2数据监测程序
使用VB通信控件MSComm编写数据监测程序,通过串行端口接收数据并进行分析。程序代码如下:
Private Sub Command1_Click()
If MSComm1.PortOpen = True Then
MSComm1.PortOpen = False
Else
MSComm1.PortOpen = True
End If
End Sub

Private Sub Command2_Click()
End
End Sub

Private Sub Command3_Click()
MSComm1.CommPort = 1 //选择端口号
MSComm1.Settings = "19200,e,8,1" //设定波特率
MSComm1.InputLen = 0
MSComm1.RThreshold = 1
MSComm1.InputMode = comInputModeBinary //二进制接收方式
MSComm1.PortOpen = True
Call MSComm1_OnComm
End Sub

Private Sub MSComm1_OnComm()
Dim arr() As Byte
Dim sent As String
Dim Len_OneTimes As Long
Dim i As Integer
arr = MSComm1.Input
Len_OneTimes = UBound(arr)
For i = 0 To (Len_OneTimes)
sent = sent & Hex(arr(i)) & " "
Next
RichTextBox1.Text = RichTextBox1.Text + sent + Chr(13) + Chr(10)
End Sub
运行数据检测程序并将PLC上电,运行PRODAVE_S7_mini并在其中进行各种操作(如LOAD、UNLOAD、READ、WRITE等),我们就可以检测到一系列的数据。
3.2.3监测结果
a、与西门子S7-200不同,S7-300不管处于何种状态(run或stop),一经上电,PLC就会不断地发出数据查找设备,在读写数据过程中也不间断。
b、连接、断开、读出/写入时,监测到一系列有规律的数据,读出/写入的数据包括在其中。
经多次监测,分




天下三分明月夜

  • 精华:3帖
  • 求助:0帖
  • 帖子:114帖 | 3593回
  • 年度积分:0
  • 历史总积分:7688
  • 注册:2008年3月16日
发表于:2008-05-04 21:25:10
1楼
----------------------------------------------------------------------

天下三分明月夜

  • 精华:3帖
  • 求助:0帖
  • 帖子:114帖 | 3593回
  • 年度积分:0
  • 历史总积分:7688
  • 注册:2008年3月16日
发表于:2008-05-04 21:34:33
2楼

S7-300因为没有单独的OPC接口驱动,如果想实现自已的人机界面,这篇文章是非常有用的,

S7-200有OPC接口问题不大,如果想用VB单独直接访问S7-200,文章也有;

 

天下三分明月夜

  • 精华:3帖
  • 求助:0帖
  • 帖子:114帖 | 3593回
  • 年度积分:0
  • 历史总积分:7688
  • 注册:2008年3月16日
发表于:2008-05-04 23:23:26
3楼

无人感兴趣嘛。以为能大家探讨控讨,使实用化。

yuanle

  • 精华:0帖
  • 求助:0帖
  • 帖子:9帖 | 10208回
  • 年度积分:2747
  • 历史总积分:48332
  • 注册:2005年4月22日
发表于:2008-05-05 08:39:46
4楼

1 因为ProDave软件并不是那么轻易得到的。Mini版本可以在一些组态软件的安装盘内找到,而如果是完全版本是需要授权的。

2 S7-300与组态软件配合CP通讯卡可以实现MPI通讯:187.5K,DP通讯:12M,这些通讯速率不是串口通讯可以比拟的。

3 S7-300是中端的PLC,价格并不便宜,使用得起的人并不会在乎多花几千元购买专业的组态软件。

4 对于与S7-200的通讯,ProDave也提供了相应的链接库函数,使用方法是一样的,没有必要做过多探讨。

5 恐怕工控网的高手们更多的关心的是MPI协议的内容而非使用西门子的ProDave软件与PLC通讯的问题。

 

以上!

 

天下三分明月夜

  • 精华:3帖
  • 求助:0帖
  • 帖子:114帖 | 3593回
  • 年度积分:0
  • 历史总积分:7688
  • 注册:2008年3月16日
发表于:2008-05-05 21:14:27
5楼

多谢!

这篇 VB 读写MPI文章其实是篇 垃圾文章,看完后根本做不了事,啥也说不明白,

比龙永辉的《PPI协议》一文差远了.

 

 

水边清浅横枝瘦

  • 精华:0帖
  • 求助:4帖
  • 帖子:78帖 | 3488回
  • 年度积分:8
  • 历史总积分:5664
  • 注册:2006年7月11日
发表于:2008-05-06 10:16:17
6楼

多谢,

做不成也也没关系.可以学习.

清朝

  • 精华:0帖
  • 求助:0帖
  • 帖子:37帖 | 1359回
  • 年度积分:0
  • 历史总积分:2281
  • 注册:2004年10月16日
发表于:2008-05-06 14:35:19
7楼

文中说得这么麻烦。可用性不强

其实用ProDave软件很容易实现,跟串口没有任何关系,只需设置Set PG/PC接口即可,ProDave软件在很多网站可以下载到,里面有VB例程

ProDave软件6.0版的我也传到我的自助资料库里了(带授权)。

有需要的可以取下载

二十四桥明月夜

  • 精华:3帖
  • 求助:0帖
  • 帖子:114帖 | 3593回
  • 年度积分:0
  • 历史总积分:7688
  • 注册:2008年3月16日
发表于:2008-05-06 14:44:53
8楼
多谢清朝!  

海阔天空

  • 精华:0帖
  • 求助:1帖
  • 帖子:35帖 | 183回
  • 年度积分:0
  • 历史总积分:1879
  • 注册:2002年8月31日
发表于:2008-05-06 14:53:53
9楼
不知道是否有实用价值,可以试试,如果成功,楼主是提供了一个成本低廉的方法

新手来报道

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 3回
  • 年度积分:0
  • 历史总积分:3
  • 注册:2008年5月04日
发表于:2008-05-06 16:36:33
10楼

学习一下          

小柴

  • 精华:0帖
  • 求助:0帖
  • 帖子:3帖 | 29回
  • 年度积分:0
  • 历史总积分:89
  • 注册:2008年2月22日
发表于:2008-05-06 18:08:58
11楼

收藏了  谢谢  

 

小蝦米

  • 精华:0帖
  • 求助:0帖
  • 帖子:28帖 | 346回
  • 年度积分:0
  • 历史总积分:620
  • 注册:2006年5月12日
发表于:2008-05-07 15:18:57
12楼

没有看懂,没有多少有用信息

二十四桥明月夜

  • 精华:3帖
  • 求助:0帖
  • 帖子:114帖 | 3593回
  • 年度积分:0
  • 历史总积分:7688
  • 注册:2008年3月16日
发表于:2008-05-08 14:13:19
13楼
原作者明显是混稿费,混论文篇数的油子

zsbang

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 1回
  • 年度积分:0
  • 历史总积分:11
  • 注册:2002年5月23日
发表于:2008-07-23 09:11:12
14楼
同意13楼,原作者做源代码举例时,为什么不编写一段具体读写PLC某个单元数据的代码(如:读MW10、写MW20)?

死亡骑士

  • 精华:0帖
  • 求助:0帖
  • 帖子:6帖 | 1774回
  • 年度积分:0
  • 历史总积分:2630
  • 注册:2006年7月17日
发表于:2008-07-23 09:31:28
15楼

国内的科技论文期刊 80%都是这类文章

题目看上去很NB,但实际价值为0

xushanhai

  • 精华:0帖
  • 求助:0帖
  • 帖子:6帖 | 47回
  • 年度积分:0
  • 历史总积分:389
  • 注册:2005年4月27日
发表于:2008-07-23 11:38:55
16楼

有时上论坛的时候发现标题都是挺好的,结果发现里面的内容根本什么都没有,浪费了大家很多时间和表情,如果想告诉大家点东西,就把VB程序也附加上,都是简单简单的叙述狗屁用都没有。

二十四桥明月夜

  • 精华:3帖
  • 求助:0帖
  • 帖子:114帖 | 3593回
  • 年度积分:0
  • 历史总积分:7688
  • 注册:2008年3月16日
发表于:2008-07-24 19:56:08
17楼

1.s7-300/400的MPI通讯就用prodave好了,主要版费问题,不知要多少,太贵了就不值了,

   其实就是个调用库;

2.s7-200的PPI用直接串口通讯或OPC;

 

 

彩云之滇东北

  • 精华:20帖
  • 求助:5帖
  • 帖子:107帖 | 2725回
  • 年度积分:0
  • 历史总积分:21121
  • 注册:2005年6月14日
发表于:2008-07-24 21:00:28
18楼

作为学习开发软件来学习是可以的,但不适用

依凡

  • 精华:0帖
  • 求助:0帖
  • 帖子:30帖 | 312回
  • 年度积分:0
  • 历史总积分:741
  • 注册:2002年11月16日
发表于:2008-07-31 12:20:32
19楼
呵呵;看这个图吧;

看不明白的话就没救了;

wcg4709786

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 1回
  • 年度积分:0
  • 历史总积分:1
  • 注册:2008年7月21日
发表于:2008-10-21 10:57:04
20楼

真是垃圾,删除该帖,别浪费大家的时间


热门招聘
相关主题

官方公众号

智造工程师
    首页 上一页 1 2 下一页 尾页