consulta modbus, explicacion!!

Intento entender como funciona modbus pero lo que encuentro es muy reducido y no se si sirve para lo que busco.
Entiendo que hay una serie de registros en el cual se leen y escribre remotamente.
Ahora mi pregunta es estos registros pueden ser los datos de la hora de mi reloj? o siempre debe ser un pin i/o?
Puedo enviar cadenas de textos (limitadas claro)?

Lo que yo intento hacer es poder leer remotamente un dispositivo y tambien que este genere eventos automaticamente.
Cualquier explicacion que me aclare el tema lo agradezco

Mira el tutorial de PeterKanTropus.
Esta muy bueno y es recomendable.
Esta en DOcumentación

Usar modbus es mas simple que lo que parece, ya que existen librerías en arduino y cualquier idioma de programación.
Es una arquitectura Cliente-Servidor, solo el cliente o master , pregunta y escribe en los múltiples servidores o esclavos ( si el bus permite mas de uno) . Cada servidor tiene una única dirección.
En la practica hay 2 tipos de datos coils (dato booleano) y registro ( 0 to 65,535) y a su vez se dividen en solo lectura y lectura escritura. No implementa texto.

Hay Maxid!!! vas a Buscador del foro y pones Modbus PeterKanTropus y gualaaaaaaaa

Modbus Slave (server) por USB pero aplicable a lo demás.

PeterKantTropus:
Usar modbus es mas simple que lo que parece, ya que existen librerías en arduino y cualquier idioma de programación.
Es una arquitectura Cliente-Servidor, solo el cliente o master , pregunta y escribe en los múltiples servidores o esclavos ( si el bus permite mas de uno) . Cada servidor tiene una única dirección.
En la practica hay 2 tipos de datos coils (dato booleano) y registro ( 0 to 65,535) y a su vez se dividen en solo lectura y lectura escritura. No implementa texto.

si entiendo que no está previsto texto, vi en unos ejemplos que crean registros para cada caracter o 1 registro por 2 caracteres ascii 4bits bajos y 4 altos.
Tengo en total unos 32 registros posibles, fecha hora,tag,etc.
Ahora la pregunta del millon... puede el esclavo enviar por ejemplo 10 registros ante un evento sin ser consultado?
Yo necesito que me avise el esclavo si alguien intenta accedes a ese nodo

surbyte:
Hay Maxid!!! vas a Buscador del foro y pones Modbus PeterKanTropus y gualaaaaaaaa

Modbus Slave (server) por USB pero aplicable a lo demás.

ese lo encontré pero creia era algo mas documental.

En principio el esclavo no tiene iniciativa, generalmente se programa al cliente para que consulte continuamente.
Saludos.

PeterKantTropus:
En principio el esclavo no tiene iniciativa, generalmente se programa al cliente para que consulte continuamente.
Saludos.

¿Pero se puede?
¿Puedo crear diferentes bancos de registros para diferentes consultas/eventos?

Pregunto porque no encuentro esto y me parece mas escalable que armar un protocolo propietario.

maxid:
¿Pero se puede?
¿Puedo crear diferentes bancos de registros para diferentes consultas/eventos?

Pregunto porque no encuentro esto y me parece mas escalable que armar un protocolo propietario.

En algunas implementaciones de modbus permite un server y un cliente en el mismo aparato, pero es complicarse la vida.
No estas solo limitado a una comunicación esporádica, imaginate que puedes programar el arduino server como una prolongación del cliente, como si fuera un modulo de expansión.

La cantidad de registro esta limitada a 10000 coils de cada tipo y 10000 registros de cada tipo, mucho antes que agotes los registros se te acabara la memoria del Arduino.

Saludos

PeterKantTropus:
En algunas implementaciones de modbus permite un server y un cliente en el mismo aparato, pero es complicarse la vida.
No estas solo limitado a una comunicación esporádica, imaginate que puedes programar el arduino server como una prolongación del cliente, como si fuera un modulo de expansión.

La cantidad de registro esta limitada a 10000 coils de cada tipo y 10000 registros de cada tipo, mucho antes que agotes los registros se te acabara la memoria del Arduino.

Saludos

Entiendo, pero mi idea es que arduino sea un cliente que recibe la orden y avisar cuando ocurra un evento.
Y la pc sea el server que colecta la informacion pero tambien genera ordenes.

No entiendo. No hay diferencia entre quien genera un evento, solo debes poner a preguntar al cliente si hay alguno.

PeterKantTropus:
No entiendo. No hay diferencia entre quien genera un evento, solo debes poner a preguntar al cliente si hay alguno.

Ese es el tema.
En el cliente se pueden generar n eventos y si no es consultado antes de que se genere el proximo evento lo pierdo.

Entonces no puedes usar Modbus. Modbus es una topología Maestro esclavo.
El maestro pregunta y el esclavo responde.
Es un sistema de poleo. Va barriendo cada nodo y consulta sobre sus novedades.
Si hay un evento entonces usa otro sistema.

No puedes hacer que el maestro cambie a modo escucha salvo luego que haya enviado la petición al cliente/esclavo. Y tu quieres cambiar los roles de cada nodo.

Bien eso necesitaba saber a ciencia cierta.
Me voy a decantar por un protocolo mas abierto en ese sentido

Que tal esto como para ubicarse?

Tipos de Protocols

excelente!!

Parece ser que tienes que ir a protocolos Tipo TCP/IP o similares.

si pero lamentablemente en el 328 no cabe tanto. el uso de la SD me agota la ram y flash. Lo que me queda es usar el serial o el esp8266.
Sino migrar a un atmega644/1284

O el ECN28J60

Yo aun no desecharia modbus. Si la velocidad del poleo es mas rapida que la duracion de un evento, pues no perderas el evento ocurrido.