home

PC <> RSR232 <> INTELLIBOX

Ici, retrouvez absolument tout sur ce qui revolutionne la commande de nos trains électriques depuis plusieurs années : Le Digital. Toutes les questions, les remarques, les conseils, les aides au montage et dépannages en tout genre...

PC <> RSR232 <> INTELLIBOX

Messagepar DJAbsolom » 06 Novembre 2005, 14:31

Bonjour à tous, je suis nouveau ici et je profite déjà du forum.



Si qqn sait me dire ce qui passe comme information dans la liaison série entre l'intellibox et le PC.



J'aimerais créer mon propre programme de commande mais sansces informations, ca va être impossible.



Merci à bientot.
DJAbsolom
 
Message(s) : 0
Inscrit le : 06 Novembre 2005, 01:00

Re : PC <> RSR232 <> INTELLIBOX

Messagepar fabounet » 06 Novembre 2005, 14:47

Salut Fabrice et bienvenue sur le forum :) .

Pour ce qui concerne la liaison série entre un PC et une Intellibox, le langage (ou plutot protocole) utilisé est le P50X. Si mes souvenir sont bons, tu ouvres une liaison série entre l'IB et Windows, et tu envoies des codes en hexadécimal qui on une correspondance en P50X.

Nous sommes deux sur ce forum a avoir programmer un logiciel pour commander l'Intellibox.

Alain (ou PNl0l) en a fait un pour Windows, et j'en ai fait un sous linux (avec l'aide d'Alain...)



Tu peux trouver des infos sur ce protocole chez uhlenbrock ou chez Modeltreno.



N'hésite pas à nous questionner !
Fab - régulateur intérimaire du PK, spécialisé en communication via talkie walkie
Avatar de l’utilisateur
fabounet
 
Message(s) : 190
Inscrit le : 10 Avril 2005, 00:00

Re : PC <> RSR232 <> INTELLIBOX

Messagepar DJAbsolom » 06 Novembre 2005, 15:12

En effet on m'a déjà parlé du protocole P50X, j'ai été téléchargé la norme et je l'ai imprimé, mais le hic, c'estqu'elle est en anglais, et moi c'est pas trop mon fort l'anglais, il n'existe pas une version française ?

Merci.



Fabrice.
DJAbsolom
 
Message(s) : 0
Inscrit le : 06 Novembre 2005, 01:00

Re : PC <> RSR232 <> INTELLIBOX

Messagepar fabounet » 06 Novembre 2005, 17:20

Malheureusement, je crois que tu vas etre obligé de te mettre à l'anglais, car à ma connaissance, il n'éxiste pas de doc en français... :(

Ceci étant il n'y a rien de compliqué dans la doc...

Au pire si tu as un soucis parles en ici, et on trouvera une solution ;) .

Une dernière chose, J'ai utilisé le protocole P50Xb, qui il me semble est plus performant...
Fab - régulateur intérimaire du PK, spécialisé en communication via talkie walkie
Avatar de l’utilisateur
fabounet
 
Message(s) : 190
Inscrit le : 10 Avril 2005, 00:00

Re : PC <> RSR232 <> INTELLIBOX

Messagepar DJAbsolom » 06 Novembre 2005, 18:03

Ok, je vais me mettre à la tâche lol.

Mais au fait quel est ta configuration ? Moi j'utilise le DCC avec Intellibox.



Tu pourrais me donner un exemple de chaine que tu envois sur le port RS232 pour par exemple

faire fonctionner en marche avant, feux allumé, la locomotive d'adresse 59 à une vitesse de 15 ?



MErci Fabrice.
DJAbsolom
 
Message(s) : 0
Inscrit le : 06 Novembre 2005, 01:00

Re : PC <> RSR232 <> INTELLIBOX

Messagepar DJAbsolom » 06 Novembre 2005, 21:20

Bon je progrresse, je suis arrivé à faire:



Xpwroff en envoyant: 0C6h + 0A6h sur le port 3F8h (COM1) > essais concluant



Xpwron en envoyant: 0C6h + 0A7h sur le port 3F8h (COM1) > essais concluant



par contre, lorsque j'essaye de faire démarrer une locomotive:



adresse: 59 > high byte = 00h et low byte = 3Bh (les valeurs hexa sont-elles correctes ?)

vitesse: 15 > speed byte = 0Fh (la valeur hexa est-elle correcte ?)

pas d'utilisation de F1,F2,F3 et F4 > bit 7 du byte 4 = 0

loco pas encore sous contrôle via l'IB > bit 6 du byte 4 = 0

direction - marche arrière (peu importe) > bit 5 du byte 4 = 0

feux allumés > bit 4 du byte 4 = 1

pas d'utilisation de F1 > bit 3 du byte 4 = 0

pas d'utilisation de F2 > bit 2 du byte 4 = 0

pas d'utilisation de F3 > bit 1 du byte 4 = 0

pas d'utilisation de F4 > bit 0 du byte 4 = 0

valeur du byte 4 = 10h (la valeur hexa est-elle correcte ?)



j'ai fais divers essais en envoyant sur le port 3F8h (COM1):

00h + 3Bh + 0Fh + 10h > ne fonctionne pas

C6h + 00h + 3Bh + 0Fh + 10h > ne fonctionne pas

C7h + 00h + 3Bh + 0Fh + 10h > ne fonctionne pas



Quelqu'un peut me dire où se trouve mon erreur?



Merci.



Fabrice.

DJAbsolom
 
Message(s) : 0
Inscrit le : 06 Novembre 2005, 01:00

Re : PC <> RSR232 <> INTELLIBOX

Messagepar alain.trinquet » 06 Novembre 2005, 21:31

Comme le dit Fabounet, il n'y a rien de compliqué : c'est une documentation en anglais écrite par un italien ! Autant te dire que ce n'est pas du Shakespeare ;)

Juste un petit exemple pour t'aider à démarrer :

Dans le document 'P50X_LT.txt', tu peux lire :



P50Xb (P50X binary) locomotive & turnout control commands.

----------------------------------------------------------

*** XLok (080h) - length = 1+4 bytes

Parameters (byte) - please check also P50Xa 'L' cmd:

1st low byte of Lok address

2nd high byte of Lok address

3rd speed (0..127: 0 = Stop, 1 = Stop/Em.Stop)

N.B. bit #7 is reserved for future use!

4th this byte has the following format:



bit# 7 6 5 4 3 2 1 0

+-----+-----+-----+-----+-----+-----+-----+-----+

|ChgF |Force| Dir | FL | F4 | F3 | F2 | F1 |

+-----+-----+-----+-----+-----+-----+-----+-----+



where:

ChgF set if F1..F4 to be used for setting F1..F4 of

Lok (otherwise F1..F4 are ignored)

Force if set (1), then the XLok command is 'forced'

even in case of a Lok already controlled by a

non-PC device

Dir Lok direction: 1 = forward, 0 = reverse

FL Lok light status: 1 = on, 0 = off

F4..F1 Lok F4..F1 status (if ChgF is set)



Reply:

1st either 00h (cmd Ok) or error code.



En clair, ce paragraphe décrit la commande 'XLok' du protocole de communication P50Xb (version binaire). Cette commande a une taille de : 1+4=5 octets.

Le premier octet à envoyer est la commande XLok, soit l'octet de valeur 80 en hexadécimal.

Puis suivent 4 octets qui sont les 4 paramètres de cette commande :

1er paramètre : l'octet de poids faible de l'adresse de la loco.

2ème paramètre : l'octet de poids fort de l'adresse de la loco.

3ème paramètre : la vitesse de la loco sur une échelle de 0 à 127. 0 = arrêt progressif (avec inertie), 1 = arrêt d'urgence (sans inertie), 2 = premier cran de vitesse (vitesse minimale), 127 = dernier cran de vitesse (vitesse maximale).

4ème paramètre : un octet dans lequel chaque bit a une signification particulière.

-bits 0 à 3 : l'état des fonctions F1 à F4 (1 pour activer la fonction)

-bit 4 : l'état de la fonction F0, c'est à dire les feux (1 pour allumer les feux).

-bit 5 : le sens de marche (1 pour la marche avant)

-bit 6 : forçage de la commande de la loco même si elle est déjà sous contrôle (1 pour forcer).

-bit 7 : mettre à 1 pour que les valeurs des bits 0 à 3 (fonctions F1 à F4) soient prises en compte.



La réponse de l'IBox est constituée d'un seul octet. La valeur 0 signifie que tout c'est bien passé. Sinon, une valeur différente de 0 est un code d'erreur qui permet de savoir pourquoi ça n'a pas réussi.



Bon, maintenant concrétement, pour faire fonctionner en marche avant, feux allumé, la locomotive d'adresse 59 à une vitesse de 15, il faut envoyer :

1er octet : 80 en hexa (commande XLok)

2ème octet : 3B en hexa (59 en décimal)

3ème octet : 0

4ème octet : 0F en hexa (15 en décimal)

5ème octet : F0 en hexa (marche avant, feux allumés, pas de fonctions F1 à F4).

L'IBox doit répondre 0.



Il faut bien sûr que l'IBox soit connectée au PC à la bonne vitesse (voir dans le menu de configuration). Pour valider la communication entre l'IBox et le PC, on peut commencer en s'amusant à taper à la main des commandes du protocole P50Xa (ASCII).



Bon amusement !

:)
Intellibox / z21 / LokProgrammer / Décodeurs ESU, Lenz, Zimo, Kuehn, CT-Elektronic, Leb
Avatar de l’utilisateur
alain.trinquet
 
Message(s) : 1054
Inscrit le : 10 Avril 2005, 00:00
Localisation : 17 et 86

Re : PC <> RSR232 <> INTELLIBOX

Messagepar DJAbsolom » 06 Novembre 2005, 22:20

C'est bizare, j'envois exactement les 5 octet que tu m'as donné en exemple, rien ne se passe et je récupère un code d'erreur 02h.



A quoi cela correspond?



Devant les 5 octets, ne dois je pas envoyé autre chose, du genre 0C7h ou 0C6h





*** XP50Len2 (0C7h) - length = 1+2 bytes

Parameters (byte):

1st & 2nd same as a two byte long P50 cmd (e.g. Lok control,

Fnc control and Turnout control (red on/greenon))

N.B. there is NO reply!





merci bcp j'avance, lentement mais surement :)



Fabrice.
DJAbsolom
 
Message(s) : 0
Inscrit le : 06 Novembre 2005, 01:00

Re : PC <> RSR232 <> INTELLIBOX

Messagepar DJAbsolom » 06 Novembre 2005, 22:29

C'est bizare, j'envois exactement les 5 octet que tu m'as donné en exemple, rien ne se passe et je récupère un code d'erreur 02h.



A quoi cela correspond?



Devant les 5 octets, ne dois je pas envoyé autre chose, du genre 0C7h ou 0C6h





*** XP50Len2 (0C7h) - length = 1+2 bytes

Parameters (byte):

1st & 2nd same as a two byte long P50 cmd (e.g. Lok control,

Fnc control and Turnout control (red on/greenon))

N.B. there is NO reply!





merci bcp j'avance, lentement mais surement :)



Fabrice.
DJAbsolom
 
Message(s) : 0
Inscrit le : 06 Novembre 2005, 01:00

Re : PC <> RSR232 <> INTELLIBOX

Messagepar alain.trinquet » 06 Novembre 2005, 23:32

Non, pas de C7h ou C6h devant.

Bon, précisons les choses. Par défaut, au démarrage, l'IBox peut accepter des commandes P50 et P50x. Les commandes P50 sont envoyées directement alors que les commandes P50x sont précédées du caractère 'x' ou 'X' ; c'est ce qui permet de les différencier. Il faut donc que tu envoie d'abord 'x' ou 'X' puis les 5 octets.

Mais il est plus pratique de déactiver le protocole P50 par la commande "xZzA1"(suivie d'un retour chariot) : ensuite, il n'est plus nécessaire de faire précéder les commandes P50x du caractère 'x' ou 'X'.



Je te conseille de bien lire les documents 'P5XINTRO.TXT' et 'P50_GEN.TXT' (je sais, c'est en anglais mais il faut y passer, il faut bien que les cours d'anglais servent à quelque chose ;) ) Ensuite, comme je te le disais plus haut, le protocole P50Xa est juste à utiliser pour s'amuser à commander ses locos en tapant des commandes à la main. Pour une commande par un programme, utiliser le protocole P50Xb : il est beaucoup plus pratique.

Tu peux aussi commencer par commander une loco à la main à partir d'un programme du genre 'Hyper Terminal' : cela permet de bien comprendre comment ça marche et de tester les commandes P50 et P50Xa. D'une manière générale, je te conseille de commencer par tester les commandes à envoyer à partir d'un programme du genre 'Hyper Terminal' avant de les envoyer à partir de ton programme.

Bon courage.
Intellibox / z21 / LokProgrammer / Décodeurs ESU, Lenz, Zimo, Kuehn, CT-Elektronic, Leb
Avatar de l’utilisateur
alain.trinquet
 
Message(s) : 1054
Inscrit le : 10 Avril 2005, 00:00
Localisation : 17 et 86

Suivant

Retour vers DIGITAL

Qui est en ligne ?

Utilisateur(s) parcourant ce forum : Aucun utilisateur inscrit et 6 invité(s)

cron