c# 如何与PLC通讯?西门子S7-1200

kevn 2016-08-12 04:12:44
有谁做过吗,网上找了下没有太多资料
...全文
14009 41 打赏 收藏 转发到动态 举报
写回复
用AI写文章
41 条回复
切换为时间正序
请发表友善的回复…
发表回复
Aidu_auto 2019-12-17
  • 打赏
  • 举报
回复
① S7TCPDLL,此库支持西门子S7 TCP协议,支持S7_1200,300,400,1500 PLC等产品 ②此库由C#开发,支持VB.NET,C#.NET,VC.NET平台,在.NET平台之间引用即可,其他平台如vc++,vb请参考相关说明 ③利用此DLL完全可取代HMI (触摸屏),也可直接和PLC通讯,DEMO(VS2013 C#)见百度云,关注公众号Aidu_auto,回复S71200,获得DEMO(VS2013 C#) 链接: https://pan.baidu.com/s/1sBTaC9P_xTj1Tfzb-Celvg 提取码: 22ry ———————————————— 版权声明:本文为CSDN博主「Aidu_auto」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/duwugang/article/details/101634887
Aidu_auto 2019-12-17
  • 打赏
  • 举报
回复
① S7TCPDLL,此库支持西门子S7 TCP协议,支持S7_1200,300,400,1500 PLC等产品 ②此库由C#开发,支持VB.NET,C#.NET,VC.NET平台,在.NET平台之间引用即可,其他平台如vc++,vb请参考相关说明 ③利用此DLL完全可取代HMI (触摸屏),也可直接和PLC通讯,DEMO(VS2013 C#)见百度云,关注公众号Aidu_auto,回复S71200,获得DEMO(VS2013 C#) 链接: https://pan.baidu.com/s/1sBTaC9P_xTj1Tfzb-Celvg 提取码: 22ry ———————————————— 版权声明:本文为CSDN博主「Aidu_auto」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/duwugang/article/details/101634887
liyuanhua54321 2019-09-17
  • 打赏
  • 举报
回复
引用 34 楼 云海玉弓缘 的回复:
用https://github.com/S7NetPlus/s7netplus 这个库,超级好用,我目前就在用。

免费的吗?
mk_lucifer 2019-06-01
  • 打赏
  • 举报
回复
工业协议,大多数都是明文的,但各自的协议多数不会公开,只在厂家间合作交流,既然是明文,没有抓包工具解决不了的问题。。。
mk_lucifer 2019-06-01
  • 打赏
  • 举报
回复
1 S7协议, 2 ModbusTCP协议, 3 自由TCP 最好的方法S7协议, 网上可以搜到协议格式,只是这个协议不公开,多数说的模棱两可,对老WINCC抓包就能分析出来,我抓过博图的数据包,大概和网上说的差不多,只是数据区有加密行为,老WINCC好像没有, 该协议报文也很简单,端口120,最大的特点是不写任何程序,只要配置了组态就能读 I点, 读写Q/M点, 是个强制的读写方式,不需要PLC做任何配置,我一直是用这个。。。 Modbus常用协议,报文协议网上随便看,PLC要拖一个通讯模块进去,具体可以百度或按F1,但是效率很一般,应该是PLC对其通讯优先级设置过低导致,单报文通讯数据量少。。 自由TCP,没有任何协议规定,就是把某DB块数据直接复制到TCP通道上,所以建议要进行特殊处理,不然分不清头尾在那,回复延时和Modbus一样,单单次通讯量可以 好几千字节,是Modbus十几倍。 简单易用的方法ModbusTCP 百度应有尽有, 希望保证通讯效率,且不用在PLC上做特殊配置,用S7协议,只是西门子没给出明确的报文,网上资料也有限,我是靠对第三方工控软件(非wincc)抓包分析报文解决的。。
qq_27289901 2019-05-31
  • 打赏
  • 举报
回复
引用 34 楼 云海玉弓缘 的回复:
用https://github.com/S7NetPlus/s7netplus 这个库,超级好用,我目前就在用。



