gkket 发表于 2020-11-29 17:24:47

如果用C#编写程序读写西门子PLC?

S7.NET介绍:S7.NET是一个C#编写的,以太网连接西门子带有Profinet接口CPU的dll驱动库,官方文件介绍可连接S7-200、S7-300、S7-400、S7-1200、S7-1500。(经本人测试,也可连接S7200 SMART)

S7.NET使用问题说明:(本人踩过的坑,写给大家借鉴一下)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)上述两个函数无法完成位操作,请使用其他函数代替。public object Read(DataType dataType, int db, int startByteAdr, VarType varType, int varCount)该函数在读取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/Rly5、连接S7-1500:测试硬件:CPU 1511-1PN6、连接S7-400:未经测试,鄙人手上无S7-400 CPU,如有哪位帮忙测试,请告知结果(请给出详细硬件说明)。
下面是PLC建立连接部分代码片段:
建立连接:https://p6-tt-ipv6.byteimg.com/img/pgc-image/7724ea1ecad24b1c85e27d21397e95f9~tplv-tt-shrink:640:0.image

读函数:https://p6-tt-ipv6.byteimg.com/img/pgc-image/8cd3631ef1e740b7a021065ad4fff466~tplv-tt-shrink:640:0.image

https://p1-tt-ipv6.byteimg.com/img/pgc-image/886667561d974e7780aba2acb1bf31e2~tplv-tt-shrink:640:0.image

https://p1-tt-ipv6.byteimg.com/img/pgc-image/3735d135e59246898456c1dc23d46b26~tplv-tt-shrink:640:0.image

写函数:https://p6-tt-ipv6.byteimg.com/img/pgc-image/6d98a92038fd4156bf947544a0c099de~tplv-tt-shrink:640:0.image

https://p26-tt.byteimg.com/img/pgc-image/c157fd150b474a2cb9bb4e6154fc6474~tplv-tt-shrink:640:0.image

这里有一条非常重要的设置,之前忘记了,现在补上:如下图,1500或者1200编程的时候下图两个地方需要注意:https://p26-tt.byteimg.com/img/pgc-image/d96579837a81435b89120afccf5994aa~tplv-tt-shrink:640:0.image

读写DB块的话下面这两个地方需要设置一下:https://p9-tt-ipv6.byteimg.com/img/pgc-image/3cbee2ca36b3416db8e7911f90a8a915~tplv-tt-shrink:640:0.image

https://p9-tt-ipv6.byteimg.com/img/pgc-image/871a5fcd37d147099593fded5f939e59~tplv-tt-shrink:640:0.image

zhulong 发表于 2020-11-29 17:24:47

看到这帖子真是高兴!

高鑫 发表于 2020-11-29 19:34:22

强烈支持楼主ing……

云淡风轻 发表于 2025-11-13 18:08:27

这评论区卧虎藏龙,个个都是人才!

王炜博 发表于 2025-11-13 18:15:55

内容太顶了!疯狂点赞,已默默收藏~

zhaoyisheng 发表于 2025-11-13 18:48:04

救命!这波发言太秀了,直接原地封神~
疯狂认同!楼主说出了我不敢说的话

xgx 发表于 2025-11-13 18:51:02

这逻辑绝了,分析得太到位了吧

xie3361819 发表于 2025-11-13 18:51:43

占个楼慢慢看,先马克一下
楼主辛苦啦,期待下一篇分享

ysh1027 发表于 2025-11-13 18:51:58

学到了学到了,这波分享太实用啦!

醉卧云端笑 发表于 2025-11-13 18:54:33

蹲一波同款,有没有姐妹 / 兄弟推荐?
页: [1] 2 3
查看完整版本: 如果用C#编写程序读写西门子PLC?