wincc中變量的數據類型可能會不同于自動化系統中所使用的數據類型。因此,當組態外部變量時,除了要定義該變量的數據類型,還必須對所有數字型數據類型執行類型轉換。類型轉換定義如何從wincc格式轉換到as格式,該定義適用于雙向傳送。
下表顯示哪些wincc數據類型支持類型轉換:
| 數據類型 | 類型轉換 |
| 二進制變量 | 否 |
| 無符號8位數 | 是 |
| 有符號8位數 | 是 |
| 無符號16位數 | 是 |
| 有符號16位數 | 是 |
| 無符號32位數 | 是 |
| 有符號32位數 | 是 |
| 浮點數32位ieee 754 | 是 |
| 浮點數64位ieee 754 | 是 |
| 文本變量8位字符集 | 否 |
| 文本變量16位字符集 | 否 |
| 原始數據類型 | 否 |
有關類型轉換的詳細信息,您可在wincc信息系統中的“通訊”>;“過程通訊”>;“wincc過程通訊”>;“外部變量”中找到。
下面我們分別說明如何利用wincc的類型轉換功能來實現在wincc項目中監控300/400中的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










