武汉埃和智能科技有限公司

关于多台西门子S7-1200/1500等PLC与SQL数据库对接(带边缘计算)的案例

 二维码

        IGT-DSER智能网关模块,支持各种PLC、智能仪表、远程IO与数据库之间双向通讯,既可以读取设备的数据上报到SQL数据库,也可以从数据库查询数据后写入到设备;数据库软件支持MySQL、SQLServer、PostgreSQL。

SQL-S7.png

        网关安装在设备侧,与设备同时起停,不担心数据丢失;在断网、服务器维护上报数据有异常时,网关主动将数据缓存,待故障解除后自动重新上报到数据库;网关也支持多服务器冗余、异常未提交数据本地保存等功能,确保数据安全;已批量用于多种行业的智能工厂,大大提高MES等工业互联网项目的实施效率。


        项目中有一台S7-1500和一台S7-1200的PLC,需要将其数据通过一个IGT-DSER智能网关采集到MySQL数据库 ;首先用数据库工具navicat连接数据库建立database数据库和devdata数据表,数据表的结构如下图:

       

        然后打开智能网关的参数软件,设置网关的网络参数,具体如下图:


DB-2xS71K-IGT-NET.png

        参数设置完成后下载,重启网关后新的参数生效启用;可以通过工具->查找设备/PING,用网关PING一下PLC和服务器的IP地址;

        最后配置数据库参数和PLC数据寄存器地址,通过参数软件的功能视图->数据上报与查询,切换到如下画面:

DB-2xS71K-DATA.png

        网关支持LUA脚本语言实现边缘计算,上图数据区域选择为‘Script’是网关的存储区域,支持脚本语言开发;该项目中通过脚本语言将md1和md2两个整数除以100,转换成浮点数再上报到数据库;通过初始值功能为每台PLC设备的'devicename'字段赋值,分别是‘Stacking1’、Stacking2’;

        本项目完整的脚本程序文件(script.lua)如下智能网关边缘计算手册下载

--script:

    --工程主函数:

    function luafun( )

        fun_ackcycle(1)

        --局部变量定义:

        local tval=0

        local sval=0

        --循环:

        while true do

            --PLC是以整数表示的小数,处理后上报

            tval=tag_readvalue(111,"md1")

            if (tval~=nil) then

                sval=tonumber(tval)/100

                tag_writevalue(111,"data2",tostring(sval))

            end

            tval=tag_readvalue(222,"md2")

            if (tval~=nil) then

                sval=tonumber(tval)/100

                tag_writevalue(222,"data2",tostring(sval))

            end

            fun_sleep(2000)   --延时2000毫秒

        end

    end

    --错误信息发送定义:

    function sendinfor(err)

       tag_writevalue(0,"script_infor",err)

    end

    --调用以上两个函数

    xpcall(luafun, sendinfor)

--脚本结束


        将以上配置参数和script.lua脚本文件下载到网关(参数->脚本程序写入网关)后重启网关,网关会自动运行脚本代码; 网关内封装有数据库、HTTP、MQTT通讯,以及JSON、XML封包与解析等丰富的功能函数,具体可查看LUA脚本手册

        通过navicat 连接数据库,查看存入到数据库的数据,如下图:



        除了上述西门子PLC外,网关也支持罗克韦尔(AB)、欧姆龙、三菱等几乎所有PLC品牌。