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

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

?? nsiec104server.c

?? 南瑞的IEC104規(guī)約實現(xiàn)的源碼
?? C
?? 第 1 頁 / 共 5 頁
字號:
/*

            Modify Record 
            2002-11-16            Add Network Card Value Geting From nsc200.ini
            2002-12-26            According   Nedd,adding Send chang yc

*/
#include <socket.h>
#include <sockLib.h>
#include <stdlib.h>
#include <sysLib.h>
#include <logLib.h>
#include <errno.h>
#include <string.h> 
#include <stdio.h> 
#include <time.h>
#include "wdLib.h"
#include "in.h"		
#include "ioLib.h"	

#include "constant.h"
#include "NsDataBase.h"
#include "NsExtTime.h"
#include "NsIoFunction.h"
#include "NsCommon.h"
#include "NsReadOnly.h"
#include "ExtDataBase.h"

#include "Project/NsIec104.h"

static NS_IEC104_MAIN      NsIec104Struct;


        void       NsNetServerProcess(void);

static  void       NsIec104Process(void);
static  void       NsIec104Init(unsigned char Card,short Port);
static  void       NsIec104NetInit(void);

static  void       NsIec104Reset(void);
static  void       NsIec104ProcessFormatI(void);
static  void       NsIec104ProcessFormatS(void);
static  void       NsIec104ProcessFormatU(void);
static  void       NsIec104Interrogation(void);
static  void       NsIec104InterrogationGroup(void);
static  void       NsIec104InterrogationAll(void);
static  void       NsIec104ProcessYxGroup(unsigned char Group);
static  void       NsIec104ProcessYcGroup(unsigned char Group);
static  void       NsIec104ProcessCellGroup(unsigned char Group);
static  void       NsIec104ProcessTime(void);
static  void       NsIec104ProcessYkYt(void);
static  void       NsIec104ProcessPulse(void);
static  void       NsIec104DefaultGroup(unsigned char Group);
static  void       NsIec104ProcessPulseData(void);
static  void       NsIec104SendGroup(void);

static  void       NsIec104SendYkMessage(short Who,unsigned char Action);
static  void       NsIec104ReceiveYkReturn(void);
static  void       NsIec104SendYkSelectConfirm(void);
static  void       NsIec104SendYkExeConfirm(void);
static  void       NsIec104SendYkEscConfirm(void);
static  unsigned char        NsIec104SendCosSoe(void);
static  void       NsIec104InitYk(void);
static  void       NsIec104CycleCount(void);
static  void       NsIec104SendChangeYc(void);
/*
static void 	   Iec104testCosSoe(void);
void 		debug104(void);
*/
static  void       NsIec104Init(unsigned char Card,short Port)
{
 unsigned short    i;
 int               Result;
 char              Buff[32];
 char              Ip0Buff[64],Ip0Route[64];
 char              Ip1Buff[64],Ip1Route[64];
 NS_SYSTEM_DATA_MODE	SysData;

    NsIec104Struct.LinkState=NS_DISCONNECTED;
    NsIec104Struct.NsNewSocketId=0;
    getforsecond(&NsIec104Struct.LinkValidTime);
    NsIec104Struct.ReceiveIndex=0;  
    NsIec104Struct.ReceiveIndexLength=0;  
    NsIec104Struct.SendMeNumber=0;  
    NsIec104Struct.HasSendNumber=0;
    NsIec104Struct.NeedSendNumber=0;
    NsIec104Struct.LeftSendNumber=0;
    NsIec104Struct.Card=Card;
    NsIec104Struct.Port=Port;
    NsIec104Struct.YkStartSign=OFF;
    NsIec104Struct.Table=0;
    NsIec104Struct.NetRunSign=OFF;
    NsIec104Struct.SetNetSign=OFF;

    Result=ReadNsc200Ini("NsIec104","SetTimeFlag",Buff);
    if(Result)
    {
        NsIec104Struct.SetTimeFlag=1;
    }

    for(i=0;i<NS_IEC104_USE_CYCLE;i++) 
    {
	getforsecond(&NsIec104Cycle[i].LastTime);
	NsIec104Cycle[i].TimeNap= NsIec104Nap[i];
        NsIec104Cycle[i].TimeSign=OFF; 
    }

    for(i=0;i<NS_IEC104_MAX_YC;i++)
        NsIec104Struct.YcNap[i]=5;
    NsIec104Struct.YcChangeCycle=0;
    
    	NsIec104Struct.TableNo = NsGetCommTable(Port);
	GetSysDataMode(NsIec104Struct.TableNo,&SysData);
	/*NsIec104Struct.XYxNum  = SysData.NsYxTableNumber;
	
	NsIec104Struct.XYmNum  = SysData.NsYmTableNumber;*/
	NsIec104Struct.XYcNum  = SysData.NsYcTableNumber;
	NsIec104Struct.XYcCycleNum = (NsIec104Struct.XYcNum + NS_IEC104_ONCE_YC_COUNT - 1) / NS_IEC104_ONCE_YC_COUNT;
	       
}


