数据库是“MHGW”最核心的部分。以实时数据库为中介环节,数据库是联系上位机和下位机的桥梁。
MHGW中数据库从设备入手,在每个设备下定义相关的变量,与传统组态软件建立设备后,变量在一张数据表中相比,更加直观,查找变量更加方便。
在MHGW中,“数据库”拥有“I/O变量”,“I/O变量”拥有“端口”,“端口”拥有“设备”,“设备”拥有“变量”。
3.4.1IO设备管理
端口
选择工程管理器,“数据库”下的“I/O变量”,鼠标点击右键,出现“新建端口”菜单,点击“新建端口”,出现端口属性对话框。
端口属性对话框
端口名称具有唯一性,不可以重复。
根据实际工程设备需求,可以选择设备类型,如“ModbusRTU”,选择端口类型为“串口”,设置好串口参数,点击“确定”即完成端口的定义。定义完成后会在“I/O变量”下面生成“端口1”,右键点击“端口1”,出现如下子菜单项。
新建设备
点击新建设备,出现如下对话框。
设备属性对话框
根据实际要求,修改设备名称和地址。
点击确定后在“端口1”下出现“设备1”。
设备
假如工程有2个串口,第一个串口有2个“ModbusRTU”设备,第二个串口下有3个“ModbusRTU”设备,则可以建立“端口1”,“端口2”,“端口1”下有3个设备,“端口2”下有2个设备。如下图所示。
设备
3.4.2变量类型
变量的基本类型共有三两类: I/O变量、内存变量、系统变量。
IO变量是指可与外部数据采集程序直接进行数据交换的变量,如下位机数据采集设备(如PLC、仪表等)或其它应用程序(如DDE、OPC服务器等)。这种数据交换是双向的、动态的,就是说:在“MHGW”系统运行过程中,每当I/O变量的值改变时,该值就会自动写入下位机或其它应用程序;每当下位机或应用程序中的值改变时,“MHGW”系统中的变量值也会自动更新。所以,那些从下位机采集来的数据、发送给下位机的指令,比如“反应罐液位”、“电源开关”等变量,都需要设置成“I/O变量”。
内存变量是指那些不需要和其它应用程序交换数据、也不需要从下位机得到数据、只在“MHGW”内需要的变量,比如计算过程的中间变量,就可以设置成“内存变量”。
系统变量是指MHGW系统定义的变量,如时、分、秒等,方便用户直接引用。
系统变量定义如下:
$YearNow,短整型,只读,读取计算机系统内部的当前时间:“年”(1111~9999)。
$MonthNow,短整型,只读,读取计算机系统内部的当前时间:“月”(1~12)。
$DayNow,短整型,只读,读取计算机系统内部的当前时间:“日”(1~31)。
$HourNow,短整型,只读,读取计算机系统内部的当前时间:“小时”(0~24)。
$MinuteNow,短整型,只读,读取计算机系统内部的当前时间:“分钟”(0~59)。
$SecondNow,短整型,只读,读取计算机系统内部的当前时间:“秒数”(0~59)。
$Week,短整型,只读,读取Wince系统内部的当前星期几:“星期”(1~7),注意1~7对应于星期日~星期六,而不是星期一~星期天,如果要显示当前日期是星期几,切记要进行转换。
$NewAlarmCount,短整型,只读,新报警数目。
$UserName,字符串型,只读,当前用户名。
$UserLevel,短整型,只读,当前用户权限。
$BacklightState,BOOL型,只读,当前背光状态。
$YearStart,短整型,只读, 系统启动时计算机系统内部的时间:“年”(1111~9999)。
$MonthStart,短整型,只读,系统启动时计算机系统内部的时间:“月”(1~12)。
$DayStart,短整型,只读,系统启动时计算机系统内部的时间:“日”(1~31)。
$HourStart,短整型,只读,系统启动时计算机系统内部的时间:“小时”(0~24)。
$MinuteStart,短整型,只读,系统启动时计算机系统内部的时间:“分钟”(0~59)。
$SecondStart,短整型,只读,系统启动时计算机系统内部的时间:“秒数”(0~59)。
$U盘状态,短整型,只读,暂不支持。
$SD卡状态,短整型,只读,暂不支持。
$State_端口1设备1,BOOL型,只读,端口1下设备1通讯状态。
3.4.3变量的数据类型
MHGW中变量的数据类型与一般程序设计语言中的变量比较类似,主要有以下几种:
短整型
类似一般程序设计语言中的无符号短整数型变量,用于表示无符号的短整型数据,取值范围0~65535。
有符号短整型
类似一般程序设计语言中的有符号短整数型变量,用于表示带符号的短整型数据,取值范围-32768~32767。
长整型
类似一般程序设计语言中的无符号长整数型变量,用于表示无符号的长整型数据,取值范围0~2^64。
有符号长整型
类似一般程序设计语言中的有符号长整数型变量,用于表示带符号的长整型数据,取值范围-2147483648~2147483647。
单精度实型变量
类似一般程序设计语言中的浮点型变量,用于表示浮点(float)型数据,取值范围±3.40282 * E+38,有效值7位。
双精度实型变量
类似一般程序设计语言中的浮点型变量,用于表示浮点(float)型数据,取值范围±1.7E*E+308,有效值15位。
字符串型变量
类似一般程序设计语言中的字符串变量,可用于记录一些有特定含义的字符串,如名称,密码等,该类型变量可以进行比较运算和赋值运算。
布尔型变量
类似一般程序设计语言中的布尔(BOOL)变量,只有0,1两种取值,用于表示一些开关量。
3.4.4变量定义
选择相应的设备,然后右键点击右侧的变量显示区,出现如下子菜单。
变量操作
有两种定义变量的方式,如果变量寄存器地址是分散的,不连续的,可以点击“新建变量”来创建单个变量,如果变量寄存器地址是连续的,可以点击“批量增加”来创建多个变量。
变量作为一个对象,其属性分为基本属性、存盘属性、报警属性、量程变换,如下所示。
变量属性
基本属性有名称、描述、寄存器类型、寄存器地址、数据类型、最小值、最大值、小数位数、读写属性等。
名称:变量在整个数据库中的唯一标志,不可重复。只能以字母开头。
描述:对变量名称的中文注释。
数据类型:变量对应的数据格式。
最小值:变量的最小值。
最大值:变量的最大值。
小数位数:变量值的小数有效位数。
读写属性:变量是否只读。
操作记录:操作时是否记录。
原始值是码值:仅在浮点型有效,指整型数转换为浮点,如选择为单精度浮点型,则表示将寄存器读取的短整型值根据量程和最大最小值转换为单精度浮点。
寄存器类型:不同的通讯规约,寄存器类型不一样,代表读取PLC的数据类型。
寄存器地址:变量对应的PLC中地址。
数据块块号:数据块所在的块号。
数据位:数据位数。
变量存盘属性
存盘属性有不存盘、定时存盘、存盘周期、数据变化存盘、存盘精度等。主要针对于模拟量输入信号。
不存盘:不保存历史数据。
定时存盘:按照规定的间隔时间存盘。
数据变化存盘:根据设定的精度,达到一定的变化后存盘。
变量报警属性
报警属性有模拟量报警设置和开关量报警设置。
报警等级有一般、严重、紧急三种。
变量量程变换
量程变换属性有进行量程变化、原始最小值、原始最大值等。
主要参数说明如下:
量程变换:针对模拟量信号进行线性变换用。
原始最小值:PLC采集到的信号最小值。
原始最大值:PLC采集到的信号最大值。
根据变量的实际情况,选择或者输入对应的属性,完成后点击“确认”即可完成变量定义。
如果批量增加,如下图操作。
批量增加变量
联系人:司先生
手机:18951610826
电话:025-86210539
邮箱:18951610826@126.com
地址: 南京邮电大学物联网大厦8楼