⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 hrtsrvin.c

📁 HART协议编程例程
💻 C
📖 第 1 页 / 共 2 页
字号:
/**********************************************************************
 * Function Block Factory Files Generator V 1.0                       *
 * This file was generated automatically!                             *
 * ==============================================                     *
 * DO NEVER MAKE CHANGES IN THIS FILE MANUALLY!!!                     *
 * ==============================================                     *
 * Date/Time: 31.07.00 12:54:37                                       *
 *                                                                    *
 *                                                                    *
 * Copyright 2000, Borst Automation, Fachingen                        *
 * All Rights Reserved                                                *
 *                                                                    *
 *         File Name: HrtSrvIn.c                                      *
 *            Device: MyDevice                                        *
 *           Profile: HART                                            *
 *         Author(s):                                                 *
 *                    Walter Borst                                    *
 *                                                                    *
 * Revision History                                                   *
 * ================                                                   *
 * 7.11.1999, W. Borst:                                               *
 *   Initial Version                                                  *
 * 29.7.2000                                                          *
 *   Some Improvals for HART conformance testing                      *
 *                                                                    *
 **********************************************************************/

/**********************************************************************
 * The standard include                                               *
 **********************************************************************/
#define __HRTSRVIN_H__
#include "..\HrtSrvIn\HrtSrvIn.h"

/**********************************************************************
 * User Includes and Definitions                                      *
 **********************************************************************/
//No user additions so far

/**********************************************************************
 * Global Variables                                                   *
 **********************************************************************/
T_BOOL g_bNoData;
T_BOOL g_bConfChange;

/**********************************************************************
 * The Service Interpreter                                            *
 **********************************************************************/
   /*******************/
void hrtSrvInterpreter(
   /*******************/
     void
  )
/*
 * The HART Command Interpreter
 */
{
  g_bNoData = T_FALSE;

  if (strHrtAppIf.byStatus != HRT_APP_BUSY)
    return;
  switch(strHrtAppIf.bySrvID)
  {
     case 0:
       hrtSrvFnc000();
       break;
     case 1:
       hrtSrvFnc001();
       break;
     case 2:
       hrtSrvFnc002();
       break;
     case 3:
       hrtSrvFnc003();
       break;
     case 6:
       hrtSrvFnc006();
       break;
     case 11:
       hrtSrvFnc011();
       break;
     case 12:
       hrtSrvFnc012();
       break;
     case 13:
       hrtSrvFnc013();
       break;
     case 14:
       hrtSrvFnc014();
       break;
     case 15:
       hrtSrvFnc015();
       break;
     case 16:
       hrtSrvFnc016();
       break;
     case 17:
       hrtSrvFnc017();
       break;
     case 18:
       hrtSrvFnc018();
       break;
     case 19:
       hrtSrvFnc019();
       break;
     default:
       strHrtAppIf.byResponse1 = HRT_CMD_NOT_IMPL;
       strHrtAppIf.byDataLen = 0;
  }
  if (g_bNoData)
    strHrtAppIf.byDataLen = 0;
  strHrtAppIf.byResponse2 = FbHartGetResponse2();
  strHrtAppIf.byStatus = HRT_APP_DONE;
}


/**********************************************************************
 * HART Service Handling Procedures                                   *
 **********************************************************************/

          /**************/
static void hrtSrvFnc000(
          /**************/
     void
  )
/*
 * HART Command 0 Handling Function
 */
{
  strHrtAppIf.byResponse1 = 0;
  strHrtAppIf.byData[0] = (BYTE) co_ui8FbHartCmd0ID;
  strHrtAppIf.byData[1] = (BYTE) co_ui8FbHartMfrID;
  strHrtAppIf.byData[2] = (BYTE) co_ui8FbHartMfrDevType;
  strHrtAppIf.byData[3] = (BYTE) co_ui8FbHartNoReqPreAmbs;
  strHrtAppIf.byData[4] = (BYTE) co_ui8FbHartUnivCmdRev;
  strHrtAppIf.byData[5] = (BYTE) co_ui8FbHartTransmSpecRev;
  strHrtAppIf.byData[6] = (BYTE) co_ui8FbHartSoftwRev;
  strHrtAppIf.byData[7] = (BYTE) co_ui8FbHartHardwRev;
  strHrtAppIf.byData[8] = (BYTE) co_ui8FbHartFlags;
  M_API_MEMCPY(&strHrtAppIf.byData[9],&co_ui24FbHartDeviceIDnum,3);
#ifdef VC_STUDIO
  M_API_SWAP3(&strHrtAppIf.byData[9]);
#endif
  strHrtAppIf.byDataLen = 12;
}

          /**************/
