91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

WINCC中獲取窗口變量前綴以及跨窗口操控的方法

opkgjew ? 來源:PLC標(biāo)準(zhǔn)化編程 ? 2023-01-09 11:15 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

近段時(shí)間,不約而同的,網(wǎng)站論壇和煙臺(tái)方法學(xué)員中都有提出這樣的問題。

比如:

l用C腳本如何獲得窗口中對(duì)象的變量前綴?

l用VBS如何獲得?

l用C腳本如何實(shí)現(xiàn)在一個(gè)窗口中操控父窗口下的另一個(gè)窗口內(nèi)的控件?

l用VBS如何實(shí)現(xiàn)?

這些問題,都有個(gè)特點(diǎn), 提問的時(shí)候先把編程語言給限定了。

而咱就不太有辦法拒絕。畢竟,人家有可能是在完成一個(gè)更復(fù)雜的工作,已經(jīng)在選定的語言下實(shí)現(xiàn)了大部分的功能,現(xiàn)在就在這一點(diǎn)點(diǎn)功能搞不定被卡主了,過不去了,才來求助的。

而如果不指定語言的話,其實(shí)我都早就有答案,特別是VBS的解決方案,都寫在《西門子WINCC入門到精通》的書里了,所以只需要從書柜里把我自己的書拿出來, 找到頁碼,把頁碼號(hào)告訴對(duì)方就可以了。

而且會(huì)發(fā)現(xiàn),大部分提問者其實(shí)是有我的那本書的,只是通讀不夠細(xì)致,沒發(fā)現(xiàn),或者沒記住有這方面的介紹。驗(yàn)證了一個(gè)道理,對(duì)一本書,最了解的還是作者自己。

當(dāng)然,我也發(fā)現(xiàn)了我寫書時(shí)候遺漏的該寫而未寫的技巧知識(shí)點(diǎn)。可能潛意識(shí)里面,我自己覺得反正另一條路上有解決方案了,這邊這一條就沒必要去重復(fù)啰嗦實(shí)現(xiàn)了。特別是C腳本,對(duì)西門子來說自從20年前的WINCC版本支持VBS之后,官方逐漸在弱化C腳本的地位, 我自己也逐漸淡化對(duì)其的研究和使用。想一碗水端平是永遠(yuǎn)不可能的。

在此先提醒大家, 提問問題的時(shí)候,盡可能不要限定編程語言。那樣的答案多的是,可以唾手可得。而非要限定語言了,尋找起來就會(huì)有一些難度。

所以,我這里做了個(gè)例子,進(jìn)行了測(cè)試,可以把這些坑填上了。 也算是對(duì)我自己著作中遺漏部分的補(bǔ)充。

d0611658-8441-11ed-bfe3-dac502259ad0.png

主畫面中是2個(gè)按鈕,分別演示了VBS腳本和C腳本彈出窗口的方法。

而彈出的窗口外觀相同,然而內(nèi)部的程序語言不同, 分別有按鈕按下后可以彈出對(duì)話框提示讀取得到了前綴。

而后, 將上述2個(gè)按鈕分別放到另一個(gè)叫做“窗口中操控”的窗口(PDL文件),腳本經(jīng)過稍微修改,實(shí)現(xiàn)了上述同樣的功能。

l按鈕11的單擊鼠標(biāo)中的VBS程序?yàn)椋?/p>

Sub OnClick(ByVal Item)

ScreenItems("畫面窗口1").TagPrefix="M001_"

ScreenItems("畫面窗口1").PictureName=Item.Text

ScreenItems("畫面窗口1").Visible=True

End Sub

而窗口中有2個(gè)獲取前綴的按鈕,同樣可以得到結(jié)果,腳本分別為:

Sub OnClick(Byval Item)

'MsgBOX(ITEM.Parent.Parent.TagPrefix)

MsgBOX(Parent.TagPrefix)

End Sub

注釋掉的腳本也同樣可以執(zhí)行。

Sub OnClick(Byval Item)

Dim name

name=HMIRuntime.Tags("aa").Name

Dim TagPrefix

TagPrefix=Split(name,"_")(0)

MsgBOX(TagPrefix)

