FP_SMTP_SET_MODE设置SMTP传输模式
此 FP 指令配置事件触发电子邮件的传输设置。将此指令与指令FP_SMTP_CONNECTION一同使用以进行SMTP服务器设置;与FP_SMTP_SET_GROUP一同使用以指定目标组。

输入
设置传输设置ID。
值:0–15(值必须按升序输入)
使用以下关键字设置之一设置触发器类型:
'TRIG=BITON,xxx':在指定位的上升沿发送电子邮件。
值:X, Y, R, L, SR, E, DT.n, LD.n, SD.n
示例:'TRIG=BITON,R100'在R100的上升沿发送电子邮件。
'TRIG=TIME,xxxx,yyyy':在指定的日期和/或指定的时间发送电子邮件。
值:
\min,ss(每分钟,以秒为单位设置时间)
\hour,mm:ss(每小时,以分钟和秒为单位设置时间)
\day,hh:mm:ss(每天,以小时、分钟和秒为单位设置时间)
\mon,DD:hh:mm:ss(每月,将日期设置为日、小时、分钟和秒)
\year,MM:DD:hh:mm:ss(每年,将日期设置为月、日、小时、分钟和秒)
\week,hh:mm:ss-w(每周,将日期和时间设置为小时、分钟、秒和一周中的某一天)
ss=秒(0–59)、mm=分钟(0–59)、hh=小时(0–23)、DD=天(1–31)、MM=月(1–12)、w=一周中的某一天(0=周日、1=周一、2=周二、3=周三、4=周四、5=周五,6=周六)
每天13:30:'TIME,/day,13:30:00' 
每年4月1日9:00:'TIME,/year,4:1:9:0:0'
每周的周五23:50:'TIME,/week,23:50:00-5'
'TRIG=CYCLIC,xxxx':以定期间隔发送电子邮件。
值:
30SEC(30秒)
1MIN, 2MIN, 3MIN, 4MIN, 5MIN, 6MIN, 10MIN, 15MIN, 30MIN(分钟)
1HOUR, 2HOUR, 3HOUR, 4HOUR, 6HOUR, 12HOUR, 24HOUR(小时)
 最短的循环为30秒。您只能设置一个循环时间(无法设置像'1MIN30SEC'一样的值)。
示例:'TRIG=CYCLIC,30SEC'每30秒发送一次电子邮件。
'TRIG=PROGRAM':执行FP_SMTP_TRANSFER_REQUEST指令时发送电子邮件。
TRIG=STATUS,xxx1,xxx2,xxx3:当指定的PLC状态发生变化时发送电子邮件。 
值:
PROG>RUN(从[PROG]切换为[RUN]时)
RUN>PROG(从[RUN]切换为[PROG]时)
ERR>STOP(发生自诊断错误且操作停止时)
ERR>RUN(发生自诊断错误且操作继续时)
ERRCLR(错误被清除时)
当PLC状态从[PROG]更改为[RUN]时:'TRIG=STATUS,PROG>RUN'
当满足以下条件之一时:出现自诊断错误或错误被清除:'TRIG=STATUS,ERR>STOP,ERR>RUN,ERRCLR'
设置目标组编号和电子邮件的主题。
	使用关键字语法'GRPNO=n1+n2+…+n8'最多设置八个目标组编号。
