基于MOXA多串口卡的多串口通信的实现.docx

上传人:b****8 文档编号:12780738 上传时间:2023-06-08 格式:DOCX 页数:12 大小:21.66KB
下载 相关 举报
基于MOXA多串口卡的多串口通信的实现.docx_第1页
第1页 / 共12页
基于MOXA多串口卡的多串口通信的实现.docx_第2页
第2页 / 共12页
基于MOXA多串口卡的多串口通信的实现.docx_第3页
第3页 / 共12页
基于MOXA多串口卡的多串口通信的实现.docx_第4页
第4页 / 共12页
基于MOXA多串口卡的多串口通信的实现.docx_第5页
第5页 / 共12页
基于MOXA多串口卡的多串口通信的实现.docx_第6页
第6页 / 共12页
基于MOXA多串口卡的多串口通信的实现.docx_第7页
第7页 / 共12页
基于MOXA多串口卡的多串口通信的实现.docx_第8页
第8页 / 共12页
基于MOXA多串口卡的多串口通信的实现.docx_第9页
第9页 / 共12页
基于MOXA多串口卡的多串口通信的实现.docx_第10页
第10页 / 共12页
基于MOXA多串口卡的多串口通信的实现.docx_第11页
第11页 / 共12页
基于MOXA多串口卡的多串口通信的实现.docx_第12页
第12页 / 共12页
亲,该文档总共12页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

基于MOXA多串口卡的多串口通信的实现.docx

《基于MOXA多串口卡的多串口通信的实现.docx》由会员分享,可在线阅读,更多相关《基于MOXA多串口卡的多串口通信的实现.docx(12页珍藏版)》请在冰点文库上搜索。

基于MOXA多串口卡的多串口通信的实现.docx

基于MOXA多串口卡的多串口通信的实现

基于MOXA多串口卡的多串口通信的实现

ImplementationofMultipleSerialPortCommunicationBasedon

MOXAMultiportSerialBoard

柯伯乐池红汤天浩