static  void        NsIec104NetInit(void)
{
 int               Result;
 char              Buff[32];
 char              Ip0Buff[64],Ip0Route[64];
 char              Ip1Buff[64],Ip1Route[64];

    NsTcpServerInit(NsIec104Struct.Card,NsIec104Struct.Port,"10.14.127.200");
    switch(NsIec104Struct.Card)
    {
        case 0:
                Result=ReadNsc200Ini("NsIec104","Route0Sign",Buff);
                if(Result)
                {
                   NsReadIpAddress("NsIec104","Route0Net",Ip0Buff);     
                   NsReadIpAddress("NsIec104","Route0Ip",Ip0Route);  
                   NsAddRoute(Ip0Buff,Ip0Route);   
                }
                break;
        case 1:
                Result=ReadNsc200Ini("NsIec104","Route1Sign",Buff);
                if(Result)
                {
                   NsReadIpAddress("NsIec104","Route1Net",Ip1Buff);     
                   NsReadIpAddress("NsIec104","Route1Ip",Ip1Route);     
                   NsAddRoute(Ip1Buff,Ip1Route);   
                }
                break;
        default:
                break;
    }
}




static  void        NsIec104InitYk(void)
{

    NsIec104Struct.YkStartSign=OFF;
    NsIec104Struct.YkNowState=0xff;
    NsIec104Struct.YkCellNumber=0xff;
    NsIec104Struct.YkKgNumber=0xff;

}

void NsNetServerProcessv(void)
{

    while(1)
    {
      taskDelay(88);
    }
}


