#include "stm32f10x.h"
u8 Rcv_Buffer[131]={0};
u8 Send_Buffer[131]={0};
u16 Rcv_Index=0;
u16 Send_Index=0;
u8 Comu_Busy=0;
u8 Sendcount=0;
u8 Recivecount=0;
u16 KAIGUANLIANG=0;
extern u16 DLBJ,dlBJ,DWBJ,BJBZ,BJBZ1,BJBZ2,BJBZ3,BJBZ4,BJBZ5; //¶Ï·±¨¾¯
extern u16 DL1,DL2,DL3,DL4,DL5,DL6,DL7,DL8,DL9,DL10,DL11,DL12;
u16 DL=0;
u16 SendFlag=0;
extern u16 Rcv_For_User[80];//Õâ¸öÊý×éÊÇÒ»¸ö¶ÔÍâ½Ó¿Ú£¬Ö÷³ÌÐòÖдÓÕâ¸öÊý×éÖÐÈ¡³ö¿ÉÓõÄÊý¾Ý¡£µÚÒ»¸öÔªËØÖ»ÓÐ0ºÍ1Á½¸ö¿ÉÄÜÖµ£¬ÓÃÓÚ±íʾÊý×éÄÚÈÝÊÇ·ñÒѾ¸úйý¡£
extern u16 Send_For_User[80];//Õâ¸öÊý×éÊÇÒ»¸ö¶ÔÍâ½Ó¿Ú£¬Ö÷³ÌÐò½«Òª·¢Ë͵ÄÊý¾Ý·ÅÖÃÔÚÕâ¸öÊý×éÖС£µÚÒ»¸öÔªËØÖ»ÓÐ0ºÍ1Á½¸ö¿ÉÄÜÖµ£¬ÓÃÓÚ±íʾÊý×éÄÚÈÝÊÇ·ñÒѾ¸úйý¡£
extern u16 XH1;
extern u16 I1_1,IC_1,LIM_1,D_1,C_1; //ÄǼ¸Â·µÄÄ£ÄâÖµ
extern u16 I1_2,IC_2,LIM_2,D_2,C_2;
extern u16 I1_3,IC_3,LIM_3,D_3,C_3;
extern u16 I1_4,IC_4,LIM_4,D_4,C_4;
extern u16 I1_5,IC_5,LIM_5,D_5,C_5;
extern u16 I1_6,IC_6,LIM_6,D_6,C_6;
extern u16 I1_7,IC_7,LIM_7,D_7,C_7;
extern u16 I1_8,IC_8,LIM_8,D_8,C_8;
extern u8 LINEAR1,LINEAR2,LINEAR3,LINEAR4;
extern u16 YALI,XIEHE,ZUOYI;//ѹÁ¦¿ª¹Ø£¬Ð¶ºÉ¿ª¹Ø£¬×ùÒοª¹Ø
extern u16 T1_1,T1_2,T2_1,T2_2,T3_1,T3_2,T4_1,T4_2;
extern u32 I_FEEDBACK1,I_FEEDBACK2,I_FEEDBACK3,I_FEEDBACK4,I_FEEDBACK5,I_FEEDBACK6,I_FEEDBACK7,I_FEEDBACK8;
extern u32 I_FEEDBACK9,I_FEEDBACK10,I_FEEDBACK11,I_FEEDBACK12;
extern u32 V_DONGBI, V_ZONG, V_DONGBI,V_FANDOU,V_FUZHU1,V_FUZHU2;
#define YX1 GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_11);
//#define YX2 GPIO_ReadInputDataBit(GPIOC, GPIO_Pin_11);
//#define YX3 GPIO_ReadInputDataBit(GPIOC, GPIO_Pin_12);
//#define YX4 GPIO_ReadInputDataBit(GPIOD, GPIO_Pin_0);
//#define YL GPIO_ReadInputDataBit(GPIOD, GPIO_Pin_4);
//#define ZW GPIO_ReadInputDataBit(GPIOD, GPIO_Pin_3);
//#define XH GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_7);
extern u8 YX1,YX2,YX3,YX4,YL,ZW,XH;
void MODBUS_Rcv(void); //£¨½ÓÊÜ£©
void MODBUS_Send(void); //£¨·¢ËÍ£©
void LRC_Cal(u8 *buffer1,u8 len,u8 *buffer2);//LRCУÑéÂë
void response_handle(void); //µ±½ÓÊÜÍêÖ÷»úµÄÐÅÏ¢ºó£¬½øÐд¦Àí
void Respond_Read(void);//ÉèÖÃģʽÏ£¬ÎҵĻØÓ¦
void Respond_Write(void); //¼à¿ØÉèÖÃģʽÏ£¬ÎҵĻØÓ¦
void Sendvalue_Init(void); //·¢ËÍÖµµÄ³õʼ»¯
void HexToAscii(u8 *val); //Ê®Áù½øÖÆתΪASCIIÂë
u8 AsciiToHex(u8 val); //ASCIIÂëת»»Îª16½øÖÆ
extern u16 DBJ(u16 n); //¶Ï·±¨¾¯¼ì²â
extern u16 dBJ(u16 n); //¶Ì·±¨¾¯¼ì²â
extern u16 DDBJ(u16 n); //µçλÆ÷¶Ï·±¨¾¯¼ì²â¡£
extern u16 XBJ(u16 n); //ϵͳ±¨¾¯¹ýѹ¼ì²â
extern u16 XBJ1(u16 n); //ϵͳ±¨¾¯Ç·Ñ¹¼ì²â
extern u16 get_temperature(void); //ζȼì²â
/* º¯Êý¹¦ÄÜ£ºÓÃÓÚMODBUSeÐÅÏ¢½ÓÊÕ
º¯ÊýÊäÈ룺ÎÞ¡£
º¯ÊýÊä³ö£ºÎÞ¡£ */
void MODBUS_Rcv(void)
{
u8 Rcv_Data;
if(Comu_Busy==0)//Èç¹û±¾»ú²»Ã¦£¬¿ÉÒÔ½ÓÊÕеÄÖ¡
{
Rcv_Data = USART_ReceiveData(USART3); //´ó¸ç£¬ÎÒÃÇÄǶùÊÇ3
if(Rcv_Data == ':')//Ö¡Æðʼ±êÖ¾,±ê־еÄÖ¡¿ªÊ¼
{
Rcv_Index = 0;//½«Ö¡¶¨Î»µ½Rcv_Buffer´æ·ÅµÚÒ»¸öÓÐЧ×Ö½ÚµÄλ//ÓпÉÄÜÒª¸ÄΪ0£¨Ã²ËÆÓÖ²»ÓøÄÁË£©£¨Æäʵ»¹ÊǸÄΪ0ÁË£©
Rcv_Buffer[Rcv_Index] = ':';
Rcv_Index++;//ÒƵ½ÏÂÒ»¸öλÖÃ
Recivecount++;//½ÓÊÕµÄÓÐЧ×Ö½ÚÊý¼ÓÒ»
}
else if(Rcv_Data == '\n')//Èç¹ûÊÇ0x13£¬×îºóÒ»¸öÊý //ÔΪ'\r'
{
Rcv_Buffer[Rcv_Index] = Rcv_Data;//´æ·Å½ÓÊÕµ½µÄ×Ö½Ú
Recivecount++;//½ÓÊÕµÄÓÐЧ×Ö½ÚÊý¼ÓÒ»
if(Rcv_Index>=1&&Rcv_Buffer[Rcv_Index-1]=='\r')//±êÖ¾Ö¡½áÊø ÔΪ'*'
{
Comu_Busy=1;//¿ªÊ¼´¦Àí»Ø¸´µÄÖ¡ÐÅÏ¢£¬½øÈëæ״̬
response_handle(); //´¦ÀíÊý¾Ý
Recivecount=0;//Êý×éÇåÁã
Comu_Busy=0;//»Ö¸´¿ÕÏÐ״̬
}
}
else//Èç¹ûÊDZðµÄ×Ö·û(Èç¹û½ÓÊÕµ½µÄÊÇÒ»¸öÊý×é)
{
Rcv_Buffer[Rcv_Index] = Rcv_Data;//´æ·Å½ÓÊÕµ½µÄ×Ö½Ú
Rcv_Index++;//ÒƵ½ÏÂÒ»¸öλÖÃ
Recivecount++;//½ÓÊÕµÄÓÐЧ×Ö½ÚÊý¼ÓÒ»
}
}
}
/* º¯Êý¹¦ÄÜ£ºÓÃÓÚModbusÐÅÏ¢·¢ËÍ
º¯ÊýÊäÈ룺ÎÞ¡£
º¯ÊýÊä³ö£ºÎÞ¡£ */
void MODBUS_Send(void)
{
u8 Send_Data;
Send_Data = Send_Buffer[Send_Index]; //
USART_SendData(USART3,Send_Data); //ÒòΪÎÒÃÇÓõÄÊÇ3
Send_Index++;
if(Send_Index>=Sendcount)//Èç¹û·¢ËÍÍêÖ¸¶¨µÄÊý¾ÝÒÔºó
{
USART_ITConfig(USART3, USART_IT_TC, DISABLE);//¹Ø±ÕÊý¾Ý·¢ËÍÖжÏ
Send_For_User[0]=0;//±íʾÊý¾ÝÒѾʹÓÃÍ꣬´ý¸úÐÂ
}
}
/* º¯Êý¹¦ÄÜ£ºASCII¼ÆËãÓú¯Êý
º¯ÊýÊäÈ룺buffer1ÊÇÒª½øÐÐLRC¼ÆËãµÄÐÅÏ¢Ê×µØÖ·£¬lenÊÇÐÅÏ¢ÖÐ×Ö½ÚÊý£¬buffer2ÊǽÓÊÕLRCУÑé½á¹ûµÄ´æ´¢¿Õ¼äÊ×µØÖ·
º¯ÊýÊä³ö£ºÎÞ */
void LRC_Cal(u8 * buffer1, u8 len, u8 * buffer2) //??????16???ASCII?
{
u8 i = 0;
u8 temp = 0;
u8 buffer[80] = { 0 };
while (i <(len/2))
{
buffer[i] = AsciiToHex(*(buffer1 + 2 * i))*16 +( AsciiToHex(*(buffer1 + 2 * i + 1)));
temp += buffer[i];
i++;
}
temp = temp % 0X100;
temp =255-temp;
temp= temp + 1;
*buffer2 = temp/16;
*(buffer2 + 1) = (temp % 16);
HexToAscii(buffer2);
HexToAscii(buffer2 + 1);
}
void HexToAscii(u8 *val) //Ê®Áù½øÖÆת»»ÎªASCIIÂë
{
if(*val>9)
*val += 'A'-10;//ת»»³É×ÖĸµÄasciiÂë
else
*val += '0';//ת»»³ÉÊý×ÖµÄasciiÂë
return;
}
u8 AsciiToHex(u8 val) //ASCIIת»¯Îª16½øÖÆ
{
if(val>='0'&&val<='9')
{
val -= '0';
return val;
}
if(val>='A'&&val<='F')
{
val -= 'A'-10;
return val;
}
return val;
}
/* º¯Êý¹¦ÄÜ£º¶Ô½ÓÊյĻظ´ÐÅÏ¢½øÐд¦Àí,´Ó»Ø¸´ÐÅÏ¢»ñµÃÐèÒªµÄÊý¾Ý
º¯ÊýÊäÈ룺ÎÞ¡£
º¯ÊýÊä³ö£ºÎÞ¡£ */
void response_handle(void) //»Ø¸´µÄÊÇRDµÄÃüÁWDµÄÃüÁîûÓÐʵ¼ÊÊý¾Ý
{
u8 CalKey[2]={0};//¼ÆËã³öÀ´µÄУÑéÖµ
u8 i=0;
u16 cnt=0;
u16 dizhi=0;
LRC_Cal(&Rcv_Buffer[1],Recivecount-5, CalKey);//×îºóËÄλÊÇLRCºÍ
if(CalKey[0]==Rcv_Buffer[Recivecount-4]&& CalKey[1]==Rcv_Buffer[Recivecount-3]//¼ÆËã³öµÄУÑéÓë½ÓÊÕµ½µÄLRC±È½ÏÕýºÃÔÚµ¹ÊýµÚ3¸ö
&&Rcv_Buffer[1]==(0 + '0')&&Rcv_Buffer[2]==(1 + '0'))//Èç¹ûУÑéÕýÈ·,ͬʱµ¥ÔªºÅÕýÈ·
{
dizhi=AsciiToHex(Rcv_Buffer[5])*16*16*16+AsciiToHex(Rcv_Buffer[6])*16*16
+AsciiToHex(Rcv_Buffer[7])*16+AsciiToHex(Rcv_Buffer[8]);
cnt=AsciiToHex(Rcv_Buffer[9])*16*16*16+AsciiToHex(Rcv_Buffer[10])*16*16
+AsciiToHex(Rcv_Buffer[11])*16+AsciiToHex(Rcv_Buffer[12]);
if(Rcv_Buffer[3]==(1+'0') && Rcv_Buffer[4]==(0+'0'))//ÊǸøÎÒдÊý¾Ý
{
//Ö÷»ú¸øÎÒÊý¾Ý£¬ÎÒÏìÓ¦Ëû
if(dizhi==1000)//×ÜÌåÉèÖ㬴«µ¥ÏßÐÔÒÔ¼°Ë«ÏßÐÔ
{
Rcv_For_User[1]=AsciiToHex(Rcv_Buffer[15])*16*16*16+AsciiToHex(Rcv_Buffer[16])*16*16
+AsciiToHex(Rcv_Buffer[17])*16+AsciiToHex(Rcv_Buffer[18+i*4]);
}
if(dizhi>=1100 && dizhi<=1109)
{
for(i=0;i
=1200 && dizhi<=1209)
{
for(i=0;i
=1300 && dizhi<=1309)
{
for(i=0;i
=1400 && dizhi<=1409)
{
for(i=0;i
=2011 && dizhi<=2012)
{
for(i=0;i
=2021 && dizhi<=2022) { for(i=0;i
=2031 && dizhi <=2032) { for(i=0;i
=2041 && dizhi<=2042) { for(i=0;i
=1100 && dizhi<=1109) { temp = Send_For_User[dizhi-1099+i]; Send_Buffer[7+i*4] = temp/(16*16*16); HexToAscii(&Send_Buffer[7+i*4]); temp %= 16*16*16; Send_Buffer[8+i*4] = temp/(16*16); HexToAscii(&Send_Buffer[8+i*4]); temp %= 16*16; Send_Buffer[9+i*4] = temp/(16); HexToAscii(&Send_Buffer[9+i*4]); temp %= 16; Send_Buffer[10+i*4] = temp; HexToAscii(&Send_Buffer[10+i*4]); } else if(dizhi>=1200 && dizhi<=1209) { temp = Send_For_User[dizhi-1189+i]; Send_Buffer[7+i*4] = temp/(16*16*16); HexToAscii(&Send_Buffer[7+i*4]); temp %= 16*16*16; Send_Buffer[8+i*4] = temp/(16*16); HexToAscii(&Send_Buffer[8+i*4]); temp %= 16*16; Send_Buffer[9+i*4] = temp/(16); HexToAscii(&Send_Buffer[9+i*4]); temp %= 16; Send_Buffer[10+i*4] = temp; HexToAscii(&Send_Buffer[10+i*4]); } else if(dizhi>=1300 && dizhi<=1309) { temp = Send_For_User[dizhi-1279+i]; Send_Buffer[7+i*4] = temp/(16*16*16); HexToAscii(&Send_Buffer[7+i*4]); temp %= 16*16*16; Send_Buffer[8+i*4] = temp/(16*16); HexToAscii(&Send_Buffer[8+i*4]); temp %= 16*16; Send_Buffer[9+i*4] = temp/(16); HexToAscii(&Send_Buffer[9+i*4]); temp %= 16; Send_Buffer[10+i*4] = temp; HexToAscii(&Send_Buffer[10+i*4]); } else if(dizhi>=1400 && dizhi<=1409) { temp = Send_For_User[dizhi-1369+i]; Send_Buffer[7+i*4] = temp/(16*16*16); HexToAscii(&Send_Buffer[7+i*4]); temp %= 16*16*16; Send_Buffer[8+i*4] = temp/(16*16); HexToAscii(&Send_Buffer[8+i*4]); temp %= 16*16; Send_Buffer[9+i*4] = temp/(16); HexToAscii(&Send_Buffer[9+i*4]); temp %= 16; Send_Buffer[10+i*4] = temp; HexToAscii(&Send_Buffer[10+i*4]); } else if(dizhi>=2011 && dizhi<=2012) { temp = Send_For_User[dizhi-1970+i]; Send_Buffer[7+i*4] = temp/(16*16*16); HexToAscii(&Send_Buffer[7+i*4]); temp %= 16*16*16; Send_Buffer[8+i*4] = temp/(16*16); HexToAscii(&Send_Buffer[8+i*4]); temp %= 16*16; Send_Buffer[9+i*4] = temp/(16); HexToAscii(&Send_Buffer[9+i*4]); temp %= 16; Send_Buffer[10+i*4] = temp; HexToAscii(&Send_Buffer[10+i*4]); } else if(dizhi>=2021 && dizhi<=2022) { temp = Send_For_User[dizhi-1978+i]; Send_Buffer[7+i*4] = temp/(16*16*16); HexToAscii(&Send_Buffer[7+i*4]); temp %= 16*16*16; Send_Buffer[8+i*4] = temp/(16*16); HexToAscii(&Send_Buffer[8+i*4]); temp %= 16*16; Send_Buffer[9+i*4] = temp/(16); HexToAscii(&Send_Buffer[9+i*4]); temp %= 16; Send_Buffer[10+i*4] = temp; HexToAscii(&Send_Buffer[10+i*4]); } else if(dizhi>=2031 && dizhi<=2032) { temp = Send_For_User[dizhi-1986+i]; Send_Buffer[7+i*4] = temp/(16*16*16); HexToAscii(&Send_Buffer[7+i*4]); temp %= 16*16*16; Send_Buffer[8+i*4] = temp/(16*16); HexToAscii(&Send_Buffer[8+i*4]); temp %= 16*16; Send_Buffer[9+i*4] = temp/(16); HexToAscii(&Send_Buffer[9+i*4]); temp %= 16; Send_Buffer[10+i*4] = temp; HexToAscii(&Send_Buffer[10+i*4]); } else if(dizhi>=2041 && dizhi<=2042) { temp = Send_For_User[dizhi-1994+i]; Send_Buffer[7+i*4] = temp/(16*16*16); HexToAscii(&Send_Buffer[7+i*4]); temp %= 16*16*16; Send_Buffer[8+i*4] = temp/(16*16); HexToAscii(&Send_Buffer[8+i*4]); temp %= 16*16; Send_Buffer[9+i*4] = temp/(16); HexToAscii(&Send_Buffer[9+i*4]); temp %= 16; Send_Buffer[10+i*4] = temp; HexToAscii(&Send_Buffer[10+i*4]); } else if(dizhi>=3000&& dizhi<=3019) { temp = Send_For_User[dizhi-2951+i]; Send_Buffer[7+i*4] = temp/(16*16*16); HexToAscii(&Send_Buffer[7+i*4]); temp %= 16*16*16; Send_Buffer[8+i*4] = temp/(16*16); HexToAscii(&Send_Buffer[8+i*4]); temp %= 16*16; Send_Buffer[9+i*4] = temp/(16); HexToAscii(&Send_Buffer[9+i*4]); temp %= 16; Send_Buffer[10+i*4] = temp; HexToAscii(&Send_Buffer[10+i*4]); } } // Send_For_User[0]=0; LRC_Cal(&Send_Buffer[1],Sendcount-4,CalKey); //¼ÆËãLRCУÑéÂë Send_Buffer[7+4*cnt]=CalKey[0]; Send_Buffer[8+4*cnt]=CalKey[1]; //Ìîд½áÊø·û Send_Buffer[9+4*cnt]='\r'; Send_Buffer[10+4*cnt]='\n'; Send_Index = 0; USART_ITConfig(USART3, USART_IT_TC, ENABLE);//¿ªÆôÊý¾Ý·¢ËÍÖÐ¶Ï } } void Sendvalue_Init(void) { if(Send_For_User[0]==0) { Send_For_User[1]=(u16)(I1_1); //µÚһ·ͨµÀÕýÏò¼«ÏÞµçÁ÷ Send_For_User[2]=(u16)(LIM_1); //µÚһ·ͨµÀÕýÏò¼«ÏÞLIM+ Send_For_User[3]=(u16)(IC_1); //ͨµÀÕýÏòÇл»µçÁ÷IC+ Send_For_User[4]=(u16)(C_1); //ͨµÀÕýÏòÇл»µãC+ Send_For_User[5]=(u16)(D_1); //ͨµÀÕýÏòËÀÇøD+ Send_For_User[6]=(u16)(I1_2); Send_For_User[7]=(u16)(LIM_2); Send_For_User[8]=(u16)(IC_2); Send_For_User[9]=(u16)(C_2); Send_For_User[10]=(u16)(D_2); Send_For_User[11]=(u16)(I1_3); Send_For_User[12]=(u16)(LIM_3); Send_For_User[13]=(u16)(IC_3); Send_For_User[14]=(u16)(C_3); Send_For_User[15]=(u16)(D_3); Send_For_User[16]=(u16)(I1_4); Send_For_User[17]=(u16)(LIM_4); Send_For_User[18]=(u16)(IC_4); Send_For_User[19]=(u16)(C_4); Send_For_User[20]=(u16)(D_4); Send_For_User[21]=(u16)(I1_5); Send_For_User[22]=(u16)(LIM_5); Send_For_User[23]=(u16)(IC_5); Send_For_User[24]=(u16)(C_5); Send_For_User[25]=(u16)(D_5); Send_For_User[26]=(u16)(I1_6); Send_For_User[27]=(u16)(LIM_6); Send_For_User[28]=(u16)(IC_6); Send_For_User[29]=(u16)(C_6); Send_For_User[30]=(u16)(D_6); Send_For_User[31]=(u16)(I1_7); Send_For_User[32]=(u16)(LIM_7); Send_For_User[33]=(u16)(IC_7); Send_For_User[34]=(u16)(C_7); Send_For_User[35]=(u16)(D_7); Send_For_User[36]=(u16)(I1_8); Send_For_User[37]=(u16)(LIM_8); Send_For_User[38]=(u16)(IC_8); Send_For_User[39]=(u16)(C_8); Send_For_User[40]=(u16)(D_8); Send_For_User[41]=(u16)(T1_1); Send_For_User[42]=(u16)(T1_2); Send_For_User[43]=(u16)(T2_1); Send_For_User[44]=(u16)(T2_2); Send_For_User[45]=(u16)(T3_1); //²Ù×Ý¿ª¹Ø¼ÓËÙʱ¼ä Send_For_User[46]=(u16)(T3_2); Send_For_User[47]=(u16)(T4_1); Send_For_User[48]=(u16)(T4_2); KAIGUANLIANG=GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_11)+GPIO_ReadInputDataBit(GPIOC, GPIO_Pin_11)*2+ GPIO_ReadInputDataBit(GPIOC, GPIO_Pin_12)*4+GPIO_ReadInputDataBit(GPIOD, GPIO_Pin_0)*8+ GPIO_ReadInputDataBit(GPIOD, GPIO_Pin_4)*16+GPIO_ReadInputDataBit(GPIOD, GPIO_Pin_3)*32+ XH1*64; Send_For_User[49]=(u16)(KAIGUANLIANG);//¿ª¹ØÁ¿×´Ì¬ Send_For_User[50]=(u16)(I_FEEDBACK1); //±ÈÀýµç´ÅÌúµç1 Send_For_User[51]=(u16)(I_FEEDBACK2); //±ÈÀýµç´ÅÌúµç2 Send_For_User[52]=(u16)(I_FEEDBACK3); //±ÈÀýµç´ÅÌúµç3 Send_For_User[53]=(u16)(I_FEEDBACK4); //±ÈÀýµç´ÅÌúµç4 Send_For_User[54]=(u16)(I_FEEDBACK5); //±ÈÀýµç´ÅÌúµç5 Send_For_User[55]=(u16)(I_FEEDBACK6); //±ÈÀýµç´ÅÌúµç6 Send_For_User[56]=(u16)(I_FEEDBACK7); //±ÈÀýµç´ÅÌúµç7 Send_For_User[57]=(u16)(I_FEEDBACK8); //±ÈÀýµç´ÅÌúµç8 Send_For_User[58]=(u16)(I_FEEDBACK9); //¿ª¹Øµç´ÅÌú1 Send_For_User[59]=(u16)(I_FEEDBACK10); //¿ª¹Øµç´ÅÌú2 Send_For_User[60]=(u16)(I_FEEDBACK11); //¿ª¹Øµç´ÅÌú3 Send_For_User[61]=(u16)(I_FEEDBACK12); //¿ª¹Øµç´ÅÌú4 Send_For_User[62]=(u16)(V_DONGBI/10); //µçλÆ÷µçѹ1 Send_For_User[63]=(u16)(V_FANDOU/10); //µçλÆ÷µçѹ2 Send_For_User[64]=(u16)(V_FUZHU1/10); //µçλÆ÷µçѹ3 Send_For_User[65]=(u16)(V_FUZHU2/10); //µçλÆ÷µçѹ4 DLBJ=DL1| (DL2<<1) | (DL3<<2)|(DL4<<3) |(DL5<<4) | (DL6<<5) |(DL7<<6)| (DL8<<7) | (DL9<<8)|(DL10<<9) |(DL11<<10) | (DL12<<11); Send_For_User[66]=(u16)(DLBJ); dlBJ=dBJ(I_FEEDBACK1)| (dBJ(I_FEEDBACK2)<<1) | (dBJ(I_FEEDBACK3)<<2)|(dBJ(I_FEEDBACK4)<<3) |(dBJ(I_FEEDBACK5)<<4) | (dBJ(I_FEEDBACK6)<<5) |(dBJ(I_FEEDBACK7)<<6)| (dBJ(I_FEEDBACK8)<<7) | (dBJ(I_FEEDBACK9)<<8)|(dBJ(I_FEEDBACK10)<<9) |(dBJ(I_FEEDBACK11)<<10) | (dBJ(I_FEEDBACK12)<<11); if(dlBJ>0) BJBZ2=1; else if(dlBJ==0) BJBZ2=0; Send_For_User[67]=(u16)(dlBJ); if(DWBJ % 8 >0 || DLBJ>0 ) BJBZ1=1; else BJBZ1=0; DWBJ=DDBJ(V_DONGBI)| (DDBJ(V_FANDOU)<<1) | (DDBJ(V_FUZHU1)<<2)|(DDBJ(V_FUZHU2)<<3) |(XBJ(V_ZONG)<<4) |(XBJ1(V_ZONG)<<5) |(get_temperature()<<6); Send_For_User[68]=(u16)(DWBJ); Send_For_User[69]=(u16)(LINEAR1+LINEAR2*2+LINEAR3*4+LINEAR4*8+ZUOYI*256+XIEHE*512+YALI*1024); //Ä£ÄâͨµÀÇúÏß״̬ Send_For_User[0]=1; } }
基于EIA-232,的ModBus-ASCII协议,校验方式Lrc-8
最新推荐文章于 2023-10-24 22:43:51 发布