搜索
bottom↓
回复: 116

485总线只接传感器,不接控制板,一段时间后有掉线现象

  [复制链接]

出0入0汤圆

发表于 2014-9-26 09:30:13 | 显示全部楼层 |阅读模式
我们的一个温度传感器,带485接口的,用到客户现场,系统很简单,传感器通过485连接PLC485接口,PLC采集温度信号,通过485输出控制信号到一块485接口的控制板,控制板控制一个风机。简单说,总线上两个从机,一个我们的传感器,一个控制板,主机是一个PLC。
问题怪了:刚组网上电,都是正常了,一段时间后(有的几个钟头,有的几天),传感器信号上不来,控制板也掉线了,然后断电,重新上电又正常,一段时间后又同样故障。业主做了几个测试
1、总线只接传感器,不接控制板,一段时间后,仍然有掉线现象
2、总线只接控制板,不接传感器,运行正常
所以判定传感器功能异常。我们对此用尽了方法改进:
1、首先判断可能是程序上有BUG,改了好几次,没解决,后来干脆放弃自己写的协议,改成FREEMODBUS,用到现场,依然故障,开始都正常,一段时间后掉线。程序看门狗之类的都有设置。
2、硬件上做了几个修改,第一减小上下拉电阻,用10K的,考虑传感器到主机的距离才十来米,应该不用加终端电阻,没效果,故障依旧。
3、单片机用的STM8S的片子,之前设计用的内部晶振,估计是晶振精度不行,换成外部晶振,故障依旧,此处已吐血。
向客户要了控制板的资料看了下人家的设计:
1、输出都有做隔离,用了大量光耦,我们的接口设计是直接输出的,具体是,SP3485的输出口接两个个10Ω的电阻,然后出口处用TVS管接地保护;
2、控制板和我们的传感器都没有做接地,我们传感器是四个端子设计的,两根直流电源,两根通讯,传感器用的是PLC的24VDC供电的,控制板用的是AC220供电的。不知道共模电压是否有影响到。
其他细节,布线都是标准走线和用线。现场没有什么大型干扰源,系统控制一个风机。

业主已经把菜刀架到我脖子上了,说国庆前不给个交代,就……


救命啊,在线等……

出10入113汤圆

发表于 2014-9-26 09:33:56 | 显示全部楼层
控制板也是你们自己做的?传感器板子有没有指示灯,不正常时候是否已经死机了?监测数据,看到底是谁不正常呢?比如PLC有发包,是否传感器电路板有回包?

出10入113汤圆

发表于 2014-9-26 09:35:30 | 显示全部楼层
上传下传感器板子的照片或者原理图或者PCB截图都行,能看出原因,应该和隔离关系不大的,现在看是数据不正常通讯。

出10入113汤圆

发表于 2014-9-26 09:36:48 | 显示全部楼层
哦,控制板是别人的,和隔离无关的,别走入死角。

出10入113汤圆

发表于 2014-9-26 09:37:55 | 显示全部楼层
很大的可能是STM8单片机发送完数据后,是不是没有延时等待就关掉485发送使能了?

出10入113汤圆

发表于 2014-9-26 09:38:25 | 显示全部楼层
如果可以的话,看看你单片机通讯部分程序吧。

出0入0汤圆

发表于 2014-9-26 09:42:16 | 显示全部楼层
你们的 “传感器”电路中有某些 器件 有“电荷累积”情况,比如一些管脚悬空。。。

出0入0汤圆

发表于 2014-9-26 09:42:16 | 显示全部楼层
输出端加个PTC

出0入0汤圆

 楼主| 发表于 2014-9-26 09:43:37 | 显示全部楼层
饭桶 发表于 2014-9-26 09:35
上传下传感器板子的照片或者原理图或者PCB截图都行,能看出原因,应该和隔离关系不大的,现在看是数据不正 ...

控制板不是我们的产品,这个是我们的传感器实物是加了外部晶振,开关电源是3.3V的

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2014-9-26 09:45:35 | 显示全部楼层
故障时不断电,用PC去连你的传感器就知道是否死机了。

出0入4汤圆

发表于 2014-9-26 09:47:30 来自手机 | 显示全部楼层
加上终端电阻,共地。看看情况。

出10入113汤圆

发表于 2014-9-26 09:49:09 | 显示全部楼层
2485芯片的4脚那个电阻是下拉还是上拉?布线那么多死铜不接地?

