企业信息

    浔之漫智控技术(上海)有限公司

  • 7
  • 公司认证: 营业执照已认证
  • 企业性质:私营企业
    成立时间:2017
  • 公司地址: 上海市 松江区 永丰街道 上海市松江区广富林路4855弄52号3楼
  • 姓名: 聂航
  • 认证: 手机已认证 身份证已认证 微信未绑定

    合肥西门子中国授权代理商变频器供应商

  • 所属行业:电气 工控电器 DCS/PLC系统
  • 发布日期:2024-11-28
  • 阅读量:14
  • 价格:666.00 元/台 起
  • 产品规格:模块式
  • 产品数量:1000.00 台
  • 包装说明:全新
  • 发货地址:上海松江永丰  
  • 关键词:西门子代理商,西门子一级代理商

    合肥西门子中国授权代理商变频器供应商详细内容

    合肥西门子中国授权代理商变频器供应商


    1 引言
    单片机(Microcontroller)一般都有内部ROM/EEPROM/FLASH供用户存放程序。为了防止未经授权访问或拷贝单片机的机内程序,大部分单片机都带有加密锁定位或者加密字节,以保护片内程序。如果在编程时加密锁定位被使能(锁定),就无法用普通编程器直接读取单片机内的程序,这就是所谓拷贝保护或者说锁定功能。事实上,这样的保护措施很脆弱,很容易被破解。单片机攻击者借助设备或者自制设备,利用单片机芯片设计上的漏洞或软件缺陷,通过多种技术手段,就可以从芯片中提取关键信息,单片机内程序。因此,作为电子产品的设计工程师非常有必要了解当前单片机攻击的,做到知己知彼,心中有数,才能有效防止自己花费大量和时间辛辛苦苦设计出来的产品被人家一夜之间的事情发生。

    2 单片机攻击技术
    目前,攻击单片机主要有四种技术,分别是:
    (1)软件攻击
    该技术通常使用处理器通信接口并利用协议、加密算法或这些算法中的漏洞来进行攻击。软件攻击成功的一个典型事例是对早期ATMEL AT89C 系列单片机的攻击。攻击者利用了该系列单片机擦除操作时序设计上的漏洞,使用自编程序在擦除加密锁定位后,停止下一步擦除片内程序存储器数据的操作,从而使加过密的单片机变成没加密的单片机,然后利用编程器读出片内程序。

    (2) 电子探测攻击
    该技术通常以高时间分辨率来监控处理器在正常操作时所有电源和接口连接的模拟特性,并通过监控它的电磁辐射特性来实施攻击。因为单片机是一个活动的电子器件,当它执行不同的指令时,对应的电源功率消耗也相应变化。这样通过使用特殊的电子测量仪器和数学统计方法分析和检测这些变化,即可单片机中的特定关键信息。

    (3)过错产生技术
    该技术使用异常工作条件来使处理器出错,然后提供额外的访问来进行攻击。使用广泛的过错产生攻击手段包括电压冲击和时钟冲击。低电压和高电压攻击可用来禁止保护电路工作或强制处理器执行错误操作。时钟瞬态跳变也许会复位保护电路而不会破坏受保护信息。电源和时钟瞬态跳变可以在某些处理器中影响单条指令的解码和执行。

    (4)探针技术
    该技术是直接暴露芯片内部连线,然后观察、操控、干扰单片机以达到攻击目的。为了方便起见,人们将以上四种攻击技术分成两类,一类是侵入型攻击(物理攻击),这类攻击需要破坏封装,然后借助半导体测试设备、显微镜和微定位器,在专门的实验室花上几小时甚至几周时间才能完成。所有的微探针技术都属于侵入型攻击。另外三种方法属于非侵入型攻击,被攻击的单片机不会被物理损坏。在某些场合非侵入型攻击是特别危险的,这是因为非侵入型攻击所需设备通常可以自制和升级,因此非常廉价。

    大部分非侵入型攻击需要攻击者具备良好的处理器知识和软件知识。与之相反,侵入型的探针攻击则不需要太多的初始知识,而且通常可用一整套相似的技术对付宽范围的产品。
    因此,对单片机的攻击往往从侵入型的反向工程开始,积累的经验有助于开发加廉价和快速的非侵入型攻击技术。

    3 侵入型攻击的一般过程
    侵入型攻击的步是揭去芯片封装。有两种方法可以达到这一目的:种是溶解掉芯片封装,暴露金属连线。二种是只移掉硅核上面的塑料封装。种方法需要将芯片绑定到测试夹具上,借助绑定台来操作。二种方法除了需要具备攻击者一定的知识和必要的技能外,还需要个人的智慧和耐心,但操作起来相对比较方便。
    芯片上面的塑料可以用小揭开,芯片周围的环氧树脂可以用腐蚀掉。热的会溶解掉芯片封装而不会影响芯片及连线。该过程一般在非常干燥的条件下进行,因为水的存在可能会侵蚀已暴露的铝线连接。
    接着在声池里先用清洗该芯片以除去残余,然后用清水清洗以除去盐分并干燥。没有声池,一般就跳过这一步。这种情况下,芯片表面会有点脏,但是不太影响紫外光对芯片的操作效果。后一步是寻找保护熔丝的位置并将保护熔丝暴露在紫外光下。一般用一台放大倍数至少100倍的显微镜,从编程电压输入脚的连线跟踪进去,来寻找保护熔丝。若没有显微镜,则采用将芯片的不同部分暴露到紫外光下并观察结果的方式进行简单的搜索。操作时应用不透明的纸片覆盖芯片以保护程序存储器不被紫外光擦除。将保护熔丝暴露在紫外光下5~10分钟就能破坏掉保护位的保护作用,之后,使用简单的编程器就可直接读出程序存储器的内容。

    对于使用了防护层来保护EEPROM单元的单片机来说,使用紫外光复位保护电路是不可行的。对于这种类型的单片机,一般使用微探针技术来读取存储器内容。在芯片封装打开后,将芯片置于显微镜下就能够很容易的找到从存储器连到电路其它部分的数据总线。

    由于某种原因,芯片锁定位在编程模式下并不锁定对存储器的访问。利用这一缺陷将探针放在数据线的上面就能读到所有想要的数据。在编程模式下,重启读过程并连接探针到另外的数据线上就可以读出程序和数据存储器中的所有信息。

    还有一种可能的攻击手段是借助显微镜和激光切割机等设备来寻找保护熔丝,从而寻查和这部分电路相联系的所有信号线。由于设计有缺陷,因此,只要切断从保护熔丝到其它电路的某一根信号线,就能禁止整个保护功能。由于某种原因,这根线离其它的线非常远,所以使用激光切割机可以切断这根线而不影响临近线。这样,使用简单的编程器就能直接读出程序存储器的内容。

    虽然大多数普通单片机都具有熔丝烧断保护单片机内代码的功能,但由于通用低档的单片机并非于制作类产品,因此,它们往往没有提供有针对性的防范措施且级别较低。加上单片机应用场合广泛,销售量大,厂商间委托加工与技术转让频繁,大量技术资料外泻,使得利用该类芯片的设计漏洞和厂商的测试接口,并通过修改熔丝保护位等侵入型攻击或非侵入型攻击手段来读取单片机的内部程序变得比较容易。

    4 应对单片机破解的几点建议
    任何一款单片机,从理论上讲,攻击者均可利用足够的投资和时间使用以上方法来攻破。所以,在用单片机做加密认或设计系统时,应尽量加大攻击者的攻击成本和所耗费的时间。这是系统设计者应该始终牢记的基本原则。除此之外,还应注意以下几点:
    (1)在选定加密芯片前,要充分调研,了解单片机技术的新进展,包括哪些单片机是已经确认可以破解的。尽量不选用已可破解或同系列、同型号的芯片。
    (2)尽量不要选用MCS51系列单片机,因为该单片机在国内的普及程度,被研究得也透。
    (3)产品的原创者,一般具有产量大的特点,所以可选用比较生僻、偏冷门的单片机来加大者采购的难度。
    (4)选择采用新工艺、新结构、上市时间较短的单片机,如ATMEL AVR系列单片机等。
    (5)在设计成本许可的条件下,应选用具有硬件自毁功能的智能卡芯片,以有效对付物理攻击。
    (6)如果条件许可,可采用两片不同型号单片机互为备份,相互验证,从而增加破解成本。
    (7)打磨掉芯片型号等信息或者重新印上其它的型号,以乱真。
    当然,要想从根本上防止单片机被,程序被等侵权行为发生,只能依靠法律手段来。

    1、引言
    调试是开发过程中的环节,然而内核、嵌入式系统的调试不同于传统的调试系统。通常嵌入式系统不具备使用本地调试器的能力,由于:
    系统自身的资源有限。内存小,输入输出设备不能用于调试。
    传统的调试系统需要文件系统,嵌入式系统通常无文件系统,内核调试时还不支持文件系统。
    调试器的运行本身需要操作系统的支持,因此无法实现操作系统内核的调试。
    有效的解决方法是采用远程调试技术。远程调试是指调试器运行的环境(主机)和被调试的系统(目标机)在物理上是分离的,通过串口或者网络进行连接的调试技术。
    GNU提供的GDB就拥有强大的远程调试功能,它能够使开发人员以远程调试的方式单步执行目标平台上的程序代码、设置断点、查看内存,并同目标平台交换信息。GDB远程调试的实时、动态、方便、等优点使它逐渐成为嵌入式开发的调试方案。
    远程调试系统由三部分组成:主机上的本地调试器,目标机上的调试代理,远程调试协议。如图1。对应于GDB远程调试系统的三部分:GDB,GDBstub, GDB远程串行协议。下面就这三部分进行分析。

    图1. 远程调试系统


    2、RSP协议
    GDB RSP(Remote Serial Protocol)定义了GDB宿主机与被调试目标机进行通信时数据包的格式。信息的格式是:$数据#校验码。多数的信息都使用ASCII码,数据由一系列的ASCII码组成,校验码是由两个16进制数组成的单字节校验码。接受方接受数据并校验,若正确则回应“+”,错误则回应“-”。通信的内容包括读写数据、控制程序运行、报告程序状态等命令。RSP的基本命令从通信对话角度可以分为两种:
    1) 请求
    ?:读当前系统状态
    g:读所有寄存器 
    G:写所有寄存器
    m:读内存
    M:写内存
    c:继续执行 
    s: 单步执行
    k:终止进程

    2) 答复
    “”:告诉GDB上次请求命令不支持。
    E:告诉GDB出错
    OK:上次请求正确 
    W:系统在exit_status状态下退出。
    X:系统在**信号下终止。
    S:系统在**信号下停止。 
    O:告诉GDB控制台输出,这也是向GDB发出的命令 

    3、GDB远程调试功能

    调试内核时通常还没有文件系统,而且多数嵌入式由于自身资源的限制不具备文件系统,因此将与文件系统有关的源文件、目标文件及符号表都存放在主机上,由主机上的调试器处理。同样,调试用的输入输出设备也是由主机提供。主机上的调试器接受用户输入的调试命令并进行预处理,对于有些命令(如breakpoint)的处理就在主机GDB上实现,不需要同目标机进行通信。当然,多的指令需要在目标机上调试代理上实现的。主机将预处理完之后的命令根据RSP进行封装,发送给目标机上的调试代理,调试代理接受命令后作相应的处理,并返回信息给主机上的调试器。

    4、目标机上stub的实现

    目标机上stub的基本功能是与主机GDB进行通信,实现读写内存、寄存器,stop,continue。主机GDB同目标机上stub进行通信的通用模型如图2:



    图2. GDB同目标机上stub通信的通用模型

    目标机与主机通过硬件连接,被调试部分插入stub,GDB与被调试部分通过RSP进行通信。根据stub所处层的不同来实现不同层的调试,包括内核层、应用层的调试。

    4.1 内核层调试模型

    图3. 使用stub对内核进行调试

    如图3,将stub插入到内核里就可以实现内核的调试了。Linux内核调试机制KGDB就是使用这种模式。KGDB可以分为初始化模块和控制模块。

    4.1.1初始化模块
    修改异常处理函数,使得在异常发生时都进入函数handle_exception(),这样GDB就能够捕获这些异常。初始化之后使用breakpoint()函数将系统控制权直接交给GDB。KGDB对异常处理函数的修改基本上可以分为二种。
    定义宏CHK_REMOTE_DEBUG
    #define CHK_REMOTE_DEBUG(trapnr,signr,error_code,regs,after) { if (linux_debug_hook != (gdb_debug_hook *) NULL && !user_mode(regs)) { (*linux_debug_hook)(trapnr, signr, error_code, regs) ; after; } }

     改变程序的流程,以int3的处理函数为例
    #define DO_VM86_ERROR(trapnr, signr, str, name) asmbbbbage void do_##name(struct pt_regs * regs, long error_code) { CHK_REMOTE_DEBUG(trapnr,signr,error_code,regs,goto skip_trap) do_trap(trapnr, signr, str, 1, regs, error_code, NULL); skip_trap: return; }
    展开DO_VM86_ERROR (3,SIGTRAP,"int3",int3)
    asmbbbbage void do_int3(struct pt_regs *regs, long error_code)
    { if (linux_debug_hook != ( gdb_debug_hook *)NULL&&! user_mode(regs))
    { (*linux_debug_hook)(3, SIGTRAP, errorcode, regs);
    goto skip_trap;
    }
    do_trap(3, SIGTRAP, "int3", 1, regs, error_code, NULL);
    skip_trap:
    return;
    }
    从以上代码可见,进入内核调试状态之后,异常处理函数就是handle_exception(),程序流程跳过了非调试状态时的处理函数do_trap。
    不改变程序的流程,以异常divide_error 的处理函数为例
    #define DO_VM86_ERROR_INFO(trapnr, signr, str, name, sicode, siaddr) asmbbbbage void do_##name(struct pt_regs * regs, long error_code) { …… do_trap(trapnr, signr, str, 1, regs, error_code, &info); }
    展开DO_VM86_ERROR_INFO( 0, SIGFPE, "divide error", divide_error, FPE_INV, regs->eip)
    asmbbbbage void do_divide_error (struct pt_regs *regs, long error_code)
    { if (linux_debug_hook != ( gdb_debug_hook *)NULL&&! user_mode(regs))
    { (*linux_debug_hook)(3, SIGTRAP, errorcode, regs);
    }
    do_trap(0, SIGTRAP, "divide erro", 1, regs, error_code, &info);
    }
    从以上代码中看不出调试状态跟非调试状态的区别,然而我们看一下do_trap函数中可能会调用的函数die()。
    void die(const char * str, struct pt_regs * regs, long err)

    CHK_REMOTE_DEBUG(1,SIGTRAP,err,regs,)
    do_exit(SIGSEGV);
    }
    由此可见,调试状态下的异常处理函数还是进入了handle_exception函数。不过与上面一种异常不同之处在于:异常处理函数在调试与非调试状态下的程序流程是相同的,handle_exception只提供系统当时的状态,继续运行的结果还是do_exit。
    虽然不是所有异常函数都是按上述两种方法定义的,但本质上都可以归划为其一,显然绝大多数处理函数的修改属于二种,因为种异常就是为调试准备的。因此在目标机具有调试用的输出设备的情况下,可以不修改二种异常处理函数,因为linux内核在非调试状态下的异常处理函数已经输出必要的状态信息、出错信息。

    4.1.2控制模块
    在控制模块完成与主机GDB的通信,具体流程如图4,handle_exception函数判断CPU是否处于VM86模式或用户态,若是则返回,可见KGDB只调试内核态程序。然后接受GDB发来的信息,根据接受的信息作出相应的操作和回复。流程图的虚线框内是所有GDBstub中handle_exception函数的通用流程。

    4.2 应用程序调试模型

    在嵌入式Linux开发领域里调试应用程序常用调试代理工具GDBserver,其工作原理并不是将stub编译在被调试应用程序内,而是把被调试程序作为GDBserver的子进程,这样GDBserver就可以利用内核提供的代码跟踪机制(ptrace)监控被调试进程的运行,从而来完成调试任务。此工作原理同GDB本地调试相似。其调试模型如图5。GDBserver的工作流程是:GDBserver创建子进程->绑定跟踪ptrace(ptrace_traceme,,)->从主机传来的各种调试命令通过GDBserver转化为各种操作需求的ptrace。显然,如果要用GDBserver来进行远程调试的话,就需要内核操作系统的支持,包括子进程、代码跟踪机制,这样对于其他嵌入式系统内核工作量会比较大。而且ptrace也有其局限性,比如只能跟踪它的子进程,在调试进程和被调试进程之间传送一个长字的数据。使用通用的调试模式工作量会小。如图6,将stub编译在应用程序中,并在应用程序入口处就插入断点,程序开始就上控制权交给GDB,之后的流程跟内核层调试类似。



    图4. GDBKGDB中handle_exception函数流程


    图5. 使用GDBserver对应用程序进行调试


    图6. 使用stub对应用程序进行调试


    5. 不修改内核前提下调试应用程序

    GDB实现设置断点的方式是使用内存的读写,即将原指令用一个trap指令代替,使得程序执行到该指令时产生单步调试中断,然后就进入异常处理函数,针对调试器的各种操作处理函数需要作出相应的操作。不同的系统提供不同的调试异常指令,如int3,trap2等,显然对于使用这些硬件平台提供的断点指令为了实现GDBstub调试功能需要改写这些指令异常处理函数。因此一般的调试系统器或调试代理都需要涉及单步调试指令的处理函数,需要系统内核的支持。上面提到的KGDB修改了异常处理函数,GDBserver需要系统内核提供ptrace函数。这种方法存在一些不足之处:修改内核工作量大,移植性差。针对这些情况我们可以采用另一种断点实现方案:在stub中定义一个设置断点函数。
    断点函数模拟调试异常指令,实现保护现场、调用异常处理函数、恢复现场并将控制权交给被调试程序。断点函数的基本流程如下。
    #define BREAKPOINT __asm__ __volatile__(" bl ent_exception\n)
    void debug_trap()
    { __asm__ __volatile__(
    " ent_exception: \n" 
    保存现场
    " bl handle_exception \n" 
    " out_exception: \n" 
    恢复现场
    );
    }
    handle_exception()函数流程类似图4中的虚线框部分。其中有一点,也是这种方法实现的关键部分是:断点指令的替换。断点设置时从GDB传过来的硬件平台提供的断点异常指令的二进制码,将此二进制码替换成在stub中新定义的BREAKPOINT二进制码,这样才能进入调试异常处理函数。因此在handle_exception()函数中,如果收到的请求是“M”,则需要作些处理,流称如图7:

    图7. 替换指令

    这种方法理论上在内核调试和应用程序调试中都可以使用,但在应用程序的调试中其优点明显。这种方法在写stub时候不涉及内核,在调试应用程序时不需要切换到内核模式下,直接在用户模式中就可以完成。这种方法也存在些不足之处。为了实现现场保护,要求用户了解系统内的寄存器。随着stub本身复杂度的增加,它的正确性需要多的检验。

    6、结束语
    加stub的远程调试方法方便而有效,而且可以降低项目成本,在实际工作中得到广泛的研究和应用。本文提到在不修改内核前提下调试应用程序的方法已成功应用于我们自己开发的微内核结构的操作系统里,为该系统的开发应用提供良好的调试手段。当然加stub的远程调试方法也存在一些不足。显然stub的应用是在串口通信的基础上,因此串口处理函数以及stub自身处理函数的正确性是确保stub调试的前提。


    1 引言
    为防止起重机因操作不当和过大的起重力矩而发生倾翻、折臂等事故,起重机安装力矩限制器,以确保作业,且作为保护装置的力矩限制器具有很高的性、稳定性和检测精度。为此,我们采用ATMEGA128单片机为力矩限制器的主控CPU,设计中采用了一些新技术和方法,提高了系统的测试精度和抗干扰能力。

    2 系统组成及功能
    该力矩器限制器主要由压力传感器、角度传感器、长度传感器、测量及与处理系统等组成。来自外界的待测信号:主/副钩起吊重量、起重臂的角度、起重臂的长度(汽车吊),分别经各自的传感器检测、前置预处理、信号放大后,通过电缆传输到控制器内,由ATMEGA128单片机A/D输入,进行相应的运算处理后求得起重机的起重臂角及工作幅度、实际起重量、额定起重量、实际起重量与额定起重量的百分比等,显示并作输出控制;在报警时记录数据;另外通过串行口可与上位机进行数据传送。

    该系统的主要功能是:

    1、实现起重机起重力矩的监测,实时显示起重机的工作幅度、实际起重量、额定起重量,起重臂角,实时时钟等。
    2、中文会话式人机界面设置预警值、报警值、钢丝绳数、起重臂的长度等参数;实时时钟校正;工作方式选择;实际起重量零位校正。
    3、当起重机实际起重量与额定起重量的百分比大于或等于预警值时,指示灯闪亮作预警处理。
    4、当起重机实际起重量与额定起重量的百分比大于或等于报警值时,系统声光报警,同时切断起重机向危险方向的动作,但允许其向方向动作。并对危险、载等异常起重工作情况进行记录,以便进行分析查询管理。

    3 硬件设计
    力矩限制器应用现场环境恶劣,且起重机对其性要求非常高,因此在设计时主要从数据、数据记录准确性与性以及抗干扰等方面考虑。系统主控制器采用ATMEGA128单片机,其片内集成了128K字节的Flash存储器,4K字节在线可编程EEPROM,4K字节SRAM,外围有2个全双工UART串行通讯接口。本系统的硬件结构图见图1。

             



    3.1数据采集通道
    主/副钩起重量及其相应工作幅度经各自的传感器检测并经放大处理后送A/D转换器,采用单片A/D多路信号分时转换的方法以简化设计并降。起重量采用桥式压力传感器,其输出电压信号为0~20mV,一般情况下,人们将此毫伏信号直接通过电缆传送到系统的放大电路中进行放大处理。但实践表明,该电压信号在工业现场恶劣环境下远距离传送时经常受到干扰,影响了系统的检测精度与正常工作。为解决此问题,在本系统设计中采用传感器信号经前置预处理,放大到0~5V电压,送CPU进行A/D采样见图2。


             


    3.2输出控制接口
    在起重机工作过程中,当实际起重量与额定起重量的百分比小于预警值时,屏幕上显示;大于等于预警值时,屏幕上显示预警,蜂鸣器断续鸣叫;大于等于报警值或工作幅度上、下取,屏幕上显示报警,蜂鸣器连续长鸣,同时切断起重机向危险方向的动作,但允许其向方向的动作。

    3.3实时数据记录及硬件抗干扰
    起重机在工作过程中,一旦发生载情况,需要实时记录起重机载时的实际重量、额定起重量、工作幅度等起重机的实际工况和载的时间,以作为事故分析或经验交流的依据。本系统采用实时时钟芯片DS1302作为实时时钟,该芯片外接锂电池,工作稳定性好,计时精度高,可直接与CPU的PE口相接,满足了系统需求。单片机在运行中受到严重干扰时,往往会出现程序跑飞或死循环等现象,导致程序运行失控。力矩限制器对性要求很高,采取有效措施来防止程序运行失控。硬件抗干扰采用Xicor公司的X5043芯片作为,它可完成系统上电/手动复位、定时器、电源电压监控;ATMEGA128CPU具有4K字节内部EEPROM,作为黑匣子数据记录存储器。另外,该控制器外带了两线串行EEPROM 24C1024,容量为128K字节,为特殊用户作大容量数据存储。

    3.4通讯接口
    采用MAXIM公司的MAX485作为通讯接口与上位机进行串行通讯,完成传送黑匣子数据。

    4 软件设计
    力矩限制器根据应用场合分为汽车吊力矩限制器、履带吊力矩限制器、门机力矩限制器,本力矩限制器采用同一套硬件,三种不同的软件分别对应汽车吊力矩限制器、履带吊力矩限制器、门机力矩限制器,三套软件基本结构相同,具体采样的变量和计算有些差异。
    本文以汽车吊力矩限制器为例,介绍软件设计的基本流程。软件的主流程图见图3。

             


    4.1初始化
    设置SP初值;把程序用到的内部RAM区清0;DC输出继电器赋初值;串行口0串行口(RS-485)初始化(设置波特率为9600,接收状态);EEROM指针(黑匣子数据存储指针);点阵液晶初始化,显示初始幅面(显示仪器型号,生产厂家,联系电话);实时时钟(DS1302)初始化;(X5043)初始化,打开;中断初始化,打开中断。

    4.2 数据采样
    分别对角度信号、长度信号和实际起重量信号采样各64个信号点,根据大数定理,去掉奇异点,剩下的作平滑处理,得到角度采样值,长度采样值,实际起重量采样值。

    4.3 计算:
    角度 = 角度采样值 * 角度系数 
    长度 = 长度采样值* 长度系数 + 基本臂长
    幅度 =长度 * (角度) - R0
    额定起重量 = F(长度,幅度)
    实际起重量 =实际起重量采样值 *钢丝绳数*重量系数 – 空钩校零值
    % = 实际起重量 * 100/额定起重量
    根据以上计算的值,作,预警和报警状态判断。

    4.4 显示:
    屏幕上以中文格式显示%、实际起重量、额定起重量、幅度、长度、角度及对应的数值。中文显示由一组显示驱动函数组成: 
    Printstr 8X16 以8*16点阵组成的字符显示字符串(包括中文) 
    Printstr 16X16 以16*16点阵组成的字符显示字符串(包括中文)
    Printlong8X16 以8*16点阵组成的字符显示数字
    Printlong16X16 以16*16点阵组成的字符显示数字
    程序中调用以上函数,很方便地把中文字符或数字显示到显示屏的任意位置。

    4.5输出控制:
    角度大于角度上,输出控制继电器1,禁止角度增大;
    角度小于角度下,输出控制继电器2,禁止角度变小;
    当起重机实际起重量与额定起重量的百分比大于或等于报警值时,输出控制继电器2和3,禁止角度变小及重量起吊;作黑匣子数据存储。

    4.6黑匣子数据存储




    http://zhangqueena.b2b168.com
    欢迎来到浔之漫智控技术(上海)有限公司网站, 具体地址是上海市松江区永丰街道上海市松江区广富林路4855弄52号3楼,联系人是聂航。 主要经营电气相关产品。 单位注册资金单位注册资金人民币 100 万元以下。 价格战,是很多行业都有过的恶性竞争,不少厂家为了在价格战役中获胜,不惜以牺牲产品质量为代价,而我们公司坚决杜绝价格战,坚持用优质的原材料及先进的技术确保产品质量,确保消费者的合法利益。