Delphi (ComPortLib) で、 KEYENCE KV シリアル通信

KVモード(上位リンク)で、パソコンと通信します。PLC側のプログラムは一切必要ありません。

内蔵シリアルポート(RS232C)は、モジュラーソケットなので、電話用のモジュラーケーブル(テレホンコード:6極4芯)に、
D-sub9S(ソケット)を接続し、パソコンのRS-232Cポートにつなぎます。

通信設定は、KV-Studio のユニット設定と合わせます。


テスト用アプリ


KV-Studio のトレースモニタのスクリーンショット


unit KvNanoRSUnit;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, CPort;

type
  TForm3 = class(TForm)
    ComPort1: TComPort;
    Button1: TButton;
    Edit1: TEdit;
    Edit2: TEdit;
    procedure Button1Click(Sender: TObject);
  private
    { Private 宣言 }
  public
    { Public 宣言 }
  end;

var
  Form3: TForm3;

implementation

{$R *.dfm}

procedure TForm3.Button1Click(Sender: TObject);
const
  CR = #$0D;
var
  s, res : string;
begin
  with ComPort1 do begin
    Port := 'COM5';
    BaudRate := br19200;
    Parity.Bits := prEven;
    StopBits := sbOneStopBit;
    DataBits := dbEight;
    Timeouts.ReadInterval := -1;
    Timeouts.ReadTotalConstant := 500;
    Timeouts.WriteTotalConstant := 500;

    Open;
    if Connected then begin
      try
        // 通信開始コマンド(CR)の送信
        WriteStr('CR' + CR);
        ReadStr(res, 256);
        if Trim(res) = 'CC' then begin
          // DM 書き込み
          s := 'WR DM200.S 1234' + CR;
          WriteStr(s);

          // レスポンスの受信
          ReadStr(res, 256);
          Edit1.Text := res;

          // DM 読み込み
          s := 'RD DM200.S' + CR;
          WriteStr(s);
          ReadStr(res, 256);
          Edit2.Text := res;

          // 通信終了コマンド(CQ)の送信
          WriteStr('CQ' + CR);
          ReadStr(res, 256);
          if Trim(res) = 'CF' then ShowMessage('通信正常終了');
        end;
      finally
        Close;
      end;
    end;
  end;
end;

end.