VB的上位机与PLC的串行通信

时间:2023-03-21作者:佚名

1 引言

在现代控制系统中,pc机作为上位机负责系统管理、状态监控、信息处理和打印报表等工作,plc作为下位机进行面向现场的实时控制已成为一种典型的系统结构。因此,pc机与plc之间的通信问题便成了系统能否实现的关键。串行通信以其接线简单、容易实现的特点得到了广泛的应用。

visual basic编程软件简单易学、功能强大,利用它可以很方便的实现pc机与plc间的串行通讯。本文以omron公司的cpm2a plc为例,介绍了利用vb6.0实现pc机与plc串行通讯的具体方法。

omron公司的cpm2a plc支持host-link通信协议,可以与上位计算机进行通信。使用host-link通信协议构成的通信网络,可以很方便的实现上位pc对下位plc的实时监控。

2 原理设计

2.1 系统结构

系统结构如图1所示,计算机作为上位机,plc作为下位机,因omron cpm2a本身带有rs-232串口,因此,利用rs-232电缆将其与pc机的串口(com1或com2)相连,便构成了一个1:1的简单的通讯系统[1]。

VB的上位机与PLC的串行通信

1 系统结构

2.2 host-link通信协议[2]

omron公司的host-link通信系统是由上位计算机(ibm pc或兼容机)通过安装在各台plc上的host-link单元连接多台plc构成的网络。上位机对系统中的plc进行集中管理与监控,通过与host link单元的通信,可以编辑或修改各台plc的程序,实时监控其运行过程,实现自动化系统的集散控制。对于小型plc,也可以通过其rs 232c通信端口进行链接。

系统使用host-link通信协议进行通信,上位机具有传送优先权,总是首先发出命令并启动通信,host link单元收到命令交由plc执行,然后将执行结果返回上位机,二者以通信帧为单位,轮流交换数据。通信时一组传送的数据称为“块”,它是命令或响应的单位,从上位机发送到host -link单元的数据块称为命令块,反过来,从host- link单元发送到上位机的数据块称为响应块。多点通信时,可作为单帧发送的最大数据块为131个字符,因此当一个数据块含有132个或更多字符时,要分成两帧或多帧发送。

每个数据块都以设备号及标题开始,以校验码(fcs)及结束符结束。响应块中还包括反应执行结果的响应码。通信格式如图2所示。

VB的上位机与PLC的串行通信

图2 通信帧格式

3 软件实现

3.1 mscomm控件介绍[3]

mscomm控件全称为microsoft communications control,是microsoft公司提供的简化WINOOWs下串行通信编程的activex控件,它为应用程序提供了通过串行接口收发数据的简化方法。

mscomm控件有两种通信方式,查询方式和事件驱动方式,本文采用事件驱动方式。mscomm控件的属性有许多,其中一些需要在编程时设置,另一些则取默认值即可,具体设置方法可参见相关资料,表1列出了mscomm控件的常用属性。

VB的上位机与PLC的串行通信

3.2 plc参数设置[4]

plc的通信参数可以采用默认的host-link通信形式,即1位启动位,7位字长,偶校验,2位停止位,9600bit/s。设备号为00。

3.3 上位机软件设计

使用vb通信控件mscomm编写plc监控程序,通过rs-232端口发送并接收数据,关键代码如下:

‘程序初始化并设置串口参数

private sub form_load()

mscom.commport = 1

mscom.settings = "9600,e,7,2" `通信参数设置

mscom.inputmode= cominput

-modetext `以文本方式接收数据

mscom.portopen = true `打开串口

end sub

`向plc写入数据

private sub butwrite_click()

`检验串口是否关闭,若串口已关闭,则打开它

if mscom.portopen = false then

mscom.portopen = true

end if

`plc必须处于编程状态才可以写入数据

plcend="@00sc00" `“@”为“开始符”表示数据帧开始;“sc”为host-link指令;“00”表示下位plc的设备地址,ascii码表示[4]。

mscom.output = plcend fcs(plcend) "*" chr$(13)

mscom.inbuffercount = 0

dim outstring as string

outstring="@00wr0010" trim(txtcontent.text)

outstring = outstring fcs(outstring) "*" chr$(13) `采用异或校验,即fcs校验;“* chr$(13)”表示结束符,表示数据帧的结束,即“*↙”[4]。

mscom.inbuffercount = 0

mscom.output = outstring `向plc发送数据

end sub

`从plc读取数据

private sub butread_click()

if mscom.portopen = false then

mscom.portopen = true

end if

dim outstring, instring as string

outstring="@00rr00100001"

outstring=outstring fcs(outstring) "*" chr$(13)

mscom.inbuffercount = 0

mscom.output=outstring `向plc发送读取数据的命令

dim i as integer

do while mscom.inbuffercoun

-t <= 14 or i > 9000 `i为等待的时间