出0入0汤圆

发表于 2014-9-26 09:52:37 | 显示全部楼层
示波器伺候:幅度,边缘,时延。确保收到的数据就是发来的数据。

出0入0汤圆

 楼主| 发表于 2014-9-26 09:52:40 | 显示全部楼层
饭桶 发表于 2014-9-26 09:37
很大的可能是STM8单片机发送完数据后,是不是没有延时等待就关掉485发送使能了? ...

板子上做了个LED灯,是在传感器成功通讯一次就闪烁一下。具体是在反馈数据的发送结束时,LED闪烁一次,故障时灯不闪烁了

出0入0汤圆

发表于 2014-9-26 09:52:59 | 显示全部楼层
用台电脑通讯总线数据监控,把所有数据记录下来,查看数据记录,分析原困。

出0入0汤圆

 楼主| 发表于 2014-9-26 09:56:26 | 显示全部楼层
饭桶 发表于 2014-9-26 09:49
2485芯片的4脚那个电阻是下拉还是上拉?布线那么多死铜不接地?

4脚接的上拉。这个测试版忘了处理铺铜,成品上都有接地

出0入0汤圆

发表于 2014-9-26 09:58:38 | 显示全部楼层
会不会跟3.3V供电的485有关系?

出0入0汤圆

发表于 2014-9-26 10:01:16 | 显示全部楼层
硬件方面,可以加外部看门狗,这种需要长期运行的东西,内狗也可能挂掉。
电源方面也要考虑,电源质量要测试下
再说说软件方面的事情:
1.首先你得确认,总线挂掉后,各个模块的状态,确定各个模块是挂掉了,还是总线冲突
2.如果是总线冲突,查看软件上面是否有BUG.我以前就遇到过,使用freemodbus,在一个传感器中运行一段时间把整个网络搞挂了,主要原因是其中一个传感器,一直处于发送的状态,抢占了总线。后来该了下发送数据的方式,问题得以解决。

出0入0汤圆

 楼主| 发表于 2014-9-26 10:21:24 | 显示全部楼层
semonpic 发表于 2014-9-26 10:01
硬件方面,可以加外部看门狗,这种需要长期运行的东西,内狗也可能挂掉。
电源方面也要考虑,电源质量要测 ...

测试是否总线冲突是否如此:故障时单独卸下传感器或者控制板,看总线是否在不断电情况下恢复,是吗。
这是通讯部分代码,您看发送程序是否和你的程序有一样的不妥,可是大部分都是直接调用freemodbus库的
主程序
//==============================================================================
//主函数
//==============================================================================   
void main( void )
{
    // variables   
    u8t addr;
    u8t i;


    eMBErrorCode    eStatus;
    DelayMS(30); //上电稳定

    asm("sim");   // 关全局中断
    Init_HW();
      
   
    TIM4_IER = 0x01;//允许中断
    TIM4_EGR = 0x01;//允许溢出中断
   
    TIM4_PSCR = 0x07;//16M/128=125000;
    TIM4_ARR  = 0xff;//125000/255=488;
   
   
    TIM4_CNTR = 0x00;
    TIM4_CR1 = 0x01;
   
   

    GPIO_int ();
    I2c_Init();   //initializes uC-ports for I2C
    Ht1621_Init(); //initializes LCD
    asm("rim");   // 开全局中断
    for(i=0;i<3;i++)
    {
    addr = PE_IDR&0x20;
    DevNo = PC_IDR;
    DevNo = ~((addr>>5)|DevNo);
    DelayMS(1);
    }

    DelayMS(50);
    IWDG_Init();   //开看门狗
   
    s=1;

     eStatus = eMBInit(MB_RTU, DevNo, 0, 9600, MB_PAR_NONE );
      
        // Enable the Modbus Protocol Stack. */
    eStatus = eMBEnable(  );
     for( ;; )
      {
      
           (void)eMBPoll();
            /* Here we simply count the number of poll cycles. */
         

        
         if(s)
         {
             get_status();
             s=0;

            
                    //显示温湿度  
            if(disk_temp > 99)
            {
            DISK_TAB[0] = disk_tab1[disk_temp%1000/100];
            }
            DISK_TAB[1] = disk_tab2[(disk_temp%100)/10];
            DISK_TAB[2] = disk_tab2[disk_temp%10];
            
            DISK_TAB[3] = disk_tab1[disk_humi%1000/100];
            DISK_TAB[4] = disk_tab2[(disk_humi%100)/10];
            DISK_TAB[5] = disk_tab2[disk_humi%10];
            Ht1621WrAllData(0,DISK_TAB,6);
         
         }
        
        DelayMS(500);
        IWDG_KR = 0xAA;

            
      }
           
      
}

//==============================================================================
#pragma vector=0x19
__interrupt void TIM4_OVR_UIF(void)
//==============================================================================
{
  // TIM1_ClearFlag(TIM1_FLAG_UPDATE);
  TIM4_SR = 0;//清除标志位
  n++;
  n%=750;//1s-2s的时候置位标志位
  if(n==0)
  {
    s=1;
  }

}

通讯程序

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2014-9-26 10:26:56 | 显示全部楼层
以前做过一个38K红外采集板,485通信,屏蔽地没接,红外有时接收数据错乱,但是通信还是正常;

出140入158汤圆

发表于 2014-9-26 10:29:49 | 显示全部楼层
出现故障时,把您们的板单独重新上电(PLC和控制板不用断电),如果重新上电后正常,那么是您们的板有问题了,用个LED显示接收,接收到正确的包后闪,用另一个LED显示发送,每发送一个包就闪一下,问题立刻就可见分晓了。我和485打交道多年了,在超大干扰场合(数台75Kw变频器,30多个100kw的斩波调温)均有调试经验,估计我能帮到您。

出0入0汤圆

发表于 2014-9-26 10:32:53 | 显示全部楼层
yangjl2010 发表于 2014-9-26 09:43
控制板不是我们的产品,这个是我们的传感器实物是加了外部晶振,开关电源是3.3V的
...

外部 晶振 还是 晶体?

出0入213汤圆

发表于 2014-9-26 10:36:09 | 显示全部楼层
加隔离。加个定时自动复位初始化(模拟掉电再上电)。

出0入0汤圆

发表于 2014-9-26 10:39:46 | 显示全部楼层
.....过了好几天出问题的话,你看看堆栈是不是

出0入4汤圆

发表于 2014-9-26 10:40:51 | 显示全部楼层
通讯死掉时,到底是你们的板子死了,还是控制器的板子死了。确定了再说其他。

出0入0汤圆

发表于 2014-9-26 10:46:26 | 显示全部楼层
出现故障时一定要注意,重启板子还是全部重启?不要着急,一定要完全的分析!一般工业用485都要长时间跑的,最好加一个隔离的485模块!

出0入0汤圆

 楼主| 发表于 2014-9-26 10:50:41 | 显示全部楼层
yigang 发表于 2014-9-26 10:32
外部 晶振 还是 晶体?

是外部晶振,普通的无源晶振,16M

出0入0汤圆

 楼主| 发表于 2014-9-26 10:53:01 | 显示全部楼层
amigenius 发表于 2014-9-26 10:29
出现故障时,把您们的板单独重新上电(PLC和控制板不用断电),如果重新上电后正常,那么是您们的板有问题 ...

明天飞去现场试下。请问下,如果测试到时板子死机了,可能会是什么原因,这种现象怎么排查故障

出0入0汤圆

发表于 2014-9-26 10:59:25 | 显示全部楼层
确定哪部分死掉,才好对症下药

出0入0汤圆

 楼主| 发表于 2014-9-26 11:01:39 | 显示全部楼层
jyrpxj 发表于 2014-9-26 10:36
加隔离。加个定时自动复位初始化(模拟掉电再上电)。

这个办法不错,临时解决可以,长期这么跑,肯定不行吧

出0入0汤圆

 楼主| 发表于 2014-9-26 11:03:17 | 显示全部楼层
Xujuango 发表于 2014-9-26 10:40
通讯死掉时,到底是你们的板子死了,还是控制器的板子死了。确定了再说其他。 ...

应该是我们的板子通讯失能了,影响了总线,使得控制板也通讯不正常了

出0入0汤圆

 楼主| 发表于 2014-9-26 11:04:50 | 显示全部楼层
feiban001 发表于 2014-9-26 09:52
示波器伺候:幅度,边缘,时延。确保收到的数据就是发来的数据。

我们在公司测试,都是正常的,传感器和PC通讯,和PLC通讯,一直很稳定,拿到现场联机就废掉了

出0入0汤圆

 楼主| 发表于 2014-9-26 11:09:29 | 显示全部楼层
activeleo 发表于 2014-9-26 10:46
出现故障时一定要注意,重启板子还是全部重启?不要着急,一定要完全的分析!一般工业用485都要长时间跑的 ...

出故障了,客户都是关掉总电源,全部断电在上电。一段时间后又故障。现在就是想问下,如果是我们的板子故障,会是什么样的原因导致整个总线都通讯不了,是485芯片拉死总线吗,这个要怎么分析软硬件上的可能原因

出140入158汤圆

发表于 2014-9-26 11:10:26 | 显示全部楼层
yangjl2010 发表于 2014-9-26 10:53
明天飞去现场试下。请问下,如果测试到时板子死机了,可能会是什么原因,这种现象怎么排查故障 ...

板子死机的情况有几种:一,程序主循环正常跑,只是485通讯部分挂掉,那么就是软件存在bug。二,MCU死机,那么加看门狗,接地处理好,PLC与MCU最好能隔离,不能隔离的,必须注意地电平,或者干脆把两者的0V连接起来。

出0入0汤圆

发表于 2014-9-26 11:13:47 | 显示全部楼层
首先要排除掉硬件的故障可能
带个示波器,等死掉以后,查看485芯片的各个管教的波形,看看控制信号,主要是DI,RO这两个控制引脚的电平,以及A,B线上的波形。
估计可能是A,B线上的信号压差过小,或者DI,RO控制脚的控制电平不正确,可能造成无法收发信号。如果都正常,则再去考虑程序故障的可能。

出0入0汤圆

发表于 2014-9-26 11:16:56 | 显示全部楼层
他用什么485芯片,你就用什么试试

出0入0汤圆

发表于 2014-9-26 11:21:32 | 显示全部楼层
CH_anyin 发表于 2014-9-26 09:58
会不会跟3.3V供电的485有关系?

正解            

出0入0汤圆

发表于 2014-9-26 11:22:26 | 显示全部楼层
不加隔离...电机一启动全部死掉。加隔离才是长期选择

出0入0汤圆

发表于 2014-9-26 11:28:54 | 显示全部楼层
应该是硬件问题

出140入158汤圆

发表于 2014-9-26 11:30:43 | 显示全部楼层
Hhhhhhhh 发表于 2014-9-26 11:22
不加隔离...电机一启动全部死掉。加隔离才是长期选择

加隔离是最好不过了,但不加隔离也没这么恐怖,工业上很多应用,包括西门子有些型号的PLC也没有隔离

出0入0汤圆

发表于 2014-9-26 11:38:45 | 显示全部楼层
第一:通讯不上是指传感器与控制板没有数据交换还是传感器上送异常数据控制板没有认。
第二:控制板接收到异常数据后有没有及时清堆栈,传感器接收到异常数据后有没有及时请堆栈?有没有数据异常处理机制?
第三:传感器单向传数据给控制板还是控制板主动召唤传感器上送数据?如果传感器单向传数据给控制板,上送间隔是否过小,是否传感器输出异常不停发数据占了总线?
第四:如图,给个降低数据通信异常概率的方法。


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2014-9-26 11:43:24 | 显示全部楼层
个人观点,工业上环境普遍恶劣,我们不可能要求客户改变环境。假如我是客户,机器动不动就被干扰,总不可能安排个人专门开机,只是会说你们的机器不行。

出0入0汤圆

发表于 2014-9-26 11:52:48 | 显示全部楼层
95%可能软件问题

出0入0汤圆

发表于 2014-9-26 11:54:24 | 显示全部楼层
重现时,先在ab线接下,手下数据看看
再单独你的板子测试485通讯,
单独测下控制板有没有发东西给你
再判断,有强干扰的话就最好加光耦隔离拉,

出10入113汤圆

发表于 2014-9-26 12:39:19 | 显示全部楼层
一些人可能都不知道隔离的作用是什么的,在乱讲。

出0入0汤圆

发表于 2014-9-26 12:59:55 | 显示全部楼层
加光電隔離啊

出0入0汤圆

发表于 2014-9-26 13:07:36 | 显示全部楼层
软件定时重启

出0入0汤圆