static void hrtSrvFnc001(
          /**************/
     void
  )
/*
 * HART Command 1 Handling Function
 */
{
  strHrtAppIf.byResponse1 = (BYTE) FbHartGetRspCmd1();
  strHrtAppIf.byData[0] = (BYTE) co_ui8MeasPv1unit;
  bLowLevelLocked = TRUE;
  M_API_MEMCPY(&strHrtAppIf.byData[1],&rl_flMeasPv1,4);
#ifdef VC_STUDIO
  M_API_MSfloatToIEEE(&strHrtAppIf.byData[1]);
#endif
  bLowLevelLocked = FALSE;
  strHrtAppIf.byDataLen = 5;
}

          /**************/
static void hrtSrvFnc002(
          /**************/
     void
  )
/*
 * HART Command 2 Handling Function
 */
{
  strHrtAppIf.byResponse1 = 0;
  bLowLevelLocked = TRUE;
  M_API_MEMCPY(&strHrtAppIf.byData[0],&rl_flIoutActCurrent,4);
#ifdef VC_STUDIO
  M_API_MSfloatToIEEE(&strHrtAppIf.byData[0]);
#endif
  M_API_MEMCPY(&strHrtAppIf.byData[4],&rl_flIoutActPercent,4);
#ifdef VC_STUDIO
  M_API_MSfloatToIEEE(&strHrtAppIf.byData[4]);
#endif
  bLowLevelLocked = FALSE;
  strHrtAppIf.byDataLen = 8;
}

          /**************/
static void hrtSrvFnc003(
          /**************/
     void
  )
/*
 * HART Command 3 Handling Function
 */
{
  strHrtAppIf.byResponse1 = 0;
  bLowLevelLocked = TRUE;
  M_API_MEMCPY(&strHrtAppIf.byData[0],&rl_flIoutActCurrent,4);
#ifdef VC_STUDIO
  M_API_MSfloatToIEEE(&strHrtAppIf.byData[0]);
#endif
  strHrtAppIf.byData[4] = (BYTE) co_ui8MeasPv1unit;
  M_API_MEMCPY(&strHrtAppIf.byData[5],&rl_flMeasPv1,4);
#ifdef VC_STUDIO
  M_API_MSfloatToIEEE(&strHrtAppIf.byData[5]);
#endif
  strHrtAppIf.byData[9] = (BYTE) co_ui8MeasPv2unit;
  M_API_MEMCPY(&strHrtAppIf.byData[10],&rl_flMeasPv2,4);
#ifdef VC_STUDIO
  M_API_MSfloatToIEEE(&strHrtAppIf.byData[10]);
#endif
  bLowLevelLocked = FALSE;
  strHrtAppIf.byDataLen = 14;
}

          /**************/
static void hrtSrvFnc006(
          /**************/
     void
  )
/*
 * HART Command 6 Handling Function
 */
{
  /* Write Part of Service */
  if (M_API_IS_WR_PROTECTED)
  { strHrtAppIf.byResponse1 = HRT_IN_WR_PROT_MODE;
    g_bNoData = T_TRUE;
  }
  else
  { if (strHrtAppIf.byDataLen < 1)
    { strHrtAppIf.byResponse1 = HRT_TOO_FEW_DATA_BYTES;
      g_bNoData = T_TRUE;
    }
    else
    { strHrtAppIf.byResponse1 = (BYTE) FbHartGetRspCmd6();
      if (strHrtAppIf.byResponse1 == 0)
      { if(rl_ui8FbHartAddress != strHrtAppIf.byData[0])
        { rl_ui8FbHartAddress = (BYTE) strHrtAppIf.byData[0];
          M_API_EE_WRITE(&ee_ui8FbHartAddress,&rl_ui8FbHartAddress,1);
          se_bFbHartParamChanged = TRUE;
          g_bConfChange = TRUE;
        }
      }
    }
  }

  /* Get the response data */
  strHrtAppIf.byData[0] = (BYTE) rl_ui8FbHartAddress;
  strHrtAppIf.byDataLen = 1;
}

          /**************/
static void hrtSrvFnc011(
          /**************/
     void
  )
/*
 * HART Command 11 Handling Function
 */
{
  strHrtAppIf.byResponse1 = 0;
  strHrtAppIf.byData[0] = (BYTE) co_ui8FbHartCmd0ID;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -