Aplicatii in energetica: Win CC - ANSI C


           Se propune schema monofilara din imaginea de jos:





          Vom folosi urmatoarele simboluri:

                                    




          Vom crea o noua pagina grafica "c_sch_monof_00"
          Se vor introduce tag-urile de tip Binary:s1,s2,s3,i1,tr1.Fiecarui tag i se vor atribui simbolurile corespunzatoare, si vom utiliza pentru fiecare simbol, cate un Smart Objects -- Status Display astfel:
        Smart Objects -- Status Display
          -se atribuie Tag-ul corespunzator -- Update 250 ms
          -se atribuie imagini corespunzatoare pentru 0 si pentru 1. Se face click dreapta pe simbol si se alege Configuration Dialog. Se aduc imaginile cu Browse si apoi se trag pe starea 0 respectiv starea 1.
        Vom incerca sa implementam urmatoarea functionalitate:
        -S1 sau S2 nu poata fi actionate cand I1 este cuplat
        -S3 sa nu poata fi cuplat numai cand I1 And S1 = 0
        -I1 sa nu poata fi actionat cand S3 este cuplat
           - se completeaza la separatorul S1 -- Properties -- Events -- Mouse --Mouse Action --C Action cu urmatoarea procedura:

    #include "apdefap.h"
    void OnClick(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName)
    {
    	BOOL S1;
    	BOOL I1;
    	S1=GetTagBit("s1");
    	I1=GetTagBit("i1");
    	if(I1==0){
    		if(S1==0){
    			S1=1;
    			SetTagBit("s1",S1);
    		}
    		else{
    			S1=0;
    			SetTagBit("s1",S1);
    		}
    	}
    }
    

           - se completeaza la separatorul S2 -- Properties -- Events -- Mouse --Mouse Action --C Action cu urmatoarea procedura:

    #include "apdefap.h"
    void OnClick(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName)
    {
    	BOOL S2;
    	BOOL I1;
    	S2=GetTagBit("s2");
    	I1=GetTagBit("i1");
    	if(I1==0){
    		if(S2==0){
    			S2=1;
    			SetTagBit("s2",S2);
    		}
    		else{
    			S2=0;
    			SetTagBit("s2",S2);
    		}
    	}
    }
    

           - se completeaza la separatorul S3 -- Properties -- Events -- Mouse --Mouse Action --C Action cu urmatoarea procedura:

    #include "apdefap.h"
    void OnClick(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName)
    {
    BOOL S1;
    BOOL S3;
    BOOL I1;
    S1=GetTagBit("s1");
    S3=GetTagBit("s3");
    I1=GetTagBit("i1");
    
    
    if(S3==0){
           if(!(I1&&S1)){
                S3=1;
                SetTagBit("s3",S3);
           }
     }
     else{
                 S3=0;
                 SetTagBit("s3",S3);
    }
    }
    

           - se completeaza la Intreruptorul I1 -- Properties -- Events -- Mouse --Mouse Action --C Action cu urmatoarea procedura:

    #include "apdefap.h"
    void OnClick(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName)
    {
    	BOOL S3;
    	BOOL I1;
    	S3=GetTagBit("s3");
    	I1=GetTagBit("i1");
    	if(S3==0){
    		if(I1==0){
    			I1=1;
    			SetTagBit("i1",I1);
    		}
    		else{
    			I1=0;
    			SetTagBit("i1",I1);
    		}
    	}
    
    }
    

           - se completeaza la Butonul "Set" -- Properties -- Events -- Mouse --Mouse Action --C Action cu urmatoarea procedura:

    #include "apdefap.h"
    void OnClick(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName)
    {
    	char* taguri[4]={"s1","s2","s3","i1"};
    	int i;
    	for(i=0;i<5;i++){
    		SetTagBit(taguri[i],1);
    	}
    }
    

           - se completeaza la Butonul "Clear" -- Properties -- Events -- Mouse --Mouse Action --C Action cu urmatoarea procedura:

    #include "apdefap.h"
    void OnClick(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName)
    {
    	char* taguri[4]={"s1","s2","s3","i1"};
    	int i;
    	for(i=0;i<5;i++){
    		SetTagBit(taguri[i],0);
    	}
    }
    

           - Folosim proprietatea Picture Obiect al paginii grafice -- Geometry -- Picture Width -- C Action, cu scriptul de jos si setam Triger-ul la 500 ms pentru a ctualiza simbolul trafo..

    #include "apdefap.h"
     long _main(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName)
    {
    BOOL S1;
    BOOL S2;
    BOOL I1;
    BOOL TR1;
    S1=GetTagBit("s1");
    S2=GetTagBit("s2");
    I1=GetTagBit("i1");
    TR1=GetTagBit("tr1");
    if(I1&&S1&&S2){
             TR1=1;
             SetTagBit("tr1",TR1);
     }
     else{
             TR1=0;
             SetTagBit("tr1",TR1);
    }
    return 0;
    }
    


          Aplicatia poate fi simplificata prin folosirea procedurilor.Vom crea astfel o noua pagina grafica "c_sch_monof_01"





          Vom folosi procedura c_comut() pe care o vom integra in Global -- Script -- C Editor --Project Module :

    void c_comut(char* tag)
    {
    	BOOL tg;
    	tg=GetTagBit(tag);
    	if(tg==0){
    		tg=1;
    		SetTagBit(tag,tg);
    	}else{
    		tg=0;
    		SetTagBit(tag,tg);
    	}
    }
    

           - se completeaza la separatorul S1 -- Properties -- Events -- Mouse --Mouse Action --C Action cu urmatoarea procedura:

    BOOL I1;
    I1=GetTagBit("i1");
    if(I1==0){
    	c_comut("s1");
    }
    
    

           - se completeaza la separatorul S2 -- Properties -- Events -- Mouse --Mouse Action --C Action cu urmatoarea procedura:

    #include "apdefap.h"
    void OnClick(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName)
    {
    	BOOL I1;
    	I1=GetTagBit("i1");
    	if(I1==0){
    		c_comut("s2");
    	}
    }
    

           - se completeaza la separatorul S3 -- Properties -- Events -- Mouse --Mouse Action --C Action cu urmatoarea procedura:

    #include "apdefap.h"
    void OnClick(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName)
    {
    	BOOL S1;
    	BOOL S3;
    	BOOL I1;
    	S1=GetTagBit("s1");
    	S3=GetTagBit("s3");
    	I1=GetTagBit("i1");
    	if(S3==0){
    		if(!(I1&&S1)){
    			c_comut("s3");
    		}
    	}
    	else{
    		S3=0;
    		SetTagBit("s3",S3);
    	}
    }
    

           - se completeaza la Intreruptorul I1 -- Properties -- Events -- Mouse --Mouse Action --C Action cu urmatoarea procedura:

    #include "apdefap.h"
    void OnClick(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName)
    {
    	BOOL S3;
    	S3=GetTagBit("s3");
    	if(S3==0){
    		c_comut("i1");
    	}
    }
    

           - Folosim proprietatea Picture Obiect al paginii grafice -- Geometry -- Picture Width -- C Action, cu scriptul de jos si setam Triger-ul la 500 ms pentru a ctualiza simbolul trafo..

    #include "apdefap.h"
     long _main(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName)
    {
    BOOL S1;
    BOOL S2;
    BOOL I1;
    BOOL TR1;
    S1=GetTagBit("s1");
    S2=GetTagBit("s2");
    I1=GetTagBit("i1");
    TR1=GetTagBit("tr1");
    if(I1&&S1&&S2){
             TR1=1;
             SetTagBit("tr1",TR1);
     }
     else{
             TR1=0;
             SetTagBit("tr1",TR1);
    }
    return 0;
    }