发表于 2014-9-26 13:17:00 | 显示全部楼层
1. 测一下你的电源是否稳定,你是开关电源,要看干扰。
2. 降低通讯速率。
3. 最好预留串口打印,随时检测到底跑到哪里了。
4. 将10R电阻换成PTC.
5. 软件好好查查。

出0入0汤圆

发表于 2014-9-28 07:21:06 | 显示全部楼层
tvs也拿掉试试

出0入0汤圆

发表于 2014-9-28 08:35:06 来自手机 | 显示全部楼层
1,一个功能正常的485从设备,应该在其

出0入0汤圆

发表于 2014-9-28 08:39:14 | 显示全部楼层
会不会485总线发送数据后没有释放啊

出0入26汤圆

发表于 2014-9-28 08:40:58 | 显示全部楼层
抓下总线数据看下呢。  输出为啥不加隔离? 这是最基本的吧。

出0入0汤圆

发表于 2014-9-28 08:43:25 | 显示全部楼层
用示波器观察通信线路数据波形看看

出0入4汤圆

发表于 2014-9-28 08:47:10 | 显示全部楼层
485通信故障情况比较多,给你一个参考:
1.由于你的通信没有隔离,所以传感器电源要单独供电(线性电源走线要短)。通信仅接AB差分信号减小回路干扰。
2.多机连接时不要走星形连接,参考一标准布线方式,接上终端电阻。防止线路反射干扰。
3.通过示波器查看通信波形,适当调整上拉或下拉电阻,使差分信号平衡。
4.软件要有防从机死锁的功能,确保通信错误后能恢复到接收状态。

出0入0汤圆

发表于 2014-9-28 08:55:53 | 显示全部楼层
设计硬件时加一些I的LED显示,有故障时可以让客户记录一下,客户可不会帮你分析是什么死了,最多重启时看一下能看见的东西告诉你

出0入0汤圆

发表于 2014-9-28 09:03:39 | 显示全部楼层
MODBUS的超时功能用上,总线就锁不了。查一查自已的软件。

出0入0汤圆

发表于 2014-9-28 09:06:53 | 显示全部楼层
yangjl2010 发表于 2014-9-26 10:50
是外部晶振,普通的无源晶振,16M

外接无源晶振有时会不振卡信不动,做个心跳指示灯可以看出来,用内部会好

出0入0汤圆

发表于 2014-9-28 09:11:55 | 显示全部楼层
做好防干扰处理,注意晶振的走线,换个有源晶振,也许问题就解决了

出0入0汤圆

发表于 2014-9-28 09:25:28 | 显示全部楼层
一般会影响其他485设备的
应该是使能了发送端
如果发送完了,复位为接收
就算你的设备坏了,也不会影响到其他设备
除非你的485芯片烧了

出0入0汤圆

发表于 2014-9-28 09:27:09 | 显示全部楼层
感觉问题从三点入手:
1,传感器板子硬件(你们在公司做了长期测试,问题应该不大)
2,传感器程序bug
3,PLC 程序bug

建议:适当降低波特率,看看情况有好转没!

出0入0汤圆

发表于 2014-9-28 09:49:15 | 显示全部楼层
注意下你们板子的电源吧。

出0入0汤圆

发表于 2014-9-28 10:04:22 | 显示全部楼层
涉及PLC 光耦隔离少不了

中断电阻、偏置电阻  都加了么

出0入0汤圆

发表于 2014-9-28 10:29:23 | 显示全部楼层
感觉7楼的说法很有可能,换个传感器试试。

出500入109汤圆

发表于 2014-9-28 11:29:12 来自手机 | 显示全部楼层
如果可以,出故障的时候保护现场,然后监控一下总线,看看是主机不询了还是传感器没响应还是总线整个挂掉了,这样无头苍蝇一般乱试,就算是蒙对了解决了问题你能放心吗。

出0入0汤圆

发表于 2014-9-28 12:01:58 | 显示全部楼层
考虑下芯片是否是假货的事情。通讯芯片。

出0入89汤圆

发表于 2014-9-28 12:06:45 | 显示全部楼层
可能还是板子一直处于发送状态,导致总线锁住了,加个发送超时吧

出0入0汤圆

发表于 2014-9-28 12:11:30 | 显示全部楼层
应该是串口乱码了,简单办法,看门狗定时重启

出0入0汤圆

