2 WAGO JAPAN DLL FOR MODBUS Copyright 2011 by WAGO COMPANY OF JAPAN, LTD. All rights reserved 東京都江東区亀戸 日鐵 ND タワーワゴジャパン株式会社オートメーション TEL

Similar documents
WAGO / / Modbus/RTU対応 バスカプラ クイックスタートガイド

MODBUSmanual_jp

CashDrawer ライブラリ API 仕様書 2014/07/09 CashDrawer ライブラリ API 仕様書 Rev / 10

MODBUSmanual_jp

VFD256 サンプルプログラム

C++ ++ Wago_io.dll DLLDynamicLinkLibrary Microsoft VisualBasic Visual C Wago_io.dll Wago_io.dll Wago_io.dll WAGO_OpenCommPort WAGO_CloseCommPort WAGO_

UIOUSBCOM.DLLコマンドリファレンス

AN424 Modbus/TCP クイックスタートガイド CIE-H14

WAGO Ch 0-10V アナログ出力モジュール 取扱説明書


プロセス間通信

安川電機社製 MP コントローラ及び WAGO 750 Ethernet FC MODBUS/TCP 接続マニュアル アプリケーションノート バージョン 1.0.1J

DPC-0401

CONTEC DIOプロバイダ ユーザーズガイド

