企业资质

厦门莫格电气自动化有限公司

普通会员8
|
企业等级:普通会员
经营模式:
所在地区:福建 厦门
联系卖家:
手机号码:
公司官网:
企业地址:
企业概况

厦门莫格电气自动化有限公司是一家专业提供工业自动化领域的备件服务商,产品品种齐全、价格合理,公司实力雄厚,重信用、守合同、保证产品质量,以多品种经营特色和薄利多销的原则,赢得了广大客户的信任。我们主营PLC可编程控制器模块,DCS卡件,ESD系统卡件,振动监测系统卡件,汽轮机控制系统模块,燃气发电机......

SPSET01/SPTKM01

产品编号:166517006                    更新时间:2018-10-18
价格: ¥999.00
厦门莫格电气自动化有限公司

厦门莫格电气自动化有限公司

  • 主营业务:PLC可编程控制器模块,DCS卡件,ESD系统卡件,振动监测...
  • 公司官网:
  • 公司地址:

联系人名片:

联系时务必告知是在"产品网"看到的

产品详情

厦门莫格电气自动化有限公司销售

ABB SPSET01/SPTKM01

欢迎来电咨询!

SPSET01/SPTKM01

SPSET01/SPTKM01

您迈开询价的一小步,我还您成功的一大步。

 

 Windows Embedded Compact 7(WEC7)一个***重要的特性就是对多核处理器的支持(Symmetric Multi-Processing(***P)),E***6802是英创公司推出的基于Freescale  i.MX6DL双核处理器的高性能工控主板,预装正版WEC7嵌入式操作系统,并且内核启用了对***P的支持。在多个程序同时执行的情况下,支持***P的多核系统具有比单处理器更好的性能,因为不同的程序可以在不同的处理器上同时运行,支持***P还可以实现在一个核心上执行硬实时应用程序,而用户界面(UI)或其它应用程序可在另一个核心上运行,以提高系统的效率。

 

  WEC7提供了一组处理多核系统上线程和处理器调度的***P API接口函数:

  https://msdn./en-us/library/gg154433(v=winembedded.70).aspx

 

  其中应用程序常用的***P API如下所示:

 

 GetCurrentProcessorNumber  获取在调用此函数期间当前线程正在运行的处理器

 CeGetIdleTimeEx       获取指定处理器的空闲时间

 CeGetProcessAffinity     获取指定进程的进程关联

 CeGetThreadAffinity     获取指定线程的线程关联

 CeGetTotalProcessors    获取系统中的处理器核心总数

 CeSetProcessAffinity    为指定的进程设置处理器关联

 CeSetThreadAffinity     为指定的线程设置处理器关联

 

  默认情况下,WEC7系统会自动的将系统负载分配到CPU的所有核心上运行,应用程序不需要做任何设置。但根据不同的应用场景,应用程序也可以利用***P API手动的设置每个进程、每个线程在指定的CPU核心上运行,这里以计算E***6802 i.MX6DL CPU每个核心的负载为例,介绍WEC7 ***P API的使用方法。

 

  应用程序首先通过CeGetTotalProcessors函数获取当前系统总的处理器(核心)个数,然后根据CPU核心个数创建相同数量的CPUIdleMonitorThread应用线程用于计算CPU负载,在创建线程后通过CeSetThreadAffinity函数将所创建的线程固定在指定的CPU核心上运行。CPUIdleMonitorThread线程函数在执行时先调用GetCurrentProcessorNumber函数取得执行当前线程的CPU核,而后再利用CeGetIdleTimeEx函数***终计算出每个CPU核心的负载率。完整的例子代码如下:

 

  #include "stdafx.h"

  // time in seconds to run the monitor thread

  #define IDLE_MONITOR_TIME   100

 

  HANDLE g_hMonitorThreads[4];

 

  UINT32 CPUIdleMonitorThread(PVOID pContext)

  {

      UINT32 nCPUId = ((UINT32*)pContext)[0];

      UINT32 nRunTime = ((UINT32*)pContext)[1];

      UINT32 nIdleBefore, nIdleAfter, nIdleDiff, nIdlePercent;

      UINT32 nReturn = ERROR_SUCCESS;

 

     LARGE_INTEGER pcBefore = { 0, 0 };

      LARGE_INTEGER pcAfter = { 0, 0 };

      LARGE_INTEGER diff;

      LARGE_INTEGER freq;

 

      RETAILMSG(1, (L"[CPU%d] Run monitor thread for %d seconds\r\n", nCPUId, nRunTime));

 

     // The processor number is a 1-based index.

      QueryPerformanceFrequency(&freq);

 

      while (nRunTime > 0)

      {

          nCPUId = GetCurrentProcessorNumber();

          CeGetIdleTimeEx(nCPUId, (LPDWORD)&nIdleBefore);

 

          QueryPerformanceCounter(&pcBefore);

          Sleep(2000);

          QueryPerformanceCounter(&pcAfter);

 

         CeGetIdleTimeEx(nCPUId, (LPDWORD)&nIdleAfter);

 

          diff.QuadPart = (pcAfter.QuadPart - pcBefore.QuadPart) * 1000 / freq.QuadPart;

          nIdleDiff = nIdleAfter - nIdleBefore;

          nIdlePercent = nIdleDiff / 20;

 

          RETAILMSG(1, (L"[CPU%d] Sleep: 2000 ms (actual:%d ms)  Idle: %03d ms (CPU%d = %d%%)\r\n",

               nCPUId, diff.LowPart, nIdleDiff, nCPUId, 100 - nIdlePercent));

          nRunTime--;

      }

 

     SetEvent(g_hMonitorThreads[nCPUId - 1]);

      return nReturn;

  }

 

  int WINAPI WinMain(HINSTANCE hInstance,

                     HINSTANCE hPrevInstance,

                     LPTSTR     lpCmdLine,

                     int       nCmdShow)

  {

     UINT32 nCPUCount;

      UINT32 nTemp = 0;

      UINT32 i;

      UINT32 nParam[8] = { 1, IDLE_MONITOR_TIME, 2, IDLE_MONITOR_TIME, 3, IDLE_MONITOR_TIME, 4, IDLE_MONITOR_TIME };

 

      nCPUCount = CeGetTotalProcessors();

 

      for(i = 0; i < nCPUCount; i++)

          g_hMonitorThreads[i] = CreateEvent(NULL, TRUE, FALSE, NULL);

 

      nTemp = 1;

 

     CeSetThreadAffinity(GetCurrentThread(), 1);

 

      for (i = 1; i < nCPUCount; i++)

      {

          HANDLE hThread = CreateThread(

              NULL,

              0,

              (LPTHREAD_START_ROUTINE)CPUIdleMonitorThread,

              &nParam[i * 2],

              CREATE_SUSPENDED,

              NULL);

 

         if (NULL != hThread)

          {

              CeSetThreadAffinity(hThread, i + 1);

              ResumeThread(hThread);

              Sleep(0);

              CloseHandle(hThread);

              nTemp++;

          }

          else

          {

              SetEvent(g_hMonitorThreads[i]);

          }

      }

 

      CPUIdleMonitorThread(&nParam[0]);

IC660EBA101D
IC660EBD101F
150-A240NBDB
DG810BL
***ART SU5000 5KVA
800T-FXMQH32RA7
IC200ALG264
IC200ALG326
IC200CBL600
IC200CHS022
IC200CPUE05
IC200ERM001
IC200MDL650
IC200MDL940
IC200PWB001
IC200PWR102
FBM202
FBM206
FBM241C
CLM01.3-X-0-4-B
KDS1.1-150-300-W1
TDM1.2-100-300-W1/220
TVM2.2-050-220/300-W1
FU-77TZ
PS261P
3503E
3604E
3700A
3805E
8312
9563-810
9662-810
BPHM64
HCU3700
HCU3805E
1771-P4S
800H-HK31B
SERVOSTAR 600 S61000
1756-OB16I
1756-PA75
PXI-8330
LSP2080
MDV60A0110-5A3-4-00
A06B-0147-B077
NT620C-ST141
WSSR4.5K
1029D-V-240V-50A-IL50-R4-I4
1769-L32E
MR-J2S-20B
A06B-6117-H209
A06B-0116-B203
150-A97NBDB
UTSAH-B17BBF
H008PA3
DDS-PF
51401052-100
51401583-100
A06B-6114-H206
DBG11B-08
EASYGEA-3200-5
1756-ENBT
1756-L63
1786-RG6F
1786-TPST
1786-XT
DB-2620A
1771-IBN
1771-OBN
6SC6108-0SG02
6SC6120-0FE01
BZM01.3-01-07
DSQC604 3HAC12928-1
SA 629.188/3
A16B-1300-0200
6ES7647-5BG10-0JX0
140NOE77101
140NOE77111
CP40B
P0400ZG
M3158T
1746-A10
1746-C9
1746-NO4I
1746-P4
1747-L553B
975750000
140ACI03000
140ACI04000
140ARI03010
140ATI03000
140***O02000
140CPS11420
140CPU43412A
140CRA93100
140CRP93100
140DAI75300
140DAO85300
140DDI35300
140DDO35300
140NOE77101
140XBE10000
HD22005-3A
MC07A005-5A3-4-00
MC07A008-5A3-4-00
MCO7B0011-5A3-4-00
6ES7 332-5HF00-0AB0
QUINT-PS-100-240AC/12DC/10
QUINT-PS-100-240AC/24DC/20
140CPS11420
140CPU65150
140DDI35300
140DRA84000
 LC1D12BD
PBM862FXK20-M
1747-L542
M***-11-10-400
140ACI03000
140CPS11420
140CPU67160
140CRA93200
140CRP93200
140DDI35300
140DDO35300
140NOE77101
140XBP01000
ACS800-04-0170-3+P901
140DDI84100
CKK-20-145
6ES7 216-2BD23-OXB8
C500-RM201
A20B-2902-0411
ROD 426 1000 02S12-03
RF-GENERATOR-P-N-0190-70099
1756-CNBR/E
1756-ENBT/A
1756-L63/B
1757-SRM
6SE7021-8EB61
FECQ-T2
2711P-RP1
2711-T10C15
2711-T10C8
VM06-1600-N4  132KW  50HZ
PC-E984-258
OGS-72-DN-1024-R
811405063
HF-0405-232-01
1784-PCIC
7400166-390
SR 469-P5-HI A20
SR 750-P5-G5-D5-HI-A20-R
E586
1756-L55M13
 6RA7085-6DS22-0
6RA7025-6DV62-0
C98043-A7001-L1
A06B-6115-H003
A06B-6117-H205
A06B-6117-H304
A06B-6140-H011
LK-G30
1746-NT8
1746-NT8
2500MA13
2500MA14
SP316
SP363
T2500/A12
140NOM21100
XVME-674
140CPS11420
140CPU65150
140DDI35300
140DRA84000
6RA8222-8PA0
6RA7075-6DV62-0

厦门莫格电气自动化有限公司电话:传真:联系人:

地址:主营产品:PLC可编程控制器模块,DCS卡件,ESD系统卡件,振动监测...

Copyright © 2025 版权所有: 产品网店铺主体:厦门莫格电气自动化有限公司

免责声明:以上所展示的信息由企业自行提供,内容的真实性、准确性和合法性由发布企业负责。产品网对此不承担任何保证责任。