发表于 2014-9-28 12:50:25 | 显示全部楼层
不要走星形接线,用总线型接法。总线两端加终端电阻。星形接法,某个模块失能,会有导致整个网络瘫痪的可能,特别是多个模块都加了终端电阻的情况。

出0入0汤圆

发表于 2014-9-28 13:00:24 | 显示全部楼层
工业485不隔离,还叫工业?

出0入0汤圆

 楼主| 发表于 2014-9-28 14:26:38 | 显示全部楼层
yy8047 发表于 2014-9-28 08:39
会不会485总线发送数据后没有释放啊

到现场检测了一下,当出现掉线故障时,传感器没有死机,总线出现被拉死的现像,用万用表测量A和B的电压始终是高电平在4V左右。这时不重启的情况下,传感器和PC能正常通讯。断开传感器和控制板,PLC总线没有恢复,始终高电平,重启PLC程序,接口电平恢复正常,按正确TTL走。这时再接上传感器和控制板,系统又恢复正常了。几个钟头后又出现了总线拉死持续高电平。PLC的通讯程序是调用标准库的,轮询的超时时间设置的100Ms ,会不会太短。关键是传感器通讯程序上什么样的BUG会导致总线被拉死呢。现场看了下,该死,客户采用的是星型接法,控制板到控制柜大概200米,传感器到控制柜大概10米,这个终端电阻不好加吧

出0入0汤圆

 楼主| 发表于 2014-9-28 14:27:42 | 显示全部楼层
momo_li 发表于 2014-9-28 11:29
如果可以,出故障的时候保护现场,然后监控一下总线,看看是主机不询了还是传感器没响应还是总线整个挂掉了 ...

到现场检测了一下,当出现掉线故障时,传感器没有死机,总线出现被拉死的现像,用万用表测量A和B的电压始终是高电平在4V左右。这时不重启的情况下,传感器和PC能正常通讯。断开传感器和控制板,PLC总线没有恢复,始终高电平,重启PLC程序,接口电平恢复正常,按正确TTL走。这时再接上传感器和控制板,系统又恢复正常了。几个钟头后又出现了总线拉死持续高电平。PLC的通讯程序是调用标准库的,轮询的超时时间设置的100Ms ,会不会太短。关键是传感器通讯程序上什么样的BUG会导致总线被拉死呢。现场看了下,该死,客户采用的是星型接法,控制板到控制柜大概200米,传感器到控制柜大概10米,这个终端电阻不好加吧

出0入0汤圆

 楼主| 发表于 2014-9-28 14:31:13 | 显示全部楼层
leiyin 发表于 2014-9-28 09:27
感觉问题从三点入手:
1,传感器板子硬件(你们在公司做了长期测试,问题应该不大)
2,传感器程序bug

到现场测了一下,是PLC总线被拉死,持续高电平,传感器没有死机。请教一下,传感器哪些bug有可能导致PLC接口被拉死。PLC程序会一个简单的轮询,调用标准modbus库的,故障时PLC没有死机,故障黄灯没有亮起,估计也是软件问题

出0入0汤圆

发表于 2014-9-28 14:33:14 来自手机 | 显示全部楼层
怎么不好加,赶紧加,快快加,多多加。快快整包回家。唉,酒喝多了。

出0入0汤圆

 楼主| 发表于 2014-9-28 14:33:49 | 显示全部楼层
youkebing 发表于 2014-9-28 12:06
可能还是板子一直处于发送状态,导致总线锁住了,加个发送超时吧

总线确实被锁死了,一直是4.0V不变。但是传感器的板子没有跑死,直接连到PC测试,能正常收发,加了发送超时了,还加了看门狗定时自复位,没解决问题。故障时总线被拉死了

出500入109汤圆

发表于 2014-9-28 14:35:16 | 显示全部楼层
yangjl2010 发表于 2014-9-28 14:27
到现场检测了一下,当出现掉线故障时,传感器没有死机,总线出现被拉死的现像,用万用表测量A和B的电压始 ...

多高波特率?200米不算短115200以上不好弄
三个节点而已,终端电阻找两端接就可以。可以用示波器看波形,来确定总线质量,用差分法来看。
按照你的说法,是PLC主机挂了,死机的时候在485上直接接上一个隔离的485用电脑检测此时总线上的数据,看看是总线没数据还是轮询没响应。来确定故障的节点到底是哪个。

