设为首页
收藏本站
PLC技术网
开启辅助访问
切换到宽版
登录
注册哦
只需一步,快速开始
微信扫码登录
门户
Portal
论坛
BBS
导读
Guide
排行榜
Ranklist
搜索
搜索
本版
文章
帖子
用户
PLC论坛-全力打造可编程控制器专业技术论坛
»
论坛
›
工控技术交流区
›
『国外:三菱/西门子/欧姆龙/松下』
›
C#读取西门子S7系列PLC
返回列表
发新帖
[西门子]
C#读取西门子S7系列PLC
[复制链接]
117
|
0
|
2024-4-16 16:46:03
|
显示全部楼层
|
阅读模式
需求
现在有一个生产系统,使用的是PLC+组态软件的监控模式(软硬件都是别的厂家提供的),我们作为第三方想接入这套系统的数据。具体结构如下图。
(以下我们这边的数据采集服务器简称 “服务器” )
服务器上有一套类似于kepServer的数采软件,集成了很多设备驱动和协议。
根据这套系统的网络情况和上位机软件类别,大概可以分这几种情况:
1、服务器和PLC能通,直接采集;
2、服务器和PLC不通,但是和上位机通,通过上位机的OPC采集数据(很多上位机自带OPC功能);
3、服务器和PLC不通,但是和上位机通,
但是上位机没有OPC功能
;
第一个最方便,跟原厂家要一下设备型号、IP、点表,用数采软件采集即可;
第二个也还好,配置一下opc dcom,或者在本地把opc转成modbus、opcua或其他协议后再跨网络采集;
opc转modbus,可以参考之前写的系列文章,有介绍
这里面很多厂家在用pojie版的数采软件在本地采集后再转发出去,省去开发成本,一般情况下也比较稳定
缺点就是得在现场装一个pojie版软件,有时候装着装着容易对原监控系统造成影响
部分xp系统装不了或者装上之后无法转发
第三个跟第二个类似,在现场装一个pojie软件直采PLC然后再转发,或者自己开发个小软件转发。
今天我们主要说一下,自己用C#开发个采集西门子PLC的小软件。
思路
开发个简单的winform程序,考虑到工业现场还有很多xp系统,就基于netFrameWork4.0框架来做。
选来选去,最后决定使用Sharp7这个库,开源免费,且支持上述框架(也就是说支持xp平台)。
其他类似的库还有s7.netplus、hslcommunication通讯库等,功能都能强大,读者也都可以考虑。
最终做出来后界面类似下图
主要的功能有:
添加删除设备,配置设备信息
导入csv格式的变量文件
保存当前的设备配置信息
测试/启动/停止通讯
设备实时数据监视
软件启动后自动启动通讯、运行期间断线重连
简要代码
Sharp7 Reference manual (sourceforge.net)
首先这是sharp7使用参考手册,知乎和CSDN上也有很多使用介绍和案例,多多参考。
界面方面的就不多说了,主要是功能:
1、构建一个点位信息类CSVTag,在界面上右键 “导入CSV ”时候把所有点位信息存入List中。
每个设备的通讯信息也要存起来,方便后面连接PLC和读取数据。
2、构建一个S7Helper,里面是几个通讯和读取数据的方法,和一些属性
3、主程序中为每个设备开启一个读取数据的线程
4、在读取线程中,针对变量的每种地址格式分开统计然后读取
I、Q、V、M、DB
针对DB块,还要把不同的DB块区分开读取。
5、读取完成后,分配给原变量
大概代码就上面那么多。
目前的缺点是:
1、对于每个地址区,比如M区,假如只有两个变量,M1,M500,依旧会去读500多个byte,并没有智能的拆散拼凑成较连续的地址再分开读,不知道会不会节省点时间。
采集到数据后,后续的目的是转发出去。
比如就在本地转成modbus,让别人连,读取数据,甚至反控
比如自己开发个通讯协议,通过socket方式传出去,对面收到后再解析,对面的电脑上再转成opcua,mqtt,或者存数据库,whatever
opcua server的话可以用python的freeopcua,或者c#里的opc基金会的库,但是需要商业授权;
mqtt的话可以用c#的mqttnet库,教程很多。
本次就先到这里吧,后续再更。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
本帖子中包含更多资源
您需要
登录
才可以下载或查看,没有账号?
注册哦
x
回复
举报
返回列表
发新帖
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
注册哦
本版积分规则
发表回复
回帖后跳转到最后一页
博图TIA
回复楼主
返回列表
『国外:三菱/西门子/欧姆龙/松下』
『国产:台达/汇川/信捷产品交流区』