亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? profibus_modbus_2008.c

?? SPC3 PROGRAMS SP C3 PROGRAMS
?? C
?? 第 1 頁 / 共 2 頁
字號:
/*e : 與cdma模塊通訊  f  : 與智能表通訊
modbus: 40258:本地、遠動狀態=0遠動?。?本地
        rec[107](profibus702)=40258
如果處于遠動可以寫第2和第3頁,否則只寫第一頁。
當modbus執行16命令時需要知道寫的頁號。執行相應的寫命令。
第二頁:寄存器40051至400100
第三頁:寄存器40226至400250。
處于本地狀態時不可以執行16命令。
profibus: send[1]=send[102]=rec[1]時發送下一頁
rec[1]:高4位=發送的頁號 低4位=接收的頁號 */

#memmap xmem
const int num_of_mbus = 1; //定義熱表數 0,1,2,3,4
const int num_of_pulse = 0; //定義水表數 0,1,2,3,4,5,6
const int num_of_energy = 1; //定義電能表數 0,1,2,3,4
//多任務定義
#define OS_MAX_TASKS       8  	// Maximum number of tasks system can create (less stat and idle tasks)
#define STACK_CNT_512		8
#define OS_TICKS_PER_SEC 	128

#define INTERFACE_RES  4 //PE4
#define INTERFACE_S_RTS  0 //PE0
#define INTERFACE_REQ_IT  1 //PE1
//串口緩沖區定義
#define DINBUFSIZE  	255
#define DOUTBUFSIZE 	255

unsigned char write_page_num;
unsigned int profibus_register[257];
unsigned int modbus_register[300];
const unsigned char comm_order[]={1,4,1,4,};
int initFlag;
unsigned char buf[112];
#use "ucos2.lib"
#use packet.lib

unsigned short CRC16(unsigned char *,unsigned short);
long SwapL1(long w1);
void pktFrx();   void pktFtx();
void pktErx();   void pktEtx();
//全局變量定義

unsigned char init_profibus_interface1(void)
{
	unsigned char i,j,sum; static unsigned char inBuf[112];
   //RABBIT先向接口板發送49個字節
	serDwrFlush();//clear Tx data buffers
   serDwrite(buf, 49);
   while(serDwrFree()<DOUTBUFSIZE);
   OSTimeDly(OS_TICKS_PER_SEC/5); //200ms
   //然后RABBIT接收接口板發送來的49個字節
   memset(inBuf,0,sizeof(inBuf));
   i=serDread(inBuf,112,1000);
	if(i==49){
  	   sum=inBuf[0];
 	   for(i=1;i<48;i++)sum+=inBuf[i];
	   printf("\nsum=%d\n",sum);
	   if(inBuf[48]==sum)
		{
		  	printf("\nRs-485 Received 49Bytes, Sum OK!\n");
		   if((inBuf[1]==0)&&(inBuf[2]==0xaa))
 		   {
			   printf("\nInit OK!\n");
			   return 1;
		   }
      }
   }
   else if(i>49)
	{
		printf("\nRs-485 Receive too much data,i=%d Error! 1:\n",i);
   }
	else
		printf("\nInit Error!\n");
   serDrdFlush();//clear Rx data buffers
	return 0;
}

