WinCC中变量的数据类型可能会不同于自动化系统中所使用的数据类型。因此,当组态外部变量时,除了要定义该变量的数据类型,还必须对所有数字型数据类型执行类型转换。类型转换定义如何从WinCC格式转换到AS格式,该定义适用于双向传送。
下表显示哪些WinCC数据类型支持类型转换:
数据类型 | 类型转换 |
二进制变量 | 否 |
无符号8位数 | 是 |
有符号8位数 | 是 |
无符号16位数 | 是 |
有符号16位数 | 是 |
无符号32位数 | 是 |
有符号32位数 | 是 |
浮点数32位IEEE 754 | 是 |
浮点数64位IEEE 754 | 是 |
文本变量8位字符集 | 否 |
文本变量16位字符集 | 否 |
原始数据类型 | 否 |
有关类型转换的详细信息,您可在WinCC信息系统中的“通讯”>“过程通讯”>“WinCC过程通讯”>“外部变量”中找到。
下面我们分别说明如何利用WinCC的类型转换功能来实现在WinCC项目中监控300/400plc中的TIME,S5TIME数据类型变量及定时器和计数器的值。
1.在WinCC项目中监控S7 300/400 PLC中的TIME类型变量
1.1关于TIME数据类型
TIME为带符号的32位IEC时间数据类型,时间增量为1ms,取值范围为T#-24D_20H_31M_23S_648MS至T#24D_20H_31M_23S_647MS。
1.2具体步骤
(1) 在Step中创建PLC站的DB1,并在DB中创建TIME类型的变量T,如下图所示:
图 1.2.1
(2) 在WinCC项目中创建变量Time1,数据类型为“有符号32位数”, 调整格式为“LongToSignedDword”。选择对应PLC变量的地址DB1,DD0。此时的变量单位为毫秒,为了使该变量对应单位为分钟,设置相应线性转换参数,如下图所示:
图 1.2.2
(3) 在WinCC画面中创建用于访问该变量的I/O域,设置如下图所示:
图 1.2.3
(4) 运行效果如下图所示:
图 1.2.4
(5) 如果需要在WinCC项目中以浮点数格式来监控PLC中的TIME类型变量,则在创建WinCC变量时应选择“浮点数32位IEEE754”,调整格式为“FloatToSignedDword”, 选择对应PLC变量的地址DB1.DD0。具体设置如下图所示:
图 1.2.5
在WinCC画面中创建用于访问该变量的I/O域,设置如下图所示:
图 1.2.6
运行效果如下图所示:
图 1.2.7
2. 在WinCC项目中监控300/400PLC中的S5TIME类型变量
2.1 关于S5TIME数据类型
S5TIME为无符号16位S5时间数据类型,由3位BCD码时间值(0-999)和时基组成,如下图所示:
图 2.1.1
时间基准定义将时间值递减一个单位所用的时间间隔。最小的时间基准是10毫秒;最大的时间基准是10秒。如下表所示:
用于S5TIME的通用格式对范围和分辨率的限制如下:
2.2 具体步骤
(1) 在Step中创建PLC站的DB1,并在DB中创建S5TIME类型的变量ST,如下图所示:
图 2.2.1
(2) 在WinCC项目中创建变量S5time,数据类型为“无符号32位数”, 调整格式为“DwordToSimaticBCDTimer”。选择对应PLC变量的地址DB1,DW4。此时的变量单位为毫秒,为了使该变量对应单位为秒,设置相应线性转换参数,如下图所示:
图 2.2.2
(3) 在WinCC画面中创建用于访问该变量的I/O域,设置如下图所示:
图 2.2.3
(4) 运行效果:
图 2.2.4
(5) 如果需要在WinCC项目中以浮点数格式来监控PLC中的S5TIME类型变量,则在创建WinCC变量时应选择“浮点数32位IEEE754”,调整格式为“FloatToSimaticBCDTimer”, 选择对应PLC变量的地址DB1,DW4。具体设置如下图所示:
图 2.2.5
在WinCC画面中创建用于访问该变量的I/O域,设置如下图所示:
图 2.2.6
运行效果为:
图 2.2.7
2.3定时器的监控
S7 300/400 PLC为定时器保留了一片存储区域。每个定时器由一个16位的字和一个二进制位组成,定时器的字使用的是S5TIME类型,用来存放当前的定时时间值,定时器的位状态用于存放触点的状态。
用定时器地址(T和定时器号,例如T10)存取它的时间值和定时器位,PLC中使用带位操作数的指令存取定时器位,使用带字操作数的指令存取定时器的时间值。在WinCC中我们可以定义变量来监控定时器的当前值,其方法同监控S5TIME类型变量相同:
图 2.3.1
3.在WinCC项目中监控S7 300/400 PLC中的计数器值
3.1 关于计数器
S7 300/400 PLC为计数器保留了一片存储区域。每个计数器由一个16位的字和一个二进制位组成,计数器的字用来存放它当前的计数值,计数器的位状态用于存放触点的状态。
用计数器地址(C和计数器号,例如C10)存取当前的计数值和计数器位,PLC中使用带位操作数的指令存取计数器位,使用带字操作数的指令存取计数器的计数值。在WinCC中我们可以定义变量来监控计数器的当前值。
计数字的0-11位是计数值的BCD码,计数值的范围为0-999。二进制格式的计数值只占用计数器值的0-9位,如下图所示:
图 3.1.1
3.2 具体步骤
(1) 在WinCC项目中创建变量Counter1,数据类型为“无符号16位数”, 调整 格式为“WordToSimaticBCDCounter”, 选择对应PLC变量的地址C8(显示为Z8)。如下图所示:
图 3.2.1
(2) 在WinCC画面中创建用于访问该变量的I/O域,设置如下图所示:
图 3.2.2
(3) 运行效果:
图 3.2.3