End Sub

這里取了一個(gè)不存在的aa后綴的變量,然而也絲毫不影響功能。 因?yàn)檎Z法本身獲取的是變量名字,對(duì)變量是否有值是否合法根本不在意。

也注意兩種方式得到的前綴分別有分隔符和無分隔符的區(qū)別。

標(biāo)準(zhǔn)的用法當(dāng)然不能每次都通過腳本來獲取,而是會(huì)在子窗口打開時(shí)即執(zhí)行腳本,獲取到前綴后,賦值到一個(gè)靜態(tài)文本中,窗口中任何需要的地方,可以通過讀取文本內(nèi)容得到。

Sub OnOpen()

'MsgBOX(Parent.TagPrefix)

ScreenItems("窗口前綴").Text=Parent.TagPrefix

End Sub

而如果畫面窗口中不需要顯示這個(gè)前綴,可以設(shè)置靜態(tài)文本為隱藏。這是官方例程中慣用的手法。

l按鈕12的單擊鼠標(biāo)中的C程序?yàn)椋?/p>

#include "apdefap.h"

void OnClick(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName)

{

SetPropChar(lpszPictureName, "畫面窗口1", "PictureName","窗口12-C獲取前綴.Pdl");

SetPropChar(lpszPictureName, "畫面窗口1", "TagPrefix", "M002_");

SetPropBOOL(lpszPictureName, "畫面窗口1", "Visible", TRUE);

}

窗口內(nèi)獲取按鈕的腳本:

#include "apdefap.h"

void OnClick(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName)

{

char Name[20];

HWND hwnd=NULL;

hwnd=FindWindow(NULL,"WinCC-運(yùn)行系統(tǒng) - "); //獲得句柄

strcpy(Name,GetPropChar(GetParentPicture(lpszPictureName),GetParentPictureWindow(lpszPictureName),"TagPrefix")); //Return-Type: char*

MessageBox(hwnd,Name,"OK",MB_OK);

}

畫面打開事件中文本內(nèi)容得到的方法:

#include "apdefap.h"

void OnOpenPicture(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName)

{

char Name[20];

strcpy(Name,GetPropChar(GetParentPicture(lpszPictureName),GetParentPictureWindow(lpszPictureName),"TagPrefix")); //Return-Type: char*

SetPropChar(lpszPictureName,"窗口前綴","Text",Name); //Return-Type: BOOL

}

這里C腳本實(shí)現(xiàn)的核心是一個(gè)GetParentPicture的函數(shù),可以得到窗口的父窗口的文件名字。而這個(gè)函數(shù)是個(gè)神仙函數(shù),各種幫助資料中都沒有見過介紹。所以只有從已有的使用演示程序中獲取。

l窗口中按鈕11的單擊鼠標(biāo)中的VBS程序?yàn)椋?/p>

Sub OnClick(ByVal Item)

Parent.Parent.ScreenItems("畫面窗口1").TagPrefix="M001_"

Parent.Parent.ScreenItems("畫面窗口1").PictureName=Item.Text

Parent.Parent.ScreenItems("畫面窗口1").Visible=True

End Sub

l窗口中按鈕12的單擊鼠標(biāo)中的C程序?yàn)椋?/p>

#include "apdefap.h"

void OnClick(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName)

{

char szParentPicture[512];

strncpy (szParentPicture, GetParentPicture(lpszPictureName), sizeof(szParentPicture));

SetPropChar(szParentPicture, "畫面窗口1", "PictureName","窗口12-C獲取前綴.Pdl");

SetPropChar(szParentPicture, "畫面窗口1", "TagPrefix", "M002_");

SetPropBOOL(szParentPicture, "畫面窗口1", "Visible", TRUE);

}

分別實(shí)現(xiàn)了上述同樣的功能。

當(dāng)然,我們也可以隨意的組合搭配按鈕和窗口內(nèi)的程序,都可以實(shí)現(xiàn)同樣的功能。 比如即便你程序的主體語言是C的或者VBS,然而窗口中的文本獲得前綴部分可以用VBS簡(jiǎn)單得到。

