SIEMENS山东省泰安市 西门子代理商——西门子华北一级总代理

更新:2024-07-02 07:00 发布者IP:120.237.217.245 浏览:0次
发布企业
广东湘恒智能科技有限公司商铺
认证
资质核验:
已通过营业执照认证
入驻顺企:
1
主体名称:
广东湘恒智能科技有限公司
组织机构代码:
91441304MAC3TWY11U
报价
请来电询价
西门子总代理
PLC
西门子一级代
驱动
西门子代理商
伺服电机
关键词
PLC,变频器,代理商,一级代理,伺服电机
所在地
惠州大亚湾澳头石化大道中480号太东天地花园2栋二单元9层01号房
联系电话
15903418770
手机
15915421161
联系人
张经理  请说明来自顺企网,优惠更多
请卖家联系我
15915421161

产品详细介绍

3.2.3 让队列按照给定的时间进行阻塞

回顾prvProcessTimerOrBlockTask()函数,定时器定时时间还没到,将当前任务挂起,直到定时器到期才唤醒或者收到命令的时候唤醒:























/* 让队列按照给定的时间进行阻塞*/voidvgeRestricted( ue, TickType_t xTicksToWait, const BaseType_txWaitIndefinitely ){    *const pxQueue = xQueue;   /* 锁定队列 */   prvLockQueue( pxQueue );
  /* 队列为空 */   if( pxQueue->uxMessagesWaiting == (UBaseType_t )0U )    {       /*将任务插入等待接收队列项而阻塞的事件列表,并加入延时列表进行阻塞延时 */       vTaskPlaceOnEventListRestricted( &(pxQueue->xTasksWaitingToReceive ), xTicksToWait,xWaitIndefinitely );    }   /* 队列不为空 */   else    {       mtCOVERAGE_TEST_MARKER();   }    /* 解锁队列*/   prvUnlockQueue(pxQueue);}3.3处理命令队列中接收的消息

用户将需要处理的定时器命令发送到定时器的消息队列, Daemon任务每次执行期间回去读取并执行,下面看看该函数的具体内容:






































































































































