Debido a mi formación trabajo con
automática y a la necesidad de comunicar con autómatas concretos, el protocolo
que implementé inicialmente para mis comunicaciones fue del DH+ de Allen-
Bradley. Como este fue el primero que implementé, fue el que luego utilicé para
mis desarrollos y el que ahora pongo.
Es por esto, que cuando
tuve que hacer cualquier comunicación entre robots y autómatas, robots y ordenadores,
o ordenadores y placas con procesadores, siempre usé este.
Como no se trata de un
protocolo x-modem literal, pongo un enlace en el que se explica este protocolo.
En las librerías
incorporo hasta el nivel de enlace al nivel de transporte. El resto de niveles,
aunque se explican en el enlace para Allen-Bradeley, no los implementaré, pues
se trata de ordenes específicas. Cada uno podrá usar los comandos que desee
comunicar con sus tarjetas o equipos.
Comenzaré por lo tanto por colocar como
siempre la cabecera para la llamada a las funciones.
DH.MAC
; Copyright (C) 2013 José Ángel Moneo Fernández ; This program is free software: you can redistribute it and/or modify ; it under the terms of the GNU General Public License as published by ; the Free Software Foundation, either version 3 of the License, or ; (at your option) any later version. ; This program is distributed in the hope that it will be useful, ; but WITHOUT ANY WARRANTY; without even the implied warranty of ; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ; GNU General Public License for more details. ; You should have received a copy of the GNU General Public License ; along with this program. If not, see <http://www.gnu.org/licenses/>.
; CABECERA PROTOCOLO Data Highway II (DH+) network
include rs232.mac
;caracteres de comunicacion
SOH EQU 1 ;ENCABEZAMIENTO
STX EQU 2 ;COMIENZO TEXTO
ETB EQU 17H ;FINAL BLOQUE (QUEDAN MAS)
ETX EQU 3 ;FINAL DE MENSAJE
ACK EQU 6 ;RECONOCIMEINTO
NACK EQU 15H ;NO RECONOCIDO
DLE EQU 10H ;CONTROL
ENQ EQU 5 ;SOLICITUD DE RESPUESTA
EOT EQU 4 ;FIN TRANSMISION
SYN EQU 16H ;ESPERA SINCRONICA
CAN EQU 1BH ;CANCELAR, ESC
; envía una cadena de datos por puerto serie mediante
; protocolo DH+
Send_DH macro nodo,datos,longitud
ifndef _Send_DH
extrn _Send_DH:near
endif
mov ax,nodo
push ax
lea ax,datos
push ax
mov ax,longitud
push ax
call _Send_DH
endm
; recibe una cadena de datos por puerto serie mediante
; protocolo DH+
; devuelve en el mensaje en el buffer datos
; dh= logitud del mensaje
; dl= nodo; el nodo que lo envía en dl 0-255
; al=estado Si al=0ffh error, al=0 ok
Recive_DH macro datos
ifndef _Recive_DH
extrn _Recive_DH:near
endif
lea ax,datos
push ax
call _Recive_DH
endm
No hay comentarios:
Publicar un comentario
Si tienes algún comentario, duda o sugerencia, o si quieres aportar algún código creado a partir de las librerías expuestas aquí, por favor, indícamelo.