Está en la página 1de 7

Machine Translated by Google

Modbus_Master:  comunicarse  como  maestro  Modbus  (S7­1200,  S7­1500)

Modbus_Master:  comunicarse  como  maestro  Modbus

Nota

Uso  con  CM1241  El  
uso  de  esta  instrucción  con  un  CM1241  solo  es  posible  a  partir  de  la  versión  de  firmware  V2.1  del  módulo.

Descripción  La  
instrucción  Modbus_Master  se  comunica  como  maestro  Modbus  a  través  de  un  puerto  configurado  por  la  
instrucción  Modbus_Comm_Load.  Un  bloque  de  datos  de  instancia  se  asigna  automáticamente  cuando  agrega  la  
instrucción  Modbus_Master  en  su  programa.  El  parámetro  MB_DB  de  la  instrucción  Modbus_Comm_Load  debe  
conectarse  al  parámetro  MB_DB  (estático)  de  la  instrucción  Modbus_Master.

Nota

No  puede  activar  la  remanencia  (Retain)  para  un  DB  de  instancia  de  la  instrucción  Modbus_Master.

Parámetros

Parámetro Declaración Tipo  de  datos Descripción  estándar


ters
S7­ S7­
1200/1500 300/400/
WinAC

FALSO  =  sin  solicitud
ENTRADA  SOLICITADA bool FALSO VERDADERO  =  solicitud  de  envío  de  datos  al  esclavo  
del  bus  Mod

Dirección  de  la  estación  Modbus  RTU:

Rango  de  direccionamiento  estándar  (1  a  247  y  
0  para  transmisión)
Rango  de  direccionamiento  extendido  (1  a  65535  
MB_AD EN Palabra  única  ­
DR y  0  para  transmisión)
El  valor  0  está  reservado  para  la  transmisión  de  
una  trama  a  todos  los  esclavos  Modbus.  Solo  los  
códigos  de  función  Modbus  05,  06,  15  y  16  son  
compatibles  con  la  transmisión.
Selección  de  modo:  especifica  el  tipo  de  solicitud  
EN  MODO (lectura,  escritura  o  diagnóstico).  Hay  información  
USInt  Byte  0 adicional  disponible  en  la  tabla  de  funciones  de  
Modbus  a  continuación.

Dirección  de  inicio  en  el  esclavo:  especifica  la  
Y dirección  de  inicio  de  los  datos  a  los  que  se  accede  
OF_AD EN UDint  DPalabra  0 en  el  esclavo  Modbus.  Las  direcciones  válidas  se  
DR enumeran  en  la  tabla  de  funciones  Modbus  a  
continuación.
Y
EN UInt  Palabra  0 Longitud  de  datos:  especifica  el  número  de  bits  o  
CUENTO palabras  a  las  que  debe  acceder  esta  instrucción.  El
norte

­  1  ­
Machine Translated by Google

Modbus_Master:  comunicarse  como  maestro  Modbus  (S7­1200,  S7­1500)

las  longitudes  válidas  se  enumeran  en  la  tabla  de  funciones  
de  bus  Mod  a  continuación.

Inicialización  de  la  instrucción  Modbus_Master

La  instrucción  se  inicializa  con  TRUE.
CON_ EN  FUERA  ­­­ booleano  FALSO Luego,  la  instrucción  restablece  COM_RST  en  
PRIMERA FALSO.

Nota:  
El  parámetro  solo  está  disponible  para  
instrucciones  S7­300/400.

Puntero  de  datos:  apunta  a  la  bandera  o  dirección  de  
base  de  datos  para  que  se  escriban  o  lean  los  datos.

A  partir  de  la  versión  de  instrucción  V3.0:

Y El  parámetro  puede  apuntar  a  un  área  de  memoria  
TA_PT Variante  IN/OUT  Cualquiera  ­ optimizada.  En  el  área  de  memoria  optimizada,  
R se  permite  un  solo  elemento  o  una  matriz  con  los  
siguientes  tipos  de  datos:  Bool,  Byte,  Char,  Word,  
Int,  DWord,  DInt,  Real,  USInt,  UInt,  UDInt,  SInt,  
WChar.  Todos  los  demás  tipos  de  datos  dan  como  
resultado  el  mensaje  de  error  16#818C.

