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

网友投稿 746 2022-10-22


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

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

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

本项目中有1台S7-1500和1台S7-1200的PLC,需要将其数据通过一个IGT-DSER智能网关采集到MySQL数据库 ;多台智能仪表与SQL数据库双向通讯 UPDATE更新方式案例 罗克韦尔PLC标签方式数据采集到数据库

首先用数据库工具navicat连接数据库建立database数据库和devdata数据表,数据表的结构如下图:

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

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

最后配置数据库参数和PLC数据寄存器地址,关于配置表与SQL语言的对应关系,可看这篇文章。通过参数软件的功能视图->数据上报与对接,切换到如下画面:

网关支持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毫秒 endend --错误信息发送定义:function sendinfor(err) tag_writevalue(0,"script_infor",err)end --调用以上两个函数xpcall(luafun, sendinfor)--脚本结束

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

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

除了上述西门子PLC外,网关也支持罗克韦尔(AB)、欧姆龙、三菱等几乎所有PLC品牌,可以选择MySQL或者SQLServer数据库。更详细的资料​​可以从这里下载​​。


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:使用nProbe解决一般的流量监控任务
下一篇:Java多线程导致CPU占用100%解决及线程池正确关闭方式
相关文章

 发表评论

暂时没有评论,来抢沙发吧~