Trebor Dynamics Ci Användarmanual Användarmanual för Trebor Dynamics Ci, ett ramverk för variabelstruktur samt automatiskt och dynamiskt skapande av Popuper till CitectSCADA, baserat på objektorientering. Exempelprojektet innehåller bibliotek för standardiserade symboler inom fastighetautomation samt elkraft.
Introduktion Trebor Dynamics Ci är ett ramverk för automatiskt samt dynamiskt skapande av Popuper i SCADA-systemet Citect. Ramverket bygger på objektorientering och innehåller symbolbibliotek för fastighetsautomation samt elkraft. Funktionaliteten i detta ramverk innebär också att integrationstiden för nya anläggningar optimeras, samt en standardisering av integrering över tid. I denna manual beskrivs handhavande samt användning av Trebor Dynamics Ci, vilket är ett till Citect knutet exempelprojekt innehållandes symboler och genies för fastighetsautomation samt elkraft. Observera att inkluderat exempelprojekt innehållandes symboler och genies ej behöver användas. Endast anrop till funktioner kan användas i redan befintliga genies, se vidare under CiCode-anrop. Installationsförfarandet beskrivs i separat manual. Definitioner SCADA: Supervisory Control And Data Acquisition. Default: Förinställt värde, standardvärde. Genie: Återanvändbar dynamisk grupp av symboler somanvänds som ett objekt. CiCode: Programmeringsspråk som används av Citect SCADA / Viejo Citect. DLL-fil: Dynamic-link Library, fil innehållandes programfunktioner som kan delas mellan olika program. Systemkrav Operativsystem Microsoft Windows XP, Microsoft Windows 7, Microsoft Windows 8. Microsoft.NET Framework v4.0 eller senare Installation Installation sker via installationsfilen setup.exe. Se separat manual. Sida 1 av 84
Innehållsförteckning Introduktion... 1 Definitioner... 1 Systemkrav... 1 Installation... 1 Allmänt... 6 Namnsättning... 6 Genies... 7 VVS... 7 Elkraft... 8 Symbolbibliotek... 9 VVS... 9 Elkraft... 9 CiCode-anrop... 9 Generellt... 10 GivarPopup... 11 IndikatorPopup... 11 MätarPopup... 11 MotorPopup... 12 ParMotorPopup... 12 Spjäll/VentilPopup... 13 BrytarPopup... 13 TransformatorPopUp... 14 Popuper... 15 Flikhantering... 15 Dynamiskt skapande... 15 Säkerhet/behörighet... 16 Felindikering i Popuper... 16 Högerklick... 16 Konfigurationsfil... 18 Sektioner i konfigurationsfil... 18 Loggfil... 22 Felsökning... 23 Bilaga 1 Popuper VVS... 24 Sida 2 av 84
Givare... 24 Regulator... 25 Börvärdeskurva... 25 Spjäll... 26 Pump... 27 Fläkt... 28 Ventil... 29 Värmeväxlare... 30 Tag Info... 31 Operatörslogg... 32 Felindikering... 33 Bilaga 2 Genies VVS... 34 Övergripande inställningar... 34 Objekt... 34 Säkerhetsnivå Börvärde... 34 Börvärdesarea... 34 Säkerhetsnivå Parameter... 34 Parameterarea... 34 Säkerhetsnivå Larm... 34 Larmarea... 34 Säkerhetsnivå Manöver... 34 Manöverarea... 34 Manövertyp... 35 Motortyp... 35 Givare... 35 Spjäll... 36 Pump... 36 Fläkt... 37 Ventil... 37 Värmeväxlare... 38 Bilaga 3 Popuper Elkraft... 39 Brytare... 39 Jordningskopplare... 41 Transformator... 42 Sida 3 av 84
Bilaga 4 Genies Elkraft... 43 Övergripande inställningar... 43 Brytare... 43 Jordningskopplare... 43 Transformator... 44 Bilaga 5 Trebor.DynamicsAPI... 45 InitDll... 46 BackgroundConnect... 46 NewSensorPopUp... 47 NewRegulatorPopUp... 49 NewMotorPopUp... 50 NewDualMotorPopUp... 53 NewPowerSwitchPopUp... 56 NewPowerTransformerPopUp... 58 NewLightsPopUp... 59 NewLightsOnOffPopUp... 61 NewLightsMomentaryOnOffPopUp... 63 NewObjectIndicatorPopUp... 65 NewObjectIndicatorMomentaryOnOffPopUp... 68 NewFanPopUpForm... 69 NewPumpPopUpForm... 70 NewHeatExchangerPopUpForm... 71 NewDamperPopUpForm... 72 NewValvePopUpForm... 74 NewPopUpForm... 75 SetInformationText... 76 SetScadaCodeCalls... 77 SetControllingSensorTagName... 78 SetSubObjectName... 79 SetConfirmManouver... 80 SetBvPrivArea... 80 SetParamPrivArea... 81 SetManPrivArea... 81 SetAlarmPrivArea... 81 Sida 4 av 84
SetTagInfoPrivArea... 82 SetManouverMomentary... 82 SetObjectIndicatorSymbolFileName... 82 SetManualButtonNames... 83 SetDualMotor... 83 PopUpNameExists... 83 ShowPopUpForm... 83 PopAndFlashForm... 84 Sida 5 av 84
Allmänt Ramverket baseras helt och hållet på objektorientering och variabelstruktur, varför första steget i användandet är att benämningen av variabler i variabellistor följer en viss struktur. Med detta gjort anges vilka ändelser som representerar vad i en konfigurationsfil, och därefter behöver objekt endast anges en gång vid insättning av genies i grafikbilder. Denna manual beskriver Trebor Dynamics Ci sett utifrån användning av Citectbilder med genies, för information om knytning mot TA VectorGraphics, se separat manual. Namnsättning Variabelstrukturen baseras på objektnamn, där ändelserna sedan bestämmer vad som ska visas i Popuperna. Exempel på objektnamn: A_05_LB01_GT11 där A = byggnad 05 = våning LB01 = huvudsystem GT11 = objekt Förledet, i ovan exempel byggnad samt våning, kan se ut hur som helst. Det viktiga är att objektet alltid står för sig själv efter det sista underscoret. Hela objektnamnet anges vid insättning av genies. Variabler skapas sedan enligt principen A_05_LB01_GT11_ LG (givarfel) A_05_LB01_GT11_MV (mätvärde) Dessa ändelser är helt öppna och modifieras i en konfigurationsfil, mer om detta i senare avsnitt. Samtliga mätvärden, larmer, manövrar, inställningsvärden mm tillhörande objektet läggs till med hjälp av ändelsen. Sida 6 av 84
Genies Till Trebor Dynamics Ci följer ett antal Genies tillhörande Citect SCADA / Viejo Citect. Dessa inkluderar symboler och funktioner för VVS samt Elkraft. Vid insättning av dessa genies på en grafiksida visas ett formulär (Genie Form) där nödvändig infomation gällande objektet som ska knytas till denna genie fylls i. VVS Ett stort antal genies medföljer för implementation av VVS-projekt. De övergripande är: - Fläktar - Pumpar - Spjäll - Ventiler - Givare - Värmeväxlare Därtill kommer en del knappar samt larmbundna genies. Std_element_grafiksidor, genieelement som är skapta för att användas i grafiksidor i citect. Detta för att vara konsekvent och enhetlig. Ex namn på objekt, mätvärde centrerat/ högerställt/ vänsterställt. Std_element_popup, genies som används i systemsidor. Std_exp, expansionskärl, tryckexpansionskärl och pneumatiskexpansionskärl. Std_fläkt, fläkt, fläkt med frekvensomformare, parfläkt, parfläkt med frekvensomformare, fläktluftkylare och fläktluftvärmare. Std_flode, energimätare med möjlighet till att representera förbrukad energi och effekt. Samt den ström och frekvens objektet förbrukar. Std_givare, finns tre sådana givare beroende på om det skall vara kanalgivare, rumsgivare eller utegivare. Std_knappar, den första knappen är en genie som kan representera en önskad funktion där, t ex. mätvärde, börvärde, parametrar och larm kan representeras. Den andra knappen används för att kunna orientera sig mellan bilderna. Std_larm, innehåller ett flertal larmgenies, detta eftersom dynamikprojektet skall kunna köras på en anläggning som redan är integrerad med ett äldre dynamikprojekt. Sida 7 av 84
Std_manover, en handgenie som används för att indikera att objektet är EJ i Auto. Std_natverk, används för att visa status på uppkopplingen. Samt representativ information om uppkopplingen och IODevice. Std_pump, pump, pump med frekvensomformare, parpump och parpump med frekvensomformare. Std_spjall, spjäll genie. Std_ventil, ventil och 3-vägs ventil. Även luftvärmare finns med detta bibliotek. Detta för att ventil Cicoden är gemensam för dessa tre objekt. För att genieform skall fungera, måste det objektet sparas med de övriga eftersom de använder samma Cicode. Std_vvx, roterande värmeväxlare, återvinning och kylåtervinning finns med i denna kategori. Std_ovrigt, börvärdesomställare. Elkraft Ett stort antal genies medföljer för implementation av elkraftprojekt. De övergripande är: - Brytare - Jordningskopplare - Transformatorer Std_element_popup, genies som används i systemsidor. Std_element_grafiksidor, genieelement som är skapta för att användas i grafiksidor i citect. Detta för att vara konsekvent och enhetlig. Ex namn på objekt, mätvärde centrerat/ högerställt/ vänsterställt. Std_kraft, genies för brytare, jordningskopplare, mätvärde, transformator mm. Std_belysning, används ej vid detta dokuments uppförande. Sida 8 av 84
Symbolbibliotek Inkluderat i Trebor Dynamics Ci finns ett stort symbolbibliotek för Citect SCADA / Viejo Citect, gällande för VVS samt elkraft. Dessa symboler används i de genies som tidigare beskrivits, men kan även användas inom valfri del av aktuellt Citectprojekt. VVS Standardiserade symboler för givare, spjäll, pumpar, fläktar, ventiler mm uppdelade på ett antal bibliotek. Elkraft Standardiserade symboler för brytare, jordningskopplare, transformatorer mm där de flesta ingår i bibliotek Cistd_Kraft. CiCode-anrop De genies som medföljer använder sig var och en av ett CiCode-anrop, där en funktion körs. Den information som fylls i vid insättning av genie följer med i detta anrop. Funktionen anropar sedan en DLL-fil där genereringen av Popupen sker i Runtime. Sida 9 av 84
Generellt Samtliga anrop till Popuper sker till installerad DLL-fil. Namnet på denna definieras i CiCode-filen CiStd_Settings.ci, i en global sträng kallad scistd_popupdllpath Ett nytt handtag eller länk hnewpopuphandle skapas vid öppnande av DLL-filen. Observera att detta anrop endast öppnar en länk till DLL-filen, själva anropet mot DLL-filen sker i nästa steg. Nedan exempel för givare. hnewpopuphandle = DLLOpen(sCiStd_PopUpDllPath, "NewSensorPopUp", "ACJJJJJJJJC"); Här skickas PopUp-typen med, i detta fall NewSensorPopUp, samt en bokstavskombination motsvarande de argument som behövs. Bokstäverna motsvaras av datatyperna A = Logical. C = Null terminated string. Maxlängd 255 tecken. J = Signed 4 byte integer. Se CiCode Reference Help för vidare information. Sedan görs ett anrop till DLL-filen där ovan beskriven länk samt samtliga argument skickas med. Nedan exempel för givare. DLLCallEx(hNewPopUpHandle, Objekt, iwnd, hwnd, ibsec, ibar, ipsec, ipar, ilsec, ilar, UteTemp); Argumenten motsvarar den bokstavskombination som angavs vid öppnande av länken. Gemensamma argument: Objekt objektnamnet iwnd fönsternummer huvudfönster Citect hwnd handtag/länk till huvudfönster Citect ibsec säkerhetsnivå börvärdesinställningar ibar areabehörighet börvärdesinställningar ipsec säkerhetsnivå parameterinställningar ipar areabehörighet parameterinställningar ilsec säkerhetsnivå larmkvittering ilar areabehörighet larmkvittering imsec säkerhetsnivå manöver imar areabehörighet manöver Övriga argument, se respektive Popuptyp. Sida 10 av 84
GivarPopup Popup visar mätvärden, börvärden, parameterinställningar, larmer samt åtkomst till regulator-popup och börvärdeskurv-popup om motsvarande taggar finns. Ingen symbol visas. Anrop återfinns i CiCode-funktion CiStd_Givare(). Öppnande av länk: hnewpopuphandle = DLLOpen(sCiStd_PopUpDllPath, "NewSensorPopUp", "ACJJJJJJJJC"); DLL-anrop: DLLCallEx(hNewPopUpHandle, Objekt, iwnd, hwnd, ibsec, ibar, ipsec, ipar, ilsec, ilar, UteTemp); Specifika argument: UteTemp variabel mätvärde för styrande givare vid börvärdeskurva IndikatorPopup Popup visar mätvärden, börvärden, parameterinställningar, larmer, manöverknappar, samt knapp för drifttidsåterställning om motsvarande taggar finns. Ingen symbol visas men text som anger status Till / Från. Anrop återfinns i CiCodefunktion CiStd_IndikatorPopUp(). Öppnande av länk: hnewpopuphandle = DLLOpen(sCiStd_PopUpDllPath, "NewObjectIndicatorPopUp", "ACJJCC"); DLL-anrop: DLLCallEx(hNewPopUpHandle, Objekt, iwnd, hwnd, "", Knapptexter); Specifika argument: variabel mätvärde för styrande givare vid börvärdeskurva, behöver ej fyllas i. Knapptexter här anges text på manöverknappar, ex Från, Till MätarPopup Popup visar mätvärden och larmer om motsvarande taggar finns. Ingen symbol visas. Anrop återfinns i CiCode-funktion CiStd_Matare(). Öppnande av länk: hnewpopuphandle = DLLOpen(sCiStd_PopUpDllPath, "NewSensorPopUp", "ACJJJJJJJJ"); DLL-anrop: DLLCallEx(hNewPopUpHandle, Objekt, iwnd, hwnd, ibsec, ibar, ipsec, ipar, ilsec, ilar); Sida 11 av 84
MotorPopup Popup visar mätvärden, börvärden, parameterinställningar, larmer, manöverknappar samt knapp för drifttidsåterställning om motsvarande taggar finns. Symbol med indikation till/från visas samt text som anger status Till / Från. Symbol som visas beror på valt typ av objekt. Anrop återfinns i CiCode-funktion CiStd_Motor(). Öppnande av länk: hnewpopuphandle = DLLOpen(sCiStd_PopUpDllPath, "NewMotorPopUp", "ACJJJJJJJJJJJJJ"); DLL-anrop: DLLCallEx(hNewPopUpHandle, Objekt, iwnd, hwnd, ityp, imantyp, imottyp, ibsec, ibar, ipsec, ipar, ilsec, ilar, imsec, imar); Specifika argument: ityp typ av objekt o Flakt o Pump o VVX imantyp anger manövertyp o Endast_MAN o MAN_&_ON imottyp anger motortyp o Normal o 2-Hast ParMotorPopup Popup visar mätvärden, börvärden, parameterinställningar, larmer, manöverknappar samt knapp för drifttidsåterställning om motsvarande taggar finns. Symbol med indikation till/från visas samt text som anger status Till / Från. I denna Popup skapas två flikar, en för motor A och en för motor B. Symbol som visas beror på valt typ av objekt.anrop återfinns i CiCode-funktion CiStd_Motor_par(). Öppnande av länk: hnewpopuphandle = DLLOpen(sCiStd_PopUpDllPath, "NewDualMotorPopUp", "ACCCJJJJJJJJJJJJJ"); DLL-anrop: DLLCallEx(hNewPopUpHandle, Objekt, ObjektA, ObjektB, iwnd, hwnd, ityp, imantyp, idrift, ibsec, ibar, ipsec, ipar, ilsec, ilar, imsec, imar); Specifika argument: ObjektA objektnamn objekt A, ex pump 1 = P1 ObjektB objektnamn objekt B, ex pump 2 = P2 ityp typ av objekt o Fläkt Sida 12 av 84
o o Pump VVX imantyp anger manövertyp o Endast_MAN o MAN_&_ON idrift anger om tvillingdrift används, Ja eller Nej Spjäll/VentilPopup Popup visar mätvärden, börvärden, parameterinställningar, larmer samt manöverknappar om motsvarande taggar finns. Symbol med indikation till/från visas samt text som anger status Till / Från. Symbol som visas beror på valt typ av objekt. Anrop återfinns i CiCode-funktion CiStd_sp_ven_don(). Öppnande av länk: hnewpopuphandle = DLLOpen(sCiStd_PopUpDllPath, "NewMotorPopUp", "ACJJJJJJJJJJJJJ"); DLL-anrop: DLLCallEx(hNewPopUpHandle, Objekt, iwnd, hwnd, ityp, imantyp, iventyp, ibsec, ibar, ipsec, ipar, ilsec, ilar, imsec, imar); Specifika argument: ityp typ av objekt o Spjall o Ventil imantyp anger manövertyp o Endast_MAN o MAN_&_ON o Endast_RSEL iventyp anger ventiltyp o 2v o 3v o Luftvarmare BrytarPopup Popup visar mätvärden, börvärden, parameterinställningar, larmer samt manöverknappar om motsvarande taggar finns. Brytarsymbol med indikation till/från samt inkopplad/urkopplad visas samt text som anger status Till / Från. Anrop återfinns i CiCode-funktion CiStd_Kraft_Brytare(). Öppnande av länk: hnewpopuphandle = DLLOpen(sCiStd_PopUpDllPath, "NewPowerSwitchPopUp", "ACJJ"); DLL-anrop: DLLCallEx(hNewPopUpHandle, Objekt, iwnd, hwnd); Sida 13 av 84
TransformatorPopUp Popup visar mätvärden, börvärden, parameterinställningar samt larmer om motsvarande taggar finns. Ingen symbol visas. Anrop återfinns i CiCode-funktion CiStd_Kraft_Trafo(). Öppnande av länk: hnewpopuphandle = DLLOpen(sCiStd_PopUpDllPath, "NewPowerTransformerPopUp", "ACJJ"); DLL-anrop: DLLCallEx(hNewPopUpHandle, Objekt, iwnd, hwnd); Sida 14 av 84
Popuper Popuper skapas i Runtime utifrån vilken typ av genie som har använts samt vilka taggar som finns knutna till objektet som angivits i denna genie. I runtime kan obegränsat antal Popuper öppnas utan att systemets prestanda påverkas. Flikhantering Vid skapandet av Popuper läggs manövrar, mätvärden, börvärden, parametrar etc på en flik som per default visas vid öppnande av Popupen. Denna flik kallas Info. Om det finns larmer knutna till objektet kommer ytterligare en flik att skapas, kallad Larm. Under denna flik kommer alla larmer samt eventuella fördröjningar/gränser att redovisas. Om ett larm är aktivt indikeras det genom att texten Larm på fliken blir röd. Dynamiskt skapande Utifrån de variabler som finns att tillgå i systemet gällande aktuellt objekt skapas Popupen. Det innebär att om det finns två mätvärden kopplade till objektet kommer Popupen att automatiskt redovisa dessa två på separata rader. Popupen byggs sedan på med börvärden, parametrar etc. Om manövertaggar finns kommer knappar automatiskt att skapas i Popuperna. Popupnamn Popupens namn, dvs det som redovisas på systemlisten, är detsamma som objektets namn men med underscore (_) ersatt med bindestreck (-). Inläsning av kommentarer i Popuper Vid skapandet av Popuper läses kommentarstext in från variabellistor och används som beskrivande text för aktuell rad i Popupen. Kommentar anges i variable.dbf under kolumn COMMENT. Manöver Om taggar för manöver återfinns i variabellistan skapas knappar för detta. Vilka taggändelser som gäller för manövrar definieras i konfigurationsfil, se kommande avsnitt. Reset Drifttid Om taggar för reset av drifttid återfinns i variabellistan skapas knappar för detta. Vilka taggändelser som gäller för reset av drifttid definieras i konfigurationsfil, se kommande avsnitt. Inställbara parametrar Inställbara parametrar redovisas med inmatningsfält innehållandes svart text mot vit bakgrund. För att editera värde finns följande alternativ: - Enkelt klick till höger om värde, detta gör att värdet markeras och nytt värde skrivs över med hjälp av siffertangenterna. Avsluta med <Enter>. Sida 15 av 84
- Enkelt klick till vänster om värde, detta medför att markören ställer sig före värdet och värdet kan editeras. Avsluta med <Enter>. - Dubbelklick, detta medför att en Popup med numeriskt tangentbord visas, där användaren genom musklick kan ange nytt värde följt av <OK>. Inmtningskontroller Vid ändringar i inmatningsfält kontrolleras det inmatade värdet mot den skalning den ändrade variabeln har i variabeldatabasen. Om berörd variabel exempelvis har skalning 0-100 måste det angivna värdet i inmatningsfältet ligga i det intervallet, annars visas en popup enligt nedan: Börvärdeskurvor Om taggar för börvärdeskurva återfinns i variabellistan skapas en knapp i Popupen med beskrivning från konfigurationsfil. Vilka taggändelser som gäller för kurvor definieras i konfigurationsfil, se kommande avsnitt. Vid klick på knappen genereras en ny Popup som redovisar börvärdeskurvan grafiskt. Regulatorer Om taggar för regulatorinställningar återfinns i variabellistan skapas en knapp i Popupen med texten Regulator. Vid klick på denna knapp genereras en ny Popup där samtliga regulatorinställningar redovisas. Säkerhet/behörighet Användaren ges behörighet att utföra olika åtgärder i Popuperna beroende på vilka behörighetsnivåer som definierats i konfigurationsfil i förhållande till den inloggade användarens behörigheter i Citect. Det innebär exempelvis att om en Citectanvändare endast har behörighet att Titta men ej att Manövrera, kommer eventuella knappar för manövrering att gråas bort i Popup. Felindikering i Popuper Om någon felaktighet upptäcks vid skapandet av Popupen indikeras detta genom att texten rödmarkeras. För att visa felmeddelande, högerklicka i Popuen och välj Visa Tag Info. Högerklick Vid högerklick i Popup ges ett antal alternativ Sida 16 av 84
Visa TagInfo Via högerklick Visa Tag Info i Popup ges möjlighet att se alla taggar som är knutna till aktuell Popup, samt en mängd information kring varje tag. Kolumner hämtas från variabeldatabaser. Även eventuella felaktigheter vid skapandet av Popupen redovisas här. Visa Operatörslogg Detta öppnar den till SQL knutna operatörsloggen, och filtrerar loggen utifrån aktuellt objekt. Om operatörsloggen ej är tillgänglig är detta var ej åtkomligt, vilket indikeras med grå text. Se vidare under avsnitt Operatörslogg. Dumpa Log Skriver aktuell buffer till loggfil. Se mer under Loggfil. Stäng Alla Fönster Detta val stänger alla öppna Popuper. Aktivera licens För att komma till aktivering, högerklicka på en popup och välj Aktivera licens. Detta val är dock ej möjligt från en klient, licens aktiveras istället från Trebor Remote Scada Server (R2S). Se separat instruktion för hantering av R2S. Sida 17 av 84
Konfigurationsfil I installationsmappen för Trebor Dynamics Ci återfinns en konfigurationsfil med namnet Trebor.DynamicsConfig.txt. I denna fil sker alla inställningar gällande det automatiska skapandet av Popuper, samt inställningar gällande Trebor Remote Scada Server (R2S). Se separat instruktion för hantering av R2S. Sektioner i konfigurationsfil Nedan följer instruktioner gällande samtliga sektioner i konfigurationsfilen. [R2S] I denna sektion görs inställningar gällande kommunikation med Trebor Remote Scada Server på formen: [Lan]Node, PollningsInterval(ms), R2SAddress1, R2SAddress2... LanNode ska vara samma som [Lan]Node parametern i Citect.ini filen på den klient/server där Trebor Dynamics ska köras. PollningsInterval definierar hur ofta R2S servern ska pollas. R2SAddress anger valfritt antal R2S-servrar som ska anslutas. Om det inte går att ansluta mot den första försöker den att ansluta mot nästa, etc. [SqlParameters] I denna sektion definieras anslutning mot eventuell SQL-server. Anslutningssträngen är en hel SQL Connection String. Exempel: Server=myServerAddress;Database=myDataBase;User Id=myUsername;Password=myPassword; [ScadaIndicationTags] I denna sektion anges vilka ändelser som ska agera indikatorer i Popuperna. Dessa styr hur symbolen i Popupen visas. Om Popupen exempelvis är av typen fläkt och innehåller en fläktsymbol, kommer denna symbol att bli grön då villkoret för indikatorn är uppfylld. I Popupen visas även en statustext Till eller Från som är beroende av dessa ändelser. Parametrar i denna sektion anges på formen: _ändelse, värde, inverterad Observera att parametrarna i denna sektion är hiererkiska, dvs om ett objekt har mer än en ändelse om agerar indikator kommer den ändelse som hittas först i denna sektion att gälla först. Ex: _IT, 1, false I ovan fall kommer ändelsen _IT att agera som indikator, då taggvärdet är 1 är indikatorn till, ej inverterad. Invertering är tillämpligt exempelvis på en signal stängd. Sida 18 av 84
[ScadaMvTags] I denna sektion anges vilka ändelser som ska agera mätvärden. Dessa redovisas med blå färg i Popuperna och är ej skrivbara. [ScadaDigitalManTags] I denna sektion anges vilka ändelser som ska agera digitala manövertaggar. [ScadaAnalogManTags] I denna sektion anges vilka ändelser som ska agera analoga manövertaggar. [ScadaAlarmTags] I denna sektion anges vilka ändelser som ska agera larmer. De ändelser som anges här redovisas på separat flik Larm i Popuperna. [ScadaAlarmDelayTags] I denna sektion anges vilka ändelser som ska agera larmfördröjningar. De ändelser som anges här redovisas tillsammans med sitt larm på flik Larm i Popuperna. Observera att ändelsen för fördröjning läggs till efter ändelsen för larmer i taggstrukturen. [ScadaAlarmLimitTags] I denna sektion anges vilka ändelser som ska agera larmgränser. De ändelser som anges här redovisas tillsammans med sitt larm på flik Larm i Popuperna. Observera att ändelsen för larmgräns läggs till efter ändelsen för larmer i taggstrukturen. [ScadaBbTags] I denna sektion anges vilka ändelser som ska agera beräknade börvärden. Dessa redovisas med magenta färg i Popuperna och är ej skrivbara. [ScadaBvTags] I denna sektion anges vilka ändelser som ska agera börvärden. Dessa redovisas med magenta färg i Popuperna och är skrivbara. Här finns även möjlighet att ange om en indikeringstagg ska användas för indikering av aktivt börvärde i Popuperna. Parametrar anges i så fall på formen: _ändelse, _indikeringsändelse Ex: _BVL, _ITL I ovan fall kommer ändelsen _BVL att agera börvärde, och om det finns en ändelse _ITL kommer Popupen att indikera grönt på rad _BVL då _ITL är hög. Indikeringsändelsen är frivillig och kan utelämnas. [ScadaChartTags] I denna sektion anges vilka ändelser som ska agera kurvvärden. Parametrar anges här i följd på formen: _ändelsex, _ändelsey, ändelsebokstav, _indikeringsändelse, kurvnamn, _parameter1,_ parameter2,... Sida 19 av 84
Ex: _X, _Y,,, BV-kurva, _MIN,_MAX I ovan fall kommer alla ändelser som börjar på _X, dvs _X1, _X2 etc att betraktas som X-värden vid skapande av en börvärdeskurva. Observera att det måste finna lika många X- och Y-värden definierade i tagglistan. Kurvnamnet definierar vad som ska stå på knappen för denna kurvan samt vad som ska visas i kurvediteringsfönstret I ovan exempel har två parametrar utelämnats. Den första används om en siffra behöver användas i ändelse följt av en eller flera bokstäver, den andra används som indikeringsändelse för att på knapp i Popup indikera vilken kurva som är aktiv. Ex: _X, _Y, E, _ITE, Event-kurva I ovan fall kommer ändelser på formen ex _X och E => (_X1E, _X12E...) att agera X- värden i kurvan, motsvarande för Y-värden. Om det finns en ändelse _ITE kommer Popupen att indikera grönt på knapp Event-kurva. I ovan fall kommer variablerna objektnamn _MIN och objeknamn_max kommer att visas som vanliga parametrar i börvärdespopupen. [ChartColorDefines] I denna sektion kan färger i börvärdeskurvor definieras. Färgerna anges enligt följande exempel: Color0, Lime Color1, Red Color2, Blue Där Color0 motsvarar Börvärde, Color1 motsvarar Beräknat Börvärde och Color 2 motsvarar Mätvärde. Lime, Red, Blue etc motsvaras av valfri färg från palett System.Drawing.Color. Om inget anges i denna sketion används en default inbyggd palett. [GeneralParameters] Om parameter HideNotesAndCauseButtons finns i denna sektion döljs knappar Anteckningar och Orsak i alarminfofönstret. [ScadaParamTags] I denna sektion anges vilka ändelser som ska agera parametrar. Dessa redovisas med svart text i Popuperna och är skrivbara. [ScadaCpTags] I denna sektion anges vilka ändelser som ska agera regulatorparametrar. Om det finns taggar som motsvarar dessa ändelser skapas en knapp i Popupen Regulator som i sin tur tänder en ny Popup med alla regulatorinställningar. Dessa redovisas med svart text i Popuperna och är skrivbara. Sida 20 av 84
[ScadaLowMotorTags] I denna sektion anges vilka ändelser som ska agera indikatorer för låg hastighet på motorer. Ex: _ITL Symbol i Popup ändrar statussymbol låg då taggvärdet på tagg med ändelse _ITL ändras. [ScadaHighMotorTags] I denna sektion anges vilka ändelser som ska agera indikatorer för hög hastighet på motorer. Ex: _ITH Symbol i Popup ändrar statussymbol låg då taggvärdet på tagg med ändelse _ITH ändras. [ScadaMotorFreqConvTags] I denna sektion anges vilka ändelser som ska indikera att ett objekt är frekvensstyrt. Om tagg med motsvarande ändelse finns kommer en frekvesstyrd symbol att visas i Popupen. [ScadaMotorResetTags] I denna sektion anges vilka ändelser som ska agera återställning av drifttider. Om taggar med motsvarande ändelser finns kommer knapper Reset att skapas i Popupen. [ScadaPrivileges] Parametrar i denna sektion defininerar värden för olika privilegier/areor gällande behörighet (översättningstabell) på följande form: parameternamn privilegie, värde, parameternamn area, värde Ex: PrivMan, 4, ManArea, 0 I ovan exempel sätts värdet av privilegiet Manöver till 4, dvs om inloggad användare i systemet har behörighet 4 eller högre har denne manövermöjlighet i Popuperna. Observera att dessa parametrar endast används om inget anges vid insättning av genies, se vidare i kommande avsnitt. Sida 21 av 84
Loggfil En loggfil förs över inträffade händelser i Trebor Dynamics Ci. Logg filen heter Trebor.DynamicsLog.txt och återfinns i C:\ProgramData\Trebor Automation AB\Trebor.Dynamics. Exempelvis skrivs meddelande om vilken konfigurationsfil som lästs in vid vilket klockslag. Vid inträffade fel i Trebor Dynamics Ci skrivs detta till en buffer, exempelvis information om taggar som saknas. Alla meddelanden i textfilen börjar med klockslag följt av felmeddelandet. Loggfilen uppdateras varje gång en händelse inträffar alternativt vid nedstängning av Runtime. Det är även möjligt att närsomhelst framtvinga skriving genom valet Dumpa Log från valfri Popup. Sida 22 av 84
Felsökning Problem: Felmeddelande vid installation 1 Vid installation kan meddelande om fel version av Microsoft.NET dyka upp. Applikationen kräver.net 4.0 eller senare. Lösning: Kör den medföljande installtionsfilen dotnetfx40_full_x86_x64.exe och följ instruktionerna på skärmen. Efter installation, kör installationsfilen för Trebor Dynamics Ci igen. Problem: Felmeddelande vid installation 2 Vid installation i Windows XP kan installationen komma att avbrytas om VisualBasic PowerPacks saknas. Ett felmeddelande dyker då upp som beskriver just detta, och kräver en uppdatering av systemet. Lösning: Kör den medföljande installationsfilen VisualBasicPowerPacksSetup.exe och följ instruktionerna på skärmen. Efter installation, kör installationsfilen för Trebor Dynamics Ci igen. Problem: Popup visar ej samtliga värden/larmer Värden eller larmer visas ej i Popup trots att variabler finns. Lösning Tillse att taggstrukturen överensstämmer med objektet som angetts vid insättning av genie. Tillse även att taggändelsen återfinns under korrekt sektion i konfigurationsfil. Problem: Popup indikerar felaktighet Texten längst ned i Popup rödmarkeras. Lösning För att se felmeddelande, högerklicka i Popup följt av Visa Tag Info. Varningen ges vanligen om förväntade taggar ej lyckas laddas, exempelvis om en larmtagg återfinns i variabeldatabasen men ej i larmdatabasen. Problem: Popup indikerar felaktighetet trots att variabellistor är korrekta Popup indikerar att felaktigheter finns. Lösning: Tillse att Trebor Remote Scada Server (R2S) har laddat färdigt alla taggar. Se separat instruktion. Problem: Popup indikerar Trial Texten Trail visas längst ned i Popup. Lösning Aktivera licens, se avsnitt Aktivera licens. Sida 23 av 84
Bilaga 1 Popuper VVS Följande exempel är byggda på en taggstruktur enligt följande: Hus_Trapphus_Huvudsystem_System_Objekt Samtliga fritexter i Popuperna är hämtade från variabeldatabasens kolumn COMMENT. Givare Nedan redovisas infoflik samt larmflik för en givare. I detta fall har även en knapp för regulatorstatus autogenererats. Sida 24 av 84
Regulator Börvärdeskurva Nedan redovisas infoflik för givare där automatgenererad knapp för börvärdeskurva är synlig. Nedan redovisas börvärdeskurvan. Beräknat börvärde redovisas med en rosa stjärna, aktuellt mätvärde med en röd stjärna. Dessa färger är inställbara, se avsnitt ChartColorDefines under Konfigurationsfil. Sida 25 av 84
Spjäll Nedan redovisas infoflik samt larmflik för ett spjäll. Sida 26 av 84
Pump Nedan redovisas infoflik samt larmflik för en frekvensstyrd pump. Sida 27 av 84
Fläkt Nedan redovisas infoflik samt larmflik för en frekvensstyrd fläkt. Sida 28 av 84
Ventil Nedan redovisas infoflik för en ventil. I detta fall finns inga larmer knutna till objektet varför ingen larmflik visas. Sida 29 av 84
Värmeväxlare Nedan redovisas infoflik samt larmflik för en värmeväxlare. Sida 30 av 84
Tag Info Nedan redovisas Tag Info för en givare. Samtliga taggar knutna till objektet syns, inklusive dess värde samt egenskaper. I nedan exempel redovisas ej samtliga kolumner, vilket indikeras med en scrollist. Tillgång till Tag Info ges genom högerklick i Popup. Sida 31 av 84
Operatörslogg Nedan visas ett exempel på operatörslogg, filtrerad på aktuellt objekt. Tillgång till operatörsloggen ges genom högerklick i Popup. Sida 32 av 84
Felindikering Nedan visas en givarpopup där en felindikering visas. Nedan visas Tag Info för samma givare, där felmeddelandet visas. I detta återfinns en larmtagg i variabeldatabasen men ej i larmdatabasen. Tillgång till Tag Info ges genom högerklick i Popup. Sida 33 av 84
Bilaga 2 Genies VVS Följande exempel är byggda på en taggstruktur enligt följande: Hus_Trapphus_Huvudsystem_System_Objekt Övergripande inställningar Det finns ett antal inställningar som är gemensamma för så gott som alla medföljande genies. Observera att om säkerhetsinställningar utelämnas används de inställningar som gjorts i konfigurationsfil under sektion [ScadaPrivileges]. Objekt Här anges objektet i fråga utifrån den taggstruktur som används. Säkerhetsnivå Börvärde Här anges vilken behörighetsnivå användaren behöver ha för att få tillgång till börvärdesinställningar i Popupen. I exemplen används en label som motsvarar en siffra. Börvärdesarea Här anges vilken arena användaren behöver ha för att få tillgång till börvärdesinställningar i Popupen. I exemplen används en label som motsvarar en siffra. Säkerhetsnivå Parameter Här anges vilken behörighetsnivå användaren behöver ha för att få tillgång till parameterinställningar i Popupen. I exemplen används en label som motsvarar en siffra. Parameterarea Här anges vilken arena användaren behöver ha för att få tillgång till parameterinställningar i Popupen. I exemplen används en label som motsvarar en siffra. Säkerhetsnivå Larm Här anges vilken behörighetsnivå användaren behöver ha för att få tillgång till larminställningar i Popupen. I exemplen används en label som motsvarar en siffra. Larmarea Här anges vilken arena användaren behöver ha för att få tillgång till larminställningar i Popupen. I exemplen används en label som motsvarar en siffra. Säkerhetsnivå Manöver Här anges vilken behörighetsnivå användaren behöver ha för att få tillgång till manövermöjlighet i Popupen. I exemplen används en label som motsvarar en siffra. Manöverarea Här anges vilken arena användaren behöver ha för att få tillgång till manövermöjlighet i Popupen. I exemplen används en label som motsvarar en siffra. Sida 34 av 84
Manövertyp Här finns ett antal inställningar för olika manövertyper. Motortyp Här finns valmöjlighet mellan normal samt tvåhastighets motor. Givare Nedan redovisas genie form med all inmatning som behöver göras för en standardgivare. Specifika inställningar för givare görs om en börvärdeskurva ska användas. Styrande mätvärde utegivare anges då, inklusive mätvärdesändelse. Antal brytpunkter kan utelämnas då börvärdeskurvan genereras automatiskt utefter antal giltiga taggar i variabeldatabasen. Sida 35 av 84
Spjäll Nedan redovisas genie form med all inmatning som behöver göras för ett standardspjäll. Pump Nedan redovisas genie form med all inmatning som behöver göras för en frekvensstyrd standardpump. Sida 36 av 84
Fläkt Nedan redovisas genie form med all inmatning som behöver göras för en frekvensstyrd standardfläkt. Ventil Nedan redovisas genie form med all inmatning som behöver göras för en standard tvåvägsventil. Sida 37 av 84
Värmeväxlare Nedan redovisas genie form med all inmatning som behöver göras för en standardvärmeväxlare. Sida 38 av 84
Bilaga 3 Popuper Elkraft Följande exempel är byggda på en taggstruktur enligt följande: Hus_Trapphus_Huvudsystem_System_Objekt Samtliga fritexter i Popuperna är hämtade från variabeldatabasens kolumn COMMENT. Brytare Nedan redovisas infoflik samt larmflik för en brytare utan manövertaggar. Sida 39 av 84
Nedan redovisas infoflik samt larmflik för en brytare med manövertaggar, där maöverknappar har autogenererats. Observera att en kontrollfråga alltid ges vid klick på manöverknappar. Sida 40 av 84
Jordningskopplare Ingen Popup skapas för jordningskopplare, endast indikering till/från på grafiksida enligt nedan. Sida 41 av 84
Transformator Nedan redovisas infoflik samt larmflik för en transformator. Sida 42 av 84
Bilaga 4 Genies Elkraft Följande exempel är byggda på en taggstruktur enligt följande: Hus_Trapphus_Huvudsystem_System_Objekt Övergripande inställningar Det finns ett antal inställningar som är gemensamma för så gott som alla medföljande genies. Se Bilaga 2 för sammanfattning. Brytare Nedan redovisas genie form med all inmatning som behöver göras för en standard brytare. Jordningskopplare Nedan redovisas genie form med all inmatning som behöver göras för en standard jordningskopplare. Sida 43 av 84
Transformator Nedan redovisas genie form med all inmatning som behöver göras för en standard transformator. Sida 44 av 84
Bilaga 5 Trebor.DynamicsAPI This is the API for Trebor.Dynamics. Use this to create, configure and show PopUpForms from any third party software. Please note! Use "CallingConvention = CallingConvention.Cdecl" when calling this dll from C# or other languages! The standard PopUpForms can be created, configured and showed with one single call. They may also be first created, then customized by setting the different properties in individual calls before finally being showed. Ex1 - Using the standard SensorPopUpForm: result = NewSensorPopUp("A_A_VVS_LB01_GT11", 0, 23876, 0, 1, 2, 3, 4, 5, "A_A_VVS_LB01_GT41_MV"); Ex2 - Using the separate calls to customize the PopUpForm: result = NewPopUpForm("A_A_VVS_LB01_GT11", 0, 23876, 12); result = SetControllingSensorTagName("A_A_VVS_LB01_GT11", "A_A_VVS_LB01_GT41_MV"); result = SetBvPrivArea("A_A_VVS_LB01_GT11", 0, 1); result = SetParamPrivArea("A_A_VVS_LB01_GT11", 2, 3); result = SetAlarmPrivArea("A_A_VVS_LB01_GT11", 4, 5); result = ShowPopUpForm("A_A_VVS_LB01_GT11"); Sida 45 av 84
InitDll Initializes the dll, depreciated. bool InitDll(int scadamainwindownumber, int parentmainwindowhandle) scadamainwindownumber - Number of the Scada systems main window. parentmainwindowhandle - Windows handle to the parentforms main window. BackgroundConnect Citect specific function. Use following CiCode to speed up the first opened PopUp. CiCode Example INT backgroundconnect = DLLOpen(sCiStd_PopUpDllPath, "BackgroundConnect", "AJJ"); IF backgroundconnect <> -1 THEN DLLCallEx(backgroundConnect, iwin, hwnd); END Where scistd_popupdllpath is the path to where the Trebor.DynamicsApi.dll is located. Sida 46 av 84
NewSensorPopUp Creates and pops a new sensor popup. bool NewSensorPopUp(const char* name, int scadamainwindownumber, int parentmainwindowhandle, int bvprivilege, int bvarea, int paramprivilege, int paramarea, int alarmprivilege, int alarmarea, const char* controlingsensortagname) name - The name of the Object to show, this will also be the name of the PopUpForm. scadamainwindownumber - Number of the Scada systems main window. parentmainwindowhandle - Windows handle to the parentforms main window. bvprivilege - The required privilege for Bv values. bvarea - The required area for Bv values. paramprivilege - The required privilege for parameters. paramarea - The required area for parameters. alarmprivilege - The required privilege for alarms. alarmarea - The required area for alarms. controlingsensortagname - Name of ScadaTag that represents the X-value for the Chart.IndicatorTag. Sida 47 av 84
CiCode Example FUNCTION SensorPopUp(STRING Objekt, STRING BSec, STRING BAr, STRING PSec, STRING PAr, STRING LSec, STRING LAr, STRING UteTemp, STRING Brp) INT hnewpopuphandle, ipopupaddok, hwnd, iwnd, ibsec, ibar, ipsec, ipar, ilsec, ilar; // Get the handle to the current Citect window, mainwindow hwnd = WinGetWndHnd(); // Get the handle to the current Citect window, mainwindow iwnd = WinNumber(); // Convert the security strings to its int parameter ibsec = StrToInt(ParameterGet("UserSec", BSec, "0")); ibar = StrToInt(ParameterGet("UserSec", BAr, "0")); ipsec = StrToInt(ParameterGet("UserSec", PSec, "0")); ipar = StrToInt(ParameterGet("UserSec", PAr, "0")); ilsec = StrToInt(ParameterGet("UserSec", LSec, "0")); ilar = StrToInt(ParameterGet("UserSec", LAr, "0")); // Create the handles to the dll funtions hnewpopuphandle = DLLOpen(sCiStd_PopUpDllPath, "NewSensorPopUp", "ACJJJJJJJJC"); // Use the new popups if the dll was found, else use standard Citect popups IF hnewpopuphandle <> -1 THEN // Call the dll function ipopupaddok = DLLCallEx(hNewPopUpHandle, Objekt, iwnd, hwnd, ibsec, ibar, ipsec, ipar, ilsec, ilar, UteTemp); END // Close the dll handle DLLClose (hnewpopuphandle); END Sida 48 av 84
NewRegulatorPopUp Creates and pops a new regulator popup. bool NewRegulatorPopUp(const char* name, int scadamainwindownumber, int parentmainwindowhandle) name - The name of the Object to show, this will also be the name of the PopUpForm. scadamainwindownumber - Number of the Scada systems main window. parentmainwindowhandle - Windows handle to the parentforms main window. Sida 49 av 84
NewMotorPopUp Creates and pops a new motor popup. The valid values for motortype are: Fan = 1, Pump = 2, HeatExchanger = 3, Damper = 4, Valve = 5. bool NewMotorPopUp(const char* name, int scadamainwindownumber, int parentmainwindowhandle, int motortype, int mantype, int motorspeedtype, int bvprivilege, int bvarea, int paramprivilege, int paramarea, int alarmprivilege, int alarmarea, int manprivilege, int manarea ) name - The name of the Object to show, this will also be the name of the PopUpForm. scadamainwindownumber - Number of the Scada systems main window. parentmainwindowhandle - Windows handle to the parentforms main window. motortype - Type of motor to show. mantype - Obsolete. motorspeedtype - Obsolete. bvprivilege - The required privilege for Bv values. bvarea - The required area for Bv values. paramprivilege - The required privilege for parameters. paramarea - The required area for parameters. alarmprivilege - The required privilege for alarms. alarmarea - The required area for alarms. manprivilege - The required privilege for manouvers. manarea - The required area for manouvers. Sida 50 av 84
CiCode Example FUNCTION MotorPopUp(STRING Objekt, STRING BSec, STRING BAr, STRING PSec, STRING PAr, STRING LSec, STRING LAr,STRING MSec, STRING MAr, STRING Typ, STRING ManTyp, STRING MotTyp); INT ityp, imantyp, idrift, imottyp; INT hnewpopuphandle, ipopupaddok, hwnd, iwnd, ibsec, ibar, ipsec, ipar, ilsec, ilar, imsec, imar; IF Typ="Flakt" THEN ityp = 1; END IF Typ="Pump" THEN ityp = 2; END IF Typ="VVX" THEN ityp = 3; END Sida 51 av 84
IF ManTyp = "Endast_MAN" THEN imantyp = 1; END IF ManTyp = "MAN_&_ON" THEN imantyp = 2; END IF MotTyp = "Normal" THEN imottyp = 1; END IF MotTyp = "2-Hast" THEN imottyp = 2; END // Get the handle to the current Citect window, mainwindow hwnd = WinGetWndHnd(); // Get the handle to the current Citect window, mainwindow iwnd = WinNumber(); // Convert the security strings to its int parameter ibsec = StrToInt(ParameterGet("UserSec", BSec, "0")); ibar = StrToInt(ParameterGet("UserSec", BAr, "0")); ipsec = StrToInt(ParameterGet("UserSec", PSec, "0")); ipar = StrToInt(ParameterGet("UserSec", PAr, "0")); ilsec = StrToInt(ParameterGet("UserSec", LSec, "0")); ilar = StrToInt(ParameterGet("UserSec", LAr, "0")); imsec = StrToInt(ParameterGet("UserSec", MSec, "0")); imar = StrToInt(ParameterGet("UserSec", MAr, "0")); // Create the handles to the dll funtions hnewpopuphandle = DLLOpen(sCiStd_PopUpDllPath, "NewMotorPopUp", "ACJJJJJJJJJJJJJ"); // Call the dll function ipopupaddok = DLLCallEx(hNewPopUpHandle, Objekt, iwnd, hwnd, ityp, imantyp, imottyp, ibsec, ibar, ipsec, ipar, ilsec, ilar, imsec, imar); END // Close the dll handle DLLClose (hnewpopuphandle); Sida 52 av 84
NewDualMotorPopUp Creates and pops a new dualmotor popup. The tags must start with "basename" + "_" + "motoraname", "basename" + "_" + "motorbname" or "basename" + "_" + "motoraname" + "motorbname". Ex: basename = A_B_VVS_KS11, motoraname = "P01", motorbname = "P02", tags start with "A_B_VVS_KS11_P01", "A_B_VVS_KS11_P02" or A_B_VVS_KS11_P01P02". bool NewDualMotorPopUp(const char* basename, const char* motoraname, const char* motorbname, int scadamainwindownumber, int parentmainwindowhandle, int motortype, int mantype, int dualmotortype, int bvprivilege, int bvarea, int paramprivilege, int paramarea, int alarmprivilege, int alarmarea, int manprivilege, int manarea) basename - The basename of the Object to show, this will also be the name of the PopUpForm. motoraname - The extention for the A motor name. motorbname - The extention for the B motor name. scadamainwindownumber - Number of the Scada systems main window. parentmainwindowhandle - Windows handle to the parentforms main window. motortype - Type of motor to show. Same as NewMotorPopUp. mantype - Obsolete. dualmotortype - Obsolete. bvprivilege - The required privilege for Bv values. bvarea - The required area for Bv values. paramprivilege - The required privilege for parameters. paramarea - The required area for parameters. alarmprivilege - The required privilege for alarms. alarmarea - The required area for alarms. manprivilege - The required privilege for manouvers. manarea - The required area for manouvers. Sida 53 av 84
Sida 54 av 84
CiCode Example FUNCTION DualMotorPopUp(STRING Objekt, STRING ObjektA, STRING ObjektB, STRING BSec, STRING BAr, STRING PSec, STRING PAr, STRING LSec, STRING LAr,STRING MSec, STRING MAr, STRING Typ, STRING Drift, STRING ManTyp); INT ityp, imantyp, idrift; INT hnewpopuphandle, ipopupaddok, hwnd, iwnd, ibsec, ibar, ipsec, ipar, ilsec, ilar, imsec, imar; IF Typ="Flakt" THEN ityp = 1; END IF Typ="Pump" THEN ityp = 2; END IF ManTyp = "Endast_MAN" THEN imantyp = 1; END IF ManTyp = "MAN_&_ON" THEN imantyp = 2; END IF Drift <> "" THEN idrift = 2; ELSE idrift = 1; END // Get the handle to the current Citect window, mainwindow hwnd = WinGetWndHnd(); // Get the handle to the current Citect window, mainwindow iwnd = WinNumber(); // Convert the security strings to its int parameter ibsec = StrToInt(ParameterGet("UserSec", BSec, "0")); ibar = StrToInt(ParameterGet("UserSec", BAr, "0")); ipsec = StrToInt(ParameterGet("UserSec", PSec, "0")); ipar = StrToInt(ParameterGet("UserSec", PAr, "0")); ilsec = StrToInt(ParameterGet("UserSec", LSec, "0")); ilar = StrToInt(ParameterGet("UserSec", LAr, "0")); imsec = StrToInt(ParameterGet("UserSec", MSec, "0")); imar = StrToInt(ParameterGet("UserSec", MAr, "0")); // Create the handles to the dll funtions hnewpopuphandle = DLLOpen(sCiStd_PopUpDllPath, "NewDualMotorPopUp", "ACCCJJJJJJJJJJJJJ"); // Call the dll function ipopupaddok = DLLCallEx(hNewPopUpHandle, Objekt, ObjektA, ObjektB, iwnd, hwnd, ityp, imantyp, idrift, ibsec, ibar, ipsec, ipar, ilsec, ilar, imsec, imar); // Close the dll handle DLLClose (hnewpopuphandle); END Sida 55 av 84
NewPowerSwitchPopUp Creates and pops a new powerswitch popup. bool NewPowerSwitchPopUp(const char* name, int scadamainwindownumber, int parentmainwindowhandle) name - The name of the Object to show, this will also be the name of the PopUpForm. scadamainwindownumber - Number of the Scada systems main window. parentmainwindowhandle - Windows handle to the parentforms main window. Sida 56 av 84
CiCode Example FUNCTION TransformerPopUp(STRING Objekt) INT ipopupaddok, iwnd, hwnd, hnewpopuphandle; // Get the handle to the current Citect window, mainwindow hwnd = WinGetWndHnd(); // Get the handle to the current Citect window, mainwindow iwnd = WinNumber(); // Create the handles to the dll funtions hnewpopuphandle = DLLOpen(sCiStd_PopUpDllPath, "NewPowerSwitchPopUp", "ACJJ"); IF hnewpopuphandle <> -1 THEN // Call the dll function ipopupaddok = DLLCallEx(hNewPopUpHandle, Objekt, iwnd, hwnd); END END // Close the dll handle DLLClose (hnewpopuphandle); Sida 57 av 84
NewPowerTransformerPopUp Creates and pops a new powertranformer popup. bool NewPowerTransformerPopUp(const char* name, int scadamainwindownumber, int parentmainwindowhandle) name - The name of the Object to show, this will also be the name of the PopUpForm. scadamainwindownumber - Number of the Scada systems main window. parentmainwindowhandle - Windows handle to the parentforms main window. CiCode Example FUNCTION TransformerPopUp(STRING Objekt) INT ipopupaddok, iwnd, hwnd, hnewpopuphandle; // Get the handle to the current Citect window, mainwindow hwnd = WinGetWndHnd(); // Get the handle to the current Citect window, mainwindow iwnd = WinNumber(); // Create the handles to the dll funtions hnewpopuphandle = DLLOpen(sCiStd_PopUpDllPath, "NewPowerTransformerPopUp", "ACJJ"); IF hnewpopuphandle <> -1 THEN // Call the dll function ipopupaddok = DLLCallEx(hNewPopUpHandle, Objekt, iwnd, hwnd); END END // Close the dll handle DLLClose (hnewpopuphandle); Sida 58 av 84
NewLightsPopUp Creates and pops a new lights popup. bool NewLightsPopUp(const char* name, int scadamainwindownumber, int parentmainwindowhandle) name - The name of the Object to show, this will also be the name of the PopUpForm. scadamainwindownumber - Number of the Scada systems main window. parentmainwindowhandle - Windows handle to the parentforms main window. Sida 59 av 84
CiCode Example FUNCTION LightsPopUp(STRING Objekt, STRING Knapptexter) INT ipopupaddok, iwnd, hwnd, hnewpopuphandle; // Get the handle to the current Citect window, mainwindow hwnd = WinGetWndHnd(); // Get the handle to the current Citect window, mainwindow iwnd = WinNumber(); // Create the handles to the dll funtions hnewpopuphandle = DLLOpen(sCiStd_PopUpDllPath, "NewLightsPopUp", "ACJJCC"); IF hnewpopuphandle <> -1 THEN // Call the dll function ipopupaddok = DLLCallEx(hNewPopUpHandle, Objekt, iwnd, hwnd, "", Knapptexter); END // Close the dll handle DLLClose (hnewpopuphandle); // Else use standard PopUps //END END Sida 60 av 84
NewLightsOnOffPopUp Creates and pops a new lights popup with only On/Off buttons. bool NewLightsOnOffPopUp(const char* name, int scadamainwindownumber, int parentmainwindowhandle) name - The name of the Object to show, this will also be the name of the PopUpForm. scadamainwindownumber - Number of the Scada systems main window. parentmainwindowhandle - Windows handle to the parentforms main window. Sida 61 av 84
CiCode Example FUNCTION LightsOnOffPopUp(STRING Objekt, STRING Knapptexter) INT ipopupaddok, iwnd, hwnd, hnewpopuphandle; // Get the handle to the current Citect window, mainwindow hwnd = WinGetWndHnd(); // Get the handle to the current Citect window, mainwindow iwnd = WinNumber(); // Create the handles to the dll funtions hnewpopuphandle = DLLOpen(sCiStd_PopUpDllPath, "NewLightsOnOffPopUp", "ACJJCC"); IF hnewpopuphandle <> -1 THEN // Call the dll function ipopupaddok = DLLCallEx(hNewPopUpHandle, Objekt, iwnd, hwnd, "", Knapptexter); END // Close the dll handle DLLClose (hnewpopuphandle); END Sida 62 av 84
NewLightsMomentaryOnOffPopUp Creates and pops a new lights popup with only Momentary type On/Off buttons. bool NewLightsMomentaryOnOffPopUp(const char* name, int scadamainwindownumber, int parentmainwindowhandle, const char* controlingsensortagname, const char* manualbuttonnames) name - The name of the Object to show, this will also be the name of the PopUpForm. scadamainwindownumber - Number of the Scada systems main window. parentmainwindowhandle - Windows handle to the parentforms main window. controllingsensortagname - Name of ScadaTag that represents the X-value for the Chart.IndicatorTag. manualbuttonnames - Names of the Digital Manual buttons, a comma seperated string. Sida 63 av 84
CiCode Example FUNCTION LightsMomentaryOnOffPopUp(STRING Objekt, STRING Knapptexter) INT ipopupaddok, iwnd, hwnd, hnewpopuphandle; // Get the handle to the current Citect window, mainwindow hwnd = WinGetWndHnd(); // Get the handle to the current Citect window, mainwindow iwnd = WinNumber(); // Create the handles to the dll funtions hnewpopuphandle = DLLOpen(sCiStd_PopUpDllPath, "NewLightsMomentaryOnOffPopUp", "ACJJCC"); IF hnewpopuphandle <> -1 THEN // Call the dll function ipopupaddok = DLLCallEx(hNewPopUpHandle, Objekt, iwnd, hwnd, "", Knapptexter); END END // Close the dll handle DLLClose (hnewpopuphandle); Sida 64 av 84
NewObjectIndicatorPopUp Creates and pops a new ObjectIndicator popup. bool NewObjectIndicatorPopUp(const char* name, int scadamainwindownumber, int parentmainwindowhandle, const char* controlingsensortagname, const char* manualbuttonnames) name - The name of the Object to show, this will also be the name of the PopUpForm. scadamainwindownumber - Number of the Scada systems main window. parentmainwindowhandle - Windows handle to the parentforms main window. controllingsensortagname - Name of ScadaTag that represents the X-value for the Chart.IndicatorTag. manualbuttonnames - Names of the Digital Manual buttons, a comma seperated string. Sida 65 av 84
CiCode Example FUNCTION ObjectIndicatorPopUp(STRING Objekt, STRING BSec, STRING BAr, STRING PSec, STRING PAr, STRING LSec, STRING LAr, STRING MSec, STRING MAr) 0; INT hwnd = 0, iwnd = 0, hnewpopuphandle = 0, ipopupaddok = INT ibsec, ibar, ipsec, ipar, ilsec, ilar, imsec, imar; // Get the handle to the current Citect window, mainwindow hwnd = WinGetWndHnd(); // Get the handle to the current Citect window, mainwindow iwnd = WinNumber(); // Convert the security strings to its int parameter ibsec = StrToInt(ParameterGet("UserSec", BSec, "0")); ibar = StrToInt(ParameterGet("UserSec", BAr, "0")); ipsec = StrToInt(ParameterGet("UserSec", PSec, "0")); ipar = StrToInt(ParameterGet("UserSec", PAr, "0")); ilsec = StrToInt(ParameterGet("UserSec", LSec, "0")); ilar = StrToInt(ParameterGet("UserSec", LAr, "0")); imsec = StrToInt(ParameterGet("UserSec", MSec, "0")); imar = StrToInt(ParameterGet("UserSec", MAr, "0")); // Path to PopUp symbol STRING SymbolPath = PathToStr("[User]:\Symbol.tvf"); // Create the handles to the dll funtions hnewpopuphandle = DLLOpen(sCiStd_PopUpDllPath, "NewPopUpForm", "ACJJJ"); IF hnewpopuphandle <> -1 THEN // Call the dll functions // Object Indicator PopUp ipopupaddok = DLLCallEx(hNewPopUpHandle, Objekt, iwnd, hwnd, 13); hnewpopuphandle = DLLOpen(sCiStd_PopUpDllPath, "SetObjectIndicatorSymbolFileName", "ACC"); ipopupaddok = DLLCallEx(hNewPopUpHandle, Objekt, SymbolPath); hnewpopuphandle = DLLOpen(sCiStd_PopUpDllPath, "SetConfirmManouver", "ACJ"); ipopupaddok = DLLCallEx(hNewPopUpHandle, Objekt, 1); hnewpopuphandle = DLLOpen(sCiStd_PopUpDllPath, "SetBvPrivArea", "ACJJ"); ipopupaddok = DLLCallEx(hNewPopUpHandle, Objekt, ibsec, ibar); hnewpopuphandle = DLLOpen(sCiStd_PopUpDllPath, "SetParamPrivArea", "ACJJ"); ipopupaddok = DLLCallEx(hNewPopUpHandle, Objekt, ipsec, ipar); hnewpopuphandle = DLLOpen(sCiStd_PopUpDllPath, "SetManPrivArea", "ACJJ"); Sida 66 av 84
imar); ipopupaddok = DLLCallEx(hNewPopUpHandle, Objekt, imsec, hnewpopuphandle = DLLOpen(sCiStd_PopUpDllPath, "SetAlarmPrivArea", "ACJJ"); ipopupaddok = DLLCallEx(hNewPopUpHandle, Objekt, ilsec, ilar); hnewpopuphandle = DLLOpen(sCiStd_PopUpDllPath, "ShowPopUpForm", "AC"); ipopupaddok = DLLCallEx(hNewPopUpHandle, Objekt); END // Close the dll handle DLLClose (hnewpopuphandle); END Sida 67 av 84
NewObjectIndicatorMomentaryOnOffPopUp Creates and pops a new ObjectIndicator popup with only Momentary type On/Off buttons. bool NewObjectIndicatorMomentaryOnOffPopUp(const char* name, int scadamainwindownumber, int parentmainwindowhandle) name - The name of the Object to show, this will also be the name of the PopUpForm. scadamainwindownumber - Number of the Scada systems main window. parentmainwindowhandle - Windows handle to the parentforms main window. CiCode Example See ObjectIndiator Popup Sida 68 av 84
NewFanPopUpForm Creates and pops a new Fan popup. bool NewFanPopUpForm(const char* name, int scadamainwindownumber, int parentmainwindowhandle) name - The name of the Object to show, this will also be the name of the PopUpForm. scadamainwindownumber - Number of the Scada systems main window. parentmainwindowhandle - Windows handle to the parentforms main window. CiCode Example See Motor Popup Sida 69 av 84
NewPumpPopUpForm Creates and pops a new Pump popup. bool NewPumpPopUpForm(const char* name, int scadamainwindownumber, int parentmainwindowhandle) name - The name of the Object to show, this will also be the name of the PopUpForm. scadamainwindownumber - Number of the Scada systems main window. parentmainwindowhandle - Windows handle to the parentforms main window. CiCode Example See Motor Popup Sida 70 av 84
NewHeatExchangerPopUpForm Creates and pops a new HeatExchanger popup. bool NewHeatExchangerPopUpForm(const char* name, int scadamainwindownumber, int parentmainwindowhandle) name - The name of the Object to show, this will also be the name of the PopUpForm. scadamainwindownumber - Number of the Scada systems main window. parentmainwindowhandle - Windows handle to the parentforms main window. CiCode Example See Motor Popup Sida 71 av 84
NewDamperPopUpForm Creates and pops a new Damper popup. bool NewDamperPopUpForm(const char* name, int scadamainwindownumber, int parentmainwindowhandle) name - The name of the Object to show, this will also be the name of the PopUpForm. scadamainwindownumber - Number of the Scada systems main window. parentmainwindowhandle - Windows handle to the parentforms main window. CiCode Example FUNCTION DamperPopUp(STRING Objekt, STRING BSec, STRING BAr, STRING PSec, STRING PAr, STRING LSec, STRING LAr,STRING MSec, STRING MAr, STRING ManTyp, STRING Typ, STRING VenTyp, STRING Invert); INT ityp, imantyp, idrift, iventyp; INT hnewpopuphandle, ipopupaddok, hwnd, iwnd, ibsec, ibar, ipsec, ipar, ilsec, ilar, imsec, imar; IF ManTyp = "Endast_MAN" THEN imantyp = 1; END IF ManTyp = "MAN_&_ON" THEN imantyp= 2; END IF ManTyp = "Endast_RSEL" THEN imantyp= 3; END Sida 72 av 84
IF VenTyp = "2v" THEN //2-vägsventil iventyp = 1; END IF VenTyp = "3v" THEN iventyp = 2; END IF VenTyp = "Luftvarmare" THEN iventyp = 3; END IF Typ="Spjall" THEN ityp = 4; END IF Typ="Ventil" THEN ityp = 5; END // Get the handle to the current Citect window, mainwindow hwnd = WinGetWndHnd(); // Get the handle to the current Citect window, mainwindow iwnd = WinNumber(); // Convert the security strings to its int parameter ibsec = StrToInt(ParameterGet("UserSec", BSec, "0")); ibar = StrToInt(ParameterGet("UserSec", BAr, "0")); ipsec = StrToInt(ParameterGet("UserSec", PSec, "0")); ipar = StrToInt(ParameterGet("UserSec", PAr, "0")); ilsec = StrToInt(ParameterGet("UserSec", LSec, "0")); ilar = StrToInt(ParameterGet("UserSec", LAr, "0")); imsec = StrToInt(ParameterGet("UserSec", MSec, "0")); imar = StrToInt(ParameterGet("UserSec", MAr, "0")); // Create the handles to the dll funtions hnewpopuphandle = DLLOpen(sCiStd_PopUpDllPath, "NewMotorPopUp", "ACJJJJJJJJJJJJJ"); // Call the dll function ipopupaddok = DLLCallEx(hNewPopUpHandle, Objekt, iwnd, hwnd, ityp, imantyp, iventyp, ibsec, ibar, ipsec, ipar, ilsec, ilar, imsec, imar); END // Close the dll handle DLLClose (hnewpopuphandle); Sida 73 av 84
NewValvePopUpForm Creates and pops a new Valve popup. bool NewValvePopUpForm(const char* name, int scadamainwindownumber, int parentmainwindowhandle) name - The name of the Object to show, this will also be the name of the PopUpForm. scadamainwindownumber - Number of the Scada systems main window. parentmainwindowhandle - Windows handle to the parentforms main window. CiCode Example See Damper Popup Sida 74 av 84
NewPopUpForm Creates a new popup if the Object name does not exist. The form is not popped, so that it can be prepared through the other API calls before popping it. The valid values for popuptype are: AlarmInfoPopUpForm = 0, ChartPopUpForm = 1, DualMotorPopUpForm = 2, LightsPopUpForm = 3, LightsMomentaryPopUpForm = 4, LightsOnOffPopUpForm = 5, LightsMomentaryOnOffPopUpForm = 6, MotorPopUpForm = 7, PopUpForm = 8, PowerSwitchPopUpForm = 9, PowerTransformerPopUpForm = 10, RegulatorPopUpForm = 11, SensorPopUpForm = 12, ObjectIndicatorPopUpForm = 13, ObjectIndicatorMomentaryOnOffPopUpForm = 14, FanPopUpForm = 15, PumpPopUpForm = 16, HeatExchangerPopUpForm = 17, DamperPopUpForm = 18, ValvePopUpForm = 19. bool NewPopUpForm(const char* name, int scadamainwindownumber, int parentmainwindowhandle, int popuptype) name - The name of the Object to show, this will also be the name of the PopUpForm. scadamainwindownumber - Number of the Scada systems main window. parentmainwindowhandle - Windows handle to the parentforms main window. popuptype - Type of PopUp. CiCode Example See ObjectIndicator PopUp Sida 75 av 84
SetInformationText Sets the information to show. If null, no InformationControl is shown. This must be called before the form has been shown to have an effect. bool SetInformationText(const char* name, const char* information) name - The name of the PopUpForm. information - The information to show. CiCode Example hnewpopuphandle = DLLOpen(sCiStd_PopUpDllPath, "SetInformationText", "ACC"); ipopupaddok = DLLCallEx(hNewPopUpHandle, Objekt, "Text to be displayed in text box"); Sida 76 av 84
SetScadaCodeCalls Sets the ScadaCode calls available on buttons in the PopUpForm. scadacodecalls is a comma seperated string with "Button text, ScadaCode, Button text, ScadaCode...". Ex "AS071, GoToPage(\"AS071\")". This must be called before the form has been shown to have an effect. bool SetScadaCodeCalls(const char* name, const char* scadacodecalls) name - The name of the PopUpForm. scadacodecalls - All the ScadaCodeCalls available on buttons in the PopUpForm. CiCode Example hnewpopuphandle = DLLOpen(sCiStd_PopUpDllPath, "SetScadaCodeCalls", "ACC"); ipopupaddok = DLLCallEx(hNewPopUpHandle, Objekt, "Text on button 1, Function1(), Text on button 2, Function 2() ); Sida 77 av 84
SetControllingSensorTagName Sets the ScadaTag that represents the X-value for the Chart.IndicatorTag. This must be called before the form has been shown to have an effect. bool SetControllingSensorTagName(const char* name, const char* tagname) name - The name of the PopUpForm. tagname - Name of ScadaTag that represents the X-value for the Chart.IndicatorTag. Sida 78 av 84
SetSubObjectName Sets the name of the SubObject. The SubObjects status will be shown in a separate groupbox. This must be called before the form has been shown to have an effect. bool SetSubObjectName(const char* name, const char* subobject) name - The name of the PopUpForm. subobject - The name of the SubObject. Sida 79 av 84
CiCode Example hnewpopuphandle = DLLOpen(sCiStd_PopUpDllPath, "SetSubObjectName", "ACC"); ipopupaddok = DLLCallEx(hNewPopUpHandle, Objekt, SubObject); SetConfirmManouver Sets whether the manouver buttons will pop a confirmation box when clicked. This must be called before the form has been shown to have an effect. bool SetConfirmManouver(const char* name, bool confirmmanouver) name - The name of the PopUpForm. confirmmanouver - whether the manouver buttons will pop a confirmation box when clicked. CiCode Example hnewpopuphandle = DLLOpen(sCiStd_PopUpDllPath, "SetConfirmManouver", "ACJ"); ipopupaddok = DLLCallEx(hNewPopUpHandle, Objekt, 1); SetBvPrivArea Sets the required privilege and area for Bv values. This must be called before the form has been shown to have an effect. bool SetBvPrivArea(const char* name, int privilege, int area) name - The name of the PopUpForm. privilege - The required privilege. area - The required area. CiCode Example hnewpopuphandle = DLLOpen(sCiStd_PopUpDllPath, "SetBvPrivArea", "ACJJ"); ipopupaddok = DLLCallEx(hNewPopUpHandle, Objekt, ibsec, ibar); Sida 80 av 84