你好,我用这个库写不了datatype 为 memory的数据,请问要怎么解决
lyndtao_Chen 2019-04-11
  • 打赏
  • 举报
回复
学习学习谢谢
埃和智能 2019-03-05
  • 打赏
  • 举报
回复
平底锅锅锅 2018-12-25
  • 打赏
  • 举报
回复
参考https://blog.csdn.net/C_gyl/article/details/54580820
安装环境,添加控件,参数配置,读写控制。
云海玉弓缘 2018-12-25
  • 打赏
  • 举报
回复
用https://github.com/S7NetPlus/s7netplus 这个库,超级好用,我目前就在用。
明月惊梦 2018-12-25
  • 打赏
  • 举报
回复
这个我会
Blithe239 2018-08-15
  • 打赏
  • 举报
回复
一般PLC都会有网口和RS485两种通讯接口,网口是可以直接通过网线连接到电脑上的,RS485的话需要加一个电平转换器,将RS485的电平转换为232的,然后在连接到usb口上。与PLC通讯一般使用MODBUS协议,要正确通讯,需要知道PLC的各个寄存器的地址及含义,然后按照MODBUS通讯的格式,发送相应的请求,就可以对PLC的各个寄存器进行读写操作。与PLC的通讯是一问一答的,发出一个请求,收到一个回复。网口通讯可以使用Socket类,usb使用串口通讯类SerialPort。
qq_27787229 2018-08-15
  • 打赏
  • 举报
回复
引用 23 楼 q644415569 的回复:
ID改了 644415569
会了么,一起探讨下啊
  • 打赏
  • 举报
回复
装个SIMATIC NET 8.2 c#用opc协议跟这个软甲通信
云海玉弓缘 2018-04-19
  • 打赏
  • 举报
回复
正好我也在研究这个,最近反编译了一个商业dll,ASComm.dll,目前还在测试中。
埃和智能 2018-04-13
  • 打赏
  • 举报
回复
PLC厂家一般都会提供高级语言的解决方案,,各专业论坛上也能找到相关源代码等资源: 三菱:http://blog.sina.com.cn/s/blog_16d7d3ecb0102x6wj.html 欧姆龙:http://blog.sina.com.cn/s/blog_16d7d3ecb0102x3qi.html 西门子:http://blog.sina.com.cn/s/blog_16d7d3ecb0102x1z5.html 施耐德:http://blog.sina.com.cn/s/blog_16d7d3ecb0102x7ui.html 永宏:http://bbs.gongkong.com/d/201804/753036_1.shtml
mk_lucifer 2018-03-06
  • 打赏
  • 举报
回复
还有一个诡异的方法,用WINCC建立一个OPC服务,然后你的程序通过OPC接口访问,但前提是WINCC不能关机。。。。
mk_lucifer 2018-03-06
  • 打赏
  • 举报
回复
PLC1200通讯方法 1 ModbusTCP 。 2. TCP 3 S7协议 ModusTCP : 工业通用得协议,报文百度吧,这是最简单得方式。 TCP: 这个PLC只是替你接收数据到DB块,没有任何协议分析,但可以自定义协议,我测试过最大帧可以上千字节,其实并不如ModbusTCP好用,但可以私人定制协议的。 S7协议: 如果不说实现难度,这个是最理想的通讯方式。 PLC可以不进行任何配置和编写通讯相关得编程,可以直接定位到HMI公开得DB块上得变量读写,是最方便得一种,但是西门子没有公开此协议报文,网上有抓包得协议格式,但有时候不怎么灵光,不同PLC开头得认证过程还有区别,不如前两者好实现。。。 综合推荐,一般ModbusTCP就可以实现,但是需要PLC做配置,同时还要做符合工艺要求的变量映射代码,最简单方式,直接将要通讯的变量全部建在一个DB块下,公开成ModbusTCP的交换数据取,这样什么代码都不用写了。。。
蜗牛慢慢趴 2018-03-05
  • 打赏
  • 举报
回复
ID改了 644415569
加载更多回复(21)

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