FP_SMTP_GET_DATA_FORMAT

Generar cadena de formato de datos para el protocolo SMTP

Esta instrucción FP genera una cadena que especifica el formato de los datos (dirección FP y longitud) de acuerdo con el tipo de datos en la entrada Var. Escribe la cadena en la variable de salida sDataFormat que es adecuada para la entrada sAttachment de la instrucción FP_SMTP_SET_MODE.

Cuando los registros de datos deben ser transmitidos con FP_SMTP_SET_MODE, se genera un archivo .csv con los valores de datos dados. Durante la transferencia, los datos se convierten a ASCII según el tipo de datos. Por lo tanto, la entrada sAttachment necesita información adicional que indique qué datos deben convertirse a qué tipo ASCII.

Parámetros

Entrada

Var (BOOL, INT, UINT, WORD, DINT, UDINT, DWORD, REAL, DATE, TOD, DT, STRING)

Tipo de datos simples o matriz de tipos de datos simples, por ejemplo, BOOL, INT, UINT, STRING, ...

Restricción: ARRAY..OF..STRING no está permitida

nSize (WORD, INT, UINT)

Tamaño de datos en palabras o de cadenas en unidades de bytes.

Salida

sDataFormat (STRING)

Cadena que especifica el formato de datos de la entrada sAttachment de FP_SMTP_SET_MODE

Observaciones

  • Antes de ejecutar la instrucción, necesita especificar los ajustes de transmisión de correo electrónico utilizando FP_SMTP_SET_MODE o el diálogo de configuración del cliente SMTP.

  • Antes de ejecutar la instrucción, necesita especificar la configuración de correo electrónico del grupo y evento utilizando FP_SMTP_SET_GROUP o el diálogo de configuración del cliente SMTP.

  • Antes de ejecutar la instrucción, asegurarse de que sys_bIsEthernetInitializing es FALSE. sys_bIsEthernetInitializing pasa a TRUE cuando se ejecuta la instrucción. Cuando ejecuta la instrucción mientras sys_bIsEthernetInitializing es TRUE, se produce un error.
  • La instrucción solo puede ejecutarse cuando la bandera de solicitud de transferencia para el ajuste de transferencia especificado es "FALSE: Ninguna solicitud de transferencia". Cuando la bandera de solicitud de transferencia es "TRUE: Transferencia solicitada", se produce un error de operación.

  • Cuando esta instrucción se ha ejecutado con éxito, las variables del sistema sys_bIsCarry y sys_iEthernetConnectionErrorCode se reinician.

  • Cuando se produce un error, consulte la variable del sistema sys_iEthernetConnectionErrorCode para conocer el número de código de error.

Banderas de error

sys_bIsOperationErrorHold (pasa a TRUE y permanece TRUE)
  • si se supera el tiempo de espera de la conexión

  • si la dirección IP no es válida

sys_bIsOperationErrorNonHold (pasa a TRUE para un ciclo de scan)
  • si se supera el tiempo de espera de la conexión

  • si la dirección IP no es válida

sys_bIsCarry (pasa a TRUE para un ciclo de scan)
  • si la instrucción se ejecuta durante la inicialización de Ethernet, sys_iEthernetConnectionErrorCode pasa a "11: Ethernet se está inicializando".

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
		arrayValues_UDINT: ARRAY [0..19] OF UDINT;
		bError: BOOL:=FALSE;
		bSetMode: BOOL:=FALSE;
		iID8: INT:=8;
	END_VAR

Cuerpo de la POU

Si bSetMode cambia de FALSE a TRUE y sys_bIsEthernetInitializing está a FALSE, se ejecuta la instrucción.

Cuerpo LD

BODY
    WORKSPACE
        NETWORK_LIST_TYPE := NWTYPELD ;
        ACTIVE_NETWORK := 0 ;
    END_WORKSPACE
    NET_WORK
        NETWORK_TYPE := NWTYPELD ;
        NETWORK_LABEL :=  ;
        NETWORK_TITLE :=  ;
        NETWORK_HEIGHT := 14 ;
        NETWORK_BODY
B(B_VARIN,,iID8,42,2,44,4,);
B(B_CONTACT,,bSetMode,4,1,6,3,R);
B(B_VAROUT,,bError,57,2,59,4,);
B(B_VARIN,,'GRPNO=0~SUBJECT=Time Notify Mail',42,4,44,6,);
B(B_VARIN,,'Hello~ this is time notify Mail from system. See attachment',42,5,44,7,);
B(B_VARIN,,'INFO=ADD~ATT=DATA;',11,7,13,9,);
B(B_VARIN,,'TRIG=TIME~/day~13:30:00',42,3,44,5,);
B(B_CONTACT,,sys_bIsEthernetInitializing,13,1,15,3,N);
B(B_VARIN,,arrayValues_UDINT,11,9,13,11,);
B(B_F,CONCAT-2!,,37,7,43,10,,?D?D?C);
B(B_F,Size_Of_Var!,,15,10,22,12,,?D?C);
B(B_F,FP_SMTP_GET_DATA_FORMAT!,,22,8,37,12,,?D@'Var'?DnSize?CsDataFormat);
B(B_F,FP_SMTP_SET_MODE!,,44,0,57,8,,?DEN?DnTransferID?DsTrigger?DsGroupNumber_Subject?DsBodyText?DsAttachment?AENO?CbError);
L(1,2,4,2);
L(6,2,13,2);
L(15,2,44,2);
L(37,9,37,10);
L(13,8,37,8);
L(15,10,15,11);
L(13,10,22,10);
L(43,7,43,8);
L(43,7,44,7);
L(1,0,1,14);
        END_NETWORK_BODY
    END_NET_WORK
END_BODY

Cuerpo en ST

If DF(bSetMode) And not sys_bIsEthernetInitializing then
    FP_SMTP_SET_MODE(nTransferID := iID8,
                     sTrigger := 'TRIG=TIME,/day,13:30:00',
                     sGroupNumber_Subject := 'GRPNO=0,SUBJECT=Time Notify Mail', 
                     sBodyText := 'Hello, this is time notify Mail from system. See attachment',
                     sAttachment := CONCAT('INFO=ADD,ATT=DATA;',
                                           FP_SMTP_GET_DATA_FORMAT(arrayValues_UDINT,
                                           Size_Of_Var(arrayValues_UDINT))),
                     bError => bError);
End_If;

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