本人做串口编程的时候遇到一些问题,想和大家探讨一下!
本人C#串口编程还算比较熟悉,编过一些程序,基本的数据读写还是会的,普通的通信协议的解析也还清除,但是最近遇到一个问题却让我没了思路。问题是这样的,PC机和PLC通过串口进行通信,PC机发送一个指定的读命令,这个读命令包含一个固定的字长,然后PLC接收到这个命令之后,会判断这个命令是否“合法”,如果命令合法就应答一个字节数据,表示自己做好了接收命令的准备,之后PC机发送需要读写的寄存器地址,PLC根据这个地址返回相应的数据(多个字节)。现在我点犯难了,如何处理好这个关系,到底接听使用serialport类的监听事件,还是专门做一个监听的线程。接收的数据会根据发送的数据产生相应的格式变化!没有高手可以提供一点解决这种问题的思路,点点迷津,如何组织我的代码,在下不胜感激。

解决方案 »

  1.   

    不是 西门子 S7 200 PPI通信!
    这个和Modbus RTU是不是有点不一样!
    Modbus好像一般是一问一答!
      

  2.   

    PPI协议没公开啊。
    你说的是自由口通信吧。
    建议用Modbus吧。简单啊。
      

  3.   

    将plc设为从站,只能一问一答了。可以配置它为主站。串口只需要读数据,解析数据。
      

  4.   

    serialport对象的waitone方法和serialport对象的reset方法搭配使用 一下 试一试 即:先waitone然后再reset
      

  5.   


    仔细查看了一下,虽然PPi协议没有公开,但是也找到了很多这方面的资料。
    如果使用自由串口或者modbus的话还是需要修改PLC的程序,这个工作我没有参与,现在也没有能力。
    我再好好研究一下,谢谢你的建议!