新聞中心

        EEPW首頁 > 模擬技術(shù) > 設(shè)計應(yīng)用 > PAC應(yīng)用于某動力系統(tǒng)訓(xùn)練模擬器中

        PAC應(yīng)用于某動力系統(tǒng)訓(xùn)練模擬器中

        作者: 時間:2009-07-20 來源:網(wǎng)絡(luò) 收藏

          3.1 初始化子程序

         ?。?)啟動看門狗。系統(tǒng)由于某種原因陷入死循環(huán)后能自動退出,使系統(tǒng)恢復(fù)正常。

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

         ?。?)啟動網(wǎng)絡(luò)心跳包檢測定時器。網(wǎng)絡(luò)心跳包用于確認(rèn)網(wǎng)絡(luò)連接是否正常。

          3.2 網(wǎng)絡(luò)連接子程序

          控制器首先建立 socket,然后與服務(wù)器連接。網(wǎng)絡(luò)連接子程序的主要部分為:

          void ConnectServer()

          { //首先進(jìn)行相關(guān)變量定義

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

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

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

          pulArgp = 1;

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

          {//未能設(shè)置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)

          {//建立連接成功的相應(yīng)處理}

          else

          {//建立連接失敗的相應(yīng)處理}

          }

          3.3 接收數(shù)并處理子程序

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

          void ReceiveAndProcess()

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

          SOCKET_ERROR)

          {//沒有接收到數(shù)據(jù)的處理}

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

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

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



        評論


        相關(guān)推薦

        技術(shù)專區(qū)

        關(guān)閉
        主站蜘蛛池模板: 南京市| 佳木斯市| 安西县| 泽库县| 大足县| 门头沟区| 汝南县| 玉屏| 兴隆县| 同仁县| 从化市| 安阳县| 长垣县| 尤溪县| 渭南市| 孟州市| 萨嘎县| 龙井市| 沧州市| 寿光市| 三亚市| 磐石市| 泰和县| 泸西县| 积石山| 泰顺县| 武陟县| 蒙山县| 隆子县| 汉沽区| 莫力| 行唐县| 平顺县| 石家庄市| 东丽区| 酉阳| 绿春县| 电白县| 临海市| 文水县| 准格尔旗|