如何用C#编写程序读写西门子PLC?
S7.NET是一个C#编写的,以太网连接西门子带有Profinet接口CPU的dll驱动库,官方文件介绍可连接S7-200、S7-300、S7-400、S7-1200、S7-1500(经本人测试,也可连接S7200 SMART)。
1、连接S7200 SMART需使用S71200、S71500驱动都可以。
2、读写S7200或S7200 SMART的V区数据时,DB块号需设置为1。
3、使用中发现下面两个bug:
public object Read(DataType dataType, int db, int startByteAdr, VarType varType, int varCount)
public ErrorCode Write(DataType dataType, int db, int startByteAdr, object value)
上述两个函数无法完成位操作,请使用其他函数代替。
该函数在读取DInt(32位有符号整型)数据时出现问题,读取不了负数,负数时,值始终为-2147483648。
4、本程序中一次仅读取1个数据,实际应用中请按照S7.NET文档修改!
1、连接S7200 SMART:
测试硬件:CPU SR20,自带以太网接口
2、连接S7-200:(因该系列CPU无以太网接口,需外接模块,如:西门子CP243-1,大连德嘉CP243u、ETH-ibus等)
测试硬件:S7-200 CPU226 CN + 大连德嘉CP243u模块(西门子CP243-1设置太麻烦,这里用CP243u代替,协议都一样)。
3、连接S7-300:(该系列PLC也多数不带以太网口,需外接模块,如CP343-1、大连德嘉ETH-MPI(Plus)等)
测试硬件1:CPU 314 + ETH-MPI(Plus) (同上,CP343-1设置同样麻烦,这里用ETH-MPI(Plus)代替,协议一样)
测试硬件2:CPU315-2PN/DP,自带以太网接口
4、连接S7-1200:
测试硬件:CPU 1214C AC/DC/Rly
5、连接S7-1500:
测试硬件:CPU 1511-1PN
6、连接S7-400:未经测试,鄙人手上无S7-400 CPU,如有哪位帮忙测试,请告知结果(请给出详细硬件说明)。
建立连接:
读函数:
写函数:
这里有一条非常重要的设置,之前忘记了,现在补上:如下图,1500或者1200编程的时候下图两个地方需要注意:
读写DB块的话下面这两个地方需要设置一下: