PCプラットフォームによる PCプラットフォームによる 産業用ソリューションプロバイダー 産業用ソリューションプロバイダー


採用情報


お問合せ

JapaneseEnglish

  • PP114
ホーム > INplc > 技術情報 > ユーザー向け技術情報
ユーザー向け INplc技術情報
ファイル名 サイズ 内容
FILE_SMPL.zwe 593 KB INplc-SDK(Express) v3.09で作成したサンプルプロジェクトです。 Download
※1 このサンプルプロジェクトは、MULTIPROGの圧縮形式(~.zwe)で保存されたプロジェクトです。
      IEC 61131-3標準のLD言語(Ladder Diagram)で作成しています。
「FILE_SMPL.zwe」は、ファームウェアライブラリ「ProConOS.fwl」に収録されているファイル操作ファンクションブロックを 使用して、データファイル作成するサンプルです。
バイナリ形式及びテキスト形式(CSVファイルなど)のファイルを作成できます。 サンプルでは、バイナリ形式ファイルの読み書きと、テキスト形式ファイルの書込みを行います。
テキスト形式ファイルを扱う場合、直接STRING型(文字列)を指定する事ができないため、一度、BYTE型配列などの バッファに展開する必要があります。
バッファは、データ型ワークシートに定義します。
データ型ワークシート
本サンプルでは、数値データをテキスト形式で書き込むため、ユーザ定義ファンクション「BINtoTXT」の中で、数値を文字列(STRING)に変換し、それからバッファ(BYTE型配列)に変換します。 また、バッファに変換する際、データの末尾に改行コードを付加します。
EtherCAT®通信内蔵タイプサーボモーターのCiA402インターフェースを使用し、ファームウェアライブラリ「ECAT_FWL」で制御する方法について説明します。
詳しくは、「EtherCAT®通信(CiA402)によるサーボモーター制御」をご覧ください。
共有メモリアクセス用コンポーネント「INpMac」を組み込むことで、INplcの「共有メモリI/O 機能」が生成した共有メモリ領域を通して、PLC プログラムとデータの受け渡しを行うことができます。
INpMacについては、こちらをご覧ください。
(!) 上記とあわせて、こちらのページもご覧ください。
    ○ 「INplc システム共有メモリ(I/O イメージ)について
ファイル名 サイズ 内容
HMI_SMPL.zwe 26 KB INplc-SDK(Express) v3.05で作成したサンプルプロジェクトです。 Download
IO_CHK.zip 44 KB VC# 2008で作成したWindowsアプリケーションのサンプルプロジェクトです。
(INpMac v2.22で動作確認済み)
Download
  • ダウンロードしたファイルを利用して、万が一障害などが発生しても一切の責任を負いません。必ずご自身の責任においてご利用ください。
  • ダウンロードしたファイルを許可なく再転載や再配布することは禁止いたします。
「HMI_SMPL」は、共有メモリI/O機能を介してINplcと外部プログラムのデータ交換を行うサンプルです。 本サンプルでは、Visual Studio 2008 C#で作成したWindowsプログラムのINplcを介したエコー動作テストを行います。
注意:
 1)  サンプルプロジェクトを使用する前に、INplc の「共有メモリ機能」を有効にする必要があります。詳しくは、こちらをご覧ください。
 2)  Windowsプログラムを使用する前に、共有メモリI/F 機能 「INpMac」をインストールする必要があります。
INpMacについては、こちらをご覧ください。

○ サンプルの主な処理の流れは以下の通りです。
 1)  Windowsプログラムは、「Windows -->INplc」のボタンが押された時に、I エリアにデータを設定します。
 2)  INplc(PLC プログラム)は、1ms 周期で I エリア から取得したデータを Q エリアに書き込みます。
 3)  Windowsプログラムは、100ms 周期で Q エリア のデータを画面に表示します。
Qエリアのデータを画面に表示

※ Windowsプログラムの起動時及び操作時に、INplcが起動されていない、または「共有メモリI/O機能」が有効になっていないなど、 データ交換に失敗した場合、以下のようなエラーメッセージが表示されます。
エラーメッセージ

概要

INtime®アプリケーションからINplc共有メモリへのアクセス

INplcの「共有メモリI/O機能」が生成した共有メモリ領域をマッピングして、PLCプログラムとデータの受け渡しを 行うことができます。

詳しくは「INplcシステム共有メモリ(I/O イメージ)について」をご覧ください。
※ この連携方法を使用するには、INplcの「共有メモリI/O機能」を有効にする必要があります。詳しくは、こちらをご覧ください。