值:0–7
使用以下两个关键字设置之一设置主题:
'SUBJECT=xxxxxx':设置用户定义的主题文本。
'SUBJECTAUTO':自动生成的主题包含有关发送触发器类型的信息。
自动生成的主题:
日语  | 
英语  | 
|---|---|
ビットON 検出(R100)  | 
Bit ON detect (R100)  | 
一定周期メール(1分毎)  | 
Interval mail (1 minute)  | 
一定周期メール(24 時間毎)  | 
Interval mail (24 hour)  | 
指定時刻メール(毎分・0 秒)  | 
Specified time (every minute 0s)  | 
指定時刻メール(毎時・0 分0 秒)  | 
Specified time (every hour 0m0s)  | 
指定時刻メール(毎日・17 時30 分0 秒)  | 
Specified time (every day 17h30m0s)  | 
指定時刻メール(毎週・金曜・17 時30 分0 秒)  | 
Specified time (every Friday 17h30m00s)  | 
PLC 状態変化(電源ON)  | 
PLC status change (power on)  | 
PLC 状態変化(PROG>RUN スイッチ切り替え)  | 
PLC status change (PROG > RUN)  | 
PLC 状態変化(RUN>PROG スイッチ切り替え)  | 
PLC status change (RUN > PROG)  | 
PLC 状態変化(演算停止自己診断エラー検知)  | 
PLC status change (operation stop error)  | 
PLC 状態変化(演算継続自己診断エラー検知)  | 
PLC status change (operation continuous error)  | 
PLC 状態変化(エラー解除)  | 
PLC status change (error release)  | 
SMTPcREQ 命令による  | 
SMRPcREQ command  | 
注意:
自动生成的信息所使用的语言由指令FP_SMTP_SET_CONNECTION指定。使用参数sCommunication将语言从日语(默认)切换为英语。
如果已将多个PLC状态更改指定为触发器类型,则主题将包含触发电子邮件发送的实际状态更改。
关键字'GRPNO'和'SUBJECT'必须用逗号分隔并按此顺序输入。
目标组编号为0,由用户定义主题的“Time notification e-mail”:'GRPNO=0,SUBJECT=Time Notification E-Mail'
目标组编号为1、3、4、7,由用户定义主题的“Cyclic notification e-mail”:'GRPNO=1+3+4+7,SUBJECT=Cyclic notification e-mail'
	目标组编号为0至7,自动生成主题:'GRPNO=0+1+2+3+4+5+6+7,SUBJECTAUTO'
指定包含电子邮件文本或字符串的变量。
最大字符串长度:对于4.1或更高版本以及3.4至3.x版的CPU,最长为4096个单字节字符
对于其他所有版本,最长为256个单字节字符。
指定是否发送附加信息或文件附件。
使用以下关键字设置之一在电子邮件文本中包含附加信息:
'INFO=NON':不自动添加信息
'INFO=ADD':添加事件信息(哪个事件触发了电子邮件)
以下信息将被添加到电子邮件文本中:
日语  | 
英语  | 
|---|---|
基本項目 
  | 
Basic information 
  | 
トリガ種類  | 
Detailed information  | 
ビットON 検出(R100)  | 
Bit ON detect (R100)  | 
一定周期メール(1分毎)  | 
Interval mail (1 minute)  | 
一定周期メール(24 時間毎)  | 
Interval mail (24 hour)  | 
指定時刻メール(毎分・0 秒)  | 
Specified time (every minute 0s)  | 
指定時刻メール(毎時・0 分0 秒)  | 
Specified time (every hour 0m0s)  | 
指定時刻メール(毎日・17 時30 分0 秒)  | 
Specified time (every day 17h30m0s)  | 
指定時刻メール(毎週・金曜・17 時30 分0 秒)  | 
Specified time (every Friday 17h30m00s)  | 
PLC 状態変化(電源ON)  | 
PLC status change (power on)  | 
PLC 状態変化(PROG>RUN スイッチ切り替え)  | 
PLC status change (PROG > RUN)  | 
PLC 状態変化(RUN>PROG スイッチ切り替え)  | 
PLC status change (RUN > PROG)  | 
PLC 状態変化(演算停止自己診断エラー検知)  | 
PLC status change (operation stop error)  | 
PLC 状態変化(演算継続自己診断エラー検知)  | 
PLC status change (operation continuous error)  | 
PLC 状態変化(エラー解除)  | 
PLC status change (error release)  | 
SMTPcREQ 命令による  | 
SMRPcREQ command  | 
注意:
地址信息取决于FP_SMTP_SET_CONNECTION指定的是IPv4地址还是IPv6地址。
自动生成的信息所使用的语言由指令FP_SMTP_SET_CONNECTION指定。使用参数sCommunication将语言从日语(默认)切换为英语。
使用以下关键字设置之一包含数据和/或文件附件:
'ATT=NONE':不要在电子邮件中添加任何数据。
'ATT=DATA,xxxxxxx':将内存区中的数据添加到电子邮件文本中。
以下信息将被添加到电子邮件文本中:
电子邮件文本中添加的信息(日语)  | 
电子邮件文本中添加的信息(英语)  | 
|---|---|
デバイス取得項目 
  | 
