Jazz Soft お問い合わせ   JazzSoft@live.com     日本語   英語  日本語  中国語(繁体字)  中国語(簡体字)
工場自動化と歩留り管理ソリューション 
Skip Navigation Linksホーム > 製品一覧 > Swing > サンプル > ホスト(Visual Basic 6.0)

Dorian.Core が追加されました。Dorian は .NET 6 と 7 に対応するようになりました。

Swing ActiveXコントロール   



プログラミングガイド ~ ミニホストの作成(Visual Basic 6編)

この章ではSECSのミニホストを作成しながらプログラミングについて解説していくことにします。開発する言語はVisual Basicを使用します。


ミニホストの仕様

作成するミニホストの仕様は以下のようなものとし、通信相手は一般的なウェハ検査装置とします。

  • 装置に対してオンライン移行、レシピ指定、測定開始、データ受信を行うことができます。
  • 送信できるメッセージは以下のもののみとします。

    S1F13W
    S2F41W
    S6F12

  • 受信できるメッセージは以下のもののみとします。

    S1F14
    S2F42
    S6F11W

  • 装置の初期設定はすでに設定されているものとします。
  • ストリーム9やファンクション0の処理は行わない。
  • T3タイムアウトの監視はしない。

ミニホストを作ってみよう

  1. 新規プロジェクトを作成する
    以下のようなダイアログボックスが現れたら『Standard EXE』を選択します。




  2. Swing ActiveXコントロールの挿入
    メニューから『プロジェクト』―『コンポーネント』を選択します。



    Swing ActiveX Control moduleにチェックマークを付け、OKボタンを押します。



    Swing ActiveXコントロールがツールボックスに追加されるのに気が付くはずです。




  3. コントロールの貼り付け
    フォームにSwingSecsI、SwingSecsIIコントロールを貼り付けてみましょう。SwingSecsIIは2つ貼り付けて配列にしておくと便利です。こうすることで受信と送信のメッセージを変数のように別々に扱うことができるからです。



    またボタン、ラベル、テキストなどを図のように配置しておきます。ボタンも配列にしておくとすっきりしたプログラムとなります。

    プログラミングスタイルまで押し付けようとは考えていませんので、このあたりは各人の好みで自由にアレンジしてもいっこうに構いません。


  4. ポートをオープンする
    ポートのオープン処理はFormLoadイベント中に記述しましょう。 こうすることでアプリケーション起動時にすぐ通信が可能となります。


    .Active = True
    If Not .Active Then
      MsgBox "エラー:通信ポートをオープンできません!"
    End If


    実務アプリケーションを作成する場合は『オープン』ボタンなどを追加し、これを押すことで初めてオープンするようにした方がいいでしょう。 オープンに成功するとは限りませんし、いきなりオープンしたくない場合もあるかもしれないからです。


  5. オンライン移行を送信する
    オンライン移行コマンドを送信するにはボタンのハンドラの中からSendメソッドを使います。 配列にしておいたSwingSecsIIコントロールはインデックス0を受信用として、インデックス1を送信用として使用することにします。 ホストから装置にS1F13を投げる場合は空のリストを送信してやります。


    .List = "s1f13w{}"
    SwingSecsI1.Send .Msg


    SwingSecsIコントロールのSendメソッドには引数としてSwingSecsIIコントロールのMsgプロパティを渡してやります。


  6. レシピ指定を送信する
    レシピ指定はS2F41でPP-SELECTを送信します。


    .List = "s2f41w{<a'PP-SELECT'>{{<a'PPID'><a'" + Text1.Text + "'>}}}"
    SwingSecsI1.Send .Msg



  7. 測定をかける
    測定開始はS2F41でSTARTを送信します。


    .List = "s2f41w{<A'START'>{{}}}"
    SwingSecsI1.Send .Msg



  8. 装置イベントを読む
    受信したメッセージはReadイベントで報告されます。 このイベントハンドラの始めの部分でSwingSecsIIコントロールに受信した内容を渡してやります。 これにより他のプロパティの内容を参照することができるようになります。


    .Msg = pszMsg


    装置からはS6F11でイベントが送られてくるものとします。 全てのイベントを拾わず以下のCEIDだけとします。

    CEID説明
    10レシピ指定に成功
    11レシピ指定に失敗
    20測定完了
    30測定データ

    CEIDは"2"のノード位置に格納されてきます。 この値が何かによってそれぞれの処理を記述することになります。


    'CEID .Pointer = "2"
    Select Case CInt(.Value)
    Case 10
      MsgBox "レシピ指定に成功した"
    Case 11
      MsgBox "レシピ指定に失敗した"
    Case 20
      MsgBox "測定が完了した"
    Case 30
      '測定データ
    End Select


    S6F11は返答を期待していますのでバイナリ0の2次メッセージを送信します。


    .List = "s6f12<b 0>"
    .Reply pszMsg
    SwingSecsI1.Send .Msg


    このほかにS1F14とS2F42も受信しますが、同様に記述してやればよいでしょう。


  9. 実行
    以上でミニホストは完成です。 シンプルではあるがホストとしての最低限の機能は持っています。 にも関わらずプログラムのリストは僅か55行足らずです。 同じ機能のソフトウェアをコントロールを使わずに自分でスクラッチから作成することを考えてみれば、いかに工数を短縮できたかが分かるというものです。


    Option Explicit
    Private Sub Command1_Click(Index As Integer)
      With SwingSecsII1(1)
        Select Case Index
        Case 0
          'Attempt online
          .List = "s1f13w{}"
        Case 1
          'Select recipe
          .List = "s2f41w{<a'PP-SELECT'>{{<a'PPID'><a'" + Text1.Text + "'>}}}"
        Case 2
          'Start measurement
          .List = "s2f41w{<a'START'>{{}}}"
        End Select
        SwingSecsI1.Send .Msg
      End With
    End Sub

    Private Sub Form_Load()
      With SwingSecsI1
        .Active = True
        If Not .Active Then
          MsgBox "Error : Cannot open serial port!"
        End If
      End With
    End Sub

    Private Sub SwingSecsI1_Read(ByVal pszMsg As String)
      With SwingSecsII1(0)
        .Msg = pszMsg
        If .Stream = 1 And .Function = 14 Then
          'S1F14
          MsgBox "You are online"
        End If
        If .Stream = 6 And .Function = 11 Then
          'S6F11
          SwingSecsII1(1).List = "s6f12<b 0>"
          SwingSecsII1(1).Reply pszMsg
          SwingSecsI1.Send SwingSecsII1(1).Msg
          'CEID
          .Pointer = "2"
          Select Case CInt(.Value)
          Case 10
            MsgBox "Recipe selected"
          Case 11
            MsgBox "Recipe selection failure"
          Case 20
            MsgBox "Measurement completed"
          Case 30
            'Measurement data
          End Select
        End If
      End With
    End Sub


お問い合わせ   JazzSoft@live.com
  Copyright © 1997 - 2024 Jazz Soft, Inc.