出0入0汤圆

 楼主| 发表于 2014-9-28 14:37:48 | 显示全部楼层
semonpic 发表于 2014-9-26 10:01
硬件方面,可以加外部看门狗,这种需要长期运行的东西,内狗也可能挂掉。
电源方面也要考虑,电源质量要测 ...

请教!到现场测试了,故障时总线被拉死了,传感器通讯程序哪些疏忽容易把总线拉死呢,传感器断开通讯线和PC通讯,还能继续正常收发。断开传感器和控制板,PLC接口总线持续高电平无变化,重启PLC总线恢复。

出0入0汤圆

 楼主| 发表于 2014-9-28 14:40:12 | 显示全部楼层
momo_li 发表于 2014-9-28 14:35
多高波特率?200米不算短115200以上不好弄
三个节点而已,终端电阻找两端接就可以。可以用示波器看波形, ...

波特率不高,9600

出0入0汤圆

 楼主| 发表于 2014-9-28 14:42:27 | 显示全部楼层
ggddll 发表于 2014-9-28 14:33
怎么不好加,赶紧加,快快加,多多加。快快整包回家。唉,酒喝多了。

是所有从机都加个终端电阻是吗,终端电阻不加有可能会造成总线被拉死吗

出0入0汤圆

发表于 2014-9-28 14:47:57 | 显示全部楼层
yangjl2010 发表于 2014-9-28 14:26
到现场检测了一下,当出现掉线故障时,传感器没有死机,总线出现被拉死的现像,用万用表测量A和B的电压始 ...

锁死后一个个的断开,看看到底是哪个死了,然后再查看死掉的那个485芯片的发现端是否正常

出0入0汤圆

 楼主| 发表于 2014-9-28 14:52:00 | 显示全部楼层
yy8047 发表于 2014-9-28 14:47
锁死后一个个的断开,看看到底是哪个死了,然后再查看死掉的那个485芯片的发现端是否正常 ...

一个个断开了,发现时PLC的端口故障了,发送端不好测,PLC的发送端不好拆开测,PLC的硬件设计故障的概率就低了,可能是我们的传感器导致了它的接口故障

出500入109汤圆

发表于 2014-9-28 14:52:30 | 显示全部楼层
9600就不要纠结终端电阻了,这么慢,还是做做数据流分析吧

出0入89汤圆

发表于 2014-9-28 14:58:46 | 显示全部楼层
int m = 0;
#define busInUsing()    #请自己定义检测方法
#define initbus()           #自己定义初始化方法
void busdog() {
     if  (busInUsing()) {
         m++;
         if(m > 0xffff){  #假设0xfff 算最大超时吧,根据实际情况可以自己调整
               m = 0;
               initbus();
         }
     }
     else{
        m = 0;
    }
}

在主循环里面加上
busdog();

出0入0汤圆

发表于 2014-9-28 15:04:19 | 显示全部楼层
观望一下

出0入0汤圆

发表于 2014-9-28 15:14:27 | 显示全部楼层
yangjl2010 发表于 2014-9-28 14:52
一个个断开了,发现时PLC的端口故障了,发送端不好测,PLC的发送端不好拆开测,PLC的硬件设计故障的概率 ...

plc,部分是你搞的吗,按你说的应该是PLC,通讯程序问题。
如果有PLC程序,搞清楚,plc modbus 在modbus 通讯出错处理

出0入0汤圆

 楼主| 发表于 2014-9-28 15:15:04 | 显示全部楼层
youkebing 发表于 2014-9-28 14:58
int m = 0;
#define busInUsing()    #请自己定义检测方法
#define initbus()           #自己定义初始化方 ...

我用看门狗做了软件定时复位测试,总线还是挂了。早上在总程序里加了个固定20秒就自动复位,可是跑了两三个钟头,总线又故障了,传感器不重启直接接PC,还能正常收发,PLC总线又被拉死,怪了,什么原因啊

出0入0汤圆

发表于 2014-9-28 15:16:09 | 显示全部楼层
“控制板用的是AC220供电的”
我想问清楚,控制板是不是再整流成24V或是其他直流电压的?

出0入0汤圆

 楼主| 发表于 2014-9-28 15:20:06 | 显示全部楼层