Device get information 
  | 
指定起始地址、传输的数据数量,转换方法和换行位置。
值:
内存区和起始地址:WX、WY、WR, WL、DT、LD、SD
传输的数据数:1–1000
转换方法:
BIN1w(未转换的16位二进制文件,不能用于向电子邮件文本添加数据,要想添加,请改用'FILE'关键字)
US(16 位无符号十进制)
SS(16 位有符号十进制)
UL(32 位无符号十进制)
SL(32 位有符号十进制)
SF(32 位单精度浮点)
DF(64 位双精度浮点)
HEX1w(16 位十六进制)
HEX2w(32 位十六进制)
HEX4w(64 位十六进制)
ASCII(ASCII字符,输出用“”括起)
换行位置:0–255。
0:仅在文件末尾输出换行符。
n:每n个数据点输出一个换行符。
'ATT=DATA,xxxxxxxxxxx,FILE=yyyyyyyyyyy':将内存区中的数据添加到电子邮件文本中,并将数据附加为文件。使用与'ATT=DATA,xxxxxxx’相同的值。
'ATT=FILE,Filename':附加SD卡上指定文件夹中的文件。
使用关键字'TOP'和'END',自动向文件名添加日期和时间(yymmdd_hhmmss)。
TOP:在文件名的开头添加数据
END:在文件名的末尾添加数据
注意:
自动生成的信息所使用的语言由指令FP_SMTP_SET_CONNECTION指定。使用参数sCommunication将语言从日语(默认)切换为英语。
无法为文件附件指定LOG文件夹名称('\LOG0'到'\LOG15')。
要生成sAttachment字符串,也可以使用FP_SMTP_GET_DATA_FORMAT。
不自动添加任何信息或数据:'INFO=NON,ATT=NONE'
自动添加信息,不添加数据:'INFO=ADD,ATT=NONE'
不自动添加信息,而是将DT100到DT109的16位十六进制数据添加到电子邮件文本中:'INFO=NON,ATT=DATA,DT100,10,HEX1w'
不自动添加信息,而是附加SD卡中的文件:'INFO=NON,ATT=FIL,\Folder\FileName.bin'
输出
如果超过连接超时
如果 IP 地址无效
当发生错误时,针对错误代码编号检查系统变量sys_iEthernetConnectionErrorCode。
对于CPU单元版本3.4到3.x和4.1或更高版本,字符串数据的字符数不应超过4096;对于其他CPU单元,不应超过256。
此指令不可用于中断程序。
大小写字符均可用于可指定字符常量的操作数。“Abcd”、“ABCD”和“abcd”意义相同,但是,文件名区分大小写。
执行此指令前,需使用FP_SMTP_SET_CONNECTION或SMTP客户端的设置对话框指定电子邮件传输服务器。
执行此指令前,需使用FP_SMTP_SET_GROUP或SMTP客户端的设置对话框指定组和事件邮件设置。
执行此指令前,确保sys_bIsEthernetInitializing为FALSE。sys_bIsEthernetInitializing在执行指令后将变为TRUE。sys_bIsEthernetInitializing为TRUE时,执行指令将发生错误。
仅当指定传输设置的传输请求标志或指定的nLogID编号为FALSE时,才能执行该指令。当传输请求标志为TRUE时,将发生运算错误。
成功执行此指令后,会重置系统变量sys_bIsCarry和sys_iEthernetConnectionErrorCode。
当发生错误时,针对错误代码编号检查系统变量sys_iEthernetConnectionErrorCode。
如果为参数指定的值超出允许的范围。
如果未按升序指定传输ID。
如果指令是在中断程序中执行的。
如果指定了未通过指令FP_SMTP_SET_CONNECTION或SMTP客户端的设置对话框指定的电子邮件传输服务器。
如果以冗余方式指定了相同的目标组编号。
如果指定了未使用指令FP_SMTP_SET_GROUP或SMTP客户端的设置对话框定义的目标组编号。
如果指定传输设置的电子邮件传输请求标志为“TRUE:请求传输”。
如果指定nLogID编号的传输请求标志为TRUE,例如,如果sys_blsLog0DataRecordingActive为TRUE。
如果字符串数据的字符数超过其上限值。对于CPU单元版本3.4到3.x和4.1或更高版本,上限值为4096个字符;对于其他CPU单元,上限值为256个字符。
如果为参数指定的值超出允许的范围。
如果未按升序指定传输ID。
如果指令是在中断程序中执行的。
如果指定了未通过指令FP_SMTP_SET_CONNECTION或SMTP客户端的设置对话框指定的电子邮件传输服务器。
如果以冗余方式指定了相同的目标组编号。
如果指定了未使用指令FP_SMTP_SET_GROUP或SMTP客户端的设置对话框定义的目标组编号。
如果指定传输设置的电子邮件传输请求标志为“TRUE:请求传输”。
如果指定nLogID编号的传输请求标志为TRUE,例如,如果sys_blsLog0DataRecordingActive为TRUE。
如果字符串数据的字符数超过其上限值。对于CPU单元版本3.4到3.x和4.1或更高版本,上限值为4096个字符;对于其他CPU单元,上限值为256个字符。
如果指令是在以太网初始化期间执行的,则sys_iEthernetConnectionErrorCode设置为“11:以太网正在初始化”。

