智能网关-采集多台智能仪表数据存入数据库的同一个表内

        本文章描述的是通过一个IGT-SER智能网关模块,与多台智能仪表通讯采集数据后存入数据库的案例。PLC数据上报到远程数据库

        首先建立好数据库和数据表,通过navicat数据库工具连接MySQL数据库,建立数据库database和数据表datatable,具体设计视图如下:

        将网关与智能仪表的串口通讯线连接好,打开参数设置软件通过网线连接网关设置参数,网关的默认IP一般是192.168.1.244,正常连接后,首先设置串口参数,功能->串口参数编辑,如下图:

        主要设置串口的连接模式,以及波特率、通讯格式、超时时间等参数,本站地址为0,PLC站地址也设置为0,因为连接的是多台仪表,在后面的数据配置中指定具体的站号。

        然后设置数据库相关参数,功能->数据上报与查询,到数据库页面,设置数据库服务器的地址、具体上报的数据,详细如下图:

        上图中数据区域所选择的‘Script’支持脚本配置文件编辑,以下是该配置对应的LUA脚本文件:LUA脚本教程

--script:
--工程函数定义:
function luafun( ) 
	--定义变量:
	local tval1=0
	local tval2=0
	local tval3=0
	local tsta1=0
	local tsta2=0
	local tsta3=0
	local save1="nil"
	local save2="nil"
	local save3="nil"
	--设置仪表1的传感器名称:
	tag_writevalue(1,"sensor_name","temperature")  
	tag_writevalue(2,"sensor_name","pressure")
	tag_writevalue(3,"sensor_name","voltage")
	--循环读取当前值更新状态:
	while true do
		tval1=tonumber(tag_readvalue(1,"current_value"))
		if (tval1~=nil) then
			if tval1<40 and tval1 > 0 then
				tsta1="Normal"
			else
				tsta1="Aralm"
			end
		end
		tval2=tonumber(tag_readvalue(2,"current_value"))
		if (tval1~=nil) then
			if tval2<8 and tval2 > 4 then
				tsta2="Normal"
			else
				tsta2="Aralm"
			end
		end
		tval3=tonumber(tag_readvalue(3,"current_value"))
		if (tval3~=nil) then
			if tval3<400 and tval3 > 360 then
				tsta3="Normal"
			else
				tsta3="Aralm"
			end
		end
		
		if (tsta1~=save1) then
			tag_writevalue(1,"state",tsta1)
			save1=tsta1
		end
		if (tsta2~=save2) then
			tag_writevalue(2,"state",tsta2)
			save2=tsta2
		end
		if (tsta3~=save3) then
			tag_writevalue(3,"state",tsta3)
			save3=tsta3
		end
		--延时后进入下一循环:
		fun_sleep(5000)
	end
end

--错误发送定义:
function sendinfor(err)
   tag_writevalue(0,"script_infor",err)
end

--调用以上两个函数
xpcall(luafun, sendinfor)
--脚本结束

        设置完成后将配置和脚本文件一起下载到网关,重启后即可自动运行。网关软件和配置文件可从CSDN里面下载

      

猜你喜欢

转载自blog.csdn.net/AutoCtrl666/article/details/105292349