El  bit  HECHO  es  VERDADERO  durante  un  ciclo  
HECHO bool FALSO después  de  que  la  última  solicitud  se  haya  
completado  sin  errores.  •  FALSO:  ningún  comando  
activo  para  Mod.
bus_Master  •  
OCUPADO bool ­
TRUE:  comando  para  Modbus_Master  en  curso  
El  bit  ERROR  es  TRUE  durante  un  ciclo  
después  de  que  la  última  solicitud  se  haya  
ES completado  con  errores.  El  código  de  error  en  el  
AFUERA bool FALSO parámetro  STATUS  solo  es  válido  en  el  ciclo  en  el  
TDR
que  ERROR  =  TRUE.

ESTA
AFUERA Palabra 0 Código  de  error  (ver  Mensajes  de  error)

Variables  en  el  bloque  de  datos  del  maestro  Modbus  La  siguiente  
tabla  muestra  las  variables  estáticas  públicas  en  el  DB  de  instancia  de  Modbus_Master  que  puede  utilizar  en  
su  programa.

Etiquetas  estáticas  en  la  base  de  datos  de  instancia

Etiqueta Datos Estándar Descripción


tipo

Duración  (en  segundos)  de  espera  de  una  instancia  
maestra  de  Modbus  bloqueada  antes  de  que  esta  
Blocked_Proc_Tim   Real  3.0 instancia  se  elimine  como  ACTIVA.  Esto  puede  suceder,  
eout por  ejemplo,  si  se  emitió  una  solicitud  maestra  y  el  
programa  se  detiene  para  llamar  a  la  función  maestra  antes  
de  que  haya  terminado  por  completo  la  reposición.

­  2  ­
Machine Translated by Google

Modbus_Master:  comunicarse  como  maestro  Modbus  (S7­1200,  S7­1500)

búsqueda.  El  valor  del  tiempo  debe  ser  mayor  que  0  y  
menor  que  55  segundos  para  evitar  un  error  al
ocurrir.

Consulte  también  "Reglas  para  la  comunicación  por  parte  del  
Modbus­Master"  y  "Llamada  de  la  instrucción  Modbus_Master  
con  diferentes  ajustes  de  parámetros".

Configura  la  dirección  de  la  estación  esclava  como  byte  simple  
o  doble.  •  FALSO  =  dirección  de  un  byte;  0  a  247  •  VERDADERO  
Aderezo  de   booleano  FALSO =  Dirección  de  dos  bytes  (corresponde  a
Extended_Ad
direccionamiento  extendido);  
0  a  65535

Modo  de  compatibilidad  con  CP  341  y  CP  441­2  y  ET  200S  
1SI  con  driver  para  Modbus  RTU  y  con  ET  200S  1SI  para  
Modbus.
El  valor  predeterminado  es  0.

•  FALSO  =  según  la  especificación  Modbus,  no  compatible  
•  VERDADERO  =  compatible  o  Para  FC1  y  FC2:  Los  
datos  leídos  de  la  trama  recibida  se  escriben  palabra  por  
palabra  en  la  memoria  de  la  CPU  direccionada  y  se  
intercambian  byte  por  byte.

Compatible  
booleano  FALSO
Si  el  número  de  bits  a  transmitir  no  es  un  múltiplo  
ty_Mode  1)
de  16,  los  bits  que  no  son  relevantes  se  establecen  en  
nulo  en  la  última  palabra.  o  Para  FC15:  Las  palabras  a  
transmitir  se  leen  palabra  por  palabra  desde  la  memoria  
direccionada  y  se  escriben  byte  por  byte  en  la  trama  
de  envío.

Si  el  número  de  bits  a  transmitir  no  es  un  múltiplo  
de  8,  los  bits  en  el  último  byte  que  no  son  relevantes  
se  leen  sin  cambios  desde  la  memoria  direccionada  y  
se  ingresan  en  la  trama  de  envío.

El  parámetro  MB_DB  de  la  instrucción  
MB_B ­ Modbus_Comm_Load  debe  estar  conectado  a  este  parámetro  
MB_DB Plaza  bursátil  norteamericana
MB_DB  de  la  instrucción  Modbus_Master.

1)  Los  módulos  de  comunicación  PtP  responden  según  lo  definido  en  la  especificación  Modbus.  Para  mantener  
una  respuesta  como  con  CP  341,  CP  441 2  y  ET  200SP  1SI  para  Modbus,  utilice  el  parámetro  "Compatibility_Mode".

El  programa  puede  escribir  valores  en  las  etiquetas  Blocked_Proc_Timeout  y  Extended_Addressing  para  controlar  las  
operaciones  del  maestro  Modbus.