最后,這些具體產(chǎn)品知識(shí)點(diǎn)的技巧內(nèi)容我近幾年確實(shí)很少觸及了。 因?yàn)樵谖铱磥砟嵌际腔竟?。我甚至也不去記憶具體的函數(shù)名字,比如上面的name還是tagname, TagPrefix還是Prefix, 都記不住的。我即便要使用,也都直接找現(xiàn)成的程序模塊看一眼,抄來用下即可。

而事實(shí)上,隨著標(biāo)準(zhǔn)化模塊化的推進(jìn),這些技能已經(jīng)很少用到了,因?yàn)樵缇头庋b完善在模塊中了。

有一些年輕人看到我近年來寫各種科普文章,很少提及這些具體的技術(shù)技能技巧,懷疑我從來沒掌握這些技能,DISS我,甚至來跟我PK,只能是他們眼光太短淺了,你要從事技術(shù)工作,不是要把一項(xiàng)項(xiàng)的技能從年輕到年老記憶地牢牢的,以隨時(shí)使用。相反的是,大部分技能是需要封裝的,封裝以后直接使用,甚至自己要主動(dòng)把這些具體技能都遺忘掉,才可以有更多的精力去掌握更高層的知識(shí)。

最后,給大家的建議是,要盡量少自己從頭造輪子。

雖然我自己在成長(zhǎng)過程中,是摸著石頭過河每個(gè)輪子逐個(gè)造過來的,遇到任何問題,也都抑制不住要自己親自造輪子的沖動(dòng)。 輪子的每一個(gè)細(xì)節(jié),如果不親自掌握,就會(huì)抓耳撓腮睡覺都不安心。

然而仍然要提醒同行后來者,這是一種非常低效率的行為。 你可以有好奇心,精力充沛的情況下可以對(duì)別人造好的輪子仔細(xì)研讀原理,自己可以從中掌握些基本功,然而自己從頭造輪子這件事,就要盡量避免了。

上述例程的實(shí)現(xiàn)方法,西門子官方的例子中其實(shí)原本就有,而且功能比我這里介紹的要全面而細(xì)致得多得多。

西門子官方例程中, BST例程較多的是使用了C腳本,而LBP例程(或者叫做BPL)相同的功能則更多是用VBS實(shí)現(xiàn)的。

這些例程我都已經(jīng)寫文章推薦過多次了。這回就不再提供鏈接以及親自提供文件了,而只提供名字,需要者自己辛苦一點(diǎn)去找到并學(xué)習(xí)了解。 看來太容易得到的資料通常都不珍惜,只有自己辛苦一點(diǎn),千辛萬苦得到的才會(huì)更加倍的去學(xué)習(xí)。






審核編輯:劉清

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • vbs
    vbs
    +關(guān)注

    關(guān)注

    1

    文章

    5

    瀏覽量

    11473
  • BPLC
    +關(guān)注

    關(guān)注

    0

    文章

    4

    瀏覽量

    6621
  • plc編程語言
    +關(guān)注

    關(guān)注

    0

    文章

    7

    瀏覽量

    1349

原文標(biāo)題:1225 【萬泉河】WINCC中獲取窗口變量前綴以及跨窗口操控的方法

