Skip to content
A00227526 edited this page Nov 22, 2022 · 10 revisions

Registros modbus para modula

Holding registers

La librería cuenta con 3 registros de este tipo, en estos registros se almacenara la información necesaria para realizar un pedido hacia el modula. Sin embargo el pedido no se realizara hasta que el registro de tipo coil tenga el valor de 1. El primer registro almacena la función que hará el modula, existen 4 funciones, realizar un pedido para sacar material, realizar un pedido para almacenar material, pedir el estatus o información de la bandeja, y devolver la bandeja a almacenamiento.

  • 1 = entrada de material
  • 2 = salida de material
  • 3 = estatus de la bandeja
  • 4 = devolver bandeja al almacén

El segundo registro indica el código del producto, para este caso solo existe 1 producto, el cual tiene el nombre de fixture, este es representado por el valor de 1.

El tercer registro indica la cantidad de unidades de material, en este caso solo es necesaria para la función de salida de material y entrada de material, para las demás funciones no es necesaria.

Un ejemplo para pedir 1 fixture del modula seria el siguiente:

from pyModbusTCP.client import ModbusClient
myhost = #direccion ip
myport = #puerto
server = ModbusClient(host=myhost,port=myport)


server.write_multiple_registers(0,[2,1,1])

Input registers

Existen 6 registros de este tipo, a excepción del registro 6 estos registros solo se actualizaran cuando se haya usado la función 3 del modula la cual es solicitar el estatus de la bandeja, en el caso del ultimo registro se actualizara cuando se tenga un error,. El primer registro representa el estatus de la bandeja, este puede tomar dos valores 1 y 2, cuando la bandeja este en el estado de 1 los demás registros no se actualizaran, solo se actualizaran cuando este en el estado 2, que es cuando la bandeja ya estará lista

  • 1 = not in picking, o la bandeja esta en camino para ser usada
  • 2 = in picking, o la bandeja ya esta lista para que los productos sean recogidos

El segundo registro representa la posición en X donde este el producto

El tercer registro representa la posición en y del producto

El cuarto registro representa el ancho del producto

El quinto registro representa la altura del producto

El sexto registro representara el tipo de error que se haya tenido al momento de realizar un pedido.

Discret input

Solo se tiene un registro de este tipo, este registro tomara el valor de 1 cuando una persona este usando o escribiendo algún registro en el modula, esto para que otros usuarios puedan visualizar que el modula este en uso y no intenten usar al mismo tiempo

Coil - CALL

Este registro es la confirmación de la función o el pedido, mientras este registro este en 0 se podrá modificar los holding register sin que el modula se mueva, una vez que este registro tome el valor de 1 el modula ejecutara la acción que se este indicando en el primer holding register, para devolver la bandeja de manera que la acción sea realizada por el modula será la siguiente:

from pyModbusTCP.client import ModbusClient
myhost = #direccion ip
myport = #puerto
server = ModbusClient(host=myhost,port=myport)


server.write_multiple_registers(0,[4,0,0])
server.write_multiple_coil([0,[1]])

Un ejemplo de como solicitar el estatus de la bandeja seria el siguiente:

from pyModbusTCP.client import ModbusClient
myhost = #direccion ip
myport = #puerto
server = ModbusClient(host=myhost,port=myport)


server.write_multiple_registers(0,[1,1,1])
server.write_multiple_coil([0,[1]])

server.write_multiple_registers(0,[3,0,0])
server.write_multiple_coil([0,[1]])

print(str(server.read_holding_registers(0,3)) + str(server.read_coils(0,1)) + str(server.read_discrete_inputs(0,1)) + str(server.read_input_registers(0,5)))

Manejo de errores

Cada vez que se tenga un error se pondrán todos los registros a un valor de 0 a excepción del input register numero 6, este se actualizara con el error que se haya tenido al momento de realizar un pedido, y se volverá a poner en 0 (estado sin errores) cuando se haga uso de otra función nuevamente.

Los valores que tendrá son

  • 0 = sin errores
  • 1 = se pidió una función que no existe
  • 2 = se pidió un producto que no existe
  • 3 = se intento extraer una cantidad de producto que no existe en el modula
  • 4 = error de conexión
  • 5 = error del modula o de Odoo
Clone this wiki locally