Reglas  para  la  comunicación  por  Modbus­Master
•  Se  debe  ejecutar  Modbus_Comm_Load  para  configurar  un  puerto  de  modo  que  la  instrucción  Modbus_Master  pueda  
comunicarse  con  este  puerto.  •  Un  puerto  que  se  utilizará  como  maestro  Modbus  no  debe  ser  utilizado  por  
Modbus_Slave.  Puede  utilizar  una  o  varias  instancias  de  Modbus_Master  1)  con  este  puerto.  Pero  todas  las  versiones  
de  Modbus_Master  deben  usar  la  misma  base  de  datos  de  instancia  para  el  puerto.

­  3  ­
Machine Translated by Google

Modbus_Master:  comunicarse  como  maestro  Modbus  (S7­1200,  S7­1500)

•  Las  instrucciones  de  Modbus  no  utilizan  eventos  de  alarma  de  comunicación  para  controlar  el  proceso  de  
comunicación.  Su  programa  debe  consultar  la  instrucción  Modbus_Master  para  los  comandos  completados  
(DONE,  ERROR).
•  Recomendamos  llamar  todas  las  ejecuciones  de  Modbus_Master  para  un  puerto  específico  desde  un  OB  
de  ciclo  de  programa.  Las  instrucciones  del  maestro  Modbus  solo  se  pueden  ejecutar  en  un  ciclo  de  
programa  o  en  un  nivel  de  procesamiento  cíclico/controlado  por  tiempo.  No  se  pueden  procesar  en  
diferentes  niveles  de  procesamiento.  La  interrupción  de  prioridad  de  una  instrucción  maestra  Modbus  por  
otra  instrucción  maestra  Modbus  en  un  nivel  de  procesamiento  con  mayor  prioridad  da  como  resultado  una  
operación  incorrecta.  Las  instrucciones  del  maestro  Modbus  no  se  pueden  procesar  en  los  niveles  de  error  
de  tiempo,  diagnóstico  o  arranque.

1)  "Instancia  de  maestro  Modbus"  aquí  significa  una  llamada  de  la  instrucción  Modbus_Master  con  la  
misma  interconexión  a  una  instrucción  Modbus_Comm_Load  y  la  misma  configuración  para  los  
parámetros  MB_ADDR,  MODE,  DATA_ADDR  y  DATA_LEN.
Ejemplo
Modbus_Master  se  llama  con  MODE=0  y  DATA_ADDR=10
Este  trabajo  ahora  está  activo  hasta  que  se  complete  con  DONE=1  o  ERROR=1  o  hasta  que  expire  el  
tiempo  de  monitoreo  configurado  en  el  parámetro  Blocked_Proc_Timeout.  Si  se  inicia  un  nuevo  
comando  después  de  que  expire  el  tiempo  de  vigilancia  y  antes  de  que  se  haya  completado  el  comando  
anterior,  el  comando  anterior  se  cancela  sin  un  mensaje  de  error.
Si,  mientras  se  ejecuta  este  comando,  la  instrucción  se  llama  por  segunda  vez  con  los  mismos  datos  
de  instancia  pero  con  diferentes  configuraciones  de  parámetros  MODE  y  DATA_ADDR,  esta  segunda  
llamada  finaliza  con  ERROR=1  y  STATUS=8200.

Llamar  a  la  instrucción  Modbus_Master  con  diferentes  configuraciones  de  parámetros  Si  en  su  
programa  se  realizan  varias  llamadas  a  la  instrucción  Modbus_Master  con  diferentes  configuraciones  
para  MB_ADDR,  MODE,  DATA_ADDR  o  DATA_LEN,  debe  asegurarse  de  que  solo  una  de  estas  
llamadas  esté  activa  en  un  momento  dado.  De  lo  contrario,  se  emite  el  mensaje  de  error  16#8200  (la  
interfaz  está  ocupada  con  una  solicitud  en  curso).
Si  una  llamada  no  se  puede  procesar  en  su  totalidad,  el  perro  guardián  se  activa  mediante  el  parámetro  
Blocked_Proc_Time  out  y  finaliza  el  comando  en  curso.

Parámetro  REQ
FALSO  =  sin  solicitud;  TRUE  =  solicitud  de  envío  de  datos  al  esclavo  Modbus
Habilitar  la  transmisión  solicitada.  Este  transmite  el  contenido  del  búfer  a  la  interfaz  de  comunicación  
punto  a  punto.

