PLC - automatisme et iPhone

Commande d'un microcontrôleur MBED

Le MBED est une carte microcontrolleur facilement connectable sur Internet. On propose la commande d'une lampe LED du module avec PLCLink.

Commande RPC

Descriptif

La programmation du MBED est en C++, les commandes RPC permettent la lecture et l'écriture d'une variable avec un url simple. On ajoute donc un switch avec une entrée par <url> et une commande par <link>.

Code WagoML de MBED.xml

Ce code est à compléter avec l'IP de votre MBED sur le réseau à la place de "IP_MBED".
Placer ce code dans l'iPhone avec les divers méthodes citées dans ce site, DropBox par exemple.


<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE wagoml PUBLIC "-//wagoml org//DTD WAGOML 1.0//EN" "http://pautex.fr/wago/DTD/WagoML-1.0.dtd"> 
<wagoml version="1.0" xmlns="http://pautex.fr/wago/"> 
	<title>MBED</title>
	<items> 
		<item id="0"> 
			<title>Intern</title> 
			<name>MBED</name> 
			<url/> 
			<user/> 
			<password/> 
		</item> 
	</items>
	<rooms> 
		<setting>
			<title>Intern</title> 
			<name>MBED</name> 
		</setting>
		<room id="0"> 
			<title>MBED</title>
			<refresh>2000</refresh>
			<items> 
				<item id="0"> 
					<title>Test</title>
					<name>MBED</name>
					<description>RPC command</description>					
					<affichage>switch</affichage>
					<url>http://IP_MBED/rpc/i/read</url>
					<link>http://IP_MBED/rpc/i/write%20%d</link>
				</item>
			</items>
		</room>
	</rooms>
</wagoml>
	

Installation d'un switch et deux url : lecture de la variable "i" et écriture par la méthode RPC. Le blanc "%20" est nécessaire dans le link pour être conforme avec la syntaxe RPC. Voir le site MBED pour des détails.

Programmation du MBED

Le programme du MBED tiré des exemples pour l'installation de la partie réseau.
- voir le site du MBED.

	// Exemple avec PLCLINK remontage complet serveur et ethernet du site MBED
	#include "mbed.h"
	#include "EthernetNetIf.h"
	#include "HTTPServer.h"
	#include "SerialRPCInterface.h"

	EthernetNetIf eth;
	HTTPServer svr;

	DigitalOut led1(LED1, "led1");  // life cycle
	LocalFileSystem fs("webfs");

	int main() {
	    EthernetErr  ethErr = eth.setup();
	    if (ethErr) {
	        printf("Error  %d in setup.\n", ethErr);
	        return -1;
	    }
	    printf("Reglages OK\n");

	    FSHandler::mount("/webfs", "/"); //Mount /webfs path on web root path
	    svr.addHandler<SimpleHandler>("/"); //Default handler
	    svr.addHandler<RPCHandler>("/rpc"); 
	    svr.bind(80);

	    Base::add_rpc_class<DigitalOut>();
	    
	    int i = 12;
	    RPCVariable<int> rpc_i(&i, "i");    //  /rpc/i/read

	    printf("Listening...\n");

	    Timer tm;
	    tm.start();

	    while (1) {
	        Net::poll();                             // lis le reseau
	        if (tm.read()>.5) {
	            tm.start();
	            led1 = i & 0x01;  // i vers la led1
	        }
	    }
	}

La variable i est commandée par RPC, deux adresses url sont utiles.
- Lecture de i : http://IP_MBED/rpc/i/read
- Ecriture de i : http://IP_MBED/rpc/i/write%20x

x est la valeur, remplacée dans wagoML par %d pour prendre la valeur 0 ou 1 du switch.
IP_MBED est l'IP définie en DHCP mais qu'il faudra connaitre.


PLCLink more
index

 

Valid XHTML 1.0 Transitional