C#与信捷PLC通讯.docx

上传人:p** 文档编号:1255198 上传时间:2024-12-24 格式:DOCX 页数:15 大小:66.57KB
下载 相关 举报
C#与信捷PLC通讯.docx_第1页
第1页 / 共15页
C#与信捷PLC通讯.docx_第2页
第2页 / 共15页
C#与信捷PLC通讯.docx_第3页
第3页 / 共15页
C#与信捷PLC通讯.docx_第4页
第4页 / 共15页
C#与信捷PLC通讯.docx_第5页
第5页 / 共15页
C#与信捷PLC通讯.docx_第6页
第6页 / 共15页
C#与信捷PLC通讯.docx_第7页
第7页 / 共15页
C#与信捷PLC通讯.docx_第8页
第8页 / 共15页
C#与信捷PLC通讯.docx_第9页
第9页 / 共15页
C#与信捷PLC通讯.docx_第10页
第10页 / 共15页
亲,该文档总共15页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《C#与信捷PLC通讯.docx》由会员分享,可在线阅读,更多相关《C#与信捷PLC通讯.docx(15页珍藏版)》请在第壹文秘上搜索。

1、实现C#与信捷P1.C通讯信捷P1.C在与PC通讯的时候,作为下位机,则上机必须按照MODBUSRTU的数据格式与其进行数据交换;下面为大家讲解相关使用:1、 什么是MOOBUSRT啾设?.MODBUSRTU的数据格式:请阅读Modbus协议中文版.pdf,通过这个介绍你会对MODBUS协议有所了解,其中还详细介绍了modbus通讯的另种模式一一MODBUSASCII模式,关于两者之间的区别,在此不再重复阐述,Modbus协议中文版.pdf上都有介绍,使用中清区分RTU和ASCII模式,不能笼统的认为使用的协议是MoDBUS协议。2、 MOOBUSRTIJ的数据格式:地址域功能码数据CRC或(

2、1.RC)I例如:0106000100179804O1.060001(X)179804从机地址功能码数据地址数据CRC校验这一串数据的意思是:把数据OXoOI7(十进制23)写入1号从机地址OXOOOI数据地址。2.1功能码I功能码描述功能码描述:0x01读线圈状态0x05写单个线圈0x02读离散输入状态0x06写单个保持寄存器0x03读保持寄存器Ox1.O写多个保持寄存器0x04读输入寄存等OxOF写多个线圈2.2读寄存器:(0x03功能码)读取格式:地址I功能码I寄存器起始地址I寄存器数量CRCI6校殴Adrr0x03高8位低8位高8位低8位低8位高8位返回格式:地址I功能码I字节数I寄存

3、器数据CRCI6校AdIT0x03NMX位低8位低8位高8位23写寄存器:(0x10功能码):写入格式:.地址I功能码I寄存叁起始地址I寄存叁数=I寄存叁数据CRCI6枚险AdrOxIO高8位低8位高8位低8位高8位低8位低8位高8位返回格式:地址I功能码I寄存器起始地址I寄存卷9ACRCI6校验AdrrOxIO高8位低8位裔8位低8位低8位高8位2.4示例发送:O1.0300010001D5CA从机地址功能号数据地址读取数据个数CRC校验那么P1.C接收到这串数据根据数据计算CRC校验判断数据是否正确,如果判断数据无误,则返回信息给主机:返回内容:O1.03020017F84A从机地址功能号

4、数据字节个数数据CRC校验MoDBUS主机就完成了一次对从机P1.C数据的读操作,实现了通讯,3、核心代码usingSystem;usingSystcm.IO.Ports;usingSyStCm.Threading:namespaceSy1.ow1.y.Base(pub1.icc1.assP1.CHe1.perJpub1.icScria1.PortScrPortget;set:pub1.icintIntTimeOutget;set:)pub1.icstringStrPErrorget;set;)pub1.icP1.CHc1.pcr(Scria1.PortmscrPort.iumTinwOut)

