usb工控系统,怎样防止单片机程序走飞或者375异常

想用375+单片机用于工控采集和控制,由于是无人值守的,要求比较高,怎样防止程序走飞,或者375自身的出错? 原来是用的isa总线的卡做输入输出的,现在isa总线的主板几乎无处可寻,除非用贵得要死的工控机,所以想改成usb总线的,这样就算是笔记本也能用。本来考虑用341芯片的,但由于保密性不佳,容易被他人复制(已经吃过苦头了,郁闷),所以想用375+单片机的方案,单片机用来采集和输出数据,并通过375芯片和pc机通讯。由于单片机可以用89c51一类的保密芯片,单片机里面的程序不容易被复制,再加上单片机同时可以对输入输出的数据做编码译码工作,这样就可以大大增加复制的难度。 问题是现在担心单片机程序会走飞,375本身也会出错,有什么办法解决吗? 以前只用单片机的时候,采取的是用rc电路定时复位单片机,单片机复位后采集并通过计算后输出数据,然后就闲置等待,直到下一个硬件复位信号来后从头再做,这样就可以保证单片机可靠的工作。 现在的问题如下: 1。 pc机主动,能不能通过pc机程序对单片机复位? pc机可以定时对375进行复位,375可以通过rst脚同时让单片机复位,但这样有很多问题,一旦pc机对375复位后,pc机和375的连接就断掉了,375如果不设置工作模式,pc机是认不出来的。就算经过设置工作模式后pc机又可以认出设备,那样的话岂不是设备一直再不停的插拔,应该行不通吧? 有没有一个办法,通过pc机直接控制单片机复位,而不让375复位?这样单片机就可以通过程序,判断是否是第一次上电复位,从而设置375的工作模式(如果多次设置同样的工作模式,pc机会检测到设备插拔吗?如果不会的话,单片机程序还可以简单点,我只要用内置固件模式就足够了)。或者说,有没有不通过单片机而像341一样硬件连接的方法设置工作模式?这样就不必每次都通过程序设置了,只要单片机一复位马上可以通讯。 为了保证375可靠的工作,是否可以让单片机定时的用CMD_CHECK_EXIST命令检查375是否正常,如果不正常就复位375?(有个问题,例子程序用如果不正常,要80次复位,是为什么呢?是不是多次CMD_RESET_ALL后就相当于上电硬件复位?如果不是多次CMD_RESET_ALL,就是软复位?) 2。 单片机主动 如果采取单片机主动的形式,单片机定时硬件复位,复位后检查375是否正常工作,如果不正常就复位375,如果正常就设置工作状态(多次设置会不会有问题?)。然后采集数据,送到pc机,pc机收到数据后处理,进行计算后输出,单片机收到数据后,处理并输出给外设,然后闲置等待下一个硬件复位信号。 还有一个问题,如果pc机端程序开着,单片机检测到375工作不正常,将375复位后重新设置工作模式,pc机这边的程序是否还能继续正常工作?是否需要重新启动软件?

希望版主及各位大侠多多指点

现在高级一点的单片机都有看门狗,你可以考虑


如果用像89s51的单片机,使用内置的看门狗,程序走飞正好走到 Mov 0A6H,#01EH ;先送1E Mov 0A6H,#0E1H ;后送E1 这两句,不就等于是喂狗了吗?是不是这样的几率微乎其微? 另外,如果程序走飞,单片机被看门狗复位后,需要重新设置375的工作模式,或者如果单片机检测到375工作不正常,将其复位后再重新设置工作模式,pc机软件那里的连接会不会断掉?是否需要重新启动软件?

看了评估板的程序,程序里用CMD_CHECK_EXIST命令检查375是否正常,如果不正常就复位375,居然要80次复位,是为什么呢?和只发一次或者少数几次CMD_RESET_ALL命令有什么区别?如果375的RST引脚接在51单片机的RSTI上,是不是单片机发出CMD_RESET_ALL命令后,自己同时也会被复位?


这个重复发送随便发送几次都是可以的,少几次没什么问题,这边做的目的就是检测375是否工作正常(前提就是你前面的测试命令是正常的,如果第一次做测试命令都不正常的话,那就要检查你的硬件连线是否有问题)如果这样连接的话,单片机也会复位掉


如果程序走飞,单片机被看门狗复位后,需要重新设置375的工作模式,或者如果单片机检测到375工作不正常,将其复位后再重新设置工作模式,pc机软件那里的连接会不会断掉?是否需要重新启动软件?


PC机那边会检测到设备的拔出,当设备插上来之后你在打开设备就可以了


也就是说,设备拔出并重新插入后(复位,重新设置工作模式后),软件那里就不能正常工作了?必须重新调用opendevice函数?那如果是无人值守的系统,岂不是出了错就不能自动恢复了? 如果程序走飞,单片机被复位,那么复位后需要重新设置工作模式(比如原来是内置固件,现在还是内置固件不变),那么会不会造成pc端检测到设备的插拔? 因为我的系统需要长时间稳定的工作,请问375芯片的稳定性如何?会不会经过一段时间的运行后出现不正常而必须复位? 另外,375芯片的工作模式有没有可能通过硬件的方式设定(就像341一样用硬件连接解决)?这样如果程序走飞而375工作正常的话,单片机复位后就不需要设置工作模式了,pc机端就不会检测到设备插拔了。


只有登录才能回复,可以选择微信账号登录