semonpic 发表于 2014-9-28 15:14
plc,部分是你搞的吗,按你说的应该是PLC,通讯程序问题。
如果有PLC程序,搞清楚,plc modbus 在modbus 通 ...

PLC不是我弄的,他这边一直说他的PLC单独和控制板子通讯一切正常,和我的传感器通讯就被拉死,肯定传感器有BUG,吐血,老哥支支招,PLC程序大概问题出在哪些环节,轮询延时短(100ms)会是原因吗。能造成接口持续高电平的可能是什么,比如持续发送状态或者持续接收状态吗。PLC重启故障消失。

出0入0汤圆

 楼主| 发表于 2014-9-28 15:21:47 | 显示全部楼层
FULINGDA 发表于 2014-9-28 15:16
“控制板用的是AC220供电的”
我想问清楚,控制板是不是再整流成24V或是其他直流电压的? ...

是的,控制板是AC220供电,整流降压成24,再降压至12V,3.3V,分别供应不同模块

出0入0汤圆

发表于 2014-9-28 15:30:11 | 显示全部楼层
布线宜采用首尾相连方式,轮询间隔适当放长。

出0入0汤圆

发表于 2014-9-28 15:45:10 | 显示全部楼层
那你在控制板的AC220V之前加滤波器试试

出0入0汤圆

发表于 2014-9-28 15:46:17 | 显示全部楼层
我想是你的控制板干扰485通讯

出0入0汤圆

发表于 2014-9-28 15:48:04 | 显示全部楼层
本帖最后由 hetao7241 于 2014-9-28 15:55 编辑
yangjl2010 发表于 2014-9-28 15:15
我用看门狗做了软件定时复位测试,总线还是挂了。早上在总程序里加了个固定20秒就自动复位,可是跑了两三 ...


楼主这个我建议:

一是你把模块光电隔离,你这个买模块问题应该很好解决的,叫他给你一点时间,

二是叫客户改一下连线方式(星型)。

这些地方切忌一定光电隔离。

要是客户买时,没告诉他们的工业现场情况,你告诉他你这东西仅适合办公室使用;或你仅仅卖一个模块,不涉及工程,你把这个皮球肯定踢给承包工程的

出0入0汤圆

发表于 2014-9-28 15:51:52 来自手机 | 显示全部楼层
PLC端加485隔离器。    如果可以,PLC程序要改动。100太短。

出0入0汤圆

发表于 2014-9-28 15:58:35 | 显示全部楼层
yangjl2010 发表于 2014-9-28 14:52
一个个断开了,发现时PLC的端口故障了,发送端不好测,PLC的发送端不好拆开测,PLC的硬件设计故障的概率 ...

那你不接PLC这个现象还会复现吗?还有就是只是其中一套是这样还是所有的都这样啊

出0入0汤圆

 楼主| 发表于 2014-9-28 20:18:54 | 显示全部楼层
yy8047 发表于 2014-9-28 15:58
那你不接PLC这个现象还会复现吗?还有就是只是其中一套是这样还是所有的都这样啊 ...

现场共6套设备,都出现了相同故障

出0入0汤圆

发表于 2014-9-28 20:57:16 | 显示全部楼层
楼主解决了吗?如果解决了分享下,学习下经验,因为我也经常接触485

出0入0汤圆

发表于 2014-9-29 10:27:43 | 显示全部楼层
是不是哪个设备上的485一直处于一种状态 导致整条线的485都不能运行 你等停的时候不要去重启设备 就断开其中的一个485 看看另外2个是不是正常的

出0入0汤圆

发表于 2014-9-29 10:31:47 | 显示全部楼层
看你的这个问题像是没有共地的原因.

出0入0汤圆

发表于 2014-9-29 14:23:43 | 显示全部楼层
yangjl2010 发表于 2014-9-28 14:31
到现场测了一下,是PLC总线被拉死,持续高电平,传感器没有死机。请教一下,传感器哪些bug有可能导致PLC ...


看了之前你回复,感觉PLC的问题;

PLC是不是处理数据的时候处理时间过长,超过扫描周期导致一些程序不执行。plc也加看门狗吧,也喂喂狗狗!

出0入0汤圆

发表于 2014-9-29 15:50:56 | 显示全部楼层
温度传感器用的是什么?接的是什么测温器件,热电阻还是热电偶,是真铠还是假铠,是否由传感器端引入的窜扰信号
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-11 11:22

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表