日期:2014-05-18  浏览次数:21550 次

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

------解决方案--------------------
没接触过 帮忙UP
------解决方案--------------------
PLC400,有多种方式和上位机相连,如果不用相关中间组件,自己开发协议与PLC相连,也就是通过MPI、CP443模块、Modbus Rtu Slave模块了,不知道你用那种协议进行连接的?
------解决方案--------------------
这样转换肯定不行了
要根据不同类型占用的字节数来转换
比如

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
------解决方案--------------------
不会.帮你顶下好了..
------解决方案--------------------
与plc通讯需要plc设置主动连接,然后你在c#中监听,通过监听端口建立连接,然后用建立的连接就可以给plc通讯啦