Utilice  los  parámetros  DATA_ADDR  y  MODE  para  seleccionar  el  código  de  función  
Modbus.
DATA_ADDR  (Dirección  de  inicio  Modbus  en  el  esclavo):  Especifica  la  dirección  de  inicio  de  los  datos  
a  los  que  se  accede  en  el  esclavo  Modbus.

La  instrucción  Modbus_Master  utiliza  la  entrada  MODE  en  lugar  de  una  entrada  de  código  de  función.  
La  combinación  de  MODE  y  DATA_ADDR  especifica  el  código  de  función  que  se  utiliza  en  la  trama  
Modbus  real.  La  siguiente  tabla  muestra  cómo  se  relacionan  el  parámetro  MODE,  el  código  de  función  
Modbus  y  el  rango  de  direcciones  Modbus  en  DATA_ADDR.

Funciones  modbus

­  4  ­
Machine Translated by Google

Modbus_Master:  comunicarse  como  maestro  Modbus  (S7­1200,  S7­1500)

MODE  DATA_ADDR  (dirección  Modbus) DATA_LEN   Función  Modbus Operación  y  datos


(longitud  de  datos) código

Bits  por  solicitud Leer  bits  de  salida:
0 2000/199   01
1  a 9999  1  a 0  a  9998
2  1
Bits  por  solicitud Leer  bits  de  entrada:
0 1000   2000/199   02
a  19999  1  a 0  a  9998
1 2  1
Palabras  por  pedido Leer  registro  de  espera:
4000  
a  49999  1  a  125/124  1 0  a  9998
0 1 03
4000  
a  465535  1  a  125/124  1 0  a  65534
01
Palabras  por  solicitud Leer  palabras  de  entrada:
0 3000   04
a  39999  1  a  125/124  1 0  a  9998
1

Bits  por  solicitud Escribe  un  bit  de  salida:
1 05
1  a 9999  1 0  a  9998
1  palabra  por  solicitud Escriba  un  registro  de  retención:
4000  
a  49999  1 0  a  9998
1 1 06
4000  
al  465535  1 0  a  65524
01
Bits  por  solicitud Escribir  múltiples  bits  de  salida:
1 1968/196   15
1  a 9999  2  a 0  a  9998
0  1
Escriba  varios  registros  de  
Palabras  por  solicitud retención:

4000  
1 a  49999  2  a 123/122 0  a  9998
1
dieciséis

4000  
0  a  65534
01 a  465534  2  a  123/122  1
Escriba  uno  o  varios  bits  
Bits  por  solicitud
de  salida:
2  2 15
1968/196  
1  a 9999  1  a 0  a  9998
0  1
Escriba  uno  o  varios  registros  
Palabras  por  solicitud
de  espera:
4000  
2  2 a  49999  1  a 123 0  a  9998
1
dieciséis

4000  
a  465535  1  a 122  1 0  a  65534
01
Tanto  los  operadores  DATA_ADDR  como   Lea  la  palabra  de  estado  y  
11 DATA_LEN  de  Modbus_Master  se  ignoran   11 el  contador  de  eventos  de  la  
con  esta  función. comunicación  esclava.  El  STA

­  5  ­
Machine Translated by Google

Modbus_Master:  comunicarse  como  maestro  Modbus  (S7­1200,  S7­1500)

Tu  palabra  indica  ocupado  (0  
­  no  ocupado,  0xFFFF  ­  
ocupado).  El  contador  de  
eventos  se  incrementa  por  cada  
procesamiento  exitoso  de  un  
marco.

Verifique  el  estado  del  esclavo  
con  el  código  de  diagnóstico  de  
1  palabra  por  solicitud datos  0x0000  (prueba  de  bucle  
80 08 invertido:  el  esclavo  devuelve  un  
eco  de  la  solicitud)

­ 1 ­

Reinicie  el  contador  de  eventos  del  
1  palabra  por  solicitud esclavo  usando  el  código  de  
81 08 diagnóstico  de  datos  0x000A

­ 1 ­

104   Palabras  por  solicitud Leer  palabras  de  entrada


3 04
0  a  65535  1  a  125/124  1 0  a  65535

3  a  
10,  
12  a  
79,  
82  a   ­ ­ Reservado
103,  
105  
a  
255

1  En  el  direccionamiento  ampliado,  consulte  el  parámetro  Extended_Adressing,  la  longitud  máxima  de  datos  
es  1  byte  o  1  palabra  más  corta,  según  el  tipo  de  datos  de  la  función.
2  MODE  2  le  permite  escribir  uno  o  más  bits  de  salida  y  uno  o  más  registros  de  retención  utilizando  las  funciones  
Modbus  15  y  16.
El  MODO  1  utiliza  las  funciones  Modbus  5  y  6  para  escribir  1  bit  de  salida  y  1  registro  de  retención,  y  las  
funciones  Modbus  15  y  16  para  escribir  múltiples  bits  de  salida  y  múltiples  registros  de  retención.

