tag 标签: pdu

相关博文
  • 热度 8
    2014-5-18 14:13
    645 次阅读|
    0 个评论
      鉴于 IDC 机房设备和供电系统的复杂性,我国的 PDU 基本采用按需定制的方式,经过十几年的发展,目前可定制的厂家有几百个。 可定制的产品类型有基础型、串口数据提交型和网络数据采集及网络远程控制型、还有双路冗余切换型( STS\ATS). 定制流程因机房大小和状态的不同定制流程有很大不同: 1 :新建大型机房:由设计单位提出配置要求,写入招标文件,后投标的公司技术部门和供应商一起进行技术分析后形成产品文件,中标后供应商按投标文件的要求进行定制加工。过程复杂、层层把关,失误率较低。 2 :大型机房补充采购:由甲方业主单位和中标维护公司按实际的设备状况提出需求,这时的需求往往是因为供电系统或机柜内设备发生了变化,原有的新建时的统一使用 PDU 无法满足需求而产生的,需求的变化多,复杂度较高且数量不多,所以各方的重视度不够,一般由业主或维护公司的采购与供应商的客服进行沟通确认,一不小心就会产生差错,给各方带来纠纷和损失。 3 :新建中型机房:由业主和总包商按实际需求提出方案,由分包商或供应商提交产品方案,经业主方和总包商确认后进行采购,但由于各方对设备的插头形式和功率在采购前并不是一一确认,再加上对 PDU 的孔型和承载功率的专业描述不是很清楚,往往定制产品交货后会发生插头与 PDU 插孔不匹配或 pdu 的功率过小无法承载及 PDU 插头与前端布线插座不匹配等等失误,这时只能返回供应商工厂重新加工,代价不菲,因为返工重新定制往往比新作的产品成本大一倍以上。 4 :小型机房:由业主方与施工方提出方案,鉴于工期较短,采用的产品一般是供应商统一制式的产品, 8 位或 6 位 19“ 横装,个别设备不能使用采用另接插座或加装接线板来解决,纠纷较少,但安全隐患较大。   综上所述,定制过程的失误点关键在于两个方面: A :需求提出方:业主、设计单位、总包商、分包商对于配电系统和布线插座分解的不够详尽,对于用电设备的功率和插头形式没有一一和 PDU 的功率及插孔比对;对于 PDU 的技术标准和专业描述不够熟悉。 B: 产品提供方:一般由商务和客服与需求方沟通,迫于业绩压力,急于拿单,对需求方的不符合规范的要求及有安全隐患的配置方案不愿也不敢提出异议,还有就是鉴于交期的紧迫供应商的商务和客服虽然产品和技术一知半解但也不愿意和技术进行沟通以免耽误交货。 解决上面的问题只有一个方法,就是基于技术标准和专业描述建立一个定制系统,需求方和供应方共同使用,将定制的过程严格控制在技术标准内同时以实物外观图及工程矢量图的方式明确表达给需求方来与机房设备一一现场比对,通过技术规范的限定,将不同品牌的产品的定制产品范围融合,排除不规范厂商,最大化的安全满足需求方的要求。 PDU 系统定制可避免原来人工定制中人为的失误、功利心的干扰,比对的困难和技术规范及专业描述的不熟悉等等引起的损失,同时系统的高效快捷也为工程进度提供了保障。
  • 热度 8
    2014-5-16 14:39
    634 次阅读|
    0 个评论
     
  • 热度 8
    2014-5-16 14:37
    550 次阅读|
    0 个评论
     
  • 热度 26
    2010-12-31 14:33
    2526 次阅读|
    7 个评论
    UD代码的实现例子: void CPdu_formatDlg::gb2unicode(BYTE* src, BYTE* result) {  // find unicode code based on gb code  CFile file;  CString strPath = GetDeviceFullPath();  CString sBinFilename = strPath + "gb2unicode.bin";  if(!file.Open(sBinFilename, CFile::modeRead)) {   AfxMessageBox("File can NOT be openned!");   return;  }  // calc gb index  UINT index = (src 8) + src ;  // half-lookup method  int low,high,mid;  low = 0; high = MAX_UNI_INDEX;  UINT gbcode_mid = 0;  BYTE tmp ;  while(low {   mid = (low+high)/2;   file.Seek((mid2)+2, CFile::begin);   file.Read((char*)tmp, 2);   gbcode_mid = (tmp 8) + tmp ;   if( index gbcode_mid ) high--;   else if( index gbcode_mid ) low++;   else break;  }  if(lowhigh) {   AfxMessageBox("Cannot find gb char in current gb2unicode table!");   return;  }  // result  file.Seek( (mid2),  CFile::begin );  file.Read((char*)tmp, 2);    result = tmp ;  result = tmp ;  file.Close();  } void CPdu_formatDlg::OnButtonBuild() {  char phone ;  memset(phone, 0, sizeof(phone));    // (1) receive phone number inputed  m_editPhone.GetWindowText(phone, sizeof(phone));  if(strlen(phone) != 11) {   AfxMessageBox("Please input the correct mobile phone number!");   return;  }  for(int i=0; i11; i++) {   if( (phone '0') || (phone '9') ) {    AfxMessageBox("Please input the correct mobile phone number!");    return;   }  }  // (2) receive sms text inputed  BYTE buf ;  memset(buf, 0, sizeof(buf));   m_editInput.GetWindowText((char*)buf, sizeof(buf));  if(strlen((char*)buf) == 0) {   AfxMessageBox("Input should not be null!");   return;   }    // (3) build UD(sms text)  BYTE result ;  memset(result, 0, sizeof(result));    UINT j=0, len1=0;  while(j strlen((char*)buf)) {      // arcII   if(buf 128) {    result = 0x00;    result = buf ;    j++;    len1 = len1+2;   }   // gb   else {    BYTE tmp ;    gb2unicode((BYTE*)(buf ), (BYTE *)tmp);        result = tmp ;    result = tmp ;    j++;    j++;    len1 = len1 + 2;   }  }  BYTE ud ;  memset(ud, 0, sizeof(ud));  for(UINT k=0; k  if( (result 4) 10 ) { ud = (result 4) + '0'; }   else { ud = (result 4) - 10 + 'A'; }   if( (result 0x0f) 10 ) { ud = (result 0x0f) + '0'; }   else { ud = (result 0x0f) - 10 + 'A'; }  }  // (4) build DA(phone num)  BYTE da ;  memset(da, 0, sizeof(da));  da = '0';  // da_len  da = 'D';  // da_len  da = '9';  // type  da = '1';  // type  da = '6';  // china code  da = '8';  // china code  da = phone ;  da = phone ;  da = phone ;  da = phone ;  da = phone ;  da = phone ;  da = phone ;  da = phone ;  da = phone ;  da = phone ;  da = 'F';  da = phone ;  // (5) output pdu format after receiving  BYTE pdu ;  memset(pdu, 0, sizeof(pdu));  pdu = '0';  // SCA (with embeded csca)  pdu = '0';  // SCA (with embeded csca)  pdu = '1';  // Type  pdu = '1';  // Type  pdu = '0';  // MR  pdu = '0';  // MR  strcat((char*)pdu, (char *)da); // DA  pdu = '0';  // PID  pdu = '0';  // PID  pdu = '0';  // DCS  pdu = '8';  // DCS  pdu = '0';  // VP  pdu = '1';  // VP  if( (len14) 10 ) { pdu = (len14) + '0'; }  // UDL  else { pdu = (len14) - 10 + 'A'; }  if( (len10x0f) 10 ) { pdu = (len10x0f) + '0'; } // UDL  else { pdu = (len10x0f) - 10 + 'A'; }  memcpy(pdu , ud, (len11));  // ud  m_editOutput.SetWindowText((char *)pdu);  // (6) output the cmgs len  BYTE sLen ;  memset(sLen, 0, sizeof(sLen));  len1 += 15;  sLen = (len1/100) + '0';  sLen = (len1%100)/10 + '0';  sLen = (len1%10) + '0';  m_editLen.SetWindowText((char*)sLen); } 发送PDU格式SMS验证 1. PDU生成工具: 2. 使用GPRS/GSM 模块进行验证: 3. 手机上成功收取并显示中文短消息. Allen 2010.12.31 发表于电子工程专辑 构建PDU格式的中文SMS(I) 构建PDU格式的中文SMS(II)
  • 热度 17
    2010-12-31 14:29
    2709 次阅读|
    0 个评论
    前言 如 topic 所言, 这是一个非常之传统的技术话题. 之所以再次录入 blog 的原因, 我们归纳为下面的几点: 1. 详细的设计思路与完成步骤. 2. 工程中对 gb/ascII 字串, 进行了 unicode 的转换. 3. 完整的代码例子. 4. 提供PDU格式的生成小工具. 5. 进行了GB码, 以及GB/ASCII 码的SMS的分别的发送测试. 题外 Allen 以本 topic, 献给涉及此工程议题的同行们. 在本blog中, 祝愿全体同仁在新的一年中, 取得进步. 希望我们能以更加体贴的本土化服务大陆客户, 以更加开放的国际化服务海外客户, 不断提升民族科技实力, 不断提升自我专业技术能力. 工作步骤 1. 一般发送 PDU短消息的步骤:  1 AT+CMGF=0 (设定PDU模式)  2 AT+CMGS=xxx (要求发送SMS 短信, xxx 为即将发送的短消息长度)      等待 相应后, 即可发送PDU短消息:    SCA 是短消息服务中心的号码, 一般而言, 为了不必要每次发送短消息时, 都对SCA进行设定, 我们可以对短消息服务中心, 也就是 CSCA 进行设定. 假设我们不知道当地的短消息服务中心的号码, 我们可以使用下述AT指令进行询问: AT+CSCA? +CSCA: "+8613800755500",145 这里我们得到本地(深圳)的短消息服务中心号码为: +8613800755500 一旦我们使用 CSCA 指令, 主动设定 SCA 的号码, 那么在 PDU 短消息格式中, SCA的值可以固定为: 00, 这样大大降低了每次发送的工作量. 该理论依据来自于: “如果Len被设置为00h,并不提供后面的部分,那么终端设备将读取SIM中设置的SCA填充到SMS-PUD中,通过“AT+CSCA=xxxxx”指令可以设置SIM卡中存储的SCA值。” (From: http://blog.chinaunix.net/u3/93893/showart_1877903.html) 2. 简洁发送 PDU短消息的步骤: 1 AT+CMGF=0 (设定PDU模式) 2 AT+CSCA="+8613800755500" (设SCA号码) 3 AT+CMGS=xxx (要求发送SMS 短信, xxx 为即将发送的短消息长度)      等待 相应后, 即可发送PDU短消息:   00 对 CMGS 长度xxx 的计算法则: xxx = 15 + 文本信息长度(UDL). 固定长度: 15 = 1(TYPE_LEN) + 1(MR_LEN) + 10(DA_LEN) + 1(PID_LEN) + 1(DCS_LEN) + 1(UDL_LEN) 而 SCA 的长度(无论是00 还是短消息中心SCA字串全长), 不被xxx 计算在内. 该理论依据来自于: “给定的TP层数据单元的八位位组代码数目(不包含服务中心地址的八位位组数目)”. (From: http://blog.chinaunix.net/u3/93893/showart_1877903.html) 需要指出的是, TP层数据单元就是: . 此外, 结束符 0x1a 的长度也不计算在内. 3. 完善了计算法则后的发送 PDU短消息的步骤: 1 AT+CMGF=0 (设定PDU模式) 2 AT+CSCA="+8613800755500" (设SCA号码)  3 AT+CMGS=15+UDL (要求发送SMS 短信,)      等待 相应后, 即可发送PDU短消息:   00 这里, PDU 短消息格式: 紧张的工程节点的压力下, 我们这里被迫使用大无畏的"不求甚解"精神, 对PDU格式下 Unicode 字串发送采用默认格式如下: TYPE: 11, MR: 00, PID: 00, DCS: 08, VP:01 4. 整理后的发送 PDU短消息的步骤: 1 AT+CMGF=0 (设定PDU模式) 2 AT+CSCA="+8613800755500" (设SCA号码) 3 AT+CMGS=15+UDL (要求发送SMS 短信,)      等待 相应后, 即可发送PDU短消息:   001100 000801 构建PDU格式 根据以上分析, 使用测试代码完成 PDU 格式的内容包括的3变量: 这里的pdu 格式的 sms 发送, 需要知道的3个变量分别是: 目的手机号码DA, 短消息文本长度UDL, 短消息文本内容UD. 1. DA 设定: 0D 固定的目的手机长度 = 中国手机号码长度11+电话号码国别码"86"(长度2) = 13 91 固定的类型值 11位手机号, 前面加国家码86, 末尾补F 凑成偶数, 并每2个字符位置两两颠倒(说起来, Allen奇怪DA的协议弄得这么麻烦不知道为什么```) 举例: 目地手机号码: 13812345678, 则 DA 为: 0D91683118325476F8 2. UDL: 短消息文本UD的长度, 使用 Unicode 编码, 如”测试测试测试”的长度为12. 则UDL为0C. 3. UD: 以 Unicode 为编码格式短消息文本. 在很多mcu系统中, 我们常常使用 gb与 ascII 的混合编码的字符串, 使用gb2unicode 转换表, 我们能够将 gb字串, 转换为对应的 Unicode 字串的格式, 这个 item, 我们也曾在blog中记录专题进行讨论, 读者可自行在blog中进行检索. 构建PDU格式的中文SMS(I) 构建PDU格式的中文SMS(II)
相关资源
  • 所需E币: 5
    时间: 2019-12-24 17:58
    大小: 70.7KB
    上传者: quw431979_163.com
    摘要:本文标识制造电流互感器(CT)和分流电阻器,以帮助使用Teridian的设计公司78米6612/78米6613/78米6618家庭的能源和电力测量系统芯片(SoC)设备。应用程序中的表请注意列表CT和分流电阻器制造商,他们的网站的链接。78M661xSensorSelectionGuideAMaximIntegratedProductsBrandAPPLICATIONNOTEAN_661x_071March2011IntroductionTohelpyouinthedesignofyourapplication,thisdocumentidentifiescompaniesthatmanufacturereliablecurrentsensorsandshuntresistors.CTManufacturersThefollowingtablelistsCTmanufacturerswithURLstotheirwebpages.ManufacturerURLAmvecohttp://www.amveco.com/acseries_curr……
  • 所需E币: 5
    时间: 2019-12-24 17:58
    大小: 68.15KB
    上传者: 16245458_qq.com
    摘要:本应用笔记有关的Maxim/Teridian公司78M6612/78M6613/78M6618能源和功率测量SoC和嵌入式软件的常见问题的答案。Maxim>DesignSupport>TechnicalDocuments>ApplicationNotes>EnergyMeasurement&Metering>APP5048Keywords:Teridian,ACpower,single-phasepower,powermeasurement,energymonitoring,AC-PMON,singleconvertertechnology,CE,MPU,PDUMay25,2011APPLICATIONNOTE5048FrequentlyAskedQuestionsaboutEnergy-MeasurementSoCsBy:JohnSeredichMay25,2011Abstract:ThisapplicationnoteanswersmanyofthecommonquestionsabouttheMaxim/Teridian78M6612/78M6613/78M6618energy-andpower-measurementSoCsandtheirembeddedsoftware.IntroductoryQuestions1.WhatareMaxim'senergy-measurementSoCs?2.Whatarethedifferencesbetweenthe78M6618,78M6……
  • 所需E币: 5
    时间: 2019-12-24 17:58
    大小: 487.21KB
    上传者: 238112554_qq
    摘要:Teridian的78M6612/78M6613/78M6618功率测量的SoC是从操作进行了优化,在交流电源监测和嵌入式交流电源负载测量。这使得设备的应用范围广泛,包括智能插头,配电单元(PDU),通信设备的电源的理想选择。本应用笔记讨论了如何开始使用这些功率测量的SoC。GettingStartedwith78M661xEnergyMeasurementSoCsAMaximIntegratedProductsBrandGETTINGSTARTEDGS_661x_063February20111IntroductionTeridian71M65xxmeteringproductshavelongbeenthe(host)SystemonChip(SoC)ofchoiceforleadingsuppliersofsmartmeterstoutilitiesaroundtheworld.Forallotherembeddedapplications,Teridiannowoffersthe78M661xenergymeasurementproductsthatarecompleteACpowermonitoringsubsystemsspecificallyoptimizedforslaveoperationinthefollowingapplicati……