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.1 获取当前时间并决定是否切换列表

























static TickType_t prvSampleTimeNow( BaseType_t * const pxTimerListsWereSwitched ){ TickType_t xTimeNow; /*静态变量 记录上一次调用时系统节拍值*/ PRIVILEGED_DATA static TickType_t xLastTime = ( TickType_t ) 0U; /*获取本次调用节拍结束器值*/ xTimeNow = xTaskGetTickCount();
/*判断节拍计数器是否溢出过*/ if( xTimeNow < xLastTime ) { /*发生溢出,处理当前链表上所有定时器并切换管理链表*/ prvSwitchTimerLists(); *pxTimerListsWereSwitched = pdTRUE; } else { *pxTimerListsWereSwitched = pdFALSE; } /*更新时间记录*/ xLastTime = xTimeNow;
return xTimeNow;}

可以看到, 该函数每次调用都会记录当前系统节拍时间(TickCount),下一次调用,通过比较相邻两次调用的值判断节拍计数器是否溢出。当系统节拍计数器溢出,必须切换计时器列表。如果当前计时器列表中仍然引用任何计时器,那么它们一定已经过期,应该在切换列表之前进行处理。

切换列表的具体内容如下:


















































static void prvSwitchTimerLists( void ){ TickType_t xNextExpireTime, xReloadTime; List_t *pxTemp; Timer_t *pxTimer; BaseType_t xResult;
/* 列表非空,循环处理,直至将该列表处理完 */ while( listLIST_IS_EMPTY( pxCurrentTimerList ) == pdFALSE ) { xNextExpireTime = listGET_ITEM_VALUE_OF_HEAD_ENTRY( pxCurrentTimerList );
/* 从列表中移除软件定时器 */ pxTimer = ( Timer_t * ) listGET_OWNER_OF_HEAD_ENTRY( pxCurrentTimerList ); ( void ) uxListRemove( &( pxTimer->xTimerListItem ) ); traceTIMER_EXPIRED( pxTimer );
/*执行回调函数*/ pxTimer->pxCallbackFunction( ( TimerHandle_t ) pxTimer );
/*对于周期定时器*/ if( pxTimer->uxAutoReload == ( UBaseType_t ) pdTRUE ) { /*计算重新加载值:下个溢出时间 + 定时周期*/ xReloadTime = ( xNextExpireTime + pxTimer->xTimerPeriodInTicks ); /*如果重新加载值>下个溢出时间,应该将计时器重新插入当前列表,以便在此循环中再次处理它*/ if( xReloadTime > xNextExpireTime ) { listSET_LIST_ITEM_VALUE( &( pxTimer->xTimerListItem ), xReloadTime ); listSET_LIST_ITEM_OWNER( &( pxTimer->xTimerListItem ), pxTimer ); vListInsert( pxCurrentTimerList, &( pxTimer->xTimerListItem ) ); } else/*否则,应该发送一个命令来重新启动计时器,以确保它只插入到列表之后列表已被交换*/ { xResult = xTimerGenericCommand( pxTimer, tmrCOMMAND_START_DONT_TRACE, xNextExpireTime, NULL, tmrNO_DELAY ); configASSERT( xResult ); ( void ) xResult; } } else { mtCOVERAGE_TEST_MARKER(); } }
pxTemp = pxCurrentTimerList; pxCurrentTimerList = pxOverflowTimerList; pxOverflowTimerList = pxTemp;}

(切换列表这里还没完全弄明白)

下面来看一下如何处理到时(或超时)的定时器:

3.2.2 处理超时的定时器




































/* 处理超时的定时器 */static void prvProcessExpiredTimer( const TickType_t xNextExpireTime, const TickType_t xTimeNow ){ BaseType_t xResult; /* 获取Zui近的超时定时器 */ Timer_t *const pxTimer = ( Timer_t * )listGET_OWNER_OF_HEAD_ENTRY( pxCurrentTimerList ); /* 将Zui近的超时定时器从活跃列表中移除 */ (void)uxListRemove( &( pxTimer->xTimerListItem ) ); traceTIMER_EXPIRED(pxTimer); /* 周期定时 */ if( pxTimer->uxAutoReload == ( UBaseType_t )pdTRUE ) { /* 重新计算超时时间并加入活跃列表,如果下一次超时时间都已经过了 */ if( prvInsertTimerInActiveList( pxTimer, ( xNextExpireTime + pxTimer->xTimerPeriodInTicks ), xTimeNow, xNextExpireTime ) != pdFALSE ) { /* 通知守护任务来处理(将定时器插入活跃列表) */ xResult = xTimerGenericCommand( pxTimer, tmrCOMMAND_START_DONT_TRACE, xNextExpireTime, NULL, tmrNO_DELAY ); configASSERT( xResult ); ( void )xResult; } else { mtCOVERAGE_TEST_MARKER(); } } else { mtCOVERAGE_TEST_MARKER(); } /* 调用回调函数 */ pxTimer->pxCallbackFunction( ( TimerHandle_t )pxTimer );}



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