INplcからINtime®共有メモリへのアクセス

INplcの「INtime®機能」を使用して、PLCプログラムからINtime®アプリケーションが生成した共有メモリへデータの 読み書きを行うことができます。
※ この連携方法を使用するには、INplcの「INtime®機能」を有効にする必要があります。詳しくは、こちらをご覧ください。

概要

OPC通信

「INplc-OPC Server」を使用して、PLC プログラムのデータをOPC通信に使用することができます。
※ この連携方法を使用するには、別売の「INplc-OPC Server」が必要となります。詳しくは、こちらをご覧ください。

Ethernet通信

INplcの「Ethernet通信機能」を使用して、外部機器とのEthernet通信を行うことができます。(※1)
また、「リモート共有メモリI/O機能」からもEthernet通信による共有メモリを介したI/Oデータの受け渡しが可能です。(※2)
※1 この連携方法を使用するには、INplcの「Ethernet機能」を有効にする必要があります。詳しくは、こちらをご覧ください。
※2 この連携方法を使用するには、INplcの「リモート共有メモリI/O機能」を有効にする必要があります。詳しくは、こちらをご覧ください。

シリアル通信

INplcの「シリアル通信機能」を使用して、外部機器とのRS-232C/422/485通信を行うことができます。
※この連携方法を使用するには、INplcの「シリアル通信機能」を有効にする必要があります。詳しくは、こちらをご覧ください。

FL-net通信

INplcの「FL-net通信機能」を使用して、外部機器とのFL-net通信によるI/Oデータの受け渡しを行うことができます。
※この連携方法を使用するには、INplcの「FL-net通信機能」を有効にする必要があります。詳しくは、こちらをご覧ください。

ライブラリのインストール

INtime®アプリケーションからイベントタスクへイベントを発行する為に必要な下記のライブラリをINtime®の開発環境にインストールしてください。
下記のインストーラを実行しインストールを行ってください。
[INplc SDKのCD-ROM]\Util\INplc_IF_Library\INplcIFSetup.EXE
※ このライブラリはINplc2.0以降のバージョンからの提供です。

イベント発行用API

INpPostEvent()を使用しイベントを発行します。
※使用方法の詳細は[INplc SDKのCD-ROM]\Util\INplc_IF_Library\INplcIF_Manual.pdfをご覧ください。

500μs周期のイベント発行INtime®アプリケーション作成例

INtime®の開発環境でMicrosoft Visua Studio起動しプロジェクトの新規作成を行いINtime®のApplication Wizardを使用してください。   
500μs周期のイベント発行INtime®アプリケーション作成例1
生成するアプリケーションの種類を「ウィザードによりINtime®アプリケーションを構築」を選択します。   
500μs周期のイベント発行INtime®アプリケーション作成例2
追加する要素として「規則的周期で処理をするスレッド」を選択します。    
500μs周期のイベント発行INtime®アプリケーション作成例3
ウェイト方式を「低レベルスリープ方式」を選択します。
待ち時間μ秒を「500」を指定します。    
500μs周期のイベント発行INtime®アプリケーション作成例4
ウィザードを終了しINtime®アプリケーションを生成します。
INplc情報を取得[INpEnum()API]し、ウィザードで作成されたポーリングスレッド内にてイベント発行[INpPostEvent()]してください。    
500μs周期のイベント発行INtime®アプリケーション作成例5
※Visua StudioやINtime®のバージョンにより表現が違う場合も御座いますがご了承ください。

LabVIEW

LabVIEW(OPC クライアント)とINplc OPC serverの接続は、下記の図のように設定を行ってください。

  
LabVIEW(OPC クライアント)とINplc OPC serverの接続

LabVIEW 設定書式

OPC:/ OPC.OUT.PCOS.21/[OPC Serverリソース名].[プログラムインスタンス名].[変数名]?updaterate=[更新レート]

設定例

OPC Serverで設定しているリソース[TestResource]を使用し、PLCプログラムのプログラムインスタンス名[main]のローカル変数[C000]に対し入出力を行いたい場合。
LabVIEW側の設定は下記の内容となります。
[OPC:/OPC.OUT.PCOS.21/TestResource.main.C000?updaterate=100]

日本国内で多く使われているハードウェアPLCからINplcへと移植する際に便利な機能を
FWLとして提供しています。
以下の表をご覧ください。こちらをご利用いただくことでスムーズな移植が可能となります。
(※INplc Ver3.xからの実装となります。)
1. コントロール配列
No. FB名 概要
1 TON_Array 配列型タイマー
2 CTU_Array 配列型カウンタ