API 連携方式 外部 DLL の呼び出し宣言 外部 DLL の呼び出し宣言のサンプルコード (Microsoft Visual C#.NET の場合 ) プログラムコードの先頭で using System.Runtime.InteropServices; が必要 クラスの内部に以下のような外部 D

CommCheckerManual_Ver.1.0_.doc

GS1-128 の描画 DLL について (ver. 2.3) 動作環境など動作環境 WindowsXP Windows Vista Windows7 Windows8/8.1 Windows10 上記 OS について すべて日本語版を対象としております 32bit アプリケーションから呼び出される

Microsoft Word - DT-5100Lib_Manual_DotNet.doc

プレゼンタイトルを入力してください

プリンタ印字用 DLL 取扱説明書

プロバイダ ユーザーズガイド

WAGO I/O-Linkマスタモジュール とSIEMENS製PLCとのPROFINET通信 アプリケーションノート

3軸加速度センサーモジュール MM-2860 書込み済みマイコンプログラム通信コマンド概要

2015/04/01 改定 オムロン DeviceNet ユニット CJ1W-DRM21 に関するコンフィグレーション作業について 1. 概要 DeviceNet ユニット CJ1W-DRM21 を装着したオムロン製 CJ2 シリーズと WAGO-I/0-SYSTEM DeviceNet 対応バスカ

本書は INpMac v2.20(intime 5.2 INplc 3 Windows7/8/8.1に対応 ) の内容を元に記載しています Microsoft Windows Visual Studio は 米国 Microsoft Corporation の米国及びその他の国における登録商標です

親指シフトキーボード(FMV-KB611)、JISキーボード(FMV-KB621)、FMV-LIFEBOOK(親指シフトキーボードモデル)をお使いになる方へ

ルーレットプログラム

本マニュアルに記載された内容は 将来予告なしに一部または全体を修正及び変更することがあります なお 本マニュアルにこのような不備がありましても 運用上の影響につきましては責任を負いかねますのでご了承ください 本マニュアルの一部 あるいは全部について 許諾を得ずに無断で転載することを禁じます ( 電子

DWR-R02DN Updater 取扱説明書 発 :2015/10/30

A 既製のプロジェクトがある場合

VB 資料 電脳梁山泊烏賊塾 音声認識 System.Speech の利用 System.Speech に依るディクテーション ( 音声を文字列化 ).NetFramework3.0 以上 (Visual Studio 2010 以降 ) では 標準で System.Speech が用意されて居るの

型名 RF007 ラジオコミュニケーションテスタ Radio Communication Tester ソフトウェア開発キット マニュアル アールエフネットワーク株式会社 RFnetworks Corporation RF007SDK-M001 RF007SDK-M001 参考資料 1

RsMulti の取扱説明 「RS232C で直接接続する(LAN を使用しない場合)」

DWR-S01D Updater 取扱説明書 発行日 :2011/2/28

WAGO PROFIBUS バスカプラ/コントローラと、QJ71PB92Dとのコンフィグレーションマニュアル

目次 USBドライバダウンロードの手順...2 USBドライバインストールの手順...3 インストール結果を確認する...19 USBドライバアンインストール / 再インストールの手順...21 USB ドライバダウンロードの手順 1. SHL21 のダウンロードページからダウンロードしてください

楽2ライブラリ クライアントサーバ V5.0 体験版 クライアントOS利用時におけるIIS設定手順書

Total Disc Makerサイレントインストールガイド

インテル® Parallel Studio XE 2019 Composer Edition for Fortran Windows : インストール・ガイド

Microsoft Word - SREX_SDK2_R31.doc

Net'Attest EPS設定例

USBドライバインストールマニュアル [Windows Vista/Windows 7]

DocuPrint 4050 PostScript ユーザーズガイド

FSUx-SDK2

親指シフトキーボード(FMV-KB611)、JISキーボード(FMV-KB621)、FMV-LIFEBOOK(親指シフトキーボードモデル)をお使いになる方へ

Taro-82ADAカ.jtd

機能仕様書フォーマット

Microsoft Word - VB.doc

PowerPoint プレゼンテーション

Microsoft Word - DWR-S01D_Updater_取扱説明書_120514A.doc

Space-E/Draw インストールガイド 発行通知書

Windows XP(SP3) の場合または,.Net Framework 4 Client がインストールされていない場合,.Net Framework 4 Client Profile の同意画面が表示されます.Net Framework がインストールされている場合は, この画面は表示されませ

Microsoft PowerPoint - CproNt02.ppt [互換モード]

OTRS10 他社システムOTRS呼出利用手順書

TeamViewer マニュアル – Wake-on-LAN

アプリケーション補足説明書Microsoft(R) Office 2003 Editions

Flash Loader

アプリケーション補足説明書(Office2003)Microsoft(R) Office 2003 Editions

アドイン版 ********************************************* インストール手順書 ********************************************* 目次 JAVIS Appli に必要な環境... 2 JAVIS Appli に必要

Office 365監査ログ連携機能アクティブ化手順書

プログラミング基礎

VG シリーズ用ローカルファームアップ / 自動ファームウェア更新設定手順書 VG400aⅡ ローカルファームアップ / 自動ファームウェア更新設定手順書

DWT-B01 Updater 取扱説明書 発行日 :2011/3/23

CLUSTERPRO MC StorageSaver for BootDisk 1.2 (for Windows) インストールガイド 2014(Mar) NEC Corporation はじめに 製品導入の事前準備 本製品のインストール 本製品の初期設定 本製品のアンインストール

PowerPoint Presentation

目次 1. 概要 動作環境

Notes and Points for TMPR454 Flash memory

MC3000一般ユーザ利用手順書

AN178 USB仮想シリアルドライバ インストールガイド

FUJITSU Software ServerView Infrastructure Manager Plug-in for Microsoft System Center Operations Manager 1.2 セットアップガイド Windows Server 2012 R2 版

プレポスト【問題】

<リスト1> AD コンバータへのデータの出力例 NEC PC98 用 mov al,22h // CLK -> 1, CS -> 0, DI -> 0 out 32h,al // シリアル ポートにデータ出力 PC/AT 互換機用 mov al,00h // CLK -> 1 mov dx,3fb

Maser - User Operation Manual

Microsoft Word - Writing Windows Installer's DLL.doc

WAGO Series 750 PFC200 IoT C TOYOPUC-NanoとのMODBUS/RTUによる接続方法 アプリケーションノート

Transcription:

1 WAGO JAPAN DLL FOR MODBUS 取扱説明書 WAGO Software WAGO JAPAN DLL FOR MODBUS WAGO_IO.dll バージョン 1.0.0( 日本語版 2011.09.26)

2 WAGO JAPAN DLL FOR MODBUS Copyright 2011 by WAGO COMPANY OF JAPAN, LTD. All rights reserved. 136-0071 東京都江東区亀戸 1-5-7 日鐵 ND タワーワゴジャパン株式会社オートメーション TEL:03-5627-2059 FAX:03-5627-2055 Web: http://www.wago.co.jp/ 本書の作成には万全を期しておりますが お気づきの点やご意見がございましたら下記までお知らせください E-Mail: io-japan@wago.com 本書で使用するソフトウェアおよびハードウェアの名称ならびに会社の商号は 一般に商標法または特許法により保護されています

3 WAGO JAPAN DLL FOR MODBUS 目次 1 重要事項 4 1.1 法的原則 4 1.1.1 著作権 4 1.1.2 使用者の資格基準 4 1.1.3 用途 4 1.2 図記号 5 1.3 フォント 6 1.4 記数法 6 1.5 有効範囲 6 1.6 略語 6 2 WAGO_IO, Modbus DLL 7 2.1 概要 7 2.2 インストール 7 2.3 関数 8 2.3.1 WAGO_OpenCommPort 8 2.3.2 WAGO_Data 8 2.3.3 WAGO_CloseCommPort 9 2.4 エラーコード 10 3 構文例 11 3.1 Visual Basic 11 3.1.1 Visual BASIC 6.0 11 3.1.1.1 概要 11 3.1.1.2 モシ ュールのオフ ション ストラクチャ DLL 関数およびク ローハ ル変数の宣言 11 3.1.1.3 フォームの変数およびイベント処理の宣言 12 3.1.2 Visual BASIC.Net 4.0 13 3.1.2.1 概要 13 3.1.2.2 フォームのストラクチャおよび DLL 関数の宣言 13 3.1.2.3 フォームの変数およびイベント処理の宣言 13 3.2 Visual C++ 15 3.2.1 概要 15 3.2.2 ヘッダー 15 3.2.3 プログラム 16

4 WAGO JAPAN DLL FOR MODBUS 1 重要事項 このマニュアルに記載されているユニットのスムーズな設置とスタートアップのために この文章に含まれる情報と解説に注意しながら作業を進めていくことを強く推奨致します 1. 1 法的原則 1.1.1 著作権 本書は図表を含めてすべて著作権で保護されています 本書に明記された著作権条項に抵触する第三者による再利用は禁じられています 複製 翻訳 電子的手段または複写による保存および修正を行うには ワゴジャパン株式会社の同意書が必要です これに違反した場合 当社には損害賠償を請求する権利が生じます 1.1.2 使用者の資格基準 本書で説明する製品は PLC プログラミングの資格を有する技術者 電気機器の専門技術者 または適用規格を熟知している電気機器の専門技術者の指導を受けた者が必ず操作してください 不適切な作業による損害 または本書の内容を順守しないために発生したワゴ製品および他社製品の損害について ワゴジャパン株式会社は一切の責任を負いかねますのでご了承ください 1.1.3 用途 使用されるコンポーネントは各用途に応じて 専用のハードウェアおよびソフトウェアコンフィグレーションで動作する ようになっています 変更する場合は 必ず本書で記述された範囲内で行ってください ハードウェアやソフトウェア に対してそれ以外の変更を加えた場合や コンポーネントが規格に準じて使用されなかった場合は ワゴジャパン 株式会社の責任範囲外となりますのでご注意ください 改造版および / または新規のハードウェアまたはソフトウェアコンフィグレーションに関する要件については ワゴジャパン株式会社まで直接お問い合わせください

5 WAGO JAPAN DLL FOR MODBUS 1.2 図記号 危険人的傷害を回避するために 常にこの情報に従ってください 警告機器への損害を防ぐために 常にこの情報に従ってください 注意円滑な操作を確保するために 状態を常に注意しなければなりません 静電気放電 (ESD) 静電気放電による機器への損傷の警告 リスクを回避するための措置を確認してください 注意機器およびソフトウェアを効率よく最適に使用するための手順あるいはアドバイス 詳細情報補足資料 マニュアル データシートおよびインターネットページの参照先

6 WAGO JAPAN DLL FOR MODBUS 1.3 フォント イタリックパスおよびファイル名はイタリック体で表記します 例 : C: programs WAGO-IO-CHECK 太字イタリックメニュー項目は太字のイタリック体で表記します 例 : Save / 2つの名前間のスラッシュ記号はメニュー項目の順序を表します 例 : File/New E ND ボタンを押すことは下付の太字で表記します 例 : E NTER < > キーは太字の山括弧で表記します 例 : <F5> Courier New プログラムコードは Courier New フォントで表記します 例 : END_VAR 1.4 記数法 記数法 例 備考 10 進数 100 通常の表記法 16 進数 0x64 C での表記法 1.5 有効範囲 2 進数 '100' '0110.0100' ' で囲む 4 ビットごとにドットで区切る 型番 759-xxx 摘要 API MODBUS DLL 1.6 略語 AI AO DI DO I/O アナログ入力アナログ出力デジタル入力デジタル出力入力 / 出力

7 WAGO JAPAN DLL FOR MODBUS 2 WAGO_IO, Modbus DLL 2.1 概要 このライブラリは WAGO Ethernet バスカプラ / コントローラのみで使用することができ Modbus Serial あるいは TCP/UDP において使用することができます DLL は Modbus プロトコルを実行します この Modbus DLL はオペレーションシステム (OS) Windows XP, Windows Vista, Windows 7 に対応しており Windows システムに含まれている TCP/IP 用の Windows Socket 2.0 インターフェースを使用します Modbus Serial, TCP あるいは UDP を通信プロトコルとして選択することができます プログラミング言語 C および Visual BASIC において使用することができます このライブラリは Open Modbus/TCP プロトコルにおいて コマンド FC1, FC2, FC3, FC4, FC5, FC6, FC11, FC15 および FC16 のみに対応しています この DLL はマイクロソフト Visual Studio 2010 で作成され サンプルプロジェクトには Visual Basic 6.0, Visual Basic.Net4.0 および C++ 用を付録しております 2.2 インストール WAGO_IO.dll ファイルを Windows の標準的なディレクトリにおいては system32 フォルダ内にコピーしてください 別のディレクトリを選択する場合には そのエントリは Windows のシステム制御パスに対して環境変数が相当するように適合させなければなりません

8 WAGO JAPAN DLL FOR MODBUS 2.3 関数 2.3.1 WAGO_OpenCommPort WAGO-I/O-System Elements of Dynamic Link Library カテゴリ : Modbus 通信 名称 : WAGO_OpenCommPort 形式 : Function X Function block Program ライブラリ名 : WAGO_IO.dll 必要なライブラリ : 適用 : Serial, Ethernet TCP / UDP バスカプラ / コントローラ 入力パラメータ : データ型 : コメント : hconn Long* コネクションハンドラ Long(32 ビット ) 変数ポインタ *pprop CommProp 通信プロパティ構成.iUsedEthernet Int Int(32 ビット ) 0 の場合はシリアルの COM ポートを その他は Ethernet ポートを使用.iNodeAdr Int Int(32 ビット ) シリアルスレーブのアドレス.iMotorolaByteOrder Int Int(32 ビット ) 0 の場合はインテル方式のバイト順序を その他はモトローラ方式を使用.iPortNo Int Int(32 ビット ) シリアルCOM ポート番号.iParityChk Int(32 ビット ) 0 = パリティなし 1 = 偶数 2 = 奇数.iBaudRate Int(32 ビット ) 通信速度.iDataBits Int(32 ビット ) 7 = 7 ビット 8 = 8 ビット.iStopBits Int(32 ビット ) 1 = 1 ストップビット 2 = 2 ストップビット.iFlowCtrl Int(32 ビット ) 0 = オフ 1 = xon / xoff 2 = Material.iErrChk Int(32 ビット ) 0 は CRC チェックなし CRC チェックあり.pcHostAddress char* サーバーの IP アドレスに関する文字列ポインタ (Ethernet のみ ).iusedtcp Int(32 ビット ) 0 = Modbus UDP 1 = Modbus TCP 出力パラメータ : データ型 : コメント : WAGO_OpenCommPort Int 値 (32 ビット ) 0 は正常 それ以外はエラーコード 記入 : WAGO_OpenCommPort ( long* hconn, CommProp *pprop ); 関数について : この関数は COM ポートを初期化およびオープンし hconn 数は COM ポートのリファレンスであり この COM ポートを使用するのに必要な関数に対して同じにしなければなりません 2.3.2 WAGO_Data WAGO-I/O-System Elements of Dynamic Link Library カテゴリ : Modbus 通信 名称 : WAGO_Data 形式 : Function X Function block Program ライブラリ名 : WAGO_IO.dll 必要なライブラリ :

9 WAGO JAPAN DLL FOR MODBUS 適用 : WAGO-I/O-System Elements of Dynamic Link Library Serial, Ethernet TCP / UDP バスカプラ / コントローラ 入力パラメータ : データ型 : コメント : hconn long 接続拡張子 Long (32 ビット ) 変数 snodeadr Int(32 ビット ) シリアルスレーブアドレス sfuncode Int(32 ビット ) 機能コード saddrread Int(32 ビット ) 読込を開始するアドレス ssizeread Int Int(32 ビット ) 読込ビットあるいはワード数 pwdataread WORD* WORD(16 ビット ) 読込データ配列ポインタ saddrwrite Int Int(32 ビット ) 書込を開始するアドレス ssizewrite Int Int(32 ビット ) 書込ビットあるいはワード数 pwdatawrite WORD* WORD(16 ビット ) 書込データ配列ポインタ 出力パラメータ : データ型 : コメント : WAGO_Data Int Int(32 ビット ) 0 は正常 それ以外はエラーコード 記入 : WAGO_Data ( long hconn, snodeadr, sfuncode, saddrread, ssizeread, WORD* pwdataread, saddrwrite, ssizewrite, WORD* pwdatawrite ); 関数について : この関数でスレーブ / サーバーのデータの読込 書込を可能にします 対応機能コード : 1: Read Coils 2: Read Discrete Inputs 3: Read Holding Registers 4: Read Input Register 5: Write Single Coil 6: Write Single Register 11: Get Com Event Counter 15: Write Multiple Coils 16: Write Multiple Registers 23: Read/Write Multiple Registers (Ethernet Modbus のみ ) 2.3.3 WAGO_CloseCommPort WAGO-I/O-System Elements of Dynamic Link Library カテゴリ : Modbus 通信 名称 : WAGO_CloseCommPort 形式 : Function X Function block Program ライブラリ名 : WAGO_IO.dll 必要なライブラリ : 適用 : Serial, Ethernet TCP / UDP バスカプラ / コントローラ

10 WAGO JAPAN DLL FOR MODBUS WAGO-I/O-System Elements of Dynamic Link Library 入力パラメータ : データ型 : コメント : hconn long* 接続識別子 Long(32 ビット ) 変数ポインタ 出力パラメータ : データ型 : コメント : WAGO_CloseCommPort Int Int(32 ビット ) 0 は正常 それ以外はエラーコード 記入 : WAGO_CloseCommPort ( long hconn, ); 関数について : この関数は COM ポートのリファレンス (hconn) によって選択される COM ポートをリセットおよびクローズします 2.4 エラーコード エラーコード 内容 0 エラーなし -20 COM ポートオープニングエラー -21 不正 パリティ パラメータ -22 不正 ストップビット パラメータ -23 不正 フロー制御 パラメータ -24 COM ポートパラメータ書込エラー -25 COM ポートクロージングエラー -30 TCP ソケット無効 -31 TCP ソケット基本設定エラー -32 ソケットのアドバンス設定エラー -33 ホスト不明 -34 IP アドレス無効 -35 TCP ソケットクロージングエラー -40 UDP ソケット無効 -41 UDP ソケットパラメータ設定エラー -42 ホスト不明 -43 UDP ソケットクロージングエラー -101 通信オブジェクトを得ることができない -102 接続情報を得ることができない -105 機能コード未対応 -106 データ受信エラー -107 データ送信エラー -108 CRC 回答 ID 不正 -109 回答が応答エラー -201 不正関数 -202 不正データアドレス -203 不正データ値 -204 スレーブデバイス不良

11 WAGO JAPAN DLL FOR MODBUS 3 構文例 付属のサンプルプロジェクトはここでの例よりも複雑な構造をしていますので ここでの例では WAGO-I/O システムと PC 間通信を確立するのに必要な基本的な事項について示してあります 3.1 Visual Basic Visual BASIC における制御の基本はエントリフィールド形式の制御エレメント SlaveID, Functioncode, ReadAdr, ReadSize, WriteAdr および WriteSize と同様の制御エレメント btnopen, btnrequest および btnclose を備えたフォームです Modbus 接続は btnopen ボタンをクリックすることによりノードに設定されます シリアルスレーブのアドレスはエントリフィールド SlaveID に入力します Modbus の機能コードはエントリフィールド FunctionCode に入力します 有効にするアドレスはエントリフィールド ReadAdr あるいは WriteAdr に入力します 必要なデータ数はエントリフィールド ReadSize あるいは WriteSize に入力します ボタン btnrequest をクリックした後 データは送信あるいは読み込まれます イベントの処理はボタンのイベント Click により呼び出されます ノードへの接続は btnclose をクリックする あるいはフォームを閉じることにより切断されます 3.1.1 Visual BASIC 6.0 3.1.1.1 概要 VB6 プロジェクトでは宣言なしに変数を使用することができませんので 最初の記載は Option Explicit にしなければなりません VB6 ではフォームに User Data Type を宣言できません VB6 の Standard module を使用してください この module には User data Type, グローバル変数および DLL 関数を宣言します VB6 と C++ ではデータ型が同じサイズではありません : C++ は整数値に 32 ビットを使用しますが VB6 は 16 ビットで VB6 には 32 ビットの Long データ型を使用しなければなりません C++ でワードは 16 ビットを使用し VB6 にはそれがないので VB6 の整数値データ型には 16 ビットを使用します VB6 にはストラクチャが存在しないので Type 宣言を使用しなければなりません 3.1.1.2 モジュールのオフ ション ストラクチャ DLL 関数およびク ローハ ル変数の宣言 ' Option Option Explicit ' Data Type Type tagcommprop iusedethernet As Long inodeadr As Long imotorolabyteorder As Long iportno As Long iparitychk As Long ibaudrate As Long idatabits As Long istopbits As Long iflowctrl As Long ierrchk As Long pchostaddress As String ' Used by Ethernet iusedtcp As Long ' Used by Ethernet End Type ' DLL functions Public Declare Function WAGO_OpenCommPort Lib "WAGO_IO.DLL" _ (ByRef hconn As Long, ByRef pprop As tagcommprop) As Long Public Declare Function WAGO_CloseCommPort Lib "WAGO_IO.DLL" _ (ByVal hconn As Long) As Long

12 WAGO JAPAN DLL FOR MODBUS Public Declare Function WAGO_Data Lib "WAGO_IO.DLL" _ (ByVal hconn As Long, ByVal inodeadr As Long, ByVal ifuncode As Long, _ ByVal istartreadaddr As Long, ByVal ireadsize As Long, _ ByRef preaddata As Integer, ByVal istartwriteaddr As Long, _ ByVal iwritesize As Long, ByRef pwritedata As Integer) As Long ' Global Variable Public hconn As Long 3.1.1.3 フォームの変数およびイベント処理の宣言 ' Option Option Explicit ' btnopen Private Sub btnopen_click() End Sub Dim dtprop As tagcommprop Dim r As Long Dim IPaddr As String IPaddr = "192.168.0.2" dtprop.iusedethernet = 1 dtprop.inodeadr = 1 dtprop.imotorolabyteorder = 0 dtprop.iportno = 1 dtprop.iparitychk = 0 dtprop.ibaudrate = 9600 dtprop.idatabits = 8 dtprop.istopbits = 1 dtprop.iflowctrl = 0 dtprop.ierrchk = 1 dtprop.pchostaddress = IPaddr dtprop.iusedtcp = 1 r = WAGO_OpenCommPort(hConn, dtprop) If r < 0 Then MsgBox("Error : " & r) WAGO_CloseCommPort(hConn) End If ' btnrequest Private Sub btnrequest_click() Dim ibufferread(0 To 255) As Integer Dim ibufferwrite(0 To 255) As Integer Dim r As Long r = WAGO_Data(hConn, CLng(SlaveID.Text), CLng(FunctionCode.Text), CLng(ReadAdr.Text), CLng(ReadSize.Text), ibufferread(0), CLng(WriteAdr.Text), CLng(WriteSize.Text), ibufferwrite(0)) End Sub If r < 0 Then MsgBox("Error : " & r) End If ' btnclose Private Sub btnclose_click() WAGO_CloseCommPort(hConn) End End Sub ' Closing the form

13 WAGO JAPAN DLL FOR MODBUS Private Sub Form_QueryUnload (Cancel As Integer, UnloadMode As Integer) WAGO_CloseCommPort(hConn) End End Sub 3.1.2 Visual BASIC.Net 4.0 3.1.2.1 概要 初期設定により既に有効になっているため VB.Net では Option Explicit を追加する必要はありません VB.Net と C++ ではデータ型は同じサイズです 3.1.2.2 フォームのストラクチャおよび DLL 関数の宣言 ' Data Type Structure tagcommprop Dim iusedethernet As Integer Dim inodeadr As Integer Dim imotorolabyteorder As Integer Dim iportno As Integer Dim iparitychk As Integer Dim ibaudrate As Integer Dim idatabits As Integer Dim istopbits As Integer Dim iflowctrl As Integer Dim ierrchk As Integer Dim pchostaddress As String ' Used by Ethernet Dim iusedtcp As Integer ' Used by Ethernet End Structure ' DLL functions Public Declare Function WAGO_OpenCommPort Lib "WAGO_IO.DLL" _ (ByRef hconn As Integer, ByRef pprop As tagcommprop) As Integer Public Declare Function WAGO_CloseCommPort Lib "WAGO_IO.DLL" _ (ByVal hconn As Integer) As Integer Public Declare Function WAGO_Data Lib "WAGO_IO.DLL" _ (ByVal hconn As Integer, ByVal inodeadr As Integer, _ ByVal ifuncode As Integer, ByVal istartreadaddr As Integer, _ ByVal ireadsize As Integer, ByRef preaddata As UShort, _ ByVal istartwriteaddr As Integer, ByVal iwritesize As Integer, _ ByRef pwritedata As UShort) As Integer 3.1.2.3 フォームの変数およびイベント処理の宣言 ' Global Variable Public hconn As Integer ' btnopen Private Sub btnopen_click(byval sender As System.Object, _ ByVal e As System.EventArgs) Handles btnopen.click Dim dtprop As tagcommprop Dim r As Integer Dim IPaddr As String = "192.168.0.2" dtprop.iusedethernet = 1 dtprop.inodeadr = 1 dtprop.imotorolabyteorder = 0 dtprop.iportno = 1 dtprop.iparitychk = 0 dtprop.ibaudrate = 9600 dtprop.idatabits = 8 dtprop.istopbits = 1 dtprop.iflowctrl = 0 dtprop.ierrchk = 1

14 WAGO JAPAN DLL FOR MODBUS End Sub dtprop.pchostaddress = IPaddr dtprop.iusedtcp = 1 r = WAGO_OpenCommPort(hConn, dtprop) If r < 0 Then MsgBox("Error : " & r) WAGO_CloseCommPort(hConn) End If ' btnrequest Private Sub btnrequest_click(byval sender As System.Object, _ ByVal e As System.EventArgs) Handles btnrequest.click Dim ibufferread(0 To 255) As UShort Dim ibufferwrite(0 To 255) As UShort Dim i,r As Integer For i = 0 To 24 ibufferread(i) = 0 ibufferwrite(i) = 1 Next r = WAGO_Data(hConn, CInt(SlaveID.Text), CInt(FunctionCode.Text), CInt(ReadAdr.Text), CInt(ReadSize.Text), ibufferread(0), CInt(WriteAdr.Text), CInt(WriteSize.Text), ibufferwrite(0)) End Sub If r < 0 Then MsgBox("Error : " & r) End If ' btnclose Private Sub btnclose_click(byval sender As System.Object, _ ByVal e As System.EventArgs) Handles btnclose.click WAGO_CloseCommPort(hConn) End End Sub ' Closing the form Private Sub Form_FormClosing(ByVal sender As Object, _ ByVal e As System.Windows.Forms.FormClosingEventArgs) _ Handles Me.FormClosing WAGO_CloseCommPort(hConn) End End Sub

15 WAGO JAPAN DLL FOR MODBUS 3.2 Visual C++ 3.2.1 概要 C における以下のプログラム例では DLL は #pragma コメント ( ライブラリ WAGO_IO.lib ) コマンドで呼び出されます その際に 接続は WAGO_OpenCommPort にて設定されます 接続設定成功後 出入力の書込および読込についての関数 WAGO_Data が呼び出されます 状態は各機能を呼出後 モニタ上に表示されます プログラムの最後に 接続は関数 WAGO_CloseCommPort で切断されます 3.2.2 ヘッダー #ifndef _WAGO_IO_H_ #define _WAGO_IO_H_ #ifdef cplusplus extern "C" { #endif //--------------------------------------------------------------------- // Type Definitions //--------------------------------------------------------------------- typedef struct tagcommprop I { iusedethernet; inodeadr; imotorolabyteorder; // Used COM Port iportno; iparitychk; ibaudrate; idatabits; istopbits; iflowctrl; ierrchk; // Used Ethernet const char* pchostaddress; iusedtcp; // the service port will be assigned 502 port if normal case. } CommProp; //---------------------------------------------------------------------- // Prototypes //---------------------------------------------------------------------- #if!defined(wago_dll_func_call) #define WAGO_DLL_FUNC_CALL declspec(dllimport) stdcall #endif //WAGO_DLL_FUNC_CALL WAGO_DLL_FUNC_CALL WAGO_OpenCommPort( long* hconn, CommProp *pprop ); WAGO_DLL_FUNC_CALL WAGO_CloseCommPort( long hconn ); WAGO_DLL_FUNC_CALL WAGO_Data( long hconn, snodeadr, sfuncode, saddrread, ssizeread, short* pwdataread, saddrwrite, ssizewrite, short* pwdatawrite); #ifdef cplusplus } #endif #endif

16 WAGO JAPAN DLL FOR MODBUS 3.2.3 プログラム #include "stdafx.h" #include <windows.h> #include <tchar.h> #include <assert.h> #include <stdio.h> #include "WAGO_IO.h" #pragma comment(lib, "WAGO_IO.lib") main( argc, char* argv[]) { CommProp *pcomm = new CommProp; ret = 0; long hconn = 0; islaveid = 0; ifunctioncode = 0; ireadadress = 0; ireadquantity = 0; iwriteadress = 0; iwritequantity = 0; char scontinue[80] = ""; short preadbuffer[255]; short pwritebuffer[255]; for( i=0;i<255;i++) { pwritebuffer[i] = 0x3333; preadbuffer[i] = 0; } char* IPaddr = "192.192.10.74"; pcomm->ibaudrate = 9600; pcomm->idatabits = 8; pcomm->ierrchk = 0; pcomm->iflowctrl = 0; pcomm->imotorolabyteorder = 0; pcomm->inodeadr = 1; pcomm->iparitychk = 0; pcomm->iportno = 1; pcomm->istopbits = 1; pcomm->iusedethernet = 1; pcomm->iusedtcp = 1; pcomm->pchostaddress = IPaddr; prf( " n Call WAGO_OpenCommPort n"); ret = WAGO_OpenCommPort(&hConn, pcomm); prf( " n WAGO_OpenCommPort returns: %d n", ret); "); if( ret == 0 ) { do { prf (" n Enter the Slave Serial Address (if not use 0): scanf_s ("%i", &islaveid); do { prf (" n Function Code available : 1, 2, 3, 4,

17 WAGO JAPAN DLL FOR MODBUS 5, 6, 11, 15, 16, 23. n Enter your choise: "); scanf_s ("%i", &ifunctioncode); }while (ifunctioncode!= 1 && ifunctioncode!= 2 && ifunctioncode!= 3 && ifunctioncode!= 4 && ifunctioncode!= 5 && ifunctioncode!= 6 && ifunctioncode!= 11 && ifunctioncode!= 15 && ifunctioncode!= 16 && ifunctioncode!= 23); switch(ifunctioncode) { case 1: case 2: case 3: case 4: prf (" n Enter the Read Address: "); scanf_s ("%i", &ireadadress); prf (" n Enter the Read Quantity: "); scanf_s ("%i", &ireadquantity); iwriteadress = 0; iwritequantity = 0; break; case 5: case 6: case 15: case 16: ireadadress = 0; ireadquantity= 0; prf (" n Enter the Write Address: "); scanf_s ("%i", &iwriteadress); prf (" n Enter the Write Quantity: "); scanf_s ("%i", &iwritequantity); break; case 11: ireadadress = 0; ireadquantity= 1; iwriteadress = 0; iwritequantity = 1; break; case 23: prf (" n Enter the Read Address: "); scanf_s ("%i", &ireadadress); prf (" n Enter the Read Quantity: "); scanf_s ("%i", &ireadquantity); prf (" n Enter the Write Address: "); scanf_s ("%i", &iwriteadress); } prf (" n Enter the Write Quantity: "); scanf_s ("%i", &iwritequantity); break; prf( " n Call WAGO_Data n"); WAGO_Data(hConn, islaveid, ifunctioncode, ireadadress, ireadquantity, preadbuffer, iwriteadress, iwritequantity, pwritebuffer);

18 WAGO JAPAN DLL FOR MODBUS } prf( " n WAGO_Data returns: %d n", ret); prf (" n Do you whant to continue?"); scanf_s ("%s", scontinue); }while(scontinue[0] == 'y' scontinue[0] == 'Y'); prf( " n Call WAGO_CloseCommPort n"); ret = WAGO_CloseCommPort(hConn); prf( " n WAGO_CloseCommPort returns: %d n", ret); } return 0;

ワゴジャパン株式会社 136-0071 東京都江東区亀戸 1-5-7 日鐵 ND タワー TEL (03)5627-2050 FAX (03)5627-2055 E-Mail info-jp@wago.com ホームページ http://www.wago.co.jp