各位高手,我新接触plc,现在正在用c#写接口程序,实现pc与plc通讯。我与两个玩plc的人测试过,与第一个人测试时,我能连接到对方,并能成功发送数据,但对方却说,没有连接上;对方能连接上我,并能发送数据,我也能接收,但只能接收字符型数据,其他数据是乱码。
与第二个人测试时,不能连接对方,更不能发送数据,对方能连接上我,也能发送数据,但只能接收字符型数据,接收int时,1 变成  256,   2 变成 512   256 变成 1, 257 是 257 等等,接收real时,更是无规律可循,我接收数据的代码如下:
BitConverter.ToUInt16(buffer2,dfield_start[i]),请高手指点!多谢!

解决方案 »

  1.   

    PLC400,有多种方式和上位机相连,如果不用相关中间组件,自己开发协议与PLC相连,也就是通过MPI、CP443模块、Modbus Rtu Slave模块了,不知道你用那种协议进行连接的?
      

  2.   

    我用的tcp/ip协议写的,我查过mpi协议要求mpi网络吧,而CP443模块、Modbus Rtu Slave模块,我就不知道啦,在以太网上,用c#写接口程序,不知道怎么写,请高手指点!
      

  3.   

    抱歉,我忘记告诉大家,我要与西门子s7-400plc通讯
      

  4.   

    这样转换肯定不行了
    要根据不同类型占用的字节数来转换
    比如int 32位占用 4字节
    于是要用一个4字节长的数组来转换成int类型的数据参考我写的串口通讯例子:http://www.cnblogs.com/tuyile006/archive/2006/09/29/517882.html或者socket通讯例子:http://www.cnblogs.com/tuyile006/archive/2006/12/30/607823.html
      

  5.   

    多谢,我会好好学习tuyile006 提供的例子的!
      

  6.   

    与plc通讯需要plc设置主动连接,然后你在c#中监听,通过监听端口建立连接,然后用建立的连接就可以给plc通讯啦