所有用于编程此函数的输入和输出变量已在POU头中声明。所有编程语言使用相同的POU头。

	VAR
		bSetModePlcData: BOOL:=FALSE;
		bSetModePlcDataError: BOOL:=FALSE;
		arRealArray: ARRAY [0..15] OF REAL:=[16(0.0)];
		iID10: INT:=10;
	END_VAR如果bSetModePLCData从FALSE更改为TRUE且sys_bIsEthernetInitializing为FALSE,则执行指令。


BODY
    WORKSPACE
        NETWORK_LIST_TYPE := NWTYPELD ;
        ACTIVE_NETWORK := 0 ;
    END_WORKSPACE
    NET_WORK
        NETWORK_TYPE := NWTYPELD ;
        NETWORK_LABEL :=  ;
        NETWORK_TITLE :=  ;
        NETWORK_HEIGHT := 5 ;
        NETWORK_BODY
B(B_COMMENT,, ^Set mode to attach File located on SD card of FP7 PLC,4,1,34,4,);
L(1,0,1,5);
        END_NETWORK_BODY
    END_NET_WORK
    NET_WORK
        NETWORK_TYPE := NWTYPELD ;
        NETWORK_LABEL :=  ;
        NETWORK_TITLE :=  ;
        NETWORK_HEIGHT := 10 ;
        NETWORK_BODY
B(B_VARIN,,iID8,32,2,34,4,);
B(B_CONTACT,,bSetMode,4,1,6,3,R);
B(B_VAROUT,,bError,47,2,49,4,);
B(B_VARIN,,'GRPNO=0~SUBJECT=Time Notify Mail',32,4,34,6,);
B(B_VARIN,,'Hello~ this is time notify Mail from system. See attachment',32,5,34,7,);
B(B_VARIN,,'TRIG=TIME~/day~13:30:00',32,3,34,5,);
B(B_CONTACT,,sys_bIsEthernetInitializing,13,1,15,3,N);
B(B_VARIN,,'INFO=ADD~ATT=FILE;FILE=',26,7,28,9,);
B(B_VARIN,,sFilename,26,8,28,10,);
B(B_F,CONCAT-2!,,28,7,34,10,,?D?D?C);
B(B_F,FP_SMTP_SET_MODE!,,34,0,47,8,,?DEN?DnTransferID?DsTrigger?DsGroupNumber_Subject?DsBodyText?DsAttachment?AENO?CbError);
L(1,2,4,2);
L(34,7,34,8);
L(15,2,34,2);
L(6,2,13,2);
L(1,0,1,10);
        END_NETWORK_BODY
    END_NET_WORK
END_BODY
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=FILE;FILE=', sFilename),
                     bError => bError);
End_if;