Creazione di un controllo HTML per web server CPU Siemens

di il
1 risposte

Creazione di un controllo HTML per web server CPU Siemens

Buongiorno a tutti. Sto cercando di creare un controllo personalizzato da inserire in una pagina web personalizzata del web server della CPU Siemens. Per creare questo controllo sto usando HTML e parte di JS, ragruppando più oggetti base tra loro, o meglio ... e quello che sto tentando di fare. Ho già un paio di esempi simili e vorrei metterli insieme in modo da creare una cosa unica che abbia entrambe le funzionalità. Il primo esempio legge e scrive dati nella CPU Siemens tramite i comandi AWP, il secondo è puro HTML è cambia immagine di un led per fare l'animazione on/off del led stesso. Quello a cui voglio arrivare è avere un unico oggetto che imposti lo stato di un bit sul PLC ( tramite 2 pulsanti set/reset ) e un'animazione che cambi l'immagine del led a seconda dello stato di questo bit ( questo leggendo dalla CPU il valore effettivo del bit stesso ). Di seguito il sorgente della pagina web:

<!-- Pulsante per impostare il bit a 1 -->
<form style="position:absolute; left:20px; top:55px; border:solid 1px" method="post">
	<input type="submit" style="width:70px; height:70px; background:rgb(255,0,0,0); border:solid 0px" name='"DBData".B1' value="1">
</form>

<!-- Pulsante per impostare il bit a 0 -->				
<form style="position:absolute; left:230px; top:55px; border:solid 1px" method="post">
	<input type="submit" style="width:70px; height:70px; background:rgb(255,0,0,0); border:solid 0px" name='"DBData".B1' value="0">
</form>

<!-- Casella di testo per visualizzare il valore reale del bit -->	
<p id="test1" style="position:absolute; top:70px; left:170px; background:yellow"> :="DBData".B1: </p>

<!-- Immagine del pulsante "set" -->
<div style="position:absolute; width:50px; height:100px; left:10px; top:140px"> 
	<input type="image" src="btnGreen.PNG" onClick="set()">
</div>

<!-- Immagine del pulsante "reset" -->
<div style="position:absolute; width:50px; height:100px; left:200px; top:140px"> 
	<input type="image" src="btnRed.PNG" onClick="reset()">
</div>

<!-- Immagine del led ( sarà animata dallo stato reale del bit ) -->
<div style="position:absolute; width:100px; height:100px; left:110px; top:120px"> 
	<img id="status" src="ledOff.PNG">
</div>

<!-- Quadrato inserito temporaneamente per testare le funzioni JS -->
<svg height="100" width="100"> 
	<rect x="68" y="40" rx="2" ry="2" width="30" height="30" id="test2" style="stroke:black; stroke-width:3; fill:yellow"/>
</svg> 

<script> // Funzioni JS per gestire le animazioni
  
	function set() {
		var immagine = document.getElementById("status");
		immagine.src = "ledOn.PNG";
		var sfondo1 = document.getElementById("test1").style.background;
		sfondo1 = "green"; 
		var sfondo2 = document.getElementById("test2").style.fill;
		sfondo2 = "green";
	}
					
	function reset() {
		var immagine = document.getElementById("status");
		immagine.src = "ledOff.PNG";
		var sfondo1 = document.getElementById("test1").style.background;
		sfondo1 = "red"; 
		var sfondo2 = document.getElementById("test2").style.fill;
		sfondo2 = "red";
	}
  
</script>
I primi 3 oggetti per leggere e scrivere sul PLC stanno funzionando e derivano dal primo esempio, invece i due pulsanti con immagine ed il led derivano dal secondo esempio ma messi in questo modo non funzionano più. A questo mi sorgono le segunti domande:

Perchè non cambia più l'immagine del led ? Non vedo errori di sintassi !
E giusto il codice per cambiare il colore del quadrato e della casella di testo ?
Le immagini si vedono se apro il file .htm singolarmente ma non si vedono quando accedo tramite web server ... Da cosa dipende ?
C'è un modo per scrivere il bit sul PLC e chiamare una funzione JS dallo stesso pulsante ?

1 Risposte

  • Re: Creazione di un controllo HTML per web server CPU Siemens

    Ho risolto rifacendo tutto da capo e questo è il codice che mi ha portato a ciò che volevo, manca solo una parte di CSS per stilizzare i pulsanti trasparenti. L'unica cosa che al momento non mi è ancora chiara e se con lo stesso pulsante si può scrivere sul PLC e al tempo stesso richiamare una funzione JS.
    
    <html>
    
    	<!-- AWP_In_Variable Name='"DBData".I1' -->	
    	<!-- AWP_In_Variable Name='"DBData".I2' -->
    	<!-- AWP_In_Variable Name='"DBData".I3'  -->
    	<!-- AWP_In_Variable Name='"DBData".I4'  -->
    	
    	<!-- AWP_In_Variable Name='"DBData".B1' -->	
    	<!-- AWP_In_Variable Name='"DBData".B2' -->
    
    
    	<head>
    	
    		<title> MyServer </title> 
    		<meta http-equiv="refresh" content="10">
    		
    	</head>
    	
    	<body>
    				
    		<div style="position:absolute; width:330px; height:120px; left:10px; top:100px; background:#DCDCDC"> 
    			
    			<div style="position:absolute; width:100px; height:100px; left:10px; top:10px"> 
    				<img src="btnGreen.png">
    			</div>
    			
    			<form style="position:absolute; left:25px; top:10px; border:solid 1px" method="post">
    				<input type="submit" name='"DBData".B1' value="1" style="width:70px; height:70px; background:rgb(255,0,0,0)">
    			</form> 
    			
    			<div style="position:absolute; width:100px; height:100px; left:200px; top:10px"> 
    				<img src="btnRed.png">
    			</div>
    				
    			<form style="position:absolute; left:230px; top:10px; border:solid 1px" method="post">
    				<input type="submit" name='"DBData".B1' value="0" style="width:70px; height:70px; background:rgb(255,0,0,0)">
    			</form>
    			
    			<div style="position:absolute; width:100px; height:100px; left:115px; top:10px"> 
    				<img id="led1" src="ledOff.png">
    			</div>
    			
    			<script>
    				
    				function set1() {
    					var img1 = document.getElementById("led1");
    					img1.src = "ledOn.png";
    				}
    					
    				function rst1() {
    					var img1 = document.getElementById("led1");
    					img1.src = "ledOff.png";
    				}
    					
    			</script>
    			
    		</div>
    		
    		<div style="position:absolute; width:120px; height:120px; left:10px; top:300px; background:#DCDCDC"> 
    			
    			<div style="position:absolute; width:100px; height:100px; left:10px; top:10px"> 
    				<img id="led2" src="ledOff.png">
    			</div>
    			
    			<script>
    				
    				function set2() {
    					var img2 = document.getElementById("led2");
    					img2.src = "ledOn.png";
    				}
    					
    				function rst2() {
    					var img2 = document.getElementById("led2");
    					img2.src = "ledOff.png";
    				}
    					
    			</script>
    			
    		</div>
    		
    		<script>
    				
    			function toggle() {
    				var val1 = :="DBData".B1: ;
    				var val2 = :="DBData".B2: ;
    					if(val1==1) {
    						set1();
    					}
    					else {
    						rst1();
    					}
    					if(val2==1) {
    						set2();
    					}
    					else {
    						rst2();
    					}
    			}
    				
    			function PageRefresh() {
    				toggle();
    				setTimeout("AutoRefresh()",500);
    			}
    								
    			PageRefresh();
    					
    		</script>
    			
    	</body>
    	
    </html>
    
Devi accedere o registrarti per scrivere nel forum
1 risposte