modbus驱动源代码Word格式.docx

上传人:b****7 文档编号:22745738 上传时间:2023-02-05 格式:DOCX 页数:55 大小:23.08KB
下载 相关 举报
modbus驱动源代码Word格式.docx_第1页
第1页 / 共55页
modbus驱动源代码Word格式.docx_第2页
第2页 / 共55页
modbus驱动源代码Word格式.docx_第3页
第3页 / 共55页
modbus驱动源代码Word格式.docx_第4页
第4页 / 共55页
modbus驱动源代码Word格式.docx_第5页
第5页 / 共55页
点击查看更多>>
下载资源
资源描述

modbus驱动源代码Word格式.docx

《modbus驱动源代码Word格式.docx》由会员分享,可在线阅读,更多相关《modbus驱动源代码Word格式.docx(55页珍藏版)》请在冰豆网上搜索。

modbus驱动源代码Word格式.docx

//*/

}

#endif

voidRS232CheckRXDataDeal(void)

unsignedintm,kk,jj;

unsignedchar*pt;

unsignedchari,k;

unsignedcharx,y;

unsignedchartemp;

unsignedcharFun_Code,Date_Len;

if(bDataChange==dTrue)//串口2交换数据到串口1

{

temp=RxdLen;

pt=&

RxRs232DataZone[0];

m=comp_crc16(pt,temp);

i=(m/256);

k=(m);

x=RxRs232DataZone[temp];

y=RxRs232DataZone[temp+1];

if((i!

=x)||(k!

=y))

return;

for(i=0;

RxdLen;

i++)

TxRs232DataZone2[i]=RxRs232DataZone[i];

LenTXD2=RxdLen;

RxdLen=0;

bTXCodeFlag2=dTrue;

bDataChange=dFalse;

return;

}

Fun_Code=RxRs232DataZone[1];

if((bWatchReciveReadData==dTrue)&

&

(Fun_Code==3))

Date_Len=RxRs232DataZone[2];

Para_H=RxRs232DataZone[3];

Para_L=RxRs232DataZone[4];

temp=Date_Len+3;

if(Add_H==0x21)//0x21群组