5、this.ScrPort=mscrPort;IhisJntTiineOut=mime0ut;)“CRC校验pub1.icbyte(JCRC1.6(bytebytData)(bytc11numArray=newbytcbytDgth+2;intmaxVa1.ue=(int)ushor.MaxVaIue;intnumI=40961;for(intindex1=0:index1,tData.1.eneth:+index1)(maxVa1.ue=(int)bytDataindcx1.;for(intindex2=0:index28:+index2)(intnum2=maxVa1.ue&1;maxVa1

6、.ue=1;if(num2=I)maxVa1.ue=num1;J)Array.Copy(ay)bytData.0.(Array)nuni/Xrray.0.bytData.1.ength):numAr11ynumAray.1.ength-2=(byte)(maxVa1.ue&(int)bytc.MaxVa1.uc)numArraynunAay.1.ength-1=(byte)(maxVa1.ue8);returnnumArray;pub1.icbyte11stringToBytes(stringStrVa1.ue)StrVaIue=st,Va1.ue.Rep1.ace(,):bytc(numAr

7、ray=newbytcstrVgth/2;for(intstartindex=O;startIndexstrVgth;startindex+=2)IwinArrayIstari1.ndex12=Convert.ToByte(strVa1.ue.Substring(stariIndex,2),16);returnnumArray;初始化端口pub1.icboo1.P1.c-Ini(stringSuCOm)if(this.SerPort.IsOpen)this.SerPort.C1.ose();this.ScrPort.PortNamc=strCom;Ihis.SerPort.BaudRate=1

8、92001Ihis-ScrPort-DataBits=8;this.ScrPort.Parity=Parity1Evcn:Ihis-SerPort-StopBits=StopBi1.s.One;this.ScrPort.RcadTi11woi=2000;his.SerPort.Open():returntrue;)catch(Exceptionex)(IhisSirPError=初始化P1.C通讯端口错误:+cx.Mcssagc:returnfa1.se;)Ipub1.icstringbyteToHexStr(bytebytes)(stringstr=String.Empty:if(bytes

9、!=nu1.1.)(tbr(intindex=O;indexbytes.1.ength;+index)sir=str+bytcs(indcx.ToString(X2)+;Jreiurnstr;)读取M寄存器pub1.icboo1.ReaO)(TimeSpanIimcSpan=DatcTimc-Now-now;if(timeSpan.Mi1.1.iseconds=6)(byte(1.bytes2=newbyteiniCount;if(buffcr2(1.I=(bvtc)I&(int)buffcr22J=(int)(byte)intCount)(for(iniindex=O;indexintCou

10、nt;+index)(Array.Copy(Array)bufter2,3,(Array)bytes2,0,intCount);siringstr=this.bytcToHcxStr(bytcs2).Rcp1.acc(.).Trim();strVa1.ueindex=Convert.To1.nt32(str.16).ToString();f1.ag=true;)e1.se(IhisSirPEnW=-P1.C反馈字符出不符合要求!;f1.ag=fa1.se;e1.seIthis.StrPEror=读取寄存器:+intAen)(bytebytData=newbyte6(byte)1.(byte)5.(byie)0,(byte)O.(byte)O,(byte)O;byebytesI=this.siringToBytes(intAddr.ToSiring(X2).Pad1.eft(4,O);bytData=bytes1.(O;b)Data3=bytes1.(1.;byteJbytcs2=this.stringToBytcs(strVa1.uc.Pad1.cfi(4,*0);bytData4)=bytcs2(I;bytData5=byes2(0;bytcJnumArr

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

当前位置:首页 > 通信/电子 > 运营商及厂商资料

copyright@ 2008-2023 1wenmi网站版权所有

经营许可证编号:宁ICP备2022001189号-1

本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。第壹文秘仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知第壹文秘网,我们立即给予删除!