WinCC控件開發問題記錄

解決科技看今朝 2024-04-09 08:06:38

WINCC是一款功能非常強大的人機界面軟件。它除了功能豐富的內置控件外,還支持.NET控件。這樣我們可以在內置控件滿足不了要求時使用C#或VB.NET來開發功能更加強大的自定義控件。

雖然WINCC支持.NET控件,那是否我們直接將市面上那些.NET控件加載到WINCC中就可以使用?事實並非如此,一方面由于WINCC自身的局限性,它無法支持C#中的那些高級特性。另一方便,由于底層的處理機制不同,我們在VS中調試正常的控件,未必就可以在WINCC中正常運行。所以,大部分.NET控件是無法直接在WINCC中使用的。

以我們前段時間開發的CCAdvChart控件爲例,該控件在VS中調試一切正常,但是當它加載到WINCC中時,會有一根曲線在不斷地閃爍。如下面視頻所示。

這就很奇怪了,爲什麽同樣的控件,在VS中可以正常工作,但是在WINCC中就異常了呢?經過反複的調試,後來我們將Chart中數據的加載方式由Points.Add改成綁定數據源就正常了。代碼如下:

for (int i = 0; i < TagCount; i++){ if (!string.IsNullOrEmpty(tagName[i])) { cc.Series[i].DataSource = ds; cc.Series[i].ArgumentScaleType = ScaleType.Auto; cc.Series[i].ArgumentDataMember = $"index"; cc.Series[i].ValueScaleType = ScaleType.Numerical; cc.Series[i].ValueDataMembers[0] = $"value{i + 1}"; }}

經過上面代碼的優化後,該Chart控件終于可以在WINCC中正常工作了。

除了本例演示的情況外,對于一些在屬性和事件中用到的數據類型也需要格外的小心,我們應盡量避免使用自定義的類型,而是多使用系統類型。

總之,開發能夠良好兼容WINCC的.NET控件並非一件簡單的事情。不是說我們了解C#語法,熟悉一些自定義控件的開發知識就能夠實現。這方面還是需要豐富的開發經驗才可以,需要對.Net Framework和WINCC都相當的了解。這樣才能夠在出現問題時快速定位到問題點。

0 阅读:0

解決科技看今朝

簡介:感謝大家的關注