{

if(Add_L==4)//amp

{

MainDisplayId_Amp=(Para_H<

<

8)|Para_L;

bWatchReciveReadData=dFalse;

}

elseif(Add_L==5)//dcvol

MainDisplayId_DcVol=(Para_H<

elseif(Add_L==6)//outvol

MainDisplayId_OutVol=(Para_H<

elseif(Add_L==2)//fre

MenuMainNum=(Para_H<

}

}

if(Fun_Code==3)

m=(Add_H*100)+Add_L+20000;

//参数任务号

/*debug

bTXCodeFlag=dTrue;

LenTXD=8;

TxRs232DataZone[0]=0xff;

TxRs232DataZone[1]=Add_H;

TxRs232DataZone[2]=Add_L;

TxRs232DataZone[3]=MeunTaskID>

>

8;

TxRs232DataZone[4]=MeunTaskID;

TxRs232DataZone[5]=m>

TxRs232DataZone[6]=m;

TxRs232DataZone[7]=0xff;

if(bMotoStop)

dRXD_motostopDeal(m);

elseif(bMotoRun)

dRXD_motorunDeal(m);

elseif(bMotoJog)

dRXD_motojopDeal(m);

else

{

dRXD0000Deal(m);

elseif(Fun_Code==6)//write

Rx_Write_Addr_H=RxRs232DataZone[2];

Rx_Write_Addr_L=RxRs232DataZone[3];

Rx_Write_Dat_H=RxRs232DataZone[4];

Rx_Write_Dat_L=RxRs232DataZone[5];

temp=6;

/*

if((bWaitAdjust==dTrue)

&

(Rx_Write_Addr_H==Wait_Write_Addr_H)

(Rx_Write_Addr_L==Wait_Write_Addr_L))//*/

if(bWaitAdjust==dTrue)

kk=(uint)(Rx_Write_Dat_H);

MenuMainNum=(kk<

8)|Rx_Write_Dat_L;

jj=MenuMainNum;

shownum[0]=jj/10000;

shownum[1]=jj/1000%10;

shownum[2]=jj/100%10;

shownum[3]=jj/10%10;

shownum[4]=jj%10;

//bpoint[2]=dTrue;

for(i=0;

{

if(shownum[i]==0)

{

shownum[i]=NoDispNum;

}

else

break;

}

bDisp=dTrue;

bWaitAdjust=dFalse;

if((bWaitReciveWriteData==dTrue)

(Rx_Write_Addr_L==Wait_Write_Addr_L))

if((Rx_Write_Addr_H==1)&

(Rx_Write_Addr_L==0))//设定01-00后,更新主菜单显示内容

kk=(uint)(Rx_Write_Dat_H);

MenuMainNum=(kk<

bWaitReciveWriteData=dFalse;

shownum[0]=DispNum__;

//

shownum[1]=DispNum_E;

shownum[2]=DispNum_N;

//-

shownum[3]=DispNum_D;

//0

shownum[4]=DispNum__;

//0

bDispLimitTime=dTrue;

}

voidRS232CheckRXDataDeal2(void)

temp=RxdLen2;

RxRs232DataZone2[0];

x=RxRs232DataZone2[temp];

y=RxRs232DataZone2[temp+1];

for(i=0;

RxdLen2;

TxRs232DataZone[i]=RxRs232DataZone2[i];

LenTXD=RxdLen2;

RxdLen2=0;

bDataChange=dTrue;

CountDataChange=0;

/*

voidRS232_DelayLoad(void)

bDelaySendCode=dFalse;

OperationTimeLimitCount=dTimeLimitCount10MS;

bOperationTimeOverFlag=dFalse;

bOperationTimeLimitFlag=dTrue;

bWaitLoadSendDataFlag=dTrue;

}//*/

voidRS232ReadCmd(unsignedcharDdeviceAdd,unsignedcharStartAddr_H,unsignedcharStartAddr_L,unsignedcharReadLen_H,unsignedcharReadLen_L)

unsignedchar*j;

unsignedintm;

TxRs232DataZone[0]=DdeviceAdd;

TxRs232DataZone[1]=3;

TxRs232DataZone[2]=StartAddr_H;

TxRs232DataZone[3]=StartAddr_L;

TxRs232DataZone[4]=ReadLen_H;

TxRs232DataZone[5]=ReadLen_L;

Add_H=StartAddr_H;

Add_L=StartAddr_L;

j=&

TxRs232DataZone[0];

m=comp_crc16(j,6);

TxRs232DataZone[6]=(m/256);

TxRs232DataZone[7]=(m);

voidRS232WriteCmd(unsignedcharDdeviceAdd,unsignedcharStartAddr_H,unsignedcharStartAddr_L,unsignedcharWriteData_H,unsignedcharWriteData_L)

TxRs232DataZone[1]=6;

TxRs232DataZone[4]=WriteData_H;

TxRs232DataZone[5]=WriteData_L;

voidRS232TXStart(void)

unsignedchari;

if((bRXingCodeFlag==dTrue)||(bTXingCodeFlag==dTrue))return;

RS485Control=1;

bTXingCodeFlag=dTrue;

//避免TXing时Load

//RS232TxByteCount=0;

//LED1^=1;

for(i=0;

i<

LenTXD;

i++)

Udatas(TxRs232DataZone[i]);

LenTXD=0;

RS485Control=0;

bTXingCodeFlag=dFalse;

voidRS232TXStart2(void)

if((bRXingCodeFlag2==dTrue)||(bTXingCodeFlag2==dTrue))return;

RS485Control2=1;

bTXingCodeFlag2=dTrue;

LenTXD2;

Udatas2(TxRs232DataZone2[i]);

LenTXD2=0;

RS485Control2=0;

bTXingCodeFlag2=dFalse;

voiddMenuMainDeal(void)

uchari,j;

if(KeyValue==KeyENT)//

shownum[0]=0;

shownum[1]=0;

shownum[2]=DispNum__;

shownum[3]=NoDispNum;

shownum[4]=NoDispNum;

bDisp=dTrue;

MeunTaskID=dMenu00xx;

elseif(KeyValue==KeyCycle)//

if(++MainDisplayId>

4)

MainDisplayId=0;

if(MainDisplayId==0)

if(IsDisplayOutAmp==0)

MainDisplayId=1;

}

else

MenuDisplayNum000(MainDisplayId_Amp);

}

if(MainDisplayId==1)

if(IsDisplayOutVol==0)

MainDisplayId=2;

MenuDisplayNum000(MainDisplayId_OutVol);

if(MainDisplayId==2)

if(IsDisplayDcVol==0)

MainDisplayId=3;

MenuDisplayNum000(MainDisplayId_DcVol);

if(MainDisplayId==3)

if(IsDisplayUseSet1==0)

MainDisplayId=4;

MenuDisplayNum000(MainDisplayId_UseSet1);

if(MainDisplayId==4)

if(IsDisplayUseSet2==1)

MenuDisplayNum000(MainDisplayId_UseSet2);

elseif(KeyValue==KeyUp)

if(MenuMainNum<

60000)

MenuMainNum++;

j=(uchar)(MenuMainNum);

i=(uchar)(MenuMainNum>

8);

LenTXD=8;

RS232WriteCmd(0xff,0x20,1,i,j);

//RS232WriteCmd(0xff,1,0,i,j);

bWaitAdjust=dTrue;

}

elseif(KeyValue

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

当前位置:首页 > 教学研究 > 教学计划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1