void NsNetServerProcess(void)
{
 unsigned long     Now,Nap;
 unsigned short    Card;
 int               Result;
 char              Buff[32];
 
   Card=0;
   Result=ReadNsc200Ini("NsTasks","NsServerCard",Buff);
   if(Result)
   {
      Card=Result;
      if(Card<=2&&Card>0)
      {
        Card-=1;
      }
   }
   NsIec104Init(Card,2404);
   for(;;)
   {
        NsIec104Struct.SystemState = NsGetSysParameter(NS_NSCC_STATE);
        NsIec104Struct.NetRunSign  = NsNetConfigState();

        if(NsIec104Struct.NetRunSign==ON&&NsIec104Struct.SetNetSign==OFF&&NsIec104Struct.SystemState==DUTY)
        {
           NsIec104NetInit();
           NsIec104Struct.SetNetSign=ON;
        }
        if(NsIec104Struct.NetRunSign==ON&&NsIec104Struct.SetNetSign==ON&&NsIec104Struct.SystemState==DUTY)
        {
          getforsecond(&Now);
          Nap=DiffMsLong(Now,NsIec104Struct.LinkValidTime);
          if(Nap>NS_IEC104_PERMIT_TIME)
          {
             NsIec104Struct.LinkState=NS_DISCONNECTED;
          }
          if(NsIec104Struct.YkStartSign==ON)
          {
             Nap=DiffMsLong(Now,NsIec104Struct.YkStartTime);
             if(Nap>NS_IEC104_YK_PERMIT_TIME)
             {
                 NsIec104InitYk();
             }
          }
          if(NsIec104Struct.LinkState==NS_DISCONNECTED)
          {

              NsIec104Struct.NsNewSocketId=NsTcpConnect(NsIec104Struct.NsNewSocketId,NsIec104Struct.Card);

              if(NsIec104Struct.NsNewSocketId>0)
              {
                 NsIec104Struct.LinkState=NS_CONNECTED;  
                 NsIec104Struct.SendMeNumber=0;  
                 getforsecond(&NsIec104Struct.LinkValidTime);
              }
              else 
             {
                 /*NsIec104Init(NsIec104Struct.Card,NsIec104Struct.Port);*/
                
                /*  NsTcpServerInit(NsIec104Struct.Card,NsIec104Struct.Port,"10.14.8.23");*/
                 NsIec104Struct.LinkState=NS_DISCONNECTED;
                 NsIec104Reset();
                 taskDelay(866);
             }
          }  
          else 
          {
           
    	     NsIec104Struct.ReceiveIndexLength=recv(NsIec104Struct.NsNewSocketId,&NsIec104Struct.ReceiveBuffer[NsIec104Struct.ReceiveIndex],198,0);
    	     
             if(NsIec104Struct.ReceiveIndexLength>0)
             {
                NsIec104Struct.ReceiveLength+=NsIec104Struct.ReceiveIndexLength;
                if(NsIec104Struct.ReceiveLength<NS_IEC104_RECEIVEBUFFER)
                {
                    NsIec104Process();
                }
                else 
                {
                    NsIec104Reset();
                }
                /*
                debug104();
				Iec104testCosSoe();
				*/
                getforsecond(&NsIec104Struct.LinkValidTime);
             }
             
             NsIec104ReceiveYkReturn();
             NsIec104SendGroup();

             if(NsIec104Struct.LeftSendNumber==0)
             {
                  NsIec104Struct.CosSign=NsIec104SendCosSoe();
                  if(NsIec104Struct.CosSign==0)
                  {
                     NsIec104SendChangeYc();
                  }
             }
          }
          NsIec104CycleCount();
      }
      taskDelay(18);
   }
}

