SendCharacters

Transmisión de caracteres por el puerto de la CPU o de la MCU

Esta instrucción escribe los datos en el buffer de envío y ejecuta F159_MTRN para enviar los datos. Los datos a enviar se almacenan en sString. El buffer de envío es una variable de tipo VAR_IN_OUT que se asigna a SendBuffer. Si bSuppressEndCode está a TRUE, el código de fin de trama seleccionado en los registros del sistema no se añade a la cadena a enviar.

Al contrario que la instrucción SendCharactersAndClearString, no se modifica la variable conectada en sString.

Parámetros

Entrada

Port (WORD, INT, UINT)

Especificar los puertos de comunicación (dependiendo del tipo de PLC):

  • Puerto COM, por ejemplo SYS_COM0_PORT

  • Puerto Ethernet, por ejemplo SYS_ETHERNET_USER_CONNECTION_1

  • MCU/SCU por ejemplo 16#xx01 (xx = número de slot) en COM01

sString (STRING)

Almacena la cadena de envío

bSuppressEndCode (BOOL)

El código de fin de trama seleccionado en los registros del sistema no se añade a la cadena a enviar.

Entrada/salida

SendBuffer (ANY)

Almacena temporalmente la cadena de envío

Observaciones

Cuando se ha enviado el número de bytes especificado, la bandera de "transmisión completa" pasa a TRUE. Se pueden enviar o recibir nuevos datos. Cualquier instrucción de envío pone la bandera "transmisión completa" a FALSE y no se pueden recibir datos. La evaluación de la bandera de "transmisión completa" puede ser útil en los casos en los que no se espera respuesta, por ejemplo, en los mensajes de difusión (broadcast).

Banderas de error

sys_bIsOperationErrorHold (pasa a TRUE y permanece TRUE)
  • si no se ha encontrado ninguna unidad MCU en el slot especificado o se deben enviar cero bytes.

  • Se ha especificado 16#8000 en el MEWTOCOL-COM Maestro/Esclavo.

sys_bIsOperationErrorNonHold (pasa a TRUE para un ciclo de scan)
  • si no se ha encontrado ninguna unidad MCU en el slot especificado o se deben enviar cero bytes.

  • Se ha especificado 16#8000 en el MEWTOCOL-COM Maestro/Esclavo.

Ejemplo

Cabecera de la POU

Todas las variables de entrada y de salida utilizadas para la programación de esta función han sido declaradas en la Cabecera de la POU. Se utiliza la misma cabecera de la POU para todos los lenguajes de programación.

	VAR
		bSend: BOOL:=FALSE;
			(*activates function*)
		sSendData: STRING[30]:='ABCDEFGH';
			(*up to 30 chars*)
		awSendBuffer: ARRAY [0..15] OF WORD:=[16(0)];
			(*for 30 chars + 1 word*)
		bSuppressEndCode: BOOL:=FALSE;
	END_VAR

Cuerpo LD

Si bSend pasa de FALSE a TRUE, la instrucción envía los caracteres desde sSendData a través del puerto 1 de la MCU. Los caracteres se copian en el array awSendBuffer. awSendBuffer[0] está reservado para almacenar el número de caracteres de la cadena a enviar.

BODY
    WORKSPACE
        NETWORK_LIST_TYPE := NWTYPELD ;
        ACTIVE_NETWORK := 0 ;
    END_WORKSPACE
    NET_WORK
        NETWORK_TYPE := NWTYPELD ;
        NETWORK_LABEL :=  ;
        NETWORK_TITLE :=  ;
        NETWORK_HEIGHT := 7 ;
        NETWORK_BODY
B(B_CONTACT,,bSend,9,1,11,3,R);
B(B_VARIN,,1,11,2,13,4,);
B(B_VARIN,,sSendData,11,3,13,5,);
B(B_VARIN,,awSendBuffer,11,5,13,7,);
B(B_VARIN,,bSuppressEndCode,11,4,13,6,);
B(B_F,E_SendCharacters!,,13,0,24,7,,?DEN?DPort?DsString?DbSuppressEndCode?DSendBuffer?ASendBuffer?AENO);
L(1,2,9,2);
L(11,2,13,2);
L(1,0,1,7);
        END_NETWORK_BODY
    END_NET_WORK
END_BODY

Cuerpo en ST

if (DF(bSend)) then
    SendCharacters(Port := 1, sString := sSendData, bSuppressEndCode := bSuppressEndCode, SendBuffer := awSendBuffer);
end_if;

Modificado el: 2022-04-19Comentarios sobre esta páginaLínea directa de Panasonic