(上海海运学院,上海200135

摘要借以MOXA多串口卡在工控同时与多台下位机或设备进行串口通信中的应用,深入讨论了在微软VisualBasic开发平台上开发控制中的串口通信的实现方法,包括与温控仪的通信。

同时简要介绍了与PLC、数字显示表以及热耦真空计的串行通信。

关键词MOXA卡串行通信温控仪PLCVisualBasic

Abstract

ByusingMOXAmultiportserialboardwithitsfunctionofcommunicatingwithmultipleslavecomputersordeviceswhenimplementingprocesscontrol,thedevelopmentofserialcommunicationinprocesscontrolsincludingtemperaturecontrollerwithMicrosoftVisualBasicdevelopingplatformisdescribedindetail.Also,theserialcommunicationwithPLC,digitaldisplayandthermocouplevacuumunitispresented.

KeywordsMOXAboardSerialcommunicationTemperaturecontrollerPLCVisualBasic

1MOXA多串口卡简介

通常,工业控制计算机所提供的串口数量有限,然而在工业控制中,往往会有许多设备需要与同一台工业控制计算机进行串行通信。

MOXA多串口卡为此提供了很好的解决方案。

在本项目中,选用MOXAC168P标准多串口卡。

C168P提供8个串口用于与Modem、打印机等设备的通信,它支持16位数据格式,有全范围的I/O地址,另外,板卡上的EEPROM可以用来存储配置信息。

所有这些特征,保证了C168P的每一个串口能够真正的相互独立。

与传统的多串口卡相比,C168P用软件设置I/O和IRQ,取代了过去用开关和跳线。

C168P软件提供了简单易用的串行通信包,用户可以用这软件包较容易地开发自己的应用程序。

2VisualBasic实现串行通信要点

VisualBasic是微软公司推出的功能强大的开发平台,由于其简单易用,开发功能强,开发周期短等优点,现今已在工业控制领域得到极为广泛的应用。

用户主要是借助VisualBasic强大的控件库来开发自己的应用程序。

在串行通信中,主要用到的是MSComm控件。

MSComm控件提供下列两种处理通信的方式:

¹事件驱动通信是处理串行端口交互作用的一种非常有效的方法。

在许多情况下,在事件发生时需要得到通知,可以用MSComm控件的OnComm事件捕获并处理这些通信事件。

OnComm事件还可以检查和处理通信错误。

º在程序的每个关键功能之后,通过检查Com-mEvent属性的值来查询事件和错误。

如果应用程序较小,并且是自保持的,这种方法可能是更可取的。

MSComm的最基本的属性:

CommPort:

设置并返回通信端口号。

Settings:

以字符串的形式设置并返回波特率、奇偶校验、数据位、停止位。

PortOpen:

设置并返回通信端口的状态。

也可以打开和关闭端口。

Input:

从接收缓冲区返回和删除字符。

Output:

向传输缓冲区写一个字符串。

MSComm通信事件如下:

comEvSend:

在传输缓冲区中有比Sthreshold数少的字符。

comEvReceive:

收到Rthreshold个字符。

该事件将持续产生直到用Input属性从接收缓冲区中删除数据。

comEvCTS:

ClearToSend线的状态发生变化。

comEvDSR:

DataSetReady线的状态发生变化。

该事件只在DST从1变到0时才发生。

comEvCD:

CarrierDetect线的状态发生变化。

comEvRing:

检测到振铃信号。

一些UART(通用异步接收传输可能不支持该事件。

comEvEOF:

收到文件结束(ASCII字符为26字符。

对上面MSComm控件属性及事件的灵活应用,是用V-isualBasic完成串行通信的关键。

3松下温度控制仪与工控机的通信

本项目选用了松下AKT4系列温控仪,通过设定,它有ASCII通信模式和RTU通信模式。

通信格式:

ASCII方式通信:

起始位(1位+数据位(7位+奇偶校验位(可选+停止位(1位+校验码(纵向冗余校验+数据间隔(1秒或者更少

RTU方式通信:

起始位(1位+数据位(8位+奇偶校验位(可选+停止位(1位+校验码(循环冗余校验+数据间隔(315字符传送时间或更少

在实现串行通信的过程中,比较难的是校验码的计算以及通信所传输的字符与应用中所需要的数字量的转换。

本项目采用的是ASCII通信方式,通信格式如下:

表1发送读命令

Header

Slave

address

Function

code

Dataitem

Number

ofdata

Error

checkLRC

Delimiter表2正常返回数据

Header

Slave

address

Function

code

Numberof

responsebytes

Data

Error

checkLRC

Delimiter表3发送设置命令

Header

Slave

address

Function

code

Dataitem

Number

ofdata

Error

checkLRC

Delimiter

在上述命令中,校验码按如下方式计算:

从Slaveaddress开始到数据结束,把所有的ASCII相加,然后按位取反,加1,把所得的结果作为LRC加在发送数据的末尾。

鉴于项目中温控仪设置的温度范围为0~500e,而上述校验码的计算,对不同数据范围,算法略有不同。

所以,对设定温度的发送数据,按所要设定数据的范围来分别计算校验码。

部分程序代码如下:

串口初始化:

PrivateSubFormLoad(

MSComm4.CommPort=6.端口6

MSComm4.Settings=/2400,n,710,波特率为2400,无奇偶校验,七位数据位,一位停止位

MSComm4.InBufferSize=15.输入缓冲区大小为15

MSComm4.InputMode=comInputModeText.ASCII接收方式

MSComm4.InputLen=15.每次处理一个字符

MSComm4.RThreshold=15.接收一个字符中断

MSComm4.SThreshold=0.关闭发送中断

MSComm4.PortOpen=True.打开串口

EndSub根据不同设定值发送不同命令:

PrivateSubCommandlCilck(

DimL(4AsString

DimE(4AsInteger

DimIntM,IntS,IntQ,IntP,IntZAsInteger

DimstrHAsString

DimLRCAsString

IntS=Val(Textl.Text-Textl为输入设定值的文本框

IfIntS4=256Then

IntQ=IntSMod256

IntP=Int(IntS/256

IntM=1+6+1+IntP+IntQ

IfIntM3=255Then

IntM=255-IntM+1

IntZ=Len(Hex(IntM

IfIntZ=2Then

LRC=Hex(IntM

strH=Chr(&H3A+/010+/060+/00010+/00+

Hex(Val(Textl.Text+LRC+Chr(13+Chr(10

MSComm4.Output=strH

Else

LRC=Hex(IntM

strH=Chr(&H3A+/010+/060+/00010+/00+

Hex(Val(Textl.Text+/00+LRC+Chr(13+

Chr(10

MSComm4.Output=strH

EndIf

EndIf

Else

IntM=1+6+1+IntS

IfIntM4255Then

IntM=IntM-256

IfIntM3=255Then

IntM=255-IntM+1

LRC=Format(Hex(IntM,/000

strH=Chr(&H3A+/010+/060+/00010+/000+

Hex(Val(Textl.Text+LRC+Chr(13+Chr(10

MSComm4.Output=strH

EndIf

Else

IntM=256-IntM

IntZ=Len(Hex(IntM

IfIntZ=2Then

LRC=Hex(IntM

IfVal(Textl.Text3=15Then

strH=Chr(&H3A+/010+/060+/00010+

/0000+Hex(Val(Textl.Text+LRC+Chr

(13+Chr(10

MSComm4.Output=strH

Else

strH=Chr(&H3A+/010+/060+/00010+

/000+Hex(Val(Textl.Text+LRC+Chr(13+

Chr(10

MSComm4.Output=strH

EndIf

Else

LRC=Hex(IntM

strH=Chr(&H3A+/010+/060+/00010+/000+

Hex(Val(Textl.Text+/00+LRC+Chr(13+

Chr(10

MSComm4.Output=strH

EndIf

EndIf

EndIf

EndSub

对于读取温控仪的当前温度值,关键是将收到的字符串转换成我们需要的数字量。

因为收到的字符串中,代表温度值的是从第八位开始的四位数据,所以可以单独取出这段数据,并对每一个字符进行处理,按照0~9代表的是数字0~9、ABCDEF分别代表数字为10~15的原则,把每位数据按照16进制转换为十进制的转换方法转换成温度值。

需要注意的是:

当发送设定命令时,温控仪也同样返回一串字符,但它并不是当前所测的温度值,所以需要对返回数据中functioncode位进行测试,如果为03,则为读命令的返回值。

4工控机与其他设备的通信

本项目中还借助于MOXA多串口卡完成同一台工业控制计算机与三菱PLC、数字显示表、真空计的串行通信。

4.1与三菱PLC的串行通信

三菱PLC(FX2N系列有按位读写和按字读写等通信方式。

本项目采用按位读写方式,即对PLC的中间继电器按位读写,如表4所示

表4读命令格式

ENQStation

No.

PCNo.BR

Message

waittime

Head

device

Number

ofdevice

Sum

checkcode

写命令格式与读命令格式基本相同,不同的是在第六第七位的BR命令改为BW即可。

其中发送命令的最后是校验码。

例如,假设要使PLC中间继电器M0903之后的5位分别为01101,则发送字符串如下:

dat=/OOFFBWOM0903********-dat为定义的string类型的变量

MSComm5.Output=Chr(5+dat+SumChk(dat-SumChk(为校验码计算子程序

校验码的计算是从StationNO开始到Numberofde-vice结束的所有字符所代表的ASCII相加,取所得结果的最后两位即为校验码。

校验码计算子程序如下:

PrivateFunctionSumChk(DatsS|AsString.Dats为计算校验码的字符串

Dimi&

DimCHK&

Fori=lToLen(Dats

CHK=CHK+Asc(Mid(Dats,i,1

Nexti

SumChk=Right(Hex(CHK,2

EndFunction

对于读取PLC时PLC所返回的字符串,需要将计算校验码范围内的所有字符取出算得校验码,并判断与收到的字符串最后两位是否一致,如果一致,则取出表示PLC状态的单元的数据,判断其为0或者为1便可知道读取该位的状态。

4.2与数显表的串行通信

由于数显表用数字量来传送,即收到的字符就为数显表所显示的值,所以,在监控界面中直接可以把收到的字符显示出来,相对其它设备来说,数显表的串行通信就比较简单,只需初始化串口就可以接收数据。

4.3与真空计的串行通信

本项目中用到的真空计,发送指令由设备内部规定发送标志来获取需要的数据。

在项目中,如需要获得V

1

和V

2

的值(两支热偶硅管,只要发送69H和69H,对于收到的数据,要判断其首字节是否为69H,如

果是,则收到的数据的第2到4字节为V

1

数据,第5

到7字节为V

2

数据。

校验码的算法为:

将收到的数据前七字节逐字节异或,如为0则正确。

5结束语

在当前工业控制系统越来越复杂、越来越讲究分散控制集中管理的技术背景下,往往面临许多外围设备要求同时跟一台监控计算机进行数据交换,以便能够及时地监控每台设备,确保每台设备能够单独被控制,而计算机一般所能提供的串口数量相当有限,因此,MOXA多串口卡为实现工业控制计算机与多台设备同时进行多个串行通信提供了完好的解决方案。

(下转第34页

如可设置最大I/O输入输出分别为128个字节。

另外在GSD文件中,更改配置报文时要注意,能改的只是I/O配置的数据,总长度是固定的。

配置过程如下:

初始化时先给校验数组cfgaktfb[]和readcfgbuffer中赋配置数据,然后根据readcfgbuffer中的配置数据对I/Obuffer进行实际配置。

当产生newcfgdata中断(发3E/3E时,配置数据送入cfgbuffer中,先进行长度校验,若不等产生错误中断,若相等,将用于校验的配置数据(cfgaktfb[]中与主站发来的配置数据(cfgbuffer中逐一比较,若全同跳出中断,若不同,修改校验数组cfgaktfb[],重新配置I/Obuffer,交换readcfgbuffer和cfgbuffer。

5结束语

Profibus是世界上最著名的工业现场总线之一,并已为愈来愈多的国内外用户所接受和采用。

本总线桥产品的开发,使用户可以方便地将具有RS-232接口的传统仪器设备集成到Profibus总线系统,成为一种符合Profibus总线协议的新产品。

参考文献

2满庆丰,韩锋,夏继强.开发Profibus-DP智能从站.电测与仪表,2003,40(3:

37~40

3Siemens.SPC3andDPS2UserDescription.SiemensAGinFedRepofGermany,1998.

4JB/T10308.3-2001eqvIEC61158Type3-20000.测量和控制数字数据通信工业控制系统用现场总线第3部分:

Profibus规范.

收稿日期:

2003-08-03。

第一作者张永德,男,1949年生,副教授,硕士生导师;主要研究方向为现场总线及控制系统的集成。

(上接第19页

未来的工业控制领域中,MOXA多串口卡将与串行通信技术一起,推动工业控制技术的不断向前发展。

参考文献

1MOXAC168PUser.sManual

2松下温控仪通信指令手册.National松下电工株式会社

3MicrosoftMSDNLibraryVisualStudio.MicrosoftCorporation4三菱PLC用户手册

5范逸之,陈立元.VisualBasic与RS-232串行通信控制.中国青年出版社

收稿日期:

2003-09-09。

第一作者柯伯乐,男,1980年生,2002年获上海海运学院学士学位,2004年获上海海运学院硕士学位;主要从事通信协议的开发和研究。

(上接第24页

5结论

U盘作为一种新型的移动存储器,可以方便地实现自动化仪表的无纸记录,在自动化仪表领域必定有着广阔的应用前景。

参考文献

1CypressSemiconductorCorporationSL811HSEmbeddedUSBHost/SlaveController.20022UniveraslSerialBusMassStorageClassUFICommandSpecification.

1998

3MicrosoftCorporationMicrosoftExtensibleFirmwareInitiativeFAT32FileSystemSpecification.2000

4DonAnderson.USB系统体系.北京:

中国电力出版社,2001

收稿日期:

2004-3-22。

作者邢文生,男,1969年生,1992年获河南师范大学学士学位,现为河南理工大学在读硕士研究生,讲师;研究方向为计算机和数字控制。

恩德斯豪斯流量仪表技术有限公司落户苏州

本刊讯投资总额已达400万欧元的恩德斯豪斯流量仪表技术有限公司于10月28日在苏州工业园落户开业。

国家质量技术监督检验总局、上海市质量技术监督局和江苏省及苏州市质量技术监督局的有关领导,瑞士驻上海总领事、瑞士中国工商联合会主席、瑞士恩德斯豪斯集团总裁、恩德斯豪斯流量技术股份公司董事长以及苏州市委和工业园区管委会领导等出席了开业典礼。

位于瑞士Reinach的恩德斯豪斯流量技术股份公司是世界上各类现代工业流量计最大供应商之一,其产品范围包含了科氏质量流量计、涡街质量流量计、超声波流量计、电磁流量计系统等,主要应用于液体、气体及管道蒸汽系统的流量测量和控制。

恩德斯豪斯流量仪表技术(苏州有限公司是专门按照生产流量仪表的特殊要求而设计和建造的。

据悉,由于中国市场潜力巨大,恩德斯豪斯集团计划从明年起还将在苏州相继建立液位压力仪表和工业分析系统两家生产基地。

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

当前位置:首页 > 人文社科 > 视频讲堂

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

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