精华内容
下载资源
问答
  •  IDC面对客户一般都是企业级客户,有的甚至为门户网站,若负载中断,IDC业务提供者,将会面临巨大损失,因此对供电可靠性要求很高。  2、负载容量大  IDC机房建设投入巨大,并且会考虑到未来几年业务增长...
  •  看到摊子里gogole_09同学分享了他阿里面筋,其中有个问题提到:线程池的中断策略有哪些?各有什么特点?想想自己也看过Common对象池源码和用过SunThreadPoolExecutor线程池,却没注意到“中断策略”,这是一...

    题记:

         看到摊子里gogole_09同学分享了他阿里的面筋,其中有个问题提到:线程池的中断策略有哪些?各有什么特点?想想自己也看过Common的对象池源码和用过Sun的ThreadPoolExecutor线程池,却没注意到“中断策略”,这是一个所有缓存池需要考虑的异常问题。

     

    Common Pool中断策略

        竟然是中断策略,直接看Common Pool中的borrowObject,从池中取对象,当没有可用的对象的时候的策略。

       

        **StackObjectPool(以Stack为存储结构的Pool)

       

       public synchronized Object borrowObject() throws Exception {
         ....
        Object obj = null;// 取对象
       ...
         obj = _factory.makeObject(); // 制造对象
         newlyCreated = true;
         if (obj == null) {
                        throw new NoSuchElementException("PoolableObjectFactory.makeObject() returned null.");
                      }
         ....
         _numActive++;
         return obj;

     

    发现_factory.makeObject(); 这个方法是一个abstract,所以猜测Common Pool并未实现自己的中断策略,而由使用者自行扩展。

     

     

    ThreadPoolExecutor中断策略

        JDK提供了4种策略,分别是:

        1、CallerRunsPolicy

        2、AbortPolicy 中止任务

        3、DiscardPolicy 丢弃任务

        4、DiscarOldestPolicy 丢弃最老任务

     

    分析中断策略,直接查看ThreadPoolExecutor类中的execute(Runnable command)设计,如下:

     /**
         * The default rejected execution handler
         */
    private static final RejectedExecutionHandler defaultHandler =
            new AbortPolicy();
    ....
    public void execute(Runnable command) {
            if (command == null)
                throw new NullPointerException();
            for (;;) {
                if (runState != RUNNING) {
                    reject(command);
                    return;
                }
                if (poolSize < corePoolSize && addIfUnderCorePoolSize(command))
                    return;
                if (workQueue.offer(command))
                    return;
                Runnable r = addIfUnderMaximumPoolSize(command);// 当线程大小超过maximumPoolSize时,返回null
                if (r == command)
                    return;
                if (r == null) {
                    reject(command);// 执行中断策略
                    return;
                }
                // else retry
            }
        }

     

    reject方法为:

    void reject(Runnable command) {
            handler.rejectedExecution(command, this);// 直接调用接口RejectedExecutionHandler的rejectedExecution方法
    }

     

    4种中断策略的实现,首先,默认的AbortPolicy implements RejectedExecutionHandler

     public static class AbortPolicy implements RejectedExecutionHandler {
            public AbortPolicy() { }
    
            /**
             * Always throws RejectedExecutionException.
             * @param r the runnable task requested to be executed
             * @param e the executor attempting to execute this task
             * @throws RejectedExecutionException always.
             */
            public void rejectedExecution(Runnable r, ThreadPoolExecutor e) {
                throw new RejectedExecutionException();// 直接抛出异常
            }
        }

     这种策略会让程序抛出异常,会一定程度影响系统运行。

     

    然后CallerRunsPolicy策略:

    public static class CallerRunsPolicy implements RejectedExecutionHandler {
            public CallerRunsPolicy() { }
    
            /**
             * Executes task r in the caller's thread, unless the executor
             * has been shut down, in which case the task is discarded.
             * @param r the runnable task requested to be executed
             * @param e the executor attempting to execute this task
             */
            public void rejectedExecution(Runnable r, ThreadPoolExecutor e) {
                if (!e.isShutdown()) {// 只要ThreadPoolExecutor没有关闭,就马上执行新线程,注意这里是run,而非start,新线程会立马执行
                    r.run();
                }
            }
        }

     这个策略比较保守,不抛出异常,也不忽略线程,而是让线程直接运行抢占CPU而发生阻塞。

     

    DiscardPolicy策略(忽略当前线程):

    public static class DiscardPolicy implements RejectedExecutionHandler {
            /**
             * Creates a <tt>DiscardPolicy</tt>.
             */
            public DiscardPolicy() { }
    
            /**
             * Does nothing, which has the effect of discarding task r.
             * @param r the runnable task requested to be executed
             * @param e the executor attempting to execute this task
             */
            public void rejectedExecution(Runnable r, ThreadPoolExecutor e) {// 直接忽略
            }
        }

    这种策略被忽略,而不给出任何警告信息。

     

    最后一个DiscardOldestPolicy策略(忽略最老线程)

     public static class DiscardOldestPolicy implements RejectedExecutionHandler {
            public DiscardOldestPolicy() { }
    
            /**
             * Obtains and ignores the next task that the executor
             * would otherwise execute, if one is immediately available,
             * and then retries execution of task r, unless the executor
             * is shut down, in which case task r is instead discarded.
             * @param r the runnable task requested to be executed
             * @param e the executor attempting to execute this task
             */
            public void rejectedExecution(Runnable r, ThreadPoolExecutor e) {
                if (!e.isShutdown()) {
                    e.getQueue().poll();// 直接移除当前队列中头节点
                    e.execute(r);// 把新线程加入到队列的尾节点,并调用线程的start方法启动
                }
            }
        }

     

    结论:

    从代码中看:

        当线程数量小于pool中活动线程数,则创建新线程;

        当线程数量等于pool中活动线程数,则尝试把任务加入到任务队列里面;

        当任务队列满的时候,则执行中断策略进行调整。

        各自的策略都有不同的特点,根据系统的需求选择合适的策略以达到线程利用率的最优。

     

    展开全文
  • 首先我们要知道什么是单片机  单片机是一种集成在电路 芯片,是采用超大规模集成电路 技术把具有数据...它既具有高级语言的特点,又具有汇编语言的特点。它可以作为工作系统设计语言,编写系统应用程序,也可以作为
  • 有哪些语言是跨平台

    千次阅读 2017-09-14 10:08:47
    首先不把可移植叫做跨平台,很多人容易搞混这个概念。 那么跨平台语言最大特点是不编译...2. 不使用操作系统API,很简单不同系统API定义不同,用法不同,软中断向量不同,凡是使用系统API创建线程,创建进程代码
    首先不把可移植叫做跨平台,很多人容易搞混这个概念。
    那么跨平台语言最大特点是不编译机器码,不使用系统API。
    1. 不编译机器码,因为不同环境CPU不同,虽然PC都是x86,但如果不是PC而是手机,那么CPU的指令集就不是x86,那么你的机器码就全废,不能跨平台。
    2. 不使用操作系统API,很简单不同的系统API定义不同,用法不同,软中断向量不同,凡是使用系统API创建线程,创建进程的代码,代码将无法通用。
    java运行在虚拟机上,编译的代码是JVM在运行,逻辑直接运行者不是CPU,只要硬件装JVM,那么不需要关心是什么CPU,同理他把系统API封装成了JAVA通用的库,虽然系统不同,但系统内核做的都是做相似的事,封装一下,也是到处使用,所以没问题,还有上面提到的QT,就是靠这样封装统一化实现跨平台或可移植,但问题是QT不是编程语言,所以答非所问。。。
    但语言本身跨平台不代表代码跨平台,否则PC和android就不会要写两个版本的java了,因为很多系统资源想要全部用统一封装,这工作量极大,也容易带来一些负面作用,这是要付出代价的,有代价没回报(比如微软做一个支持android系统的VS,而且能在PC上运行,做这个回报在哪里?做了也有可能被程序开发者认为哗众取宠,无意义,做两个APP不算问题,两者出现不兼容BUG才是问题),没有回报就没人做这个造福人类的工作,所以java的一次编译处处运行,看起来很美,实际只是句扯淡话,但这不妨碍说java是跨平台语言,只是工作没做到位。
    另一种跨平台叫做宏语言,很多此类语言是不用编译,这类语言通常工作范围受限,比如专门就是搞网页,专门就是搞数据库,以及flash的as脚本等等。。拿HTML来说,他是不编译的,说到底他只是个协议,这个语言的目就是用文本描述网页呈现,有浏览器商来实现这个协议,它可以实现android版本,PC版,苹果版的浏览器,但都识别HTML脚本,那么HTML就是个跨平台语言。。。其他此类语言也是同理,形象的说他们算是是一个的抽象协议,需要执行他们的APP或者服务来运行他们,只要开发商按约定的协议做程序,这个语言就跨平台,但这种宏语言,功能范围被限定。。
    展开全文
  • “区块链技术提供了一种记录交易或任何数字交互的方式,这种方式的设计具有安全、透明、抗中断、可审核和高效的特点。下文总结了区块链技术的12个理解误区。”区块链——分布式账本技术,已经成为科技产业和其他领域...
    “区块链技术提供了一种记录交易或任何数字交互的方式,这种方式的设计具有安全、透明、抗中断、可审核和高效的特点。下文总结了区块链技术的12个理解误区。”

    区块链——分布式账本技术,已经成为科技产业和其他领域热捧的对象。区块链技术提供了一种记录交易或任何数字交互的方式,这种方式的设计具有安全、透明、抗中断、可审核和高效率的特点。本文总结了区块链技术的12个理解误区,希望对大家有所帮助。

    误区一:区块链是云计算里一个神奇的数据库

    区块链在概念上是一个平面文件——一个简单交易记录的线性列表。这个列表是“附加的,因此条目永远不会被删除,但是,这个文件会无限增长,并且必须在对等网络的每个节点中复制”。

    区块链不允许存储任何类型的物理信息,比如Word文档或PDF文件。它只能提供一个“存在证明”,分布式账本只能包含一个代码,它可以证明某个文档的存在,而不是文档本身。然而,该文件可以存储在“数据湖”中,由信息所有者控制访问权限。

    误区二:区块链将改变世界

    我们可以利用区块链来进行复杂和技术性的交易——比如验证钻石的真伪,或者确认一个人的身份。在贸易融资中,也有关于区块链应用的讨论,在削减成本和交易速度方面是变革性的。尽管区块链可以支持这些案例,并减轻欺诈者篡改账目的风险,但它并不能根除网络诈骗的威胁,而且它还会引发有关保密的问题。此外,与维护传统的分类帐相比,使用区块链技术在许多情况下仍然是低效的。

    误区三:区块链等于免费

    尽管人们普遍持有“区块链免费”这种看法,但区块链既不便宜也不高效。它涉及多个计算机解决数学算法以达成最终不可篡改的结果,即所谓的“单一版本真理”(SVT)。区块链中的每一个“区块”通常都需要大量的运算容量来解决,而且有人需要为支持区块链服务的所有计算机电源支付费用。

    误区四:只有一个区块链

    现当下有很多不同的技术都被称为区块链,它们来自公有和私有版本,开放和封闭源代码,一般针对特定的解决方案进行定制。

    这些区块链的共同特点是,它们被加密剪切、分配,并有某种共识机制的形式。比特币的区块链、以太坊、超级账本、Corda、IBM和微软的“区块链”服务都可以被分类为分布式账本技术。

    误区五:区块链可以运用在任何领域任何交易

    尽管代码很强大,但它并不神奇。比特币和区块链开发者会津津乐道,我们很容易理解这一点,对许多人来说,区块链是数学运算方面的权威,而不是**部门或律师。在一些开发人员的心目中,区块链和智能合同将有一天会取代金钱、律师和其他仲裁机构。然而,这一代码仅局限于该链条本身的加密货币交易数量,而加密货币还远非主流。

    误区六:区块链可以成为全球经济的顶梁柱

    没有一个国家或企业实体拥有或控制着区块链。出于这个原因,区块链支持者希望私有链能够为几十上百种加密且受信任的加密货币提供基础支持。表面上,比特币区块链似乎是独占鳌头,然而,美国Gartner(咨询公司)最近的一份报告称,区块链的规模与纳斯达克网络((美国)全国证券交易商自动报价系统协会)的规模相当。如果加密货币获得成功,产生的记录日益增加,这种情况可能会发生变化。不过,就目前而言,区块链网络与当代的金融网络大致相当。

    误区七:固定而不可撤销的区块链分类

    类似的大型交易数据库,如银行记录,本质上是私有的,并与特定的金融机构挂钩。当然,区块链的力量在于代码是公开的,交易是可验证的,而且网络是加密保护的。欺诈交易——在行业里的说法,是网络拒绝“双耗”以防止欺诈。因为挖掘这一链条提供了一种比特币的金融激励,所以人们普遍认为,改写历史交易并不符合参与者的财务利益。然而,就目前而言,计算资源随着时间的推移而不断提高,潜在的欺诈也在增加,未来的处理能力对当代区块链完整性的影响尚不清楚。

    误区八:区块链记录永远不会被破解或篡改

    区块链的主要卖点之一就是其固有的持久性和透明性。当人们听到这两点,他们通常认为这意味着区块链面对外部攻击时是无懈可击的。任何系统或数据库都不会完全地安全,但网络越庞大、分布越广泛,它们就被认为越安全。事实上,区块链可以为应用程序的开发提供一种捕获未授权更改记录的方法。

    误区九:区块链只能运用在金融领域

    尽管区块链拥有众多领域的应用程序,毫无疑问金融就是其中之一。区块链最初在金融领域掀起浪潮,是因为它的第一个应用——比特币加密货币直接影响了这个领域。这一技术给金融世界带来的重大挑战,促使国际银行GoldmanSachs (高盛集团)或Barclays (巴克莱银行)等大举投资。在金融领域之外,区块链可以并且将被用于房地产、医疗保健甚至是个人,以创造一个数字身份。个人能够潜在地在区块链上存储一个医学数据存在证明,并对制药公司提供访问权限,以换取金钱。

    误区十:区块链就是比特币

    由于比特币比底层技术——区块链更出名,很多人都把这两者搞混淆了。区块链是一种技术,它允许点对点的交易被记录在网络分布式账本上。这些交易被存储在区块中,且每个块都与前一个块相链接,因此创建了一个链。如此一来,每个块都包含了一个完整的、有时间戳的记录,使得网络中发生的所有交易都有据可查。在区块链上,一切都是透明和永久的。没有人可以从账本上更改或删除交易。

    比特币是一种加密货币,两个人之间可以直接进行电子支付,而不需要通过像银行那样的第三方。比特币被创建、存储的在一个虚拟钱包中,由于双方之间没有中介单位,没有人能够控制加密货币。因此,比特币的发行数量将受限制,并由一种数学运算方式来定义。

    误区十一:区块链只为业务交互设计

    区块链专家坚信这项技术将改变世界和全球经济,就像90年代初互联网公司所带来的效应一样。因此,区块链不仅要对大公司开放,而且要每个地方每个人都可以接触到它。如果只需要连接互联网来使用区块链,那我们可以轻易想象到世界上有多少人能因此而相互作用和影响。

    误区十二:智能合同的法律价值与常规合同具有相同的法律价值

    目前,智能合同只是在满足某些特定条件时自动地执行操作的代码碎片。因此,从法律的角度来看,它们并不被视为常规合同。然而,它们可以被用来证明某个任务是否已经完成。尽管智能合同的法律价值有些含糊,但它仍是非常强大的工具,尤其是结合物联网的时候。
    展开全文
  • 首先我们要知道什么是单片机  单片机是一种集成在电路 芯片,是采用超大规模集成电路 技术把具有数据...它既具有语言的特点,又具有汇编语言的特点。它可以作为工作系统设计语言,编写系统应用程序,也可以作为应用
  • 运动控制器的固件升级、ZBasic程序开发、ZPLC程序开发、与触摸屏通讯和输入/输出IO的应用、运动控制器数据与存储的应用、运动控制器ZCAN、EtherCAT总线的使用、示波器的应用、多任务运行的特点、运动控制器中断的...

    点击上方正运动小助手,随时关注新动态!

    之前正运动技术与大家分享了,运动控制器的固件升级、ZBasic程序开发、ZPLC程序开发、与触摸屏通讯和输入/输出IO的应用、运动控制器数据与存储的应用、运动控制器ZCAN、EtherCAT总线的使用、示波器的应用、多任务运行的特点、运动控制器中断的应用以及U盘接口的使用等。今天,我们来讲解一下正运动技术运动控制器ZDevelop 编程软件的使用。正运动技术ZDevelop编程软件的使用以下是图文详解。

    1、材料准备与控制器接线参考

    6ffcf3fb7b747cbb954ae6be7ccee71f.png

    控制器接线参考

    ad20734d5bcab2a7a61e9502eaa158a4.png

    2、正运动技术ZDevelop 优势

    ZDevelop 是正运动技术ZMoiton系列运动控制器的PC端程序开发调试与诊断软件通过它用户能够很容易的对控制器进行程序编辑与配置,快速开发应用程序、实时诊断系统运行参数以及对运动控制器正在运行的程序进行实时调试支持中英双语环境。

    ZDevelop支持三种编程方式,分别为ZBasic、ZPLC梯形图、ZHMI组态使用ZDevelop软件编写的程序可以下载到正运动控制器里,也可以下载到仿真器在PC平台仿真运行。

    ZDevelop软件可通过串口或网口连接控制器,程序下载到控制器时可选下载到ROM掉电保存或下载到RAM掉电不保存,掉电保存的程序可以脱机运行。

    ZBasic、ZPLC和ZHMI之间可以多任务运行,其中ZBasic可以多任务号运行,可与ZPLC与ZHMI混合编程。

    ZDevelop 编程软件主界面

    6c762e246582a41fbc8136302a3f8f29.png

    3、正运动技术ZDevelop 主要功能

    敲重点

    ◆ 支持ZBasic、ZPLC、ZHMI三种编程环境;

    ◆ 监控控制器的运行状态;

    ◆ 支持在线调试;

    ◆ 支持多任务运行;

    ◆ 支持控制器与触摸屏仿真(针对没有控制器或触摸屏的场合);

    ◆ 支持手动操作控制器--手动运动视图;

    ◆ 支持查看各类寄存器数据--寄存器视图;

    ◆ 支持示波器采集显示多种类型的数据(示波器视图);

    ◆ 支持操作输入口输出口的状态(输入口/输出口视图);

    ◆ 支持加密下载程序、锁定控制器、保护客户知识产权(生成ZAR文件、锁定控制器);

    ◆ 方便客户快速升级固件与用户程序升级(固件升级、下载ZAR文件)。

    4、正运动技术ZDevelop 在线命令

    在线命令与输出窗口可以查询与输出控制器的各种参数、控制轴运动、打印程序运行结果、打印程序错误信息,软件开发人员在程序中给出的打印输出函数(由“?、PRINT、WARN、ERROR、TRACE”等命令输出)。

    ? 为PRINT的简写,WARN为警告信息,ERROR为错误信息,TRACE打印信息。

    其中WARN、ERROR、TRACE等命令是否输出由ERRSWITCH指令控制。

    语法:ERRSWITCH=switch

       switch:调试输出的开关

    bc6a6da104d323c6f18354bf1d2d4ecc.png

    连接了控制器或仿真器就可以使用在线命令功能,不受程序运行状态的限制。“清除”按钮用以清空“命令与输出”窗口的所有内容。

    “捕获”开启后,弹出“另存为”窗口,默认保存文件类型为txt文本文件;

    捕获”开启后,原“捕获”按钮变为“捕获中”,将接下来命令与输出窗口输出的所有内容保存到txt文本文件里,直到再次按下“捕获中”按钮停止捕获,不再继续保存信息。

    执行在线命令和打印错误信息提示:

    bcf3b6da445d5bae42d0449605681e22.png

    f3bb54510af4e7d0c194e90dfc44ed79.png

    5、正运动技术ZDevelop 查找结果

    通过“编辑”→“整个项目中查找”打开“项目中搜索”视图,输入查找的内容,将对该项目文件进行搜索,将匹配到的结果显示在“查找结果”窗口。双击查找的结果,光标快速定位到程序文件中的该行指令上。

    f7986b0d10e163c644f67a7286260764.png

    9703a6385e5f1843b0457dc2bbff8678.png

    bc56172e8a31e1373c5aa4c4fd80bf19.png

    6、正运动技术ZDevelop 轴参数

    轴参数窗口可以监控运动控制中常见的参数。可读写的参数在窗口内双击后直接修改,只读参数不支持修改。

    “轴选择”窗口选择要监控的轴;轴参数窗口的参数显示通过“参数选择”打开“自定义视图”从指令列表自行选择所需参数,参数指令含义可查看ZBasic帮助。

    96ef0401dea222073d8fd7aaafd9d393.png

    85347d18c73a45f1e8d88085c85f61d9.png

    052fabb2d8a6414986dbb60ec3c1cbc8.png

    7、正运动技术ZDevelop 自定义视图

    通过“视图”→“自定义”打开自定义视图,除了可以更改“轴参数窗口”的参数显示之外,还支持更改如下几类窗口的字体、字号、显示颜色等风格。

    2065dcc5b756413d7da410411e98d283.png

    23a406a84583e10c0afd7873bd5d98fd.png

    8、正运动技术ZDevelop 寄存器窗口

    通过菜单栏“视图”→“寄存器”打开。

    通过这个窗口可以查看控制器的寄存器的数值,可以选择查看多种不同类型的寄存器(支持PLC功能的控制器才支持此功能)。

    使用方法:

    1)选择要读取的寄存器的类型、起始编号、个数后点击“读取”即可在窗口显示出数据,注意读取个数不要超出寄存器范围,否则会提示错误,勾选自动刷新功能便于自动实时采集寄存器值的变化并显示出来,否则需要再次点击读取才能获取的寄存器的值变化情况。

    2)点击“导入”/“导出”可快速上传/下载寄存器数据。

    3)导出数据方便客户把自己关注的部分寄存器导出到文本保存。

    4)导入数据方便客户把关注的已保存的寄存器数据直接更改到控制器内部。

    28c26cef18039e864dc8e832847ff0bb.png

    9、正运动技术ZDevelop 示波器窗口

    通过这个窗口可以捕获控制器轴的速度曲线或位置变化曲线等多种数据信息。

    示波器属于程序调试与运行中极其重要的一个部分,在“视图”→“示波器”中打开。示波器必须先启动后触发才能成功采样,打开示波器设置好之后点击启动,可手动触发,也可在程序里加入“TRIGGER”指令自动触发示波器采样。

    示波器详细使用方法参见公众号历史文章“快速入门|篇九”。

    ac57edf647b35664d135a49307c3010b.png

    10、正运动技术ZDevelop 其他窗口

    手动运动:手动操作电机转动,排查电机接线是否正确。

    d6fb7fa4759e900d64480a94df3be558.png

    输入口:查看输入口状态以及特殊输入定义。

    c6e9dcfd028502a39e61ffabeabcfbca.png

    输出口:查看输出口状态。

    ad0a3473864b3b8585f5dde78ea8d0f6.png

    文件视图:项目包含的文件数量、类型和文件任务号。

    94fa9e57f180e3d0aaab52f31b459d9d.png

    过程视图:所有文件中含有的SUB函数列表。

    2e2f91065a99c2c0e79462eadf6c079f.png

    组态视图:Hmi文件中含有的所有窗口及每个窗口中包含的元件。

    f0b301e93a0e262757163ea521770f6e.png

    11、ZDevelop 控制器状态

    通过“控制器”→“控制器状态”能显示出控制器状态信息,包括控制器基本信息、ZCAN节点状态、槽位0节点状态、通讯配置。

    基本信息:包含最大虚轴数、最大电机轴数、任务数、文件数量、各类寄存器空间大小、程序容量大小、存储器大小、控制器的型号、软件版本号与时间、IP地址、硬件版本号,控制器硬件ID以及各轴上可配置的类型及映射等。

    5c825fcaaf601a479c8cb68b5eb997f9.png

    ZCAN节点:查看ZCAN节点上的设备信息。

    一般用于查看ZCAN扩展模块的CANID、轴数、各模块数字量输入输出编号范围和模拟量输入输出编号范围。

    121c8fb5e4ef6dc4690edf8b6b28fcd8.png

    槽位0节点:查看总线驱动器上的节点设备。

    如右图,节点0为扩展模块,需要使用NODE_IO指令映射输入输出IO编号,节点1、2为驱动器设备,各带一个电机。

    1a09ce8dd4b24cae1af8cea081c0f1b5.png

    通讯配置:查看CAN通讯配置和RS232/RS485/RS422串口参数配置。

    9993bfc6ac78413628d36ecafb1217f1.png

    此时CAN通讯的设置:CANIO_ADDRESS = 32,CANIO_ENABLE=1

    结合CANIO_ADDRESS与CANIO_ENABLE的信息可以知晓,此时控制器是ZCAN Master主站模式,CAN总线通讯速率500kbps,CAN使能状态。

    如需修改CAN通讯的设置,修改CANIO_ADDRESS与CANIO_ENABLE相关参数即可。

    Port0为RS232串口,ModbusSlave状态,地址1,VR与MODBUS寄存器是两片独立区间。

    Port1为RS485串口,ModbusSlave状态,地址1,VR与MODBUS寄存器是两片独立区间。

    串口更详细的解释请查看SETCOM指令相关的参数说明。

    12、正运动技术ZDevelop 固件升级

    固件升级用于对控制器现有固件版本更新,当前固件版本若无法满足程序运行要求,或部分指令功能不支持,就需要对固件进行升级。

    固件升级有两种方法,一种是使用ZDevelop软件自带的固件升级功能,另一种是采用zfirmdown工具软件下载zfm固件包,进行固件升级。两种升级操作方法类似。

    先下载好需要升级的固件,注意固件版本要与当前的控制器型号一致,点击ZDevelop软件菜单栏“控制器”“固件升级”后,在弹出的窗口里点击“浏览”选择目标固件包进行固件升级操作。

    固件升级详细操作参见公众号历史文章“快速入门|篇一”。

    6e78a6b301d86709735b58f7b7d0def0.png

    13、正运动技术ZDevelop 修改IP地址

    控制器出厂IP为192.168.0.11,修改控制器网口的IP地址可以通过IP_ADDRESS指令发送在线命令修改,或通过“控制器”“修改IP地址”窗口直接修改。

    IP地址在连接上控制器之后修改,修改成功之后自动断开连接,在线命令打印控制器连接错误信息,需要选择新IP地址192.168.0.23再次连接控制器,修改成功后永久有效。

    7703aa3c876b41dffc149837ec2a66ed.png

    757008d46ccd8d3809707cd40f9f4851.png

    14、正运动技术ZDevelop 控制器比较

    通过“控制器”“控制器比较”,可以比较当前项目程序和控制器里的程序是否一致,同时对比版本。

    左方为PC端当前文件,右方的为控制器内保存的文件,对工程项目所包含的文件进行逐个比较,文件内程序完全相同显示“YES”,程序不同显示“NO”。

    080dcd4ca400b7d174835bf98bbe449d.png

    302c60df79dd4db7ba39f3a9a8356f0c.png

    15、ZDevelop 控制器锁定&解锁

    控制器LOCK后将不能进行调试。控制器锁定用来保护控制器内下载的程序,锁定之后上位机程序将无法下载到控制器,但生成的ZAR文件仍可下载。密码可设置为数字、字母和特殊符号,长度不超过16个字符。

    密码采用不可逆算法加密,一旦忘记,将无法知晓。

    锁定控制器后操作控制器会弹出信息提示。解锁控制器输入密码即可解锁。

    操作路径:菜单栏“控制器”→“锁定控制器”/“解锁控制器”。

    e51e69c7b3912d3d59d5769923de64a7.png

    621d0a97b93e83516606e3038f024163.png

    37b7b4e78dc9a493a8c8b5910463a949.png

    16、ZDevelop 编译为库文件

    为便于程序保密或防止修改,ZDevelop软件的“编译为Lib”功能可以把一个程序文件编译为一个库文件后保存,库文件的文件名后缀为“.zlb”。

    将源程序调试无误后,点击菜单栏“文件”→“编译Lib”,将生成的.zlb文件保存在工程项目.zpj的文件夹下。

    d4f7743a6616e403a1cc61e525cc04e5.png

    编译后将Lib重新添加到项目中,在软件左侧的项目窗口点击鼠标右键,点击增加到项目,选择编译的Lib文件添加后如下图所示。

    058d0b76a0a6892db161c13105a69495.png

    将生成Lib文件的源文件删除,给编译的文件设置自动运行任务号0,将编译文件重新下载到控制器即可运行。

    73709243809d59b9d41f3febd1e31e4d.png

    打开当前编译文件的程序可以看到程序主体定义的声明,只有全局定义的名称可以查看,无法看到局部变量定义和SUB子函数具体过程,适合多人合作开发时子程序的保密。

    17、正运动技术ZDevelop ZAR下载

    通过生成专门的ZAR加密下载文件,可以实现独立的程序下载,这样可以把下载文件传给终端客户而不用担心程序泄密。还支持绑定控制器ID(控制器ID是出厂时控制器的唯一序列号,控制器ID可以在“控制器状态”里查看,也可通过指令SERIAL_NUMBER查看),绑定后该ZAR文件仅供此控制器使用。

    设置密码后再下载ZAR文件,需要使用APP_PASS指令将密码写入程序中校验。

    1)ZAR下载操作路径:菜单栏“项目”“生成ZAR文件”打开如下窗口,保存文件即可,注意下载之前需要将程序调试无误后再下载。

    2)ZAR加载运行路径:菜单栏“项目”“下载ZAR文件”,选择ZAR文件打开之后,文件自动加载运行。

    1632c5df7602c34a1aeb15da175f40aa.png

    18、ZDevelop 程序调试

    调试功能可以快速调试程序,查看程序中各任务的运行情况。

    ZDevelop连接控制器后,从菜单栏选择“调试”“启动/停止调试”弹出以下窗口,进入调试有以下四种方式:

    056ec8ae828d8d21425e451f5ce54447.png

    再次下载到RAM:表示程序再次下载到RAM运行,RAM掉电不保存。

    再次下载到ROM:表示程序再次下载到ROM运行,ROM掉电保存。

    不下载,复位程序:表示不下载程序,重新运行之前下载的程序,并打开任务窗口显示目前的运行状态。

    附加到当前程序:表示此时程序不下载,仅打开任务窗口显示目前的运行状态。

    fb415e7f9dcf288316d522de02695f0f.png

    f612ac9051b63e18d94ec56b40cd26d0.png

    选择进入调试的方式后,即可打开任务与监视窗口。

    1)任务窗口用于查看任务的运行状态,任务所在的文件和任务运行行号。

    2)可以把全局变量和文件模块变量等有效表达式加入到监视窗口,局部变量不支持,程序运行时自动获取参数值显示出来。也可以在调试状态下,在程序编辑区域选择变量后点击右键“增加到监视”加入到监视内容,或通过双击监视内容名称来修改或增加监视项。

    快速调试工具栏:开启调试时有效。

    b5ea6e3549df624b91417c1e99e584c6.png

    1)复位:从起始处开始运行。

    2)运行:开始自动运行,遇到断点暂停扫描,再按一下恢复扫描。

    3)暂停:暂停运行。

    4)单步进入(F11):运行到程序里面,按一下向下扫描一行。

    5)单步跳过(F10):运行到下一条程序。

    6)单步跳出:跳出SUB子程序运行。

    7)运行到:运行到光标指定行。

    8)设置断点:按一下设置,在原位置再按一下取消。

    9)强制停止所有程序运行。

    当程序与控制器不一致或是对程序进行再修改后没有及时下载,会导致调试指定的行号产生偏移。

    暂停时当前已经提交的运动并不会暂停。

    5d0f04c5837f550792454bf392f2e0fb.png

    可以通过增加断点来捕获和暂停程序的运行。

    断点调试可以查看程序运行的具体过程,主要用于判断程序逻辑错误。配合监视内容和轴参数变化情况可以查看程序每执行一步对寄存器、变量、数组等的影响。

    断点快捷键F9添加,或菜单栏“调试”“增删断点”,断点可以添加多个,菜单栏“调试”“清除断点”用于一次性清除项目文件中的所有断点。编辑断点窗口可快速移除目标断点或定位到断点处编辑代码。

    54e8bbc4cf2e17fee3a488bedf002b83.png

    9cfea52a74199459760a32300b942911.png

    程序停止在断点处后,就可以进行逐步调试,快捷键F11,按一次程序向下执行一步。

    如果断点是设置在循环中,那么下次循环运行到断点处时还是会暂停程序。

    程序调试完成后,需要清除所有断点再下载到控制器运行。否则打印信息提示Warn file:"BASIC1.BAS" line:16 task:0, Paused.断点后的程序暂不扫描。

    程序在运行途中出现warn警告,仍可以继续运行,程序下载运行后打印ERROR错误会停止运行。

    694420ab1888ee5167580df88fadcfbc.png

    19、ZDevelop 故障诊断

    菜单栏“调试”→“故障诊断”窗口,方便查看控制器软/硬件型号、日期、版本号、任务运行状态以及错误信息提示,方便客户现场查看故障以及程序停在哪里。

    故障诊断窗口的Run灯、Alm也可以手动开关,可以在众多控制器里快速找到当前连接的控制器。

    任务运行状态显示如下,运行出错时显示提示信息,同时Alm灯亮。

    3fd75e846d5e7d5b93afd32862b252a6.png

    efce66d6d46f383882907e11c161acdc.png

    20、ZDevelop 总线状态诊断

    菜单栏“调试”→“总线状态诊断”窗口,方便查看控制器当前支持的总线,总线上连接的所有节点的设备信息。

    打印信息含义参见?*ETHERCAT指令帮助。该窗口与?*ETHERCAT和?*RTEX打印数据结果一致。

    607e5c33d1e398b00c5ee85dffe36004.png

    21、ZDevelop 使用帮助

    点击“帮助”直接打开下列文档,可查看相关指令的说明、使用例程与部分功能的介绍。

    6bdd420cf43e65d99e41c46f60d8b0a1.png

    控制器使用入门帮助

    ZBasic编程手册

    ZPlc梯形图编程手册

    ZHmi组态编程手册

    ZVision视觉编程手册

    ZDevelop软件使用帮助

    在程序中,选中目标指令,按下F1键或双击指令快速在帮助视图打开该指令帮助,Basic指令、PLC指令、ZV视觉指令支持快速打开指令帮助。

    8452543164e52ff4c0b11ccd565f91cc.png

    ac602109703943f9787c582e1b931a80.png

    47b1bfe74c93075d939fb8e1df910e06.png

    efc0ffdd47554d584e8e31e723c57454.png

    6ea23441438468dfe38526bbb93a686e.png

    92e875f925965ab23b7a8d6d7faedc2e.png

    e4bca90c76a221f7a2c84a362afcb1f9.png

    正运动技术运动控制器ZDevelop 编程软件的使用就讲到这里。更多学习视频及图文请关注我们的公众号“正运动小助手”。本文由正运动小助手原创,欢迎大家转载,共同学习,一起提高中国智能制造水平。文章版权归正运动技术所有,如有转载请注明文章来源。

    往期精彩回顾

    快速入门 | 篇十二:正运动技术运动控制器U盘接口的使用快速入门 | 篇十一:正运动技术运动控制器中断的应用快速入门 | 篇十:运动控制器多任务运行特点快速入门 | 篇九:如何进行运动控制器示波器的应用?快速入门 | 篇八:如何进行运动控制器EtherCAT总线的基础使用?快速入门 | 篇七:如何进行运动控制器ZCAN总线扩展模块的使用?快速入门 | 篇六:如何进行运动控制器数据与存储的应用?快速入门 | 篇五:如何进行运动控制器输入/输出IO的应用?快速入门丨篇四:如何进行运动控制器与触摸屏通讯?快速入门 | 篇三:如何进行运动控制器ZPLC程序开发?快速入门 | 篇二:如何进行运动控制器ZBasic程序开发?快速入门 | 篇一:如何进行运动控制器固件升级?正运动技术丨高精度硬件比较输出在视觉飞拍上的应用运动控制卡应用开发教程之LabVIEW运动控制卡应用开发教程之VC6.0运动控制卡应用开发教程之使用Qt正运动技术XPLC516E 的开放式Linux 平台使用(上)正运动技术XPLC516E 的开放式Linux 平台使用(下)

    关于正运动技术

    正运动技术是一家专注于运动控制技术研发与应用的国家级高新技术企业,主要从事运动控制器、运动控制卡、IO扩展模块、运动显控一体机等系列产品的研发、生产、销售和服务。

    公司汇集了来自华为、中兴等公司的优秀人才,在坚持自主创新的同时,积极联合各大高校致力于运动控制技术研究与应用,是国内工控领域发展最快的企业之一,也是国内完整掌握运动控制核心技术和实时工控软件平台技术的企业。

    ab43c7a1e4f7fde5659ec7c970e99a69.png

    展开全文
  • 首先会对锁分类有一个整体概念,了解锁究竟有哪些分类标准。 锁 7 大分类 需要首先指出是,这些多种多样分类,是评价一个事物多种标准,比如评价一个城市,标准有人口多少、经济发达与否、城市面积大小...
  • 在Ftrans文件交换平台里,可以通过浏览器直接上传下载文件,也可以通过Ftrans Plugin高速传输插件进行上传下载,首先来看一下,它们各有哪些特点: 通过浏览器上传下载的特点 通过Ftrans Plugin插件...
  • 数据搬迁目标是在最少存储中断服务时间内完成数据在两个存储设备之间快速有序迁移,并保证数据完整性、可用性、一致性。 客户面临挑战 主要使用场景:根据正式系统搭建测试环境、从内网复制到外网、数据库...
  • 不过明确是编写那样代码多简单,购买它们会多昂贵以及它们需要多么昂贵和强大硬件。如果你什么中立观点(比如说没有被SUN和Microsoft百万美金所影响),请顺便通知我。 据我所知,JSP基于Java,...
  • Java 中哪几种锁?

    千次阅读 2020-07-13 08:47:21
    本章主要是介绍 Java 并发编程中锁究竟有哪些分类标准,对锁分类有一个整体认识。 本篇因为大都是概念,所以内容与原文保持一直,并未做更改。 原文地址:《Java 并发编程 78 讲》- 徐隆曦 第 19 讲:你知道哪...
  • 2、axios的特点有哪些? 一、Axios 是一个基于 promise 的 HTTP 库,支持promise所有的API 二、它可以拦截请求和响应 三、它可以转换请求数据和响应数据,并对响应回来的内容自动转换成 JSON类型的数据 四、安全性更...
  • 之所以这样称呼,是因为i686目标内核在环1中运行以避免可变长度的中断帧(以前CPL-1仅用于i686处理器,因此很影响力)。 CPL-1支持哪些目标 当前仅支持带PIC 8259中断控制器和PCI配置空间访问机制v1.0i686 ...
  • 高频开关电源原理

    2021-01-12 18:48:29
     高频开关电源工作原理及特点有哪些?开瑞小编为你介绍:开关K以必定时刻间隔重复地接通和断开,在开关K接通时,输进电源E经过开关K和滤波电路供给给负载RL,在全部开关接通期间,电源E向负载供给能量;当开关K...
  • 上篇介绍了自动化缓存的特点和作用,本篇继续分享一下在实际应用场景下有哪些自动化缓存。 三、自动化缓存的实际应用缓存是为了补偿上下游的波动或者中断而设置的,并非要达到最终的输送或者搬运任务所必须的模块。...
  • 几种通信方式的比较三、线程间的通信机制比较四、Windows下的内存是如何管理的五、中断和轮询的特点六、什么是临界区、如何解决冲突?七、 分段和分页的区别?分段机制分页机制分段和分页的区别页面置换算法八、什么...
  • 10.71.嵌入式处理器有哪些特点?答:有4个基本特点。● 对实时多任务有很强支持能力,能完成多任务并且有较短的中断响应时间,从而使内部代码和实时内核执行时间减少到最低限度。● 具有功能很强存储区...
  • 高频开关电源工作原理及特点有哪些?开瑞小编为你介绍:开关K以必定时刻间隔重复地接通和断开,在开关K接通时,输进电源E经过开关K和滤波电路供给给负载RL,在全部开关接通期间,电源E向负载供给能量;当开关K断开...
  • ( )【单选题】8051MCU 的中断源和中断标志位个数分别为( )【简答题】串口异步通信有哪些特点?其数据帧中有哪几个部分组成?【填空题】8051MCU T0、T1 均具有( ) 和( )功能,对应不同功能,其中加 1 计数器分别对...
  • 14.进行数据传输前,CPU发送的DMA初始化信息有哪些? 15. 实际计算机的时序控制方式往往以同步方式为基础,然后进行一些变化,请举出三个同步方式变化的例子 16.中断的主要特点是什么? 17.简述中断的分类。 18....
  • 目录第一章:绪论什么是操作系统?...什么是访管指令和访管中断操作系统内核内容、有哪些用户态转向核心态例子?大内核和微内核?第二章:进程管理进程、线程定义和区别进程状态与状态之间转换进...
  • 3、CC2530中总共包括几个定时器/计数器,各定时器的特点是什么? 4、定时器1所具备的工作模式有哪些,各模式的工作方式是怎样的? 5、CC2530的定时器2主要功能是什么? 6、CC2530的定时器3/4的工作模式有哪些? 7、...
  • 操作系统常见笔试面试题(一)

    万次阅读 多人点赞 2018-08-07 11:23:51
    三、中断和轮询的特点 四、什么是临界区、如何解决冲突? 五、分段和分页的区别? 六、进程间通信有哪些方式?它们的区别? 七、线程间的通信机制 八、什么是死锁?产生条件?如何避免死锁 九、进程间同步与...
  • 为什么4、简述直接位寻址区空间分配,片内RAM中包含哪些可位寻址单元5、8051单片机存储器在结构上有何特点在物理和逻辑上各有哪几种地址空间访问不同空间指令格式有何区别6、8051单片机在片内有哪些主要逻辑.....
  • 三、中断和轮询的特点 四、什么是临界区、如何解决冲突? 五、分段和分页的区别? 六、进程间通信有哪些方式?它们的区别? 七、线程间的通信机制 八、什么是死锁?产生条件?如何避免死锁 九、进程间同步与互斥的...
  • 主编苏珊 高如新 谭兴国 第一章习题答案 1 什么叫单片机它有哪些主要特点 单片机是将中央处理器CPU随机存储器RAM只读存储器ROM中断系统定时/计数器I/O口等主要计算机部件集成在一片集成电路芯片上单片微型计算机...
  • Vista驱动程序有哪些新变化?如果这方面问题一直困扰着您,那这次课程是绝对不容错过。 深入研究Windows内部原理系列之十一:存储和文件系统 讲师信息:高宇 2007年02月08日 14:00-15:30 Level: 400 课程...
  • 1.4 单片机有哪些特点 1.5 单片机发展状况 1.6 PIC系列单片机有哪些优越之处 1.7 可在线调试和在线编程PIC16F87X 第2章 PIC16F87X硬件系统概况 2.1 PIC16F87X封装形式和引脚功能 2.2 PIC16F87X内部结构方框图...

空空如也

空空如也

1 2 3
收藏数 54
精华内容 21
关键字:

中断的特点有哪些