2. 型変換
No. FB名 概要
1 BIN16_TO_BIN32 INT型のL,Hを渡して、DINT型にして返す
2 BIN16_TO_UBIN32 INT型のL,Hを渡して、UDINT型にして返す
3 BIN32_TO_BIN16 DINT型を渡して、INT型のL,Hにして返す
4 UBIN32_TO_BIN16 UDINT型を渡して、INT型のL,Hにして返す
5 BIN16_TEST INT型の指定BITがON/OFFか確認し、BOOL型を返す
6 UBIN32_MOVE UINT型のL,Hを渡して、UDINT型にして返す

3. Bitデバイス
No. FB名 概要
1 BLOCK_RSET Bitデータの指定アドレスから指定点数分リセット(0設定 )
2 IO_BOOL_WRITE Bitデバイスへの書込み
3 IO_BOOL_READ Bitデバイスへの読込み
4 BIT_WRITE Bitデバイスへの書込み(配列化)
5 BIT_READ Bitデバイスへの読込み(配列化)
6 BIT_TO_INT Bitデバイスの先頭指定でINTデータ抽出
7 GET_16BitData INTデータからBitのINTデータ抽出

4. メモリ関連
No. FB名 概要
1 MEMSET_INT INT配列でのMEMSET
2 MEMSET_UINT UINT配列でのMEMSET
3 MEMCPY_16 INT配列でのMEMCPY

5. ブロック処理
No. FB名 概要
1 BIN16_BLOCK_ADD INT型ブロック加算
2 BIN16_BLOCK_SUB INT型ブロック減算

6. インクリメント・デクリメント
No. FB名 概要
1 BIN16_INC INTとしてインクリメントする
2 BIN16_DINC INTとしてデクリメントする
3 BIN32_INC UINT型としてINC処理を行う
4 BIN32_DEC UINT型としてDEC処理を行う
5 UBIN32_INC UDINT型としてINC処理を行う
6 UBIN32_DEC UDINT型としてDEC処理を行う

7. 時間
No. FB名 概要
1 DATE_RD 現在の年・月・日・時・分・秒を取得する
2 mDATE_RD 現在の年・月・日・時・分・秒・ミリ秒を取得する
3 SEC_TO_TIME 秒数から時分秒算出(INT型)
4 SEC_TO_TIMEU 秒数から時分秒算出(UINT型)
5 TIME_TO_SEC32 時分秒から秒数算出(DINT型)
6 TIME_TO_SEC32U 時分秒から秒数算出(UDINT型)

8. フリッカー
No. FB名 概要
1 CLOCK10ms 0.01秒フリッカ
2 CLOCK100ms 0.1秒フリッカ
3 CLOCK200ms 0.2秒フリッカ
4 CLOCK1s 1秒フリッカ
5 CLOCK2s 2秒フリッカ

INplcで取得したEtherCAT®のI/Oデータを、INpMacを使用してWindowsアプリケーションから参照する方法について説明します。
詳しくは、「EtherCAT®のI/OデータをWindows側から参照する方法」をご覧ください。
INplcに標準搭載されているI/OドライバおよびFWLの基本的な動作を確認するためのサンプルプログラムを掲載しています。
(※ 掲載内容は随時更新予定)
詳しくは、「IO・FWL動作確認用サンプル」をご覧ください。
EthComFWLを使用して1024バイトのデータを自身に送信し自身で受信するサンプルです。
EthComのFWLの適応・設定を行いサンプルを実行します。
①開発環境でINplc Configuration Toolを起動
②IO・FWL設定画面を開く
③INplcコントローラにEthComのFWLをインストール
④EthComFWLのUseにチェック
⑤EthComFWLの設定ファイルEthCom.iniを下記の内容に変更

EthCom.ini設定内容
[SOCKET.1]ポート番号9911で待つTCPサーバ設定
[SOCKET.2]自身のポート番号9911へ接続するTCPクライアント設定
 [SOCKET]
 NUM=2

 [SOCKET.1]
 type=0
 IP=127.0.0.1
 PORT=9911
 LOCALPORT=0

 [SOCKET.2]
 type=1
 IP=127.0.0.1
 PORT=9911
 LOCALPORT=0
									
⑥設定を保存しINplcコントローラをメッセージに従い再起動
⑦サンプルプログラムをMULTIPROGで開く
⑧コンパイルしコントローラへダウンロード
⑨コールド実行
⑩オンラインデバッグモードへ変更
⑪Recv_Main POUの「テスト開始」変数をTRUEにすると1024バイト送信し自身で1024バイトを受信します。
ファイル名 サイズ 内容
EthComLib_Sample.zwe 34 KB INplc-SDK(Express) v3.08で作成したサンプルプロジェクトです。 Download
  • ダウンロードしたファイルを利用して、万が一障害などが発生しても一切の責任を負いません。必ずご自身の責任においてご利用ください。
  • ダウンロードしたファイルを許可なく再転載や再配布することは禁止いたします。
[D0]の値と[D1] の値を比較し結果を[Y0]に出力するロジックを例として動作の違いを説明します。

1) ハードウェアPLC

動作説明 1 動作説明
接点[M0]がTRUE時は、比較ロジックが実行され結果が[M100]に出力されます。
接点[M0]がFALSE時は、比較ロジックは実行されず[M100]にFALSEが出力されます。

2) INplc

INplcで比較を行う場合は、ファンクションブロック(FU)を使用し比較します。 動作説明 2 動作説明
接点[M0]がTRUE時は、比較ロジックが実行され結果が[M100]に出力されます。
接点[M0]がFALSE時は、比較ロジックの実行・非実行はFUのEN/ENOを使用する事になります。FBのENにFALSEが入力されると比較ロジックは実行されず[M100]には最後に実行された値が出力されます。前回の出力がTRUEの時、接点[M0]がFALSEであっても [M100]にはTRUEが出力される事となり動作がハードウェアPLCと異なる事となります。
動作説明 3
同じ動作をさせるにはEN/ENOの実行結果[TMP0]と比較結果[M100]をANDすることでハードウェアPLCと同じ動作にさせる事が可能です。
INplc-OPC Serverで扱うことが可能なデータ数は、PLCプログラム内で定義した変数4500点までとなります。 OPC Serverで公開するアイテムは1点(タグ) に対してPLCプログラム内の1変数が基本ですが、PLCプログラム内で配列を利用することで、1配列変数を1タグとして扱い、4500点を超えるデータの取り扱いが可能となります。
  1. 点数が増えることにより更新速度が遅くなります。
  2. OPCクライアントで配列データを取得する際に、配列のサイズ分のバッファを用意し、分解する必要があります。(例:要素数100のBYTE配列をOPCで使用する場合、100バイトのバッファを用意して取得し、必要な要素を取り出す必要があります。)
LD言語、配列を用いた例を記載します。

a) INplcで配列を定義し、データを割り当てる

  1. 配列[ARRAY]を定義後、ワークシートをコンパイルし、各POUから定義したデータ型を使用できるようにします。
  2. 変数ワークシートにおいて、上記で作成したByteBuff型の変数を追加します。またOPCのチェックボックスにチェックを入れます。
  3. [変数のプロパティ]画面、または[接点/コイルのプロパティ]画面において、配列の指定要素を割り当てます。 下の図は999番目の要素を割り当てた例です。
以上でINplc側の設定は完了です。(OPC Serverの設定は省略します)

b) OPCクライアント側(ACTIVETOUCH)で配列データを取得後、分解し、要素を取り出す

  1. eStep機能を用いてOPC配列データの分解を行い、999番目の要素を設定します。データリンク設定を行いたいコントロールを選択し、 eStepパネルを表示します。
  2. eStepメニューボタンより、「配列[ビット]合成ステップ」を選択し、「配列[ビット]合成]ダイアログを起動します。 例では、BYTE型(1バイト)の配列数(1024)のデータのため、以下の設定を行いOKボタンでダイアログを閉じます。
    • 名前   : 任意(例では [.SampleData]
    • サイズ  : 1024
    • データ型 : 1バイト整数
  3. eStepメニューボタンより、「データ代入ステップ」を選択し、「データ代入」ダイアログを起動します。 変数にOPC配列データ(1024配列)を割り当てます。OPCサーバーで、公開しているデータは「OPC(O)」ボタンクリック後に表示される 「Device Explorer」で参照設定可能です。
  4. 最後に配列データから1要素(例では999番目の要素)を公開変数に割り当てます。割り当ては、データ代入ダイアログから行います。
    ※ローカル変数を扱う場合は変数目の前にドット(.)をつける必要があります。
以上でOPCクライアント側(ACTIVETOUCH)の設定は完了です。 この方法を用いることで、4500より多いアイテムの公開が可能になります。
サイクリックタスクとイベントタスクの動作については以下の通りです。
タスク間通信の速度はタスク周期に依存します。

サイクリックタスク

サイクリックタスク サイクリックタスク特長
  • ①サイクリック周期ごとに実行される
  • ②同じ周期にタスクが複数ある場合プライオリティの高い順にタスクが実行される
  • ③最大タスク数はすべてのタスクをあわせて最大16タスク( Pro+ : 16 、 Express : 10 )
  • ④プライオリティの数値が低いほどプライオリティが高くなる

イベントタスク

イベントタスク イベントタスク特長
  • ①イベントが発生したときに実行される
  • ②イベントタスクのプライオリティより低いタスクが処理中の場合プライオリティの低いタスクの処理を中断して処理を行う
  • ③イベントタスクのプライオリティより高いタスクが処理中の場合プライオリティの高いタスクの処理が終了するまで待機しその後処理を行う
  • ④最大タスク数はすべてのタスクをあわせて最大16タスク( Pro+ : 16 、 Express : 10 )
  • ⑤プライオリティの数値が低いほどプライオリティが高くなる
 泣き別れ動作…接続機器間で不完全なデータを交換すること

入出力データ保証のないI/Oドライバ一覧

INplcロジック処理中に入出力データ更新が行われる特性を持つドライバの該当状況を示します
(更新:2022/01/26)
No. ドライバ名 機能 該当 調査結果
1 IOPciDrv CONTECデジタルIOボード シーケンシャルにI/O処理されデータ保証されます
2 IODirectDrv 汎用デジタルIOボード シーケンシャルにI/O処理されデータ保証されます
3 CCLDrv CC-Link通信ボード 入力は通信ファームウェアにより非同期に更新されます
出力は通信ファームウェアにより非同期に配信されます
4 FLnetIODrv FL-net通信 入力は受信割込みにより非同期に更新されます
出力はシーケンシャルに処理されデータ保証されます
5 EcatDrv EtherCAT®通信 シーケンシャルにI/O処理されデータ保証されます
6 MemDrv 共有メモリ 入出力データ保証のないI/Oドライバの対処が必要です
7 TcpIpDrv リモート共有メモリ シーケンシャルにI/O処理されデータ保証されます
8 AIoDrv CONTECアナログIOボード シーケンシャルにI/O処理されデータ保証されます
9 CCLIEDrv CC-Link IE通信ボード 入力は通信ファームウェアにより非同期に更新されます
出力は通信ファームウェアにより非同期に配信されます
10 cifxDrv Hilscher通信ボード 入力は通信ファームウェアにより非同期に更新されます
出力は通信ファームウェアにより非同期に配信されます
11 IOPciCPZDrv InterfaceデジタルIOボード シーケンシャルにI/O処理されデータ保証されます
19 ItcIODrv InterfaceデジタルIOボード シーケンシャルにI/O処理されデータ保証されます
33 MapDrv 共有メモリ 入出力データ保証のないI/Oドライバの対処が必要です
入出力データ保証のないI/Oドライバの対処について
INplcロジック処理中に入出力データ更新が行われる特性があると、接続機器間で不完全なデータを交換されてしまう可能性があります。対処としてはI/O空間内に書き込み処理中を意味するフラグ領域を取り決めてアプリケーションレベルで対策することが有効です。

例として+0000h~+00FFhのI/O空間内がある場合に、データエリアを+0000h~+00FEh、書き込み中フラグを+00FFhのようにアプリケーション間で取り決めのうえ、

書き込み側は
  • ①書き込み中フラグ(+00FFh)をセット(00h→01h)
  • ②データ書き込み(+0000h~+00FEh)
  • ③書き込み中フラグ(+00FFh)をリセット(01h→00h)

読み込み側は
  • ①書き込み中フラグ(+00FFh)がセット(01h)の場合、不完全データとみなしデータを扱わない
  • ②書き込み中フラグ(+00FFh)がリセット(00h)の場合、データ読み込みを行う

制御PC電源瞬断ソリューション (共通)

制御PC(コントローラ)の電源瞬断(停電)対策についての共通の対応方法について説明しています。
製品別の対応例と合わせて参照してください。
詳しくは「制御PC電源瞬断ソリューション (共通)」をご覧ください。

制御PC電源瞬断ソリューション (INplc)

INplcコントローラの電源瞬断(停電)対策についての対応例について説明しています。
詳しくは「制御PC電源瞬断ソリューション (INplc)」をご覧ください。