i = i 1

loop

`提取有用数据并显示

if i < 9000 then

instring = mscom.input

txtcontent.text = "输出010通道的数据为" mid(instring, 8, 4)

else

msgbox ("读取失败")

end if

end sub

`fcs校验

function fcs(byval fcsstr as string) as string

dim slen, i, xorresult as integer

dim tempfcs as string

slen = len(fcsstr)

xorresult = 0

for i = 1 to slen

xorresult = xorresult xor asc(mid$(fcsstr, i, 1))

next i

tempfcs = hex$(xorresult)

if len(tempfcs) = 1 then tempfcs = "0" tempfcs

fcs = tempfcs

end function

4 结束语

本文给出了利用vb(主要是其中的mscomm通信控件)开发通信程序,实现了plc与pc普通串口通信的实用方法。实验表明,该程序运行稳定可靠,且操作简便。将程序稍加修改,还可应用到其他工业控制设备,在小型工业控制系统中具有一定的应用价值。

相关阅读

分享几种常见的无源滤波电路

无源滤波器缺点:带负载能力差,无放大作用,特性不理想边沿不陡峭,各级互相影响。 01 RC滤波特征     1)C值的选取:C不能选的太小,否则负载电容对滤波电路的影响很大,一般...
2023-06-12
分享几种常见的无源滤波电路

老电工看了都懵!配电柜线号大揭秘

配电柜是电力系统的“心脏”,其线路和线号负责输送电能与传递信号,准确识别线号对保障系统安全稳定运行十分关键,可不少老电工也会对此感到困惑。下面就讲讲这些线号...
2026-05-26
老电工看了都懵!配电柜线号大揭秘

提升技能,解决故障!拒绝做别人眼中的“万能杂工”!

我是厂里的一名电工,日常的工作就是对简单的设备进行维修。名义上是设备维修, 其实更多的是一名初级电工,也就是换换灯泡,看看电路, 工厂的自动化设备从来都不是我维护的...
2023-06-27
提升技能,解决故障!拒绝做别人眼中的“万能杂工”!

电气新手必知:谐振电路(专业电气学姐带你学三十五)

“谐振”,只要是和电打交道,多多少少都会听过这个词。谐振电路在无线电工程、电子测量技术等许多电路中应用非常广泛。 谐振的存在有利有弊。在电子和无线电工程中,经常要从...
2023-06-27
电气新手必知:谐振电路(专业电气学姐带你学三十五)

一辈子在电力上夜班,结局会如何?残酷...

四班三倒,不稀奇,四班两倒,也不奇怪,在电厂,倒班,不光光让你失去健康,甚至更是人生和未来; 20多岁的小伙子上夜班,基本无问题,五六十岁的还在上夜班,那基本上是熬命了,但是,不上夜班,也就...
2024-08-12
一辈子在电力上夜班,结局会如何?残酷...

热销商品

连发瓦斯枪通用瓦斯射钉钢钉枪瓦斯气体高强度瓦斯射钉枪165气罐

连发瓦斯枪是一款专为高强度瓦斯射钉设计的工具,其特点在于能够连续发射瓦斯气体,适用于多种需要快速穿透和固定材料的场景。这款瓦斯枪配备了165气罐,容量足够满足...
4.5

黄铜镀镍金属电缆防水接头EWM密封格兰头HSM电线固定填料函M20M16

黄铜镀镍金属电缆防水接头EWM密封格兰头(HSM型)是一款高性能电线固定与密封装置,适用于M16和M20螺纹规格。采用优质黄铜材质并表面镀镍处理,具备优异的防腐蚀性、机械...
1.14

消防配件二氧化碳灭火器2 3 5 7KG弯头喷管24Kg干冰CO2外喷头喷嘴

二氧化碳灭火器配件中的2357KG弯头喷管与24Kg干冰CO₂外喷头喷嘴,是专业消防设备的重要组成部分。该弯头喷管采用高强度耐腐蚀材料制造,连接灵活,适用于高压CO₂灭火...
4.5

雷士照明led筒灯孔灯客厅吊顶天花灯嵌入式过道筒灯射灯桶灯家用

雷士照明LED筒灯是一款专为现代家居设计的嵌入式照明产品,适用于客厅、吊顶、过道、卧室等空间。采用高品质LED光源,光线柔和均匀,显色指数高,有效还原真实色彩,营造舒...
5.78

雷士照明嵌入式防眩筒灯射灯窄边过道灯深杯客厅无主灯天花灯米雪

雷士照明嵌入式防眩筒灯射灯——“米雪”系列,专为现代无主灯设计打造。采用窄边深杯结构,有效控制杂散光,实现精准防眩,营造舒适柔和的光环境。适用于客厅、过道、天...
25.67

网站栏目