/*处理命令队列中接收的消息*/staticvoid prvProcessReceivedCommands(void ){   DaemonTaskMessage_t xMessage;   Timer_t *pxTimer;    BaseType_txTimerListsWereSwitched, xResult;   TickType_t xTimeNow;
  /*消息队列接收*/   while( x( xTimerQueue,&xMessage, tmrNO_DELAY ) != pdFAIL )   {       #if ( INCLUDE_xTimerPendFunctionCall == 1)        {           /* 命令码小于等于0(事件标志组中断中置位的命令)*/           if( xMessage.xMessageID < ( BaseType_t) 0 )           {               const CallbackParameters_t *const pxCallback = &(xMessage.u.xCallbackParameters );               configASSERT( pxCallback);
              /* 执行回调函数 */              pxCallback->pxCallbackFunction(pxCallback->pvParameter1, pxCallback->ulParameter2 );           }          else           {               mtCOVERAGE_TEST_MARKER();           }       }       #endif /*INCLUDE_xTimerPendFunctionCall*/
      /* 命令码大于等于0 (软件定时器命令)*/       if( xMessage.xMessageID >= (BaseType_t ) 0 )       {           /* 定时器句柄 */           pxTimer =xMessage.u.xTimerParameters.pxTimer;
           /*定时器队列项包含该定时器 */           if( listIS_CONTAINED_WITHIN(NULL, &( pxTimer->xTimerListItem ) ) == pdFALSE)            {              /* 移除该定时器 */               ( void )uxListRemove( &( pxTimer->xTimerListItem ) );           }          else           {               mtCOVERAGE_TEST_MARKER();           }
          traceTIMER_COMMAND_RECEIVED( pxTimer, xMessage.xMessageID,xMessage.u.xTimerParameters.xMessageValue);
          /* 获取当前时间,并判断是否需要切换定时器列表,如果需要则切换 */           xTimeNow =prvSampleTimeNow( &xTimerListsWereSwitched);
          /* 消息类型 */           switch( xMessage.xMessageID)            {              /* 定时器启动或者复位 */               casetmrCOMMAND_START :               case tmrCOMMAND_START_FROM_ISR:               case tmrCOMMAND_RESET :               casetmrCOMMAND_RESET_FROM_ISR :               casetmrCOMMAND_START_DONT_TRACE :                   /*计算超时时间,超时时间没过加入活跃列表,超时时间已过返回pdTrue */                  if( prvInsertTimerInActiveList( pxTimer, xMessage.u.xTimerParameters.xMessageValue +pxTimer->xTimerPeriodInTicks, xTimeNow,xMessage.u.xTimerParameters.xMessageValue ) != pdFALSE )                  {                       /*在加入列表前已经超时,执行对应的回调函数 */                      pxTimer->pxCallbackFunction( ( TimerHandle_t ) pxTimer);                       traceTIMER_EXPIRED( pxTimer);
                     /*如果是周期定时器*/                      if( pxTimer->uxAutoReload == ( UBaseType_t )pdTRUE )                       {                          /* 发送消息,通知守护任务将定时器插入当前列表*/                           xResult =xTimerGenericCommand( pxTimer, tmrCOMMAND_START_DONT_TRACE,xMessage.u.xTimerParameters.xMessageValue +pxTimer->xTimerPeriodInTicks, NULL, tmrNO_DELAY);                           configASSERT(xResult );                           (void ) xResult;                      }                       else                      {                          mtCOVERAGE_TEST_MARKER();                      }                   }                  else                   {                      mtCOVERAGE_TEST_MARKER();                   }                  break;
              /* 停止定时器 */               case tmrCOMMAND_STOP:               case tmrCOMMAND_STOP_FROM_ISR :                  /* 定时器已经从活跃列表中移除,所以什么都不做 */                  break;
              /* 改变定时器周期 */               casetmrCOMMAND_CHANGE_PERIOD :               casetmrCOMMAND_CHANGE_PERIOD_FROM_ISR :                   /*取出新的频率 */                   pxTimer->xTimerPeriodInTicks =xMessage.u.xTimerParameters.xMessageValue;                  configASSERT( ( pxTimer->xTimerPeriodInTicks >0 ) );
                  /*计算超时时间,超时时间没过则加入活跃列表 */                   ( void) prvInsertTimerInActiveList( pxTimer, ( xTimeNow +pxTimer->xTimerPeriodInTicks ), xTimeNow, xTimeNow );                  break;
              /* 删除定时器 */               casetmrCOMMAND_DELETE :                   #if( (configSUPPORT_DYNAMIC_ALLOCATION == 1 ) && (configSUPPORT_STATIC_ALLOCATION == 0 ) )                  {                       /* 释放软件定时器内存*/                       vPortFree( pxTimer);                   }                   #elif(( configSUPPORT_DYNAMIC_ALLOCATION == 1 ) && (configSUPPORT_STATIC_ALLOCATION == 1 ) )                  {                       if(pxTimer->ucStaticallyAllocated == ( uint8_t )pdFALSE )                       {                          /* 释放软件定时器内存 */                          vPortFree( pxTimer);                       }                      else                       {                         mtCOVERAGE_TEST_MARKER();                      }                   }                  #endif /*configSUPPORT_DYNAMIC_ALLOCATION */                  break;
              default :                   /* Don'texpect to get here. */                  break;           }        }   }}


所属分类:中国电工电气网 / PLC
SIEMENS山东省泰安市 西门子代理商——西门子华北一级总代理的文档下载: PDF DOC TXT
关于广东湘恒智能科技有限公司商铺首页 | 更多产品 | 联系方式 | 黄页介绍
成立日期2022年11月17日
主营产品西门子PLC代理商,plc变频器,伺服电机,人机界面,触摸屏,线缆,DP接头
公司简介广东湘恒智能科技有限公司主要从事工业自动化产品的集成,销售与维修。致力于为您提供在机械、化工、水泥、电力、环保等领域的电气及自动化技术的完整解决方案,包括自动化产品及系统、工程项目执行及管理、主要过程控制领域技术支持,以及专业的售后服务、培训等。公司本着“以人矢志创新、追求卓越”的工作方针,致力于工业自动化控制领域的产品开发、工程配套和系统集成、销售,拥有丰富的自动为本、科技先导、化产品的应用和实 ...
公司新闻
顺企网 | 公司 | 黄页 | 产品 | 采购 | 资讯 | 免费注册 轻松建站
免责声明:本站信息由企业自行发布,本站完全免费,交易请核实资质,谨防诈骗,如有侵权请联系我们   法律声明  联系顺企网
© 11467.com 顺企网 版权所有
ICP备案: 粤B2-20160116 / 粤ICP备12079258号 / 粤公网安备 44030702000007号 / 互联网药品信息许可证:(粤)—经营性—2023—0112