3  Lo  siguiente  se  aplica  a  S7­300/400/WinAC:  No  es  compatible.

Parámetro  DATA_PTR  El  
parámetro  DATA_PTR  apunta  a  la  dirección  de  la  DB  o  de  la  memoria  de  bits  en  la  que  se  realiza  la  lectura  o  la  
escritura.  Si  utiliza  un  bloque  de  datos,  debe  crear  un  bloque  de  datos  global  que  proporcione  la  memoria  de  datos  
para  los  procesos  de  lectura  y  escritura  en  los  esclavos  Modbus.

Nota

S7­1200/1500  ­  El  bloque  de  datos  direccionado  mediante  DATA_PTR  debe  soportar  el  direccionamiento  directo  
El  bloque  de  datos  debe  permitir  el  direccionamiento  directo  (absoluto)  y  simbólico.

Nota

Usando  el  código  de  función  5

­  6  ­
Machine Translated by Google

Modbus_Master:  comunicarse  como  maestro  Modbus  (S7­1200,  S7­1500)

El  código  de  función  5  se  utiliza  para  establecer  o  eliminar  bits  individuales.

Cuando  se  establece  un  bit,  se  debe  especificar  el  valor  "16#FF00"  en  la  primera  palabra  del  DB  
direccionado  o  área  de  memoria  de  bits  a  través  de  DATA_PTR.  •  Con  S7­1200,  el  valor  "16#0100"  
también  se  puede  especificar  para  establecer  un  bit.  •  Para  restablecer  un  bit,  se  debe  especificar  el  
valor  "16#0000"  en  la  primera  palabra  del  DB  o  área  de  memoria  de  bits  direccionada  a  través  de  DATA_PTR.

Todos  los  demás  valores  se  rechazan  con  ERROR  =  TRUE  y  STATUS  =  16#8384.

Estructuras  de  bloques  de  datos  para  el  parámetro  DATA_PTR  •  Estos  

tipos  de  datos  son  válidos  para  leer  palabras  del  rango  de  direcciones  Modbus  (DATA_PTR)  30001  a  39999,  
40001  a  49999  y  400001  a  465535,  así  como  para  escribir  palabras  en  el  rango  de  direcciones  Modbus  
(parámetro  DATA_PTR)  40001  a  49999  y  400001  a  465535.

o  Array  estándar  de  tipos  de  datos  WORD,  UINT  o  INT  o  
Estructura  nombrada  del  tipo  WORD,  UINT  o  INT  en  la  que  cada  elemento  tiene  un  nombre  único  y  un  tipo  
de  datos  de  16  bits.  o  Estructura  compleja  con  nombre  en  la  que  cada  elemento  tiene  un  nombre  único  
y  un  nombre  de  16  bits  o
tipo  de  datos  de  32  
bits.  •  Para  leer  y  escribir  bits  para  el  rango  de  direcciones  Modbus  (parámetro  DATA_PTR)  00001  a  09999  y  
para  leer  bits  de  10001  a  19999.  o  Campo  estándar  de  tipos  de  datos  booleanos.  o  Estructura  booleana  
nombrada  a  partir  de  etiquetas  booleanas  claramente  nombradas.  •  No  es  imprescindible,  pero  sí  
aconsejable,  asignar  a  cada  instrucción  Modbus_Master  su  propia  área  de  memoria  separada.  La  razón  de  
esto  es  que  la  destrucción  de  datos  es  mucho  más  probable  si  varias  instrucciones  Modbus_Master  están  leyendo  
y  escribiendo  en  la  misma  área  de  memoria.

•  No  es  necesario  que  las  áreas  de  datos  para  DATA_PTR  estén  ubicadas  en  el  mismo  bloque  de  datos  global.  
Puede  crear  un  bloque  de  datos  con  varias  áreas  para  procesos  de  lectura  Modbus,  un  bloque  de  datos  para  
procesos  de  escritura  Modbus  o  un  bloque  de  datos  para  cada  estación  esclava.

Versiones  de  instrucciones
La  versión  3.0  es  funcionalmente  idéntica  a  la  versión  2.4  y  su  número  de  versión  solo  se  incrementó  debido  a  
medidas  internas.

­  7  ­

También podría gustarte