小伙伴们大家好,我是雷工!
本篇学习了解KingSCADA3.8如何建立硬件系统及相关变量,以下为学习过程和操作记录。

一、前言

本篇主要讲解如何定义设备,如何定义变量。
KingSCADA3.8的采集系统是指负责和现场设备进行通讯,并采集现场数据和控制现场数据的模块,称之为采集器,也叫IOServer应用,它是一组独立的应用程序,可以脱离KingSCADA3.8软件,它依赖于KingSCADA3.8驱动产品,通过驱动与IO设备进行通讯。
采集系统由通讯链路,设备,数据块组成。
链路:链路是指计算机通过什么方式(接口)与设备进行连接,链路类别:串口,以太网,GPRS,Modem,通信卡,采集卡,无链路。
设备: 设备是通过串口、接口板等方式与KingSCADA3.51的数据采集系统进行数据信息交换的外部数字设备,包括可编程逻辑控制器(PLC)、分布式控制系统(DCS)、PID控制器、远程终端单元(RTU)、智能仪表、板卡、变频器、电力调整器等等。
变量: 变量是对应硬件设备具体通道或地址的标识,由设备监视和控制的,反映现场运行状况的参数信息,如:温度、压力、流量等,在其他系统有时被称为I/O变量(输入输出变量)。

二、建立硬件系统

1、新建设备

1.1、打开KingIOServer工程设计器,选择打开已有工程或新建工程,选择“IOServer应用组”,右键菜单-选择“添加新IOServer应用”菜单,或者选择“文件”菜单→“添加新应用”命令,在弹出的“新建应用/工程”对话框,设置如下:

KingIoserver授权码 kingscada授权方式_链路


对话框说明:

应用GUID: 应用的标示符,由系统自动生成;

应用名称: 用户自定义,为必填项。不能包含无效字符:!@#$%^&*() +_;:[{}]|.>,</? `~。 有效长度小于99个字符。

应用路径: 输入新建应用的路径,如果输入的路径不存在,系统将自动提示用户;或单击“…”按钮,从弹出的路径选择对话框中选择应用路径。该文本框只在创建新的工程时有效。
应用类型: 包括“Server”、“Client”和“IOServer”三个选项,不同的应用类型,其应用树节点有区别。目前,默认为IOServer类型。
工程: 包括“新的工程”和“添加到当前工程”两个选项,选择“新的工程”选项,系统将会把新应用建立在一个新的工程下;选择“添加到当前工程”选项,将会把新应用添加到当前工程下。
工程名称: 选择“新的工程”选项时,可用。默认与应用名称相同,用户也可以自己输入。
**创建人:**新建该应用的用户。
公司: 新建该应用的公司的名称,非必填项。
创建时间: 创建该应用的时间,默认为当前系统时间,不可修改。
描述: 新建应用的描述文本,用户自定义,可以为空,有效长度为32个字符。

单击“确定”按钮对所填内容进行验证,若验证成功,新创建的工程或应用会在树型目录区显示;若验证不成功,会给出提示信息。单击“取消”按钮关闭“新建应用”对话框。

一个工程中可以建立多个IOServer应用,且IOServer应用可以脱离KingSCADA3.8独立存在。IOServer应用分本地IOServer应用(KingSCADA3.8与IOServer应用在同一台机器上)和远程IOServer应用(KingSCADA3.8与IOServer应用不在同一台机器上),区别在于IOServer应用中的网络配置。

在这里我们以本地IOServer为例,名称设置为:IOServer1,存储路径设置为E:\雷工笔记\KingSCADA3.8\My Projects\雷工笔记\。

设置完毕后,单击“确认”按钮,完成I/O Servers的建立,如下图所示:

KingIoserver授权码 kingscada授权方式_数据_02


1.2、在“IOServer1”应用中,选中“设备”,右键菜单“新建设备”,弹出“设备定义”对话框:

设备属性 设定包括设备名称描述、采集属性、设备地址3部分。

1.2.1、其中名称描述设定部分:包含有设备名称、设备描述、激活、优化采集属性选择4部分。

设备名称:Modbus采集设备1(用户定义,不可为空,不可与同IOServer中其他设备同名,并且第一个字符不能为数字,64字符,为必填项。非法字符包含空格字符和如下28个无效字符:,:;±/%&!~|^<>={}.`’ ”\ ?*)

注:设备名称区分大小写,例如:ModbusRTU与MODBUSrtu与ModbusRTu都是不同的设备。

设备描述: 此处用ModbusSlave模拟设备;(用户定义,可以为空,32字符长。)

激活: 默认勾选,该参数用于配置设备是否采集。如果此处勾选,并且整条链路也处于“激活”状态,则表示在启动IOServer时,该设备进行初始化、采集、尝试连接等。如果不勾选,则表示此设备则不进行初始化、采集等。

优化采集: 默认不勾选,该参数用于配置设备是否优化采集。如果此处勾选,则表示此设备需要优化采集,即不与此设备所在链路下的其他设备共用一条线程采集变量,而是使用线程池线程采集变量;如果不勾选,则表示此设备不优化采集,即与此设备所在链路下的其他设备共用一条线程采集变量。

设置如下图:

KingIoserver授权码 kingscada授权方式_链路_03

注意:
1.优化采集需要谨慎使用,只有能保证该设备独占所在链路(串口时,该COM口链路下只包括此设备;以太网链路时,该Socket下只包括此设备)时才能使用,不然会导致采集数据出错。
2. 优化采集时,线程池最大线程数可以通过CollectOptimizationConfiguration.ini文件进行配置。CollectOptimizationConfiguration.ini文件位于工程文件夹中,内部包含参数ThreadNumber。ThreadNumber默认值为0,并且为非负整数。当ThreadNumber值为0时,线程池最大线程数为4倍CPU核心数;当ThreadNumber大于0时,线程池最大线程数为ThreadNumber的值。

1.2.2、采集属性设定部分:

设备系列:此次练习选择“ModbusMaster”(用户选择所使用的驱动文件,每个驱动反映了一个厂商的一系列设备集或一种标准,下拉菜单中按照厂家、设备名称分类,用户可双击驱动名称来选择所需驱动)。

KingIoserver授权码 kingscada授权方式_数据_04

1.2.3、地址属性设定:

设备地址 : 此处设置1:500:500(用户输入,与驱动地址校验接口交互,验证正确与否。可以通过“帮助”按钮查阅对应的驱动帮助文档)。

指定冗余设备: 此次练习未勾选(用户选择,选择“冗余设备”复选框,下面的下拉列表框变为可用,即可选择冗余从设备。“冗余设备”复选框默认未勾选)。

KingIoserver授权码 kingscada授权方式_数据_05

1.2.4、链路属性设定

根据用户所选驱动及现场实际情况需要确定的链路属性,与驱动的DES文件中的通讯描述无关。这次练习采用串口,选择COM6。

[1]、串口

串口链路: 选择设备实际使用串口,支持COM1…512。

波特率: 选择设备实际使用波特率,支持从1200至115200多种规格,默认为9600。

数据位: 选择设备实际使用数据位,支持7和8,默认为8。

停止位: 选择设备实际使用停止位,支持1和2,默认为1。

奇偶校验 :选择设备实际使用奇偶效验方式,支持无校验(None),奇校验(Odd),偶校验(Even),1校验(Mark),0校验(Space)。默认为NONE。默认为偶校验。

连接超时: 链路连接超时时间,范围是:0-65535,单位为毫秒。当链路连接在设定的时间范围内连接失败,IOServer会再次连接链路。

KingIoserver授权码 kingscada授权方式_链路_06

如果选用的COM口已经被使用,那么波特率、数据位、停止位、奇偶效验等属性会与之前的设定保持一致。可编辑,一旦编辑则会改变与该串口相关的所有位置的对应参数。
如果选用的COM口设备的驱动与本设备选择的驱动不一致,并且不支持同一链路创建不同驱动的设备,那么新建设备时将会提示错误,如下图所示。

注意:支持同一链路创建不同驱动设备的驱动满足两个条件:
①、新开发包开发的驱动,即安装目录下BIN文件夹下Driver文件夹中驱动有同名的xml依赖文件;
②、驱动采集类型为问答式。

1.2.5、通讯参数
尝试连接间隔: 当IOServer和设备通讯失败后,IOServer将根据此处的设定时间和设备尝试通讯一次,单位为秒、分,范围为5秒到1440分钟。超过范围时,单击“完成”按钮会弹出提示框。
最长连接时间: 当IOServer和设备通讯失败后,超过此设定的时间仍然和设备通讯不上的话,IOServer将不再尝试和设备通讯。当最长连接时间设置为“0”时,表示当通讯出现异常时,会一直进行重连。 单位为秒、分钟、小时、天,范围为5秒到30天。超过范围时,单击“完成”按钮会弹出提示框。

这里我们选择默认设置即可,设置好所有参数点击“完成”按钮。

KingIoserver授权码 kingscada授权方式_数据_07

此IOServer应用建立完成之后可以供本机SCADA应用引用或者被别的电脑上的SCADA应用做为远程IOServer引用。

2、定义变量

变量对应的是外部采集和控制设备通过某种方式传递来的现场数据。KingSCADA3.8支持的变量类型如下:系统变量:基本的变量点,每个变量点是一个单独的变量对象,不能修改。基本变量:基本的变量点,每个变量点是一个单独的变量对象。结构变量:以结构的形式存在,是多个基本变量点的集合。引用变量:以一组变量,替代多组数据类型相同的变量。基本类型的变量也可以按照数据类型分为离散型、实型、整型和字符串类型。
(1)、内存离散变量、I/O离散变量
类似一般程序设计语言中的布尔(BOOL)变量,只有0、1两种取值,用于表示一些开关量。
(2)、内存实型变量、I/O实型变量
类似一般程序设计语言中的浮点型变量,用于表示浮点数据,取值范围10E-38~10E+38,有效值7位。
(3)、内存整数变量、I/O整数变量
类似一般程序设计语言中的有符号长整数型变量,用于表示带符号的整型数据,取值范围-2147483648~2147483647。
(4)、内存字符串型变量、I/O字符串型变量
类似一般程序设计语言中的字符串变量,可用于记录一些有特定含义的字符串,如名称:密码等,该类型变量可以进行比较运算和赋值运算。

2.1、在IOServer应用中定义IO变量

2.1.1、在“IOServer1”应用中,选中“变量”,右键菜单“新建变量”,弹出“新建变量”对话框,如下图所示:

KingIoserver授权码 kingscada授权方式_数据_08

在“基本属性”标签页中,变量名:leigong_Tag1;变量类型:IOFloat。2.1.2、选择“采集属性”标签页,关联设备:Modbus采集设备1,寄存器:选择4,地址3,即寄存器为43,采集数据类型:FLOAT,采集频率:1.00s,其他默认,如下图所示:

KingIoserver授权码 kingscada授权方式_链路_09

采集数据类型与数据类型的对应关系如下表所示:

数据采集类型

变量类型

字节数

范围

BIT

IODisc

1

0或1

BYTE

IOChar 有符号

1

-128—127

BYTE

IOByte 无符号

1

0-255

SHORT

IOShort 有符号

2

-32768—32767

USHORT

IOWord 无符号

2

0—65535

LONG

IOLong 有符号

4

-2147483648—2147483647

LONG

IODWord 无符号

4

0-4294967295

FLOAT

IOFloat

4

10e-38—10e38

STRING

IOString

1

128个字符长度

DOUBLE

IODouble

8

INT64

IOInt64

8

2.1.3、选中“转换属性”标签页,在这里设置转换类型为线性,设置原始范围为0-10000,设置工程量程为0-1000,如下图所示:

KingIoserver授权码 kingscada授权方式_链路_10

2.1.4、选中“存储属性”标签页,测试未设置存储按默认值,如下图所示:

KingIoserver授权码 kingscada授权方式_链路_11

IOServer里面的变量可以直接采集数据并进行实时数据存储(Redis)和历史数据存储(KH)。

是否存储: 勾选该项时,此变量进行实时数据存储。

无: 选择该项,则该变量不进行历史记录。

改变: 系统运行时,变量的实时值在发生变化,如果变量的当前值与上一次记录的历史数据值之间的差值大于设置的死区范围时,该变量的值才会被记录到历史库中,这种方式适用于数据变化较快的场合。

间隔: 无论变量变化与否,系统运行时按定义的时间间隔将变量的值记录到历史库中,每隔设定的时间对变量的值进行一次记录。最小定义时间间隔单位为1秒,范围1-3600。这种方式适用于数据变化缓慢的场合,缺省设置为60秒。

每次采集记录: 系统运行时,按照变量的采集频率进行数据记录,每到一次采集频率,记录一次数据。该功能只适用于IO变量,内存变量没有该记录方式。该功能应慎用,因为当数据量比较大,且采集频率比较快时,使用“每次采集记录”,存储的历史数据文件会消耗很多的磁盘空间。

2.1.5、选中“转发属性”标签页,此次测试暂不测试该部分,保持默认值。

KingIoserver授权码 kingscada授权方式_数据模型_12

IOServer中的变量可以通过OPCUA Server/OPCDA Server/MQTT进行转发。
是否转发(OPCUA): 勾选该项时,此变量通过OPCUA进行转发,转发模式为值变化或质量戳变化转发。
是否转发(OPCDA): 勾选该项时,此变量通过OPCDA进行转发,转发模式为值变化或质量戳变化转发。
无: 选择该项,则该变量不进行MQTT转发。
改变: 系统运行时,变量的实时值在发生变化时推送给MQTT broke。
间隔: 无论变量变化与否,系统运行时按定义的时间间隔将变量推送给MQTT broke,每隔设定的时间对变量的值进行一次推送。最小定义时间间隔单位为1秒,范围1-3600。这种方式适用于数据变化缓慢的场合,缺省设置为60秒。
每次采集转发: 系统运行时,按照变量的采集频率进行数据推送。

2.2、在Server应用中定义IO变量

2.2.1、选择“IOServer应用组”→“IOServer1”→“网络配置”,如下图所示:

KingIoserver授权码 kingscada授权方式_数据模型_13

站点名设置为:leigongIOServer,IP地址默认为本机IP,端口默认为12380。

2.2.2、选择“服务端应用组”→“雷工笔记”→“网络配置”→“其他服务器”→“IOServer服务器”→“站点管理”,如下图所示:

KingIoserver授权码 kingscada授权方式_学习_14


KingIoserver授权码 kingscada授权方式_数据模型_15

单击“添加站点”按钮,在弹出的“添加IOServer站点”对话框中,选项上面建好的IOServer1,如下图所示:

KingIoserver授权码 kingscada授权方式_学习_16


单击“确定”按钮,如下图所示:

KingIoserver授权码 kingscada授权方式_数据模型_17


单击“确定”按钮,如下图所示,单击“是”按钮,完成站点保存。

KingIoserver授权码 kingscada授权方式_KingIoserver授权码_18


2.2.3、选择“服务端应用组”→“雷工笔记”→“建点”→“数据词典”,单击右侧“内容显示区”中的“新建”按钮,弹出对话框,如下图所示:

KingIoserver授权码 kingscada授权方式_数据_19


KingIoserver授权码 kingscada授权方式_学习_20

打开IO属性卡,单击访问名称后面的按钮,弹出如下图所示的对话框,选中上面建好的Tag1变量后,单击“确定”按钮。

KingIoserver授权码 kingscada授权方式_KingIoserver授权码_21


KingIoserver授权码 kingscada授权方式_数据_22


设置好变量的属性和访问名称后,单击“确定”按钮会校验“访问名称”中的变量域的类型和变量的数据类型是否一致,不一致的话弹出提示框:变量数据类型不一致!。

采集设置: 分为允许、强制读、强制写三个复选项:

允许: 控制变量采集与否,此项被选中表示KingSCADA运行时采集该变量的值,否则不采集变量的值。用户也可以在运行环境中通过IOEnable域动态更改该属性值。

强制读: 此项为复选项,当该项被选中时,每次采集(数据上报),不管数据是否发生变化,都要强制记录、报警和进行其它处理。用户也可以在KingSCADA运行环境中通过IORead域动态更改该属性值。

强制写: 此项为复选项,当此项被选中时,在KingSCADA画面中只要用户重新设置、输入了变量值,不管是否发生了变化,KingSCADA都完成一次写操作,将数据写到设备上。用户也可以在运行环境中通过IOWrite域动态更改该属性值。

写回馈: 此项为复选项,当此项被选中时,对io变量进行写操作后,会获取写回馈结果成功或是失败信息。如果配置了记录操作事件,会同步产生一条操作记录事件。

定义完变量的属性后,单击“确定”按钮,新建的变量会增加到数据词典中。

2.3、定义基本变量

在KingSCADA3.8工程设计器中,选择“服务端应用组”→“雷工笔记”→“建点”→“数据词典”选项,单击右侧“内容显示区”中的“新建”按钮,弹出对话框,如下图所示:

KingIoserver授权码 kingscada授权方式_数据模型_23


基本属性卡中的各项用来设置变量的基本特征,各项含义如下:

变量名: 设置变量的名称,变量名里可以包含英文字母、数字、中文字符等。

变量名称规范要求:

①、同一应用中的变量不能重名

②、变量名区分大小写

③、变量名最长不能超过64个字符

④、第一个字符不能是数字

⑤、不能包含空格字符和如下28个无效字符:,:;±*/%&!~|^<>={}.`’ ”?

⑥、不能包含如下26个片假名字符:

ゴ ガ ギ グ ゲ ザ ジ ズ ヅ デ ド ポ ベ プ ビ パ ヴ ボ ペ ブ ピ バ ヂ ダ ゾ ゼ

例如:温度、压力、液位、var1等均可以作为变量名。

变量类型: 分为基本类型和引用类型两种,可任选其中的一种,这里选择基本类型。

数据类型: 设置变量的数据类型,在下拉框中选择其中的一种。

描述: 设置变量的描述信息,限制128个字符。

死区: 数据类型为整型或实型时此项有效,只有当该数据变量值的变化幅度超过死区中设置的数值时,KingSCADA才更新与之相连接的画面显示,缺省为0。

初始值: 此项内容与所定义的变量类型有关,定义模拟量时出现编辑框可输入一个数值,定义离散量时出现开或关两种选择。定义字符串变量时出现编辑框可输入字符串,它们规定软件开始运行时变量的初始值。

最小值/最大值: 设置整型或实型变量的量程范围。默认为-999999999~~999999999

工程单位:设置整型或实型变量的工程单位,限制8个字符。

保存值: 该项被选中后,那么运行态下,保存值是当运行系统退出时会将退出时刻的值保存到变量定义的初始值中,作为下次运行时的初始值。

保存参数: 该项被选中后,系统运行时,如果变量的域(可读可写型)值发生了变化,KingSCADA运行系统退出时,系统自动保存修改的域值。运行系统再次启动后,变量的初始域值为上次系统运行退出时保存的值,否则,系统不会保存退出前修改的域值。

注意:变量的保存参数,起作用的区域是变量定义时,变量属性里出现的属性可以保存,如高限报警、低限报警等,变量属性里没出现的属性如AlarmEnable,则不能保存。

允许其他应用访问: 该项被选中后,变量可以被第三方程序访问,如DDE、OPC、API,否则该变量不能够被第三方程序访问。

记录事件: 该项被选中后,那么运行态下,用值输入动画、鼠标事件、图素、控件的事件脚本里导致该变量值域或其它域的值发生变化,都会生成操作事件,操作事件会在事件窗口中显示,也可以保存到报警事件库里,使用户能够了解到该变量的操作变化情况。

安全区: 设置变量所属的安全区,只有拥有这个安全区的用户才能操作该变量。

2.4、定义数据模型变量

在定义数据模型变量之前,我们要先介绍一下数据模型,因为数据模型实例化的产物是数据模型变量,所以要先有数据模型才会有数据模型变量。

数据模型: 模拟现实中的生产设备的数据部分,把某一设备的一些变量和关于这些变量的一些脚本运算组合在一起形成数据模型,用户在使用时只需要将模型实例化,即配置相关的参数,可以快速把这些数据点和脚本部署到工程中。

使用数据模型可以实现快速建立变量的功能,而对于复杂的、点数相对较大的工程或者在不同的工程中具有复用性的模型,这个功能是非常有用的。使用这个功能的关键是如何提炼出符合要求的数据模型。

数据模型创建过程如下:

2.4.1、在KingSCADA3.8工程设计器中,选择“建点”→“数据模型”选项,在右侧编辑中单击“新建”按钮,弹出对话框,如下图所示:

KingIoserver授权码 kingscada授权方式_学习_24


KingIoserver授权码 kingscada授权方式_链路_25


在该对话框中输入数据模型的名称:如:leigongModel1,其他属性可以根据需要输入,比如密码,如果设置了密码,用户在对数据模型编辑时要正确输入。初始ID和当前ID是由系统自动生成的,默认即可。

设置完毕后,单击“确认”按钮,该数据模型将出现在内容显示区,如下图所示:

KingIoserver授权码 kingscada授权方式_链路_26

2.4.2、在上图中选中模型图标,单击“编辑”按钮或双击数据模型图标,弹出对话框,如下图所示(如果在创建数据模型对话框中设置密码的话,在编辑之前系统会提示密码输入对话框,只有输入正确后才可弹出下图):

KingIoserver授权码 kingscada授权方式_学习_27


数据模型内容包括:变量、参数和脚本,在该对话框中可以建立数据模型中用到的变量、参数并编写相关的控制脚本。这里建立的变量是局部变量,适应范围仅仅是该数据模型。

新建参数:

数据模型参数主要于定义数据模型变量时,变量的属性值可以直接关联某个参数,或者包含某些参数,这样当数据模型在实例化成数据对象时,只需要改变参数的值,即可改变变量的属性值,参数起到了宏替换的作用。

参数支持的数据类型如下:字符串类型、长整型、浮点型、布尔类型

在下图中选择“参数”选项,单击鼠标右键,在弹出的右键菜单中执行“新建参数”命令。

KingIoserver授权码 kingscada授权方式_KingIoserver授权码_28


弹出对话框,在数据模型中定义AlarmValue参数,如下图所示:

KingIoserver授权码 kingscada授权方式_KingIoserver授权码_29


新建变量:

在下图中选择“变量”选项,单击鼠标右键,在弹出的右键菜单中执行“新建变量”命令。

KingIoserver授权码 kingscada授权方式_KingIoserver授权码_30


弹出对话框,在数据模型中定义temperature变量,如下图所示:

KingIoserver授权码 kingscada授权方式_数据模型_31


数据模型变量属性可以进行锁定,属性一旦被锁定,则数据模型属性变化时,将会传播到实例化后的数据模型变量中,修改属性的变化,否则,不会传播到数据模型变量中。单击属性后面的按钮,默认为锁定状态,当该按钮变为,表示该属性未被锁定。

KingIoserver授权码 kingscada授权方式_链路_32

点击“报警”选项卡,设置高限报警设定,高低限报警值我们连接上面设置的参数AlarmValue,单击按钮,如下图所示:

KingIoserver授权码 kingscada授权方式_学习_33

选择相应的参数即可,选择完成后如图3-28。

KingIoserver授权码 kingscada授权方式_KingIoserver授权码_34


KingIoserver授权码 kingscada授权方式_KingIoserver授权码_35

新建数据模型脚本:

数据模型脚本是指在数据模型中编写的脚本程序,脚本中只能使用模型中定义的变量和工程中的系统变量,如:KingIoserver授权码 kingscada授权方式_KingIoserver授权码_36Month、$Day等,但需要注意,系统变量不能作为触发条件,也可以使用组态王提供的所有函数。数据模型支持的脚本类型如下:数据改变脚本、事件脚本、定时脚本、自定义函数脚本。

可以根据需求创建相应的脚本类型,在脚本中编辑控制逻辑。

在表达式脚本中点击“新建”,弹出如下图所示:

KingIoserver授权码 kingscada授权方式_链路_37


KingIoserver授权码 kingscada授权方式_KingIoserver授权码_38


2.4.3、数据模型实例化,实例化的产物是数据模型变量。

数据模型建立完毕后,必须将其实例化后,才可以完成数据模型实现的功能,数据模型实例化的产物是数据对象,即数据对象的创建过程也就是数据模型实例化的过程。一个数据模型对应一个或多个数据对象,即一个数据模型对应一个或多个实例,从而实现了数据模型可重用的功能。

在KingSCADA3.8工程设计器中,选择“建点”→“数据模型对象”选项,在右侧编辑中单击“新建数据模型对象”按钮。

KingIoserver授权码 kingscada授权方式_链路_39


弹出对话框,如图所示:

KingIoserver授权码 kingscada授权方式_学习_40


使用数据模型可以实现快速定义变量的功能,同时还可以在内部定义相应的逻辑控制功能。