<前提と製品選定>
制御盤でちょっとした記録などを印刷したい、という話があり、
設置場所の制約から ブラザー工業 TD-2135NWB/N などを使用できないため、
盤面に搭載するラインサーマルプリンタとして
ナダ電子 TP-289E を使用することにしました。
ナダ電子 TP-289E
Ethernet経由で接続するタイプもありますが、
公開されている取説に細かい通信仕様の記載がないため、
標準のRS-232Cで接続・印刷指示をする仕様のものを選定しました。
電源はDC24Vが都合がよいので、型式は TP-289E-3 です。
※Ethernet仕様の TP-289E-LAN-3 を購入すると、
専用の取説がついてくるようです。
<ハーネスと接続>
それほど通信速度は必要ないため、ボーレートは9600bpsとして、
ハーネスもバラ線で接続することにしました。
テスト用には端子台であれこれつなぎかえられるのがよいため、
ミスミで以下のハーネス製作品を入手しました。
PLC側:DSDU-SY-KS-9-1
( D-Sub 9pin メス = Y端子付バラ線、1[m] )
TP-289E側:BDHIFS-SY-B-26-1
( MIL 26pin メス = Y端子付バラ線、1[m] )
これを端子台で接続します。

PLC側の構成は
PLC本体:FX5UC-32MT/DS-TSS
PLC通信アダプタ:FX5-232ADP
です。
FX5-232ADPとTP-289Eを接続する端子番号は以下のようになります。
FX5-232ADP側 | TP-289E側 |
信号 | 線番 | 線番 | 信号 |
GND | 5 | 1 | GND |
DCD | 1 | 9 | DTR |
DR | 6 | 11 | RTS |
TXD | 3 | 13 | RXD |
が、データ制御線は使わないので、
たぶんTXDとGNDさえつながっていれば動きます。
<ディップスイッチ設定>
信号線を接続したら、TP-289E のディップスイッチを設定します。
ディップスイッチは出荷時に全部OFFになっており、
変更する必要があるのはボーレートの部分だけです。

「SW5をOFF&SW6をON」にするとボーレートが9600bpsになるので、
ここだけ変更します。この設定での通信仕様は、
データ長:8bit
パリティチェック:なし
パリティ:偶数
ストップビット:1bit
ボーレート:9600bps
となります。
<PLCの通信設定>
続いて MELSOFT GX Works3 での設定です。
「ユニット構成図」で FX5UC 本体に FX5-232ADP を追加して保存します。
次に「ナビゲーション」の「パラメータ」-「ユニット情報」にある、
「ADP1:FX5-232ADP」を開き、以下の設定をします。
基本設定
プロトコル形式:無手順通信
データ長:8bit
パリティ:なし
ストップビット:1bit
ボーレート:9600bps
ヘッダ:付加しない
ターミネータ:付加しない
制御モード(RS-232C):制御線なし
サムチェック:付加しない
制御手順:形式1(CR,LF付加なし)
固有設定
8bit処理モード:8bitモード
これで「適用」を行い、PLCに書込を行ったあと、
電源のOFF/ONを行って設定を反映させます。
※三菱電機のPLCやFA機器のほとんどは電源のOFF/ONをしないと
通信関係の設定が反映されないので注意
※8bitモードでないとラダーを書くときに
見通しが悪くなる気がしていますが、ここは好みかと思います。
※無手順通信ではなくプロトコル支援ツールを使う方法も
ありますが、基本的にはPLCからプリンタに一方向で
印刷を指示するだけなので、無手順通信のほうが
ラダーで完結して見通しがよいと思っています。
<PLCのシリアル通信プログラム>
三菱電機のマニュアル
「MELSEC iQ-F FX5ユーザーズマニュアル(シリアル通信編)」の
「6 無手順通信機能」-「6.7 プログラミング」に書かれている
内容でプログラムを作成します。
基本的に「RS2」命令でのバイト列送信指示になるので、
P.180 および P.194 の内容でそのまま作成すればよいです。
FX5UC に FX5-232ADP を装着した場合、FX5-232ADPのチャンネルは
「CH3」となるので、RS2命令の末尾は「K3」になります。
ex) RS2 D100 K12 D200 K12 K3
FX5UC から TP-289E に下記の順序でバイト列を送り、印刷を行います。
1. 初期化
2. 文字サイズ変更
3. 印字内容送信
4. 文字サイズ変更解除
5. 印字実行(改行)
------------------------
・初期化
初期化指示は 1B(H) 40(H) です。
ex) MOV H1B D100
MOV H40 D101
------------------------
------------------------
・文字サイズ変更
4倍角に拡大する場合、1C(H) 57(H) 01(H) です。
ex) MOV H1C D102
MOV H57 D103
MOV H01 D104
------------------------
------------------------
・印字内容送信
「流」「量」と漢字で印刷することを考えます。
TP-289E はJIS第二水準をShift-JISで指示でき、
それぞれ「流:97AC」「量:97CA」となります。
ex) MOV H97 D105
MOV HAC D106
MOV H97 D107
MOV HCA D108
------------------------
------------------------
・文字サイズ変更解除
4倍角に拡大を解除する場合、1C(H) 57(H) 00(H) です。
ex) MOV H1C D109
MOV H57 D110
MOV H00 D111
------------------------
------------------------
・印字実行(改行)
1行分の印字を行い、続いて改行する「CR」は、0D(H) です。
ex) MOV H0D D112
------------------------
これで D100 ~ D112 までに指示用のキャラクタが
入力されている状態になるので、
この状態で送信要求の特殊デバイス SM8581(CH3用)を
SETすることで、D100~D112 のバイト列が送信されます。
とりあえず、これだけできれば印刷のテストはできるので、
これできちんと印字されればプログラム側で
体裁をととのえていくことで様々な内容を
ロール紙に印刷していくことができます。