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 (1時間ごと、時刻設定(分、秒))
\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 秒になります。サイクルタイムは1つだけ設定できます('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'
を使用して、最大8つの宛先グループ番号を設定します。
値:0~7
次の2つのキーワード設定のいずれかを使用して件名を設定します。
'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'
メールの本文または文字列を含む変数を指定します。
最大文字列長: CPUバージョン4.1以降およびバージョン3.4~3.xでは4096文字の1バイト文字
他のすべてのバージョンでは、256文字の1バイト文字。
付加情報または添付ファイルを送信するかどうかを指定します。
次のいずれかのキーワード設定を使用して、メール本文に付加情報を含めます。
'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ビット符号なし10進数)
SS (16ビット符号付き10進数)
UL (32ビット符号なし10進数)
SL (32ビット符号付き10進数)
SF (32ビット単精度浮動小数点)
DF (64ビット倍精度浮動小数点)
HEX1w (16ビット16進数)
HEX2w (32ビット16進数)
HEX4w (64ビット16進数)
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を使用して、言語を日本語(デフォルト)から英語に切り替えます。
添付ファイルのログフォルダ名('\LOG0'
~'\LOG15'
)は指定できません。
sAttachmentの文字列を生成する際、FP_SMTP_GET_DATA_FORMATを使用することもできます。
情報やデータを自動的に付加しない場合:'INFO=NON,ATT=NONE'
自動的に情報を付加し、データは付加しない場合:'INFO=ADD,ATT=NONE'
情報を自動的に付加せず、DT100からDT109までの16ビット16進数データをメール本文に付加する場合:'INFO=NON,ATT=DATA,DT100,10,HEX1w'
情報を自動的に付加せず、SDカードからファイルを添付する場合:'INFO=NON,ATT=FIL,\Folder\FileName.bin'
出力
接続のタイムアウトが経過した場合
IPアドレスが無効な場合
エラーが発生した場合は、エラーコード番号のシステム変数sys_iEthernetConnectionErrorCodeを確認してください。
文字列データの文字数は、CPUユニットVer.3.4~Ver.3.xおよびVer.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ユニットVer.3.4~Ver.3.xおよびVer.4.1以降では4096文字、その他のCPUユニットでは256文字です。
パラメータに指定された値が許容範囲外の場合。
転送IDが昇順で指定されていない場合。
命令が割り込みプログラム内で実行された場合。
メール転送サーバーが命令FP_SMTP_SET_CONNECTIONで指定されても、SMTPクライアントの設定ダイアログで指定されてもいない場合。
同じ宛先グループ番号が重複して指定されている場合。
宛先グループ番号が命令FP_SMTP_SET_GROUPで定義されても、SMTPクライアントの設定ダイアログで指定されてもいない場合。
指定した転送設定用のメール転送要求フラグが「TRUE:転送要求済み」の場合。
指定したnLogID番号の転送要求フラグがTRUEの場合。例:sys_blsLog0DataRecordingActiveがTRUEの場合。
文字列データの文字数が上限値を超えている場合。上限値はCPUユニットVer.3.4~Ver.3.xおよびVer.4.1以降では4096文字、その他のCPUユニットでは256文字です。
Ethernet初期化中に命令を実行した場合は、sys_iEthernetConnectionErrorCodeが「11:Ethernet初期化中」に設定されます。
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;