河海大学计算机及信息工程学院(常州)课程设计报告题目现场总线设计专业、学号学生姓名指导教师陆晓春摘要本串口通信软件主要是用来实现PC—PC通信,其中任何一台PC既能做主机又能做从机。
主要包含查询和设置功能。
查询功能有:查询地址、查询量程上限、查询量程下限、查询报警上限、查询报警下限、查询温度值、查询报警状态、批量查询查询。
设置功能有:设置地址、设置量程上限、设置量程下限、设置报警上限、设置报警下限。
此串口通信软件由C++builder6.0编写而成,物理层主要遵循RS-232标准,网络采用主机主叫轮询方式。
此软件可以设置RS-232通信参数,能够通过图形界面查询、设置、显示、保存相关参数等。
关键词:串口通信查询设置 C++builder6.0 RS-232AbstractThe serial communication software is mainly used to implement PC-PC communication, both of which do any of the host PC, be able to do from the machine. Mainly contains the query and set features. Query functions: query address, query range limit, the query range limit, check the alarm limit, check the alarm limit, check the temperature value, check alarm status, batch query query. Set functions are: to set the address, set the range limit setting range lower limit, set the alarm limit, set alarm limit.The serial communication software is written in the C++builder6.0, the main follow the physical layer RS-232 standard, the network calling polling by the host. This software can be set to RS-232 communication parameters can query through a graphical interface, set, display, preservation of relevant parameters.Keywords: serial communication query set C + + builder6.0 RS-232一、发展历史:1984年美国Inter公司提出一种计算机分布式控制系统-位总线(BITBUS),它主要是将低速的面向过程的输入输出通道与高速的计算机总线(MULTIBUS)分离,形成了现场总线的最初概念。
80年代中期,美国Rosemount 公司开发了一种可寻址的远程传感器(HART)通信协议。
采用在4~20mA模拟量叠加了一种频率信号,用双绞线实现数字信号传输。
HART协议已是现场总线的雏形。
1985年由Honeywell和Bailey等大公司发起,成立了WorldFIP制定了FIP协议。
1987年,以Siemens,Rosemount横河等几家著名公司为首也成立了一个专门委员会互操作系统协议(ISP)并制定了PROFIBUS协议。
后来美国仪器仪表学会也制定了现场总线标准IE/ISASP50。
随着时间的推移,世界逐渐形成了两个针锋相对的互相竞争的现场总线集团:一个是以Siemens、Rosemount,横河为首的ISP集团;另一个是由Honeywell、Bailey等公司牵头的WorldFIP集团。
1994年,两大集团宣布合并,融合成现场总线基金会(Fieldbus Foundation)简称FF。
对于现场总线的技术发展和制定标准,基金委员会取得以下共识:共同制定遵循IEC/ISA SP50协议标准;商定现场总线技术发展阶段时间表。
二.需求分析纪70年代在欧洲开始形成的。
从概念走向开发、制定标准、验证,到形成系列产品和实际投入使用,几乎用了20年的时间。
现场总线技术被介绍到国内大约是在80年代中期,之后一直是对概念的理解和在制定国际标准过程中处于旁听的地位,局限在业界的极小范围内,没有引起全行业足够的重视。
进入90年代后开始受到较多的关注,不过等到现场总线产品和系统引进到国内,在较大范围内大规模的应用,到今天几乎也用了20年的时间。
思管理咨询公司(IMS)对工业通信中国市场的调查报告看,截至2008年在我国已安装现场总线和工业以太网的节点估计为1166.75万个,其数量可以说是够庞大的。
其中按通信协议来分:Profibus占24.2%(282.7万个)、CC-Link占11.16%(130.31万个)、DeviceNet占9.75%(113.83万个)、FF占1.67%(19.58万个)。
显而易见,工厂自动化用现场总线的任一个协议(如Profibus、CC-Link、DeviceNet等),它们已安装的节点数要比过程控制用现场总线(如FF)高整整一个数量级。
从以上的数据看,我国现场总线的应用近些年来有长足的、全方位的发展。
随着其应用面的扩大,暴露出一些深层次的问题,如现场总线系统运行的亚健康问题,呼唤发展现场总线的在线诊断技术,特别是物理层的高级诊断技术,让通信故障变得透明可视、可掌控、可快速处置的问题;再如不同现场总线协议的现场设备在系统层面上的互操作问题,即设备集成的问题,尚待规范的出台和推广;特别是对现场总线技术的价值取向的全面正确的认识问题,更关系到它的可持续发展,这有待于自动化全行业进行再认识。
中国现场总线模块项目市场供给结构分布1、国内外产品供给结构2、国内区域供给结构二设计基本要求1、设计要求:1)可设置RS-232 通信参数(波特率等)2)通过图形界面查询、设置、显示、保存相关参数3)显示、保存所有通信数据帧(包括发送和接收)4)主机功能和从机功能集成在一个程序中5) 所有变量、窗体、函数命名格式为“XXXX_学号”,例如“RangeMax_23”、“RangeMin_23”。
2、基本体系结构:1)物理层:遵循RS-232 标准,通信接口采用DB9(2、3、5 脚分别为发送、接受、底线)2)网络采用主机主叫轮询方式,通信一定由主机发起,采用一问一答制,从机无权主动呼叫。
当主机发出呼叫后,从机必须在1 秒内有应答,如1 秒内没有应答可视为呼叫失败,并自动重新呼叫,如连续3 次呼叫失败则放弃呼叫。
该系统主要由主机发送一串带有一定功能,按照规定的协议编写的数据,从机对接收到的数据作出相应的响应,同时按照协议返回一定的数据,主机对返回的数据进行解析。
3、通信协议:1)通信数据格式如下表所示:2)数据帧:数据帧详细解释如下表实例:发送 ##00000000@@X返回 ##123400041234@X主机部分查询程序:if(RadioButton1->Checked==true){if(ComboBox6->Text=="00"){s = "##"+Edit9->Text+"00"+"00"+"@@X";//##+从机地址(0000)+功能码(00查询)+ 查询数据长度00MSComm1->Output = StringToOleStr(s);MSComm1->OutBufferCount = 0;}}从机部分响应查询:if(StrToInt(Receive_332.SubString(7,2))==00)//应答主机查询地址{if(Memo1->Text.SubString(1,2)!="##" | Memo1->Text.SubString(Len_332-2,2)!="@@" ){MSComm1->Output=StringToOleStr("##"+Edit9->Text+Edit1->Text +"012@@X");ShowMessage("格式错误,请重发");}else{MSComm1->Output=StringToOleStr("##"+Edit9->Text+Edit1->T ext+"04"+Edit9->Text+"@@X");ShowMessage("发送成功");}}3.设置功能例如设置地址:功能码50主机部分设置程序:else if(ComboBox7->Text=="50") //为从机设置地址{MSComm1->OutBufferCount=0;s="##"+Adress_before_332+ComboBox7->Text+"04"+Edit9->Text+"@@X"; //##+原来从机的地址+。
MSComm1->Output = StringToOleStr(s);MSComm1->OutBufferCount = 0;}从机部分响应设置:if(StrToInt(Receive_332.SubString(7,2))==50)//应答设置地址{Out_Address_332 = Receive_332.SubString(3,4); //主机发送过来的地址if(Out_Address_332!=Edit9->Text){ShowMessage("地址不符!");}else if(Receive_332.SubString(1,2)!="##" | Receive_332.SubString(Len_332-2,2)!="@@"){ShowMessage("格式错误,请重发");MSComm1->Output = StringToOleStr("##"+Out_Address_332+Edit1->Text+"012@@X");MSComm1->OutBufferCount = 0;}else{Edit9->Text = Receive_332.SubString(11,4);//Edit8->Text = Edit9->Text;ShowMessage("发送成功"); MSComm1->Output=StringToOleStr("##"+Edit9->Text+Edit1->Text +"010@@X");MSComm1->OutBufferCount = 0;}}最终界面:四.运行调试过程在逐个功能添加调试时,需要对出现的错误进行仔细分析。