一台计算机上的串口接多台仪器<plc>(232转485)。向仪器(plc)发送命令,仪器(plc)返回状态数据,收到返回数据后把数据显示在主窗口的相关区域(每个仪器有专门的数据显示区域),在主窗口中能向仪器发送其它的控制命令,并接收仪器返回的数据。针对这种情况,我的问题是如何判断这个通信线路的忙与闲(要不然当仪器(plc)两个信息同时发送时,由于波形相互影响,导致计算机接收的信息不准。)?
1、用计算机来判断
  是否可行?如何判断?
2、由仪器(plc)来判断
  当仪器发送信息时,可由plc来判断线路的忙闲状态,来发送相应的信息,这个可否行?如何操作?请教大家!谢谢

解决方案 »

  1.   

    只能在plc上判断,好象也没什么好办法。
    不过你在plc上发送数据包校验一下,接收数据的地方也校验就能够保证数据的正确了。
      

  2.   

    谢谢你
    你所说的这个校验是不是对整个数据包(又如说@010000XX ,其中@是起始符,
    01是仪器地址,0000是数据信息,xx是校验用的<其值等于@+01+0000 ,用十进制表示可不可行?>)补充请教:
    就是一开始,我要对全部仪器(plc)<大概有20台>发送一指令(要群发),
    当仪器接收到信号后要向仪器发出回应,在这个发出回应的过程中有可能
    两台仪器同时发出照你所说的那样式
    (计算机向仪器发送命令,等待返回,然后再处理另一台。
    仪器处理逻辑是接收到命令才发送数据。
    这样就不会有线路冲突的问题了。)
    这样是不是很费时
    我是这样想的,
    具体没试过另外中途中有可能出现异常情况
    因此仪器要向计算机发送指令
    但有可能两台同时出现异常情况
    同时发一信息
    那又该如何<因为这个计算机无法预知,很难控制>?