PLC数据采集方案 求解...

  • 轧钢机
    有个朋友是搞PLC设备的 最近接了个单子 给某个工厂机台改造 大概100多个机台吧
    需要动态采集机台操作时间啊 温度啊 等等相关数据

    然后管理端在电脑上可以实时查看到机台的相关数据, 报表统计等等..

    他现在硬件 PLC 编程什么的都已经弄好了 过来找我让我来采集数据 然后生成报表

    我是用C#的 通过 modbus协议采集.

    我本来打算写个服务程序定时 扫描这100多台数据 然后采集入库 但是这样感觉数据实时性太差了. 很容易丢数据啊 而且还要出来重复的 找出变化的入库 等等..

    他本来还说另外一种方案 他可以让PLC 推数据到服务器. 但是..他是一直推一直推.. 那我服务端不是还是得一直处理.. 几台还好 数量多了 再并发写数据库不是都很卡啊感觉

    我只想帮他做对数据分析的相关报表... 采集数据这如何保证数据准确和实时性 实在没底
    不知道行业里比较稳定的方案是什么
  • b
    bbbzzz
    回复1#轧钢机

    从plc上位机在数据库里面采集
  • f
    forwhat
    嗯。
    kepware采集直接入MySQL等数据库
    丢几个点数据无所谓的吧

    想要数据可视化可以直接自己写程序从kepware的OPC UA丢到influxdb,用grafana再可视化influxdb的数据
    想效果好,也可以每个PLC外接一个小网关,网关跑Modbus采集到转换成mqtt消息推到mqtt broker上。然后用telegraf给转发到influxdb。
  • k
    konglang_616
    相关的上位软件都有对应的功能
    欧阳大佬和豪爵太子正在赶来路上
  • b
    brook
    还是数据推到服务器比较好吧,100多并发真是小case,随便写就行 iOS fly ~
  • 我好像是小号
    回复1#轧钢机
    PLC加网络模块吧,PLC做客户端站。上位机做服务器。
    走socket协议。这个速度快。 iOS fly ~
  • y
    yujan
    有多少位号?标准做法是走OPC UA或OPC DA,实时数据库采集(比如pi或IP21)
  • s
    smartjx
    行业标准就是kepware
  • d
    dreamslzy
    论坛这么多搞工控的? iOS fly
  • 我好像是小号
    上百台,一台赚五千,就有五百万啊?
    中彩票啦iOS fly ~
  • 我好像是小号
    同样是接私活,高下立判啊?
    小号啊小号啊iOS fly ~
  • f
    fangqiank
    scada
  • 轧钢机
    位号是什么..
    完蛋 我都不懂 我之前就用一个开源的 modbus 库 读了 地址里的 0x 1x 3x 4x 数据
  • a
    antliu
    类似温度这种数据时间间隔是以秒计的吧?这种就是来一千个网也堵不了的。我去年一个应用,瞬时有几十个终端在产生共计2XXMB的数据,也没丢啥包。
  • c
    cybervsq
    标准做法是先把数据推过来存下来,再从里面提取生成报表,这样即使报表生成有问题也不会丢失数据,今后有其他需求功能扩展也好处理
  • z
    znm
    服务端强一点就好了啊,才100台机器,就算每秒钟每台发一个也没多大流量,接受数据和处理数据分开就好。
    年就当一个几千人的论坛,每秒钟几十个回帖,随便一个开源的论坛框架勇10年前的硬件业搞定了 iOS fly ~
  • 轧钢机
    重复数据也存?
  • y
    yujan
    有些地方可能叫点位?买实时数据库实施和维护比较省心,有成熟的方案做数据采集、压缩、报表和可视化。
    当然价格要贵一些,比如我厂的4000个点位一年授权费要小一万。
  • j
    jjss521
    组态王。简单直接。
  • a
    awk
    太简单了,没啥好说的。 100多块的modbus网关。
  • 轧钢机
    之前他是用厂家的组态软件.. 然后问题很多 主要是听说很容易丢数据.. 然后报表做的奇丑无比
    我远程看过他采集数据 要开3个软件 1个厂家的组态软件 1个什么MQTT的 还有一个什么互联什么的 然后才能写mysql

    反正他和我说的时候我很不理解

    现在最严重的问题就是好像经常丢数据 导致数据不准 所以才跑来找我 说是让我开发个采集的 把厂家替换了 然后做报表就行
  • c
    cybervsq
    回复18#轧钢机

    你可以不存啊,但是怎么叫重复呢,测量有误差的,比如某个温度点可能每秒的个值相差0.01度,那你说是不是重复值? 每个点量程和测量精读都不同,那你每个点都要定义多少的差异才存和不存,处理起来就复杂了。
  • g
    gain_hi
    通讯管理机加监控系统
  • h
    happyd8699
    c#开100个线程,每个线程与一个PLC通讯采集数据,采集间隔100毫秒应该可以吧,每次数据和上次数据比对,有变化就写入数据库
  • 轧钢机
    PLC 有网络模块 以前我有帮他写过 电脑操作PLC 但是 当时数据量没那么大 就是点一下 按钮 往PLC 地址里写一个开关地址位
    我主要是关心上位机软件怎么写 不知道是服务器主动去扫描 还是PLC 推数据到服务器
  • r
    richking
    学习了。
  • 轧钢机
    对 好像复杂的就是这个
    比如要求 温度数值 30秒定时存一次
    再比如 有个开关位 有变化才存 PLC会一直推数据 比如 0 0 0 0 1 0 0 0 1 0 1 可能推了几百次 突然又推
    0 0 0 0 1 0 0 0 0 0 1



    我就感觉服务器收到这几百次数据都在做比较?
  • w
    winloud
    3、7、8楼很专业。用OPC解决协议问题,直接和PLC通行,不增加硬件,然后自己开发界面,需要一个专业的程序员。
    还一种用网关推给服务器的,这都是已经有现成的组态平台了才这么干,一个工控工程师能搞定。
  • c
    cybervsq
    回复28#轧钢机

    你可以学习一下上面他们说的osisoft pi系统旋转门算法

    一般我们都让实时数据库处理这些棘手的事情,实时数据库的api取数据的时候就算这个时间点没值系统会插值一个出来给你。

    你这里简单处理一股脑都定时塞mysql里面处理吧
  • f
    forwhat
    我和你讲你仔细看我给你指的路,肯定没有问题。仔细看。
    1. 用组态和Kepware是一个思路,kepware基本上是业界最成熟的工业设备数据采集的方案之一,它可以将采集到的数据直接写到MYSQL里面。这个都是采集端从设备端拉的数据。
    2. 不买Kepware的,所谓的推的方式,就是写个ARM网关的应用,在设备端将采集到的Mobus消息转换成MQTT推到MQTT Broker上。然后你在服务器端再写个应用程序,从MQTT broker上把设备消息订阅下来进入数据库。

    数据入了数据库之后,想怎么做报表就怎么做。MODBUS这个东西,别想着自己写,100多台不同的设备,自己写很累的。要么用Kepware,要么买IoTGateway硬件盒子。

    楼上有人说PI的应该也没有问题,应该也可以。不过PI我不熟。
    组态的问题是报表太丑,多数是单机版。
  • 我好像是小号
    回复26#轧钢机
    我觉得还是PLC主动定时上传好一点,上位机只负责接收。
    PLC其实也没多少数据量吧。 iOS fly ~
  • 轧钢机
    多谢指点 我去看看 Kepware 好学不好学
    Kepware 就是代替所谓我写的 上位机采集软件了对吧
  • h
    howlet
    工控过程量的数据,一直感觉非常适合时间序列数据库。纸上谈兵的想法:实时值用MQTT分发,多客户端可以并发查看;历史数据存InfluxDB;前端用Grafana展示。有这样应用的例子吗?
  • h
    happyd8699
    网络延时如果是局域网,延时很低的,我觉得还是要看采集的数据量大不大,这个影响执行时间
    另外还有PLC端数据的变化率是不是大,如果每次采集的数据和上次都不一样,那每次都要写数据库,肯定会导致延时
  • c
    cybervsq
    除了Kepware,国产的亚控这些也有相应产品
  • 我好像是小号
    回复33#轧钢机
    看了看,就温度,周期,产量等简单数据。
    PLC有网络模块,正常来说应该是支持socket。
    对PLC来说,这个就是自定义协议。PLC跟上位机事先规定好,一组数据,比02 11 22 33 44 55 66 03 各个位代表啥意思就好了。
    然后PLC(客户端)这边,用定时器,定时多久毫秒向上位机反馈数据,PLC不用管数据有没有更新,反正一秒还是多少毫秒发送一次数据就好了。
    上位机这边做服务器,根据端口号就可以判断是哪台PLC发送的数据哎,上百台的没操作过,几台PLC跟电脑反正我是这样弄的iOS fly ~
  • b
    bwq1114
    后台跑个组态解君愁 我是熊猫酱
  • H
    Hodgen
    我们在车厂就是这么做的,只是不用mqtt。频率比较高,20hz左右,数据只是展示比较初级了,我们做了一些算法模型,涉及设备预测性维护,工艺稳定性判断等
  • f
    fryrice
    才100多台,就让客户端一直推就行了啊,控制好推送频率,服务端收集好数据,定时批量更新数据库不就行了?
  • b
    bluehub
    参考下OEE呢
  • p
    poweredlww
    scada然后到sql
  • w
    wife811
    这一贴炸不少人出来
  • R
    Rorysky
    很简单,上个 memcache 或者 redis 就解决你的问题了
    几百台 不需要 kepware,不了解架构可以 加wx聊聊,『wixu__』两个下划线
  • 8
    888837
    mark
  • n
    norland
    上个scada啊,一揽子搞定,比如Wonderware的Intouch或者WSP。

    上面有提到用实时数据库PI,最好不要这样搞,实时数据库一般不直接面向就地设备,一个一个从设备上去采数据会把人搞死的,实时数据库适合从中间系统采集数据,比如DCS系统,SCADA系统等,只面向一个中间系统,用通用协议把数据采上来就完事儿了,比如OPC。并且PI很贵的,考虑成本的话会肉疼的。

    上一个小的scada系统,你的要求都满足了,比如Wonderware的WSP,数据采集各种协议都支持,opc ,modbus tcp,mqtt都不在话下,有组态画面,做实时监视,还有历史库把数据存下来,也有关系库,方便做报表,他的报表功能很强大了,现在还有B/S端,能远程查看使用,对办公室用户很方便。
  • f
    fangqiank
    modbus协议能主动上送?
  • 我好像是小号
    回复48#fangqiank
    socket啊 iOS fly ~