文章出處:【微信號(hào):PLC標(biāo)準(zhǔn)化編程,微信公眾號(hào):PLC標(biāo)準(zhǔn)化編程】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    探索MAX6754 - MAX6764低功耗窗口檢測(cè)器:特性、應(yīng)用與設(shè)計(jì)要點(diǎn)

    探索MAX6754 - MAX6764低功耗窗口檢測(cè)器:特性、應(yīng)用與設(shè)計(jì)要點(diǎn) 引言 在電子系統(tǒng)設(shè)計(jì),電源的穩(wěn)定性至關(guān)重要。電壓的異常波動(dòng),如欠壓和過壓,可能會(huì)導(dǎo)致系統(tǒng)故障甚至損壞。MAX6754
    的頭像 發(fā)表于 02-27 13:45 ?108次閱讀

    低功耗單/雙電壓窗口檢測(cè)器MAX6754 - MAX6764:設(shè)計(jì)與應(yīng)用指南

    低功耗單/雙電壓窗口檢測(cè)器MAX6754 - MAX6764:設(shè)計(jì)與應(yīng)用指南 在電子系統(tǒng)設(shè)計(jì),電源電壓的穩(wěn)定性至關(guān)重要。過壓或欠壓情況可能會(huì)對(duì)系統(tǒng)造成不可逆的損害,因此需要可靠的電壓監(jiān)測(cè)解決方案
    的頭像 發(fā)表于 01-15 17:45 ?543次閱讀

    高速10 GHz窗口比較器HMC974LC3C:特性、應(yīng)用與設(shè)計(jì)要點(diǎn)

    高速10 GHz窗口比較器HMC974LC3C:特性、應(yīng)用與設(shè)計(jì)要點(diǎn) 在高速電子設(shè)計(jì)領(lǐng)域,窗口比較器是一種關(guān)鍵的組件,它能夠精確地判斷輸入信號(hào)是否在預(yù)設(shè)的兩個(gè)參考電平之間。今天,我們就來深入探討
    的頭像 發(fā)表于 01-06 15:25 ?508次閱讀

    福祿克CV系列紅外窗口的核心作用

    電氣設(shè)備內(nèi)部測(cè)溫的三大焦慮,您是否正在經(jīng)歷?真正的狀態(tài)檢修,始于一次安全、精準(zhǔn)、高效的內(nèi)部溫度評(píng)估。今天,我們?yōu)槟颐貙I(yè)之選——福祿克CV系列紅外窗口。
    的頭像 發(fā)表于 12-10 10:46 ?768次閱讀
    福祿克CV系列紅外<b class='flag-5'>窗口</b>的核心作用

    如何在Keil設(shè)置窗口標(biāo)題顏色和背景顏色呢?

    如何在Keil設(shè)置窗口標(biāo)題顏色和背景顏色呢
    發(fā)表于 12-10 07:56

    廣州易顯串口屏多個(gè)畫面和子窗口切換實(shí)驗(yàn)

    目錄一、實(shí)驗(yàn)?zāi)康亩?shí)驗(yàn)設(shè)備三、實(shí)驗(yàn)步驟3.1新建工程3.2新建畫面3.3新建子窗口3.4添加控件3.5模擬工程3.6硬件驗(yàn)證一、實(shí)驗(yàn)?zāi)康?1、AVR、PIC、STM等8位或者32位單片機(jī)的串口
    的頭像 發(fā)表于 12-04 11:40 ?456次閱讀
    廣州易顯串口屏多個(gè)畫面和子<b class='flag-5'>窗口</b>切換實(shí)驗(yàn)

    大語言模型如何處理上下文窗口中的輸入

    本博客介紹了五個(gè)基本概念,闡述了大語言模型如何處理上下文窗口中的輸入。通過明確的例子和實(shí)踐獲得的見解,本文介紹了多個(gè)與上下文窗口有關(guān)的基本概念,如詞元化、序列長(zhǎng)度和注意力等。
    的頭像 發(fā)表于 12-03 13:48 ?594次閱讀
    大語言模型如何處理上下文<b class='flag-5'>窗口</b>中的輸入

    CANape標(biāo)定窗口被鎖無法標(biāo)定

    問題現(xiàn)象:解決方案:標(biāo)定窗口被鎖定無法標(biāo)定除了ECU功能權(quán)限限制外可能存在的情況是CANape的工程配置影響的,主要有以下三個(gè)方面:1、CalibrateonlineDevice沒有激活,需要將工程
    的頭像 發(fā)表于 11-17 15:26 ?1993次閱讀
    CANape標(biāo)定<b class='flag-5'>窗口</b>被鎖無法標(biāo)定

    德州儀器TPS3436-Q1汽車級(jí)窗口看門狗定時(shí)器技術(shù)解析

    Texas Instruments TPS3436-Q1精密窗口看門狗定時(shí)器是一款超低功耗(250nA典型值)器件,提供可編程窗口看門狗定時(shí)器。TPS3436-Q1可提供具有多種功能的高精度超時(shí)
    的頭像 發(fā)表于 08-18 14:54 ?998次閱讀
    德州儀器TPS3436-Q1汽車級(jí)<b class='flag-5'>窗口</b>看門狗定時(shí)器技術(shù)解析

    光纖傳輸窗口詳解:波長(zhǎng)如何影響光通信網(wǎng)絡(luò)

    “光纖傳輸窗口”是指在光纖傳輸時(shí),信號(hào)能量損耗最小、色散效應(yīng)最弱的一段波長(zhǎng)區(qū)間。在這些“窗口”內(nèi),光信號(hào)可以傳播得更遠(yuǎn)、衰減更慢、失真更少,因此成為光通信系統(tǒng)設(shè)計(jì)的關(guān)鍵技術(shù)基礎(chǔ)。
    的頭像 發(fā)表于 07-30 10:27 ?1062次閱讀
    光纖傳輸<b class='flag-5'>窗口</b>詳解:波長(zhǎng)如何影響光通信網(wǎng)絡(luò)

    調(diào)試工具:Eclipse調(diào)試工具欄與窗口的深入分析

    科技有限公司自研AS32 系列 MCU 芯片的調(diào)試應(yīng)用為研究背景,通過詳細(xì)闡述 Eclipse 調(diào)試環(huán)境的搭建、工具欄各功能模塊的原理與應(yīng)用,以及各類調(diào)試窗口的深度剖析,揭示 Eclipse 調(diào)試工具在嵌入式系統(tǒng)調(diào)試的優(yōu)勢(shì)與潛
    的頭像 發(fā)表于 07-07 11:32 ?876次閱讀
    調(diào)試工具:Eclipse調(diào)試工具欄與<b class='flag-5'>窗口</b>的深入分析

    技術(shù)干貨 | AD/DA動(dòng)態(tài)分析的信號(hào)窗口處理技術(shù)

    前一章詳解了TX7006上的線性計(jì)算,AD/DA動(dòng)態(tài)分析的傅里葉變換和動(dòng)態(tài)參數(shù)計(jì)算。本期文章將為大家繼續(xù)介紹AD/DA動(dòng)態(tài)分析的信號(hào)窗口。
    的頭像 發(fā)表于 07-03 13:39 ?1105次閱讀
    技術(shù)干貨 | AD/DA動(dòng)態(tài)分析<b class='flag-5'>中</b>的信號(hào)<b class='flag-5'>窗口</b>處理技術(shù)

    HarmonyOS實(shí)戰(zhàn):實(shí)現(xiàn)任意拖動(dòng)的應(yīng)用懸浮窗口

    為了增加應(yīng)用程序功能的豐富性和便利性,很多應(yīng)用都會(huì)提供一個(gè)懸浮窗口實(shí)現(xiàn)多頁面顯示。特別是一些性能檢測(cè)工具,比如 dokit 。在鴻蒙上怎么實(shí)現(xiàn)類似的全局懸浮窗口呢?閱讀完本篇文章你將學(xué)會(huì)在鴻蒙上如何實(shí)現(xiàn)這一功能。
    的頭像 發(fā)表于 06-24 17:04 ?1342次閱讀

    第二十四章 WWDG——窗口看門狗

    W55MH32的窗口看門狗是7位遞減計(jì)數(shù)器,有上下窗口值,時(shí)鐘來自PCLK1用于監(jiān)測(cè)軟件故障,代碼演示了其配置、中斷測(cè)試與復(fù)位測(cè)試。
    的頭像 發(fā)表于 06-20 14:00 ?1257次閱讀
    第二十四章 WWDG——<b class='flag-5'>窗口</b>看門狗

    調(diào)試時(shí)Memory窗口中Flash內(nèi)容不更新的原因和解決辦法

    調(diào)試時(shí)在代碼對(duì)Flash進(jìn)行寫操作時(shí)(比如Bootloader對(duì)Code Flash進(jìn)行升級(jí)操作,Application對(duì)Data Flash進(jìn)行寫操作),Memory窗口中Flash內(nèi)容不更新。
    的頭像 發(fā)表于 04-01 09:18 ?1249次閱讀
    調(diào)試時(shí)Memory<b class='flag-5'>窗口</b>中Flash內(nèi)容不更新的原因和解決辦法