项目中有两台S7-1500的PLC,需要将其数据通过一个智能网关采集到MySQL数据库;网关采集多台智能仪表数据到数据库 首先用数据库工具navicat连接数据库建立database数据库和devdata数据表,数据表的结构如下图: 然后打开智能网关的参数软件,设置网关的网络参数,具体如下图: 参数设置完成后下载,重启网关后新的参数生效启用;可以通过工具->查找搜索设备,用网关PING一下PLC和服务器的IP; 最后配置数据库参数和PLC数据寄存器地址,通过参数软件的功能视图->数据上报与查询,切换到如下画面: 网关支持LUA文本语言,上图数据区域选择为‘Script’是网关的存储区域,支持脚本语言开发;该项目中通过脚本语言实现以下两个功能: 1. 指定两台PLC所对应的设备名称,分别为‘Stacking1’和‘Stacking2’; 2. 将md1和md2两个整数,除以100转换成浮点数再上报到数据库; 本项目完整的脚本程序文件(script.lua)如下: 将以上配置参数和script.lua脚本文件一起下载到网关后重启网关,即可从数据库查看到数据;网关内封装有脚本使用的功能函数,具体如下: 1. 读取配置表中的变量值:tag_readvalue(int: 设备号,string: 变量名); 除了上述西门子PLC外,网关也支持罗克韦尔(AB)、欧姆龙、三菱等几乎所有PLC品牌,具体可以查看关于网关的详细描述;
--script: --工程主函数: function luafun( ) --局部变量定义: local tv1=0 local tv2=0 local var1=0 local var2=0 local sv1=0 local sv2=0 --设置设备名称: tag_writevalue(111,"devicename","Stacking1") tag_writevalue(222,"devicename","Stacking2") fun_ackcycle(1) --循环: while true do --PLC是以整数表示的小数,处理后上报 tv1=tonumber(tag_readvalue(111,"md1")) if (tv1~=nil) then var1=tv1/100 end if (var1~=sv1) then tag_writevalue(111,"data2",tostring(var1)) sv1=var1 end tv2=tonumber(tag_readvalue(222,"md2")) if (tv2~=nil) then var2=tv2/100 end if (var2~=sv2) then tag_writevalue(222,"data2",tostring(var2)) sv2=var2 end fun_sleep(2000) --延时2000毫秒 end end --错误信息发送定义: function sendinfor(err) --tag_writevalue(0,"script_infor",err) print("LUA script error: ",err) end --调用以上两个函数 xpcall(luafun, sendinfor) --脚本结束
2. 写数据到配置表中的变量:tag_writevalue(int: 设备号,string: 变量名,string: 写入的数据);
3. 延时功能函数:fun_sleep(int: 时间 *1ms);
4. 通过串口读写数据:com_sendrecv(int: 串口号(1或2), int:字节总数, byte-1, byte-2, byte-n …)
5. 是否允许网关循环调用:fun_ackcycle(int: 0=不允许,1=允许)
本网页所有视频内容由 imoviebox边看边下-网页视频下载, iurlBox网页地址收藏管理器 下载并得到。
ImovieBox网页视频下载器 下载地址: ImovieBox网页视频下载器-最新版本下载
本文章由: imapbox邮箱云存储,邮箱网盘,ImageBox 图片批量下载器,网页图片批量下载专家,网页图片批量下载器,获取到文章图片,imoviebox网页视频批量下载器,下载视频内容,为您提供.
阅读和此文章类似的: 全球云计算