void profibus_task(void *data)
{
	unsigned char R_page,W_page,page,sum,mb11,temp;
	int i,overtime;//int i,p,overtime,k;
	unsigned char send[112],rec[112];
   memset(buf,0,sizeof(buf));
   buf[0]=0x13; //站號
	buf[1]=0x06; //ID高字節
	buf[2]=0xfa; //ID低字節
	buf[3]=0x08; //I/O配置數據長度
	buf[4]=0x5f; //I/O配置數據1
	buf[5]=0x6f; //I/O配置數據2
	buf[6]=0x5f; //I/O配置數據3
	buf[7]=0x6f; //I/O配置數據4
	buf[8]=0x5f; //I/O配置數據5
	buf[9]=0x6f; //I/O配置數據6
	buf[10]=0x1d; //I/O配置數據1
	buf[11]=0x2d; //I/O配置數據2
	buf[24]=0x70; //接收數據長度
	buf[25]=0x70; //發送數據長度
	buf[26]=0x0; //用戶參數數據長度
	buf[48]=buf[0];
	for(i=1;i<48;i++)buf[48]+=buf[i];

   serDopen(115200L);  	serDparity(PARAM_EPARITY);  	serDdatabits(PARAM_8BIT);
	serDwrFlush();	 serDrdFlush(); //clear Rx and Tx data buffers

   OSTimeDly(OS_TICKS_PER_SEC);
   BitWrPortI(PEDR,&PEDRShadow,1,INTERFACE_RES);
	OSTimeDly(2); //10 ms
	BitWrPortI(PEDR,&PEDRShadow,0,INTERFACE_RES);
	OSTimeDly(2);
	BitWrPortI(PEDR,&PEDRShadow,1,INTERFACE_RES);
	OSTimeDly(OS_TICKS_PER_SEC);

   if((BitRdPortI(PEDR,INTERFACE_REQ_IT)==1)	&&(BitRdPortI(PEDR,INTERFACE_S_RTS)==0))
	{
		if(init_profibus_interface1())//PROFIBUS接口板初始化,初始化后,PE1=0,PE0=0。
		{
			for(i=0;i<3;i++)
			{
				BitWrPortI(PFDR,&PFDRShadow,1,3);
				OSTimeDly(OS_TICKS_PER_SEC/2);
				BitWrPortI(PFDR,&PFDRShadow,0,3);
				OSTimeDly(OS_TICKS_PER_SEC/2);
			}
		}
		else
		{
         BitWrPortI(PFDR,&PFDRShadow,1,3);
			for(overtime=0;overtime<2;overtime++)
			{
            if(init_profibus_interface1())
				{
					for(i=0;i<3;i++)
					{
						BitWrPortI(PFDR,&PFDRShadow,1,3);
						OSTimeDly(OS_TICKS_PER_SEC/2);
						BitWrPortI(PFDR,&PFDRShadow,0,3);
						OSTimeDly(OS_TICKS_PER_SEC/2);
					}
               //initFlag=0;
					break;
				}
				else
				{
               initFlag=1;
					BitWrPortI(PFDR,&PFDRShadow,1,3);
				}
			}
		}
	}
	else
	{
		BitWrPortI(PFDR,&PFDRShadow,1,3);
		printf("\nPROFIBUS Interface not ready!\n");
      initFlag=1;
	}
   if(initFlag)assert(initFlag==200);
	OSTimeDly(OS_TICKS_PER_SEC);
	write_page_num=1;


	W_page=1;   page=0; 	mb11=0x01;	temp=0x10;	send[1]=mb11|temp;
	rec[110]=send[1];  	rec[1]=send[1];

   for(;;){

  	   if((BitRdPortI(PEDR,INTERFACE_REQ_IT)==1)	&&(BitRdPortI(PEDR,INTERFACE_S_RTS)==0))
	    	init_profibus_interface1();//PROFIBUS接口板初始化,初始化后,PE1=0,PE0=0。
//準備發送數據體1
		if(send[1]==rec[1]){
				//寫頁的判斷:
			if(!modbus_register[257]){//遠動
				if(write_page_num>3)write_page_num=1;
				if(write_page_num==2||write_page_num==3)W_page=write_page_num;
				else{
					page++;		if(page>3)page=0;
					W_page=comm_order[page];
				}
			}
			else//本地
				W_page=1;
			printf("page_num=%d",W_page);
//W_page=1;
			switch(W_page){
				case 1:
//第一頁(25個4字節數據)寄存器40001至40050。
					memcpy(&send[2],&profibus_register[1],100);
					break;
				case 2:
//第二頁(25個4字節數據)寄存器40051至400100。
					memcpy(&send[2],&profibus_register[51],100);
					break;
				case 3:
//第三頁(25個2字節數據)寄存器40226至400250。
					memcpy(&send[2],&profibus_register[226],50);
					break;
				case 4:
//第四頁(25個2字節數據,時鐘)寄存器40251至400256。
					memcpy(&send[2],&profibus_register[251],14);
					break;
				}
			}
//準備發送數據體1
			R_page++;
			if(R_page>4)R_page=1;
//準備發送數據頭
			mb11=0x01<<(R_page-1);
			temp=0x10<<(W_page-1);
			send[0]=0x0;//發送命令
			send[1]=mb11|temp;
			send[102]=mb11|temp;
			send[103]=0;
			for(i=1;i<103;i++)send[103]+=send[i];
//準備發送數據頭
			if((BitRdPortI(PEDR,INTERFACE_REQ_IT)==0)&&(BitRdPortI(PEDR,INTERFACE_S_RTS)==0))
         {
					send[111]=send[0];
					for(i=1;i<111;i++){/*111->11*/
						send[111]+=send[i];
					}
					serDwrFlush();//clear Tx data buffers
//發送數據112Bytes.
               serDwrite(send, 112);
               while(serDwrFree()<DOUTBUFSIZE);
     				OSTimeDly(25);
               for(overtime=0; overtime<50; overtime++)
               {
					   if(serDrdUsed()>111)break;
                  OSTimeDly(4);
					}
					if(overtime<50){
                  serDread(rec,112,10);
						sum=rec[0];
						for(i=1;i<111;i++)sum=sum+rec[i];

						if(rec[111]==sum){
							//寫成功判斷
							if((send[1]==rec[1])&&((rec[1]>>4==2)||(rec[1]>>4==4)))
								write_page_num=1;
							switch(rec[1]&0x0f){
           					case 1:
									memcpy(&profibus_register[51],&rec[5],100);
									for(i=0;i<50;i+=2){
                             modbus_register[50+i]=profibus_register[52+i];
                             modbus_register[51+i]=profibus_register[51+i];
                           }
              					break;
           					case 2:
									if(write_page_num!=2){
                               memcpy(&profibus_register[101],&rec[5],100);
									    for(i=0;i<50;i+=2){
                                 modbus_register[100+i]=profibus_register[102+i];
                                 modbus_register[101+i]=profibus_register[101+i];
                               }
									}
              					break;
           					case 4:
									memcpy(&profibus_register[151],&rec[5],100);
                           memcpy(&modbus_register[150],&rec[5],100);
              					break;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩一区二区三| 亚洲国产精品嫩草影院| **性色生活片久久毛片| 午夜精品一区二区三区电影天堂 | eeuss鲁一区二区三区| 欧美军同video69gay| 中文字幕一区二区三区蜜月 | 亚洲国产一区在线观看| 国产精品影视网| 91精品国产色综合久久ai换脸 | 中文字幕一区在线观看| 免费看欧美美女黄的网站| 日本丰满少妇一区二区三区| 国产亚洲婷婷免费| 日本v片在线高清不卡在线观看| 91视频www| 国产精品福利一区| 韩国三级中文字幕hd久久精品| 欧美日韩aaa| 亚洲国产精品久久不卡毛片| 91一区二区在线| 国产精品人妖ts系列视频| 国内成人自拍视频| 精品欧美乱码久久久久久1区2区| 丝袜诱惑亚洲看片| 欧美日韩高清在线| 亚洲成人自拍一区| 欧美日韩国产成人在线91| 亚洲成人免费看| 欧美日韩国产一级| 丝袜亚洲另类欧美| 欧美一区二区三区四区在线观看| 五月婷婷欧美视频| 在线不卡一区二区| 日本中文字幕一区| 日韩亚洲国产中文字幕欧美| 免费看黄色91| 精品国产一区二区三区久久久蜜月 | 久久久不卡网国产精品二区| 久久精品久久99精品久久| 欧美刺激脚交jootjob| 麻豆精品视频在线| 久久人人爽爽爽人久久久| 高清国产一区二区三区| 国产精品日日摸夜夜摸av| 色8久久精品久久久久久蜜| 亚洲成在人线免费| 日韩视频123| 国产精品996| 亚洲男人天堂一区| 欧美日韩高清一区二区三区| 精品在线一区二区三区| 久久久久久97三级| 色88888久久久久久影院按摩| 五月婷婷久久丁香| 久久亚洲春色中文字幕久久久| 国产精品亚洲第一区在线暖暖韩国 | 在线中文字幕一区| 人妖欧美一区二区| 国产无遮挡一区二区三区毛片日本| 成人免费毛片aaaaa**| 亚洲精选视频在线| 欧美一级久久久久久久大片| 国产不卡视频在线观看| 亚洲在线免费播放| 欧美精品一区二区三区在线| 色中色一区二区| 免费一级欧美片在线观看| 中文字幕高清一区| 91精品国模一区二区三区| 国产精品夜夜嗨| 午夜在线电影亚洲一区| 久久精品在线免费观看| 欧美午夜精品一区二区蜜桃| 国产一区二区h| 亚洲午夜电影在线观看| 久久天堂av综合合色蜜桃网| 欧美影院一区二区| 国产成人av电影在线观看| 亚洲成人免费在线| 国产精品电影一区二区三区| 欧美xxxxxxxx| 欧美日韩亚洲综合在线| 成人黄色av电影| 麻豆久久久久久久| 亚洲在线观看免费视频| 国产精品久久久久久久裸模| 日韩一区二区三| 欧美日韩一区二区三区在线| 成人教育av在线| 国产成人综合在线观看| 人人超碰91尤物精品国产| 樱桃视频在线观看一区| 亚洲国产高清aⅴ视频| 欧美v日韩v国产v| 欧美丰满少妇xxxxx高潮对白| 欧美在线你懂的| 99麻豆久久久国产精品免费 | 国产精品乱码一区二区三区软件 | 中文字幕欧美激情| 亚洲精品一区二区三区在线观看 | 91精品国产免费| 欧美日韩一区二区不卡| 色婷婷国产精品| 99精品久久免费看蜜臀剧情介绍| 国内外精品视频| 久久超碰97人人做人人爱| 青青草精品视频| 美美哒免费高清在线观看视频一区二区| 亚洲一区二区av电影| 亚洲主播在线观看| 亚洲自拍偷拍图区| 亚洲在线视频免费观看| 亚洲一二三四在线| 亚洲国产另类av| 亚洲成人精品一区二区| 香蕉乱码成人久久天堂爱免费| 亚洲综合久久av| 日韩一区精品视频| 亚洲国产精品久久人人爱蜜臀| 亚洲自拍都市欧美小说| 午夜久久福利影院| 美女视频第一区二区三区免费观看网站| 视频一区免费在线观看| 日韩专区一卡二卡| 久久91精品国产91久久小草 | 色综合激情五月| 欧美日韩亚洲国产综合| 337p亚洲精品色噜噜噜| 日韩精品一区国产麻豆| 久久久久88色偷偷免费| 国产日产精品一区| 亚洲欧美日韩电影| 日日夜夜精品视频免费| 老司机精品视频一区二区三区| 国内外成人在线视频| 粉嫩蜜臀av国产精品网站| 成人av动漫网站| 欧美精品v日韩精品v韩国精品v| 日韩欧美色综合网站| 国产精品嫩草久久久久| 亚洲在线观看免费| 国产一区三区三区| 色欧美片视频在线观看| 日韩一级大片在线观看| 欧美国产一区二区在线观看 | 日韩一区二区三区四区 | av不卡免费电影| 欧美日韩极品在线观看一区| 26uuu久久天堂性欧美| 欧美激情一区二区三区蜜桃视频| 亚洲影院免费观看| 韩国三级在线一区| 欧美手机在线视频| 久久久美女艺术照精彩视频福利播放| 亚洲欧美另类图片小说| 久久99精品久久久久久国产越南 | 91麻豆国产精品久久| 日韩一区二区在线看| 亚洲三级在线免费| 免费看欧美美女黄的网站| 成人动漫一区二区| 日韩一区二区三区免费观看| 中文字幕一区二区不卡| 精品午夜一区二区三区在线观看 | 久久久久久久久久久久电影| 亚洲一区二区三区视频在线 | 高清日韩电视剧大全免费| 91精品国模一区二区三区| 亚洲欧美视频一区| 国产91精品欧美| 欧美哺乳videos| 天堂蜜桃91精品| 日本福利一区二区| 国产精品国产精品国产专区不片| 麻豆高清免费国产一区| 欧美日韩亚洲综合| 亚洲综合成人在线视频| 99视频有精品| 国产精品久久久久影院亚瑟| 精品一区二区三区免费播放 | 久久精品国产99| 欧美群妇大交群中文字幕| 亚洲欧美经典视频| 成人综合激情网| 精品国产免费人成电影在线观看四季| 亚洲高清视频在线| 色婷婷综合久色| 亚洲日本在线a| a亚洲天堂av| 国产精品国产三级国产普通话99| 国产麻豆成人传媒免费观看| 日韩欧美国产小视频| 日韩国产精品大片| 欧美日韩国产在线观看| 亚洲va天堂va国产va久| 欧美人狂配大交3d怪物一区| 婷婷综合久久一区二区三区| 欧美色综合网站| 婷婷开心激情综合|