static void  NsIec104SendChangeYc(void)
{

unsigned short   General,Index;
unsigned char    *P;
unsigned short   i,RealNumber;
         short   *Pyc,YcValue,YcNap;
float		fYc;



          Index=0;
          NsIec104Struct.SendBuffer[Index++]=0x68;
          NsIec104Struct.SendBuffer[Index++]=0x00;

          RealNumber=(NsIec104Struct.SendMeNumber<<1);
          P=(unsigned char *)&RealNumber;
          NsIec104Struct.SendBuffer[Index++]=P[0];                                /*     send number       */
          NsIec104Struct.SendBuffer[Index++]=P[1];
          NsIec104Struct.SendMeNumber=(NsIec104Struct.SendMeNumber+1)%65535;


          NsIec104Struct.SendBuffer[Index++]=NsIec104Struct.ReceiveHimNumber[0];  /*     receive number    */
          NsIec104Struct.SendBuffer[Index++]=NsIec104Struct.ReceiveHimNumber[1];

          NsIec104Struct.SendBuffer[Index++]=9;                        /*    asdu type   */
          NsIec104Struct.SendBuffer[Index++]=0;                  /*    information object count No 7 Byte */

           /*  REASONBYTE  now is two */
          NsIec104Struct.SendBuffer[Index++]=3;                 /*    reason  */
          NsIec104Struct.SendBuffer[Index++]=0x0;                      /*    reason  */

          NsIec104Struct.SendBuffer[Index++]=0x01;
          NsIec104Struct.SendBuffer[Index++]=0x00;
/*             
          for(i=0;i<NS_IEC_104_ASDUADDRESSBYTE;i++)
             NsIec104Struct.SendBuffer[Index++]=NsIec104Struct.CommonAsduAddress[i];
*/
          NsIec104Struct.YcLibIndex=NsIec104Struct.YcChangeCycle*NS_IEC104_ONCE_YC_COUNT;
          /*NsIec104Struct.YcChangeCycle=(NsIec104Struct.YcChangeCycle+1)%NS_IEC104_CHANGE_YC_CYCLE;*/
          NsIec104Struct.YcChangeCycle=(NsIec104Struct.YcChangeCycle+1)%NsIec104Struct.XYcCycleNum;
          
          NsIec104Struct.YcChangeCount=0;

          switch(NsIec104Struct.Table)
          {
                 case 0:
                      NsGetDd1Lib(NS_YC_DATA,NsIec104Struct.YcLibIndex,NsIec104Struct.DataBuff,NS_IEC104_ONCE_YC_COUNT);
                      break;
                 case 1:
                      NsGetDd2Lib(NS_YC_DATA,NsIec104Struct.YcLibIndex,NsIec104Struct.DataBuff,NS_IEC104_ONCE_YC_COUNT);
                      break;
                 case 2:
                      NsGetDd3Lib(NS_YC_DATA,NsIec104Struct.YcLibIndex,NsIec104Struct.DataBuff,NS_IEC104_ONCE_YC_COUNT);
                      break;
                 case 3:
                      NsGetDd4Lib(NS_YC_DATA,NsIec104Struct.YcLibIndex,NsIec104Struct.DataBuff,NS_IEC104_ONCE_YC_COUNT);
                      break;
          }

          for(i=0;i<NS_IEC104_ONCE_YC_COUNT;i++)
          {
                 /*Pyc=(short *)&NsIec104Struct.DataBuff[2*i];
                 YcValue= *Pyc;
                 YcNap=YcValue-NsIec104Struct.YcLastValue[NsIec104Struct.YcLibIndex+i];

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91精品国产色综合久久不卡蜜臀| 国产欧美日韩视频一区二区| 精品国产一区二区精华| 亚洲国产精品成人综合色在线婷婷| 亚洲综合激情另类小说区| 国模少妇一区二区三区| 欧美日本不卡视频| 国产精品麻豆视频| 麻豆国产精品官网| 欧美日韩一区二区三区不卡| 国产精品久久久久久久蜜臀| 日本中文一区二区三区| 欧美亚男人的天堂| 国产精品色婷婷| 国产精品乡下勾搭老头1| 欧美一区二区黄| 亚洲高清中文字幕| 在线影院国内精品| 亚洲同性gay激情无套| 国产xxx精品视频大全| 日韩欧美国产一区二区三区| 亚洲国产精品久久人人爱 | 欧美三级午夜理伦三级中视频| xnxx国产精品| 另类小说色综合网站| 欧美另类高清zo欧美| 亚洲一二三区视频在线观看| 91在线精品一区二区三区| 久久久精品免费观看| 国产一区在线视频| 日韩欧美成人一区二区| 久久99久久久久| 欧美成人猛片aaaaaaa| 精品一区二区三区在线播放视频| 91精品国产色综合久久| 久久精品久久99精品久久| 91精品在线观看入口| 另类小说色综合网站| www成人在线观看| 国产福利91精品| 国产欧美一区二区精品久导航 | 日韩av午夜在线观看| 欧美视频中文字幕| 三级一区在线视频先锋| 91精品婷婷国产综合久久| 全国精品久久少妇| 精品国产一区二区三区久久影院 | 国产精品午夜在线观看| 成人免费毛片嘿嘿连载视频| 国产精品久久久久婷婷| 91久久精品网| 日本亚洲欧美天堂免费| 精品国产91乱码一区二区三区| 精品制服美女久久| 国产农村妇女精品| 日本道色综合久久| 麻豆一区二区在线| 亚洲视频在线一区观看| 欧美色精品在线视频| 麻豆91在线播放免费| 欧美经典一区二区| 欧美伊人久久大香线蕉综合69| 欧美aaaaaa午夜精品| 亚洲国产精品二十页| 欧美乱熟臀69xxxxxx| 国产精品一卡二| 亚洲亚洲人成综合网络| 精品久久久久久综合日本欧美| 成人国产精品免费| 丝袜亚洲另类欧美综合| 欧美激情中文字幕一区二区| 欧美日韩美女一区二区| 成人黄色在线网站| 日韩va欧美va亚洲va久久| 一区在线播放视频| 日韩欧美电影在线| 一本大道久久精品懂色aⅴ| 久久福利视频一区二区| 中文字幕亚洲电影| 久久久综合激的五月天| 91精品视频网| 欧洲亚洲国产日韩| 成人福利在线看| 国模一区二区三区白浆 | 国产精品成人一区二区艾草 | 色美美综合视频| 国模大尺度一区二区三区| 亚洲成人综合视频| 中文字幕亚洲一区二区va在线| 精品免费国产二区三区 | 欧美优质美女网站| 国产99久久久国产精品潘金 | 色94色欧美sute亚洲13| 国产一区二区福利| 美女尤物国产一区| 亚洲国产日韩a在线播放性色| 国产欧美日韩亚州综合| 精品99一区二区三区| 91精品啪在线观看国产60岁| 欧美色精品在线视频| 日本道免费精品一区二区三区| 99久久婷婷国产综合精品| 国产精品综合网| 黑人巨大精品欧美一区| 免费在线观看视频一区| 日日夜夜一区二区| 日韩av成人高清| 日韩高清不卡一区二区| 亚洲成人av电影| 肉丝袜脚交视频一区二区| 午夜精品视频在线观看| 午夜视频一区在线观看| 亚洲丰满少妇videoshd| 一区二区三区四区乱视频| 一区二区三区在线观看动漫| 亚洲欧美日本韩国| 一区二区三区中文字幕| 亚洲一区二区三区视频在线| 亚洲成av人片在www色猫咪| 亚洲成人av电影在线| 日韩精品亚洲一区二区三区免费| 偷拍亚洲欧洲综合| 轻轻草成人在线| 久久精品噜噜噜成人av农村| 国产在线精品一区在线观看麻豆| 极品美女销魂一区二区三区免费| 国产乱对白刺激视频不卡| 成人在线一区二区三区| 99精品视频一区二区三区| 91麻豆产精品久久久久久| 91麻豆精东视频| 欧美日产国产精品| 日韩欧美电影在线| 久久久99精品免费观看不卡| 国产精品久久久久久久久搜平片| 亚洲人xxxx| 免费人成在线不卡| 国产精品亚洲一区二区三区妖精| 99久久伊人久久99| 欧美精选在线播放| 国产性色一区二区| 亚洲精品成人悠悠色影视| 五月天精品一区二区三区| 精品一区二区免费视频| 99久久免费国产| 欧美日韩国产一级片| 久久久国际精品| 一二三四区精品视频| 久久成人18免费观看| 成人一级片网址| 欧美日韩国产一级| 欧美激情一区二区三区不卡| 亚洲第一福利视频在线| 国产一区二区三区最好精华液| 色综合天天综合在线视频| 日韩精品中文字幕在线不卡尤物 | 日本一区二区三区免费乱视频| 亚洲免费毛片网站| 久久99精品久久只有精品| 91在线高清观看| 精品福利一区二区三区| 一级特黄大欧美久久久| 国产一区二三区好的| 欧美日韩精品电影| 国产三级精品三级在线专区| 欧美一区二区三区婷婷月色| 亚洲欧洲综合另类在线| 国产成人在线电影| 91精品欧美福利在线观看| 一区二区三区免费网站| 制服丝袜在线91| 亚洲精品乱码久久久久久| 国产成人亚洲综合色影视| 欧美一级免费观看| 一区二区三区在线免费视频| 成人免费视频一区| 精品久久久久久亚洲综合网| 亚洲va在线va天堂| 色狠狠一区二区三区香蕉| 久久精品免费在线观看| 日本 国产 欧美色综合| 欧美日韩一区久久| 亚洲精品日日夜夜| 99视频精品全部免费在线| 亚洲va国产va欧美va观看| 99久久精品国产一区| 久久久综合精品| 国产高清精品久久久久| 久久免费视频一区| 精品写真视频在线观看| 91精品国产入口| 免费黄网站欧美| 91精品国产一区二区人妖| 日韩国产高清影视| 91精品欧美一区二区三区综合在| 日韩激情视频网站| 日韩一级免费观看| 麻豆91在线播放| 日韩午夜av电影| 久久99热狠狠色一区二区|