新聞中心

        EEPW首頁 > 模擬技術 > 設計應用 > PAC應用于某動力系統訓練模擬器中

        PAC應用于某動力系統訓練模擬器中

        作者: 時間:2009-07-20 來源:網絡 收藏

          3.1 初始化子程序

         ?。?)啟動看門狗。系統由于某種原因陷入死循環后能自動退出,使系統恢復正常。

         ?。?)初始化5024、5017。該兩種模擬量模塊在使用之前需要通過軟件進行設置。其中5024 設置為4~20mA 電流輸出,5017 設置為0~10V 輸入。

          (3)啟動網絡心跳包檢測定時器。網絡心跳包用于確認網絡連接是否正常。

          3.2 網絡連接子程序

          控制器首先建立 socket,然后與服務器連接。網絡連接子程序的主要部分為:

          void ConnectServer()

          { //首先進行相關變量定義

          if((SO_5510=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP))==

          INVALID_SOCKET) //建立socket 并設置為TCP 方式

          {//未能建立socket 的處理}

          pulArgp = 1;

          if(ioctlsocket(SO_5510, FIONBIO, pulArgp)) //將socket 設置為非阻塞模式

          {//未能設置socket 的處理}

          he=gethostbyname(172.18.55.1); //server address

          Server_addr.sin_family = AF_INET; //TCP/IP

          Server_addr.sin_port = htons(Server_Port);

          Server_addr.sin_addr =*((struct in_addr *)he->h_addr);

          memset((Server_addr.sin_zero), 0, 8);

          ConnectReturnFlag = connect(SO_5510, (struct sockaddr *)Server_addr,sizeof(struct

          sockaddr));//建立連接

          if( ConnectReturnFlag == 0)

          {//建立連接成功的相應處理}

          else

          {//建立連接失敗的相應處理}

          }

          3.3 接收數并處理子程序

          5510 接收到數據包后首先分析數據包內的命令字。本系統中設計的命令字有開始采集、停止采集、檢查連接、有效數據等。如果是前三種命令則立即執行,如果是“有效數據”命令則打開數據包后面的內容(可能包含多個子包),子包內包含開關量、模擬量等若干子命令,程序根據不同子命令執行相應子程序。程序主體示意如下。

          void ReceiveAndProcess()

          { if ((numbytes = recv(SO_5510, (char *)RECVITEMS, sizeof(RECVITEMS), 0))==

          SOCKET_ERROR)

          {//沒有接收到數據的處理}

          if(numbytes>0)//收到數據后的處理

          { switch(RECVITEMS.Command) //判斷命令字

          { case Scollectstart: //開始采集命令



        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 砀山县| 盈江县| 东方市| 桑日县| 钦州市| 建湖县| 阆中市| 灵石县| 许昌市| 榕江县| 石阡县| 敖汉旗| 尉氏县| 通山县| 阳谷县| 资源县| 嘉祥县| 蕲春县| 来宾市| 钟祥市| 沂源县| 囊谦县| 保山市| 枞阳县| 塔城市| 郁南县| 金华市| 乐都县| 金川县| 庄河市| 营山县| 康保县| 龙南县| 鲁甸县| 望都县| 滦平县| 三都| 承德县| 万全县| 苗栗市| 岳普湖县|