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