    ＰＩＣについて

連枝はマイクロチップ社のワンチップ・マイコンＰＩＣ１６Ｆシリーズと１８Ｆシリーズをサポートしています。その特長を上げると

  1. ＲＩＳＣ（命令数の少ないＣＰＵ）のワンチップ・マイコンため比較的安価である。ＰＩＣはＲＩＳＣのワンチップ・マイコンと言うことで、外部メモリが要らない、などにより使い易くなっています。

  2. Ｉ／Ｏピンの電流容量が、直接ＬＥＤを駆動できるほど大きい。

  3. 少数の例外を除いて、どのピンも、入出力の選択が任意。

  4. ＰＩＣ１６Ｆ８７７（８８７）、１６Ｆ８７６（８８６）には、シリアル通信、Ａ／Ｄコンバータが内蔵できる。

  5. ＰＩＣ１６Ｆ８８７、１６Ｆ８８６については内蔵発振子の使用可能で、ＭＣＬＲのリセット機能も内蔵できます。また、Ａ／Ｄコンバータに使用できるピンが６ピン増加しています。

  6. フラッシュメモリ－のため、イレ－ザ－無しで何回でも電気的に上書きできます。

  7. ＲＩＳＣのため、ＲＡＭのバンク切り替えやＲＯＭのペ－ジ切り替えが、わずらわしくアセンブラのプログラムを著しく困難にしていますが、「連枝」はすべてシステム側でその困難さを克服しています。そのためユ－ザ－はアセンブラについて考える必要は全くない様になっています。

  8. ＰＩＣ１２Ｆ６２９、１６Ｆ６２８/６４８、１６Ｆ７８５は特長として、発振子を内臓しているので、外付け水晶発振子は不要です。その分入出力に振る向けることができます。その他の特長として、ＰＩＣ６Ｆ８４Ａと大体同じです。

  9. １６Ｆ６２８、１６Ｆ６４８はＲＯＭ容量が各々２Ｋバイト、４Ｋバイトとなっていますのでプログラミング容量が大きくなっています。１２Ｆ６２９は１Ｋバイトなので１６Ｆ８４Ａと同じ容量です。

  10. ＰＩＣ１６Ｆ８８はＲＯＭ容量が４Ｋ、ピン数は１６Ｆ８４Ａと同じ１８ピンです。発振子を内臓できます。機能的には、シリアル通信以外のすべての応用命令が使用できます。

  11. ＰＩＣ１８Ｆ４５２（４５２０）、１８Ｆ２５２（２５２０）は、３２ＫバイトのＲＯＭ容量を持ちますので、１６Ｆ８７７の３倍程度のプログラムが組めます。すべての応用命令の他、同じ変換ライブラリーにＣＡＮ通信（別売り）ライブラリーを加え、１８Ｆ４５８、１８Ｆ２５８を使用することにより、自動のＣＡＮ通信が可能になりました。

  12. ＰＩＣ１８Ｆ４５２５、１８Ｆ２５２５は、４８ＫバイトのＲＯＭ容量を持ち、Ａ／Ｄコンバータのチャンネルが１４本あり、３２ＭＨｚのクロックを内蔵し、ＭＣＬＲ（リセット）ピンも内蔵できます。従ってその分、使用可のＩ／Ｏピンが３ピン増えます。

  13. マイクロチップ社のＭＰＡＳＭＷＩＮ．ＥＸＥ等のＶｅｒ８．１５以前のＶｅｒ．をダウンロードし、ＲＥＮＲＩ．ＥＸＥと同じフォルダー中に置くには、マイクロチップ（日本）社のＨＰからＰＩＣの開発環境の全体であるＭＰＬＡＢをダウンロードし、それをインストールする形でハードディスク中に展開し、その中からＭＰＡＳＭＷＩＮ．ＥＸＥ等ファイルを検索によってサーチして、「連枝」のフォルダーの￥ＰＩＣフォルダー中にコピーします（詳細ＨＰのダウンロードのところ参照）

  14. 各種サンプルが未整理ですが掲載されています。ここの左上のトピックのところの、[ＰＩＣについて]の下の[サンプル回路]のところに、各サンプルの内容が書かれています。サンプル回路.LZH

ＨＰを参照することができます。


    I/O接続

入力アイソレートの方法

●  外部?は外部電源を表し、内部?はＣＰＵのＶＤＤ（５Ｖ）、ＶＳＳ（０Ｖ）と共通の電源を表します。

●　抵抗値は目安で大体の値です。

外部電源電圧 | ５Ｖ | 470Ω
 | １２Ｖ | 1.2KΩ
 | ２４Ｖ | 2.4KΩ

厳密にはフォトカプラやＣＰＵの特性に従って計算してください。

●　フォトカプラは各種類が売り出されています。

      ＴＬＰ５２１（東芝）は本例の１素子内臓（４ピン）の他、２素子（８ピン）、４素子（１６ピン）各内臓のものがあります。

入力アイソレートをしない場合

●　プールアップについては、4.7KΩ～20KΩが適当です。

●　ＰＩＣのＢポートについては、＜ＣＰＵ設置＞で[プルアップ]にチェックを入れると弱いプルアップが内部で付加されます。

出力増幅の方法

各ワンチップマイコンのＩ/Ｏピンの電流容量をおおよそ以下のようになっています。

機能 | PIC16F84 | PIC16F88 | PIC16F877（876) PIC16F628,16F648 | ATMEL
全ピン吐出し合計 | 100mA | 200mA | 250mA | 200mA
全ピン吸込み合計 | 150mA | 200mA | 300mA | 400mA
各ポート合計 | 50～150mA | 100mA | 200mA | 100mA
１ピン吐出し | 20mA | 25mA | 25mA | 3mA
１ピン吸込み | 25mA | 25mA | 25mA | 20mA

上表の範囲内であればＣＰＵから直接負荷を駆動できますが、多くの場合トランジスタアレー等で一度電流を増幅して使用したほうが、ノイズ対策の面から考えても無難です。

●　ＰＩＣ１６Ｆ８７７（８７６）とＰＩＣ１６Ｆ８４のＲＡ４は例外的に吸い込みになっているため本例の使用では使用できません。

●　ＰＩＣ１６Ｆ８８のＲＡ５は入力のみに使用できます。

●　トランジスタアレーでリレーを駆動すれば、その接点を利用してＣＰＵと負荷を完全にアイソレートできますが、トランジスタアレーで直接負荷を駆動しても多くの場合安定した動作をします。入出力ともアイソレートが必要かどうかは負荷の発生するノイズの大きさにより決まります。

●　トランジスタアレーは各種類があります。

    ＴＤ６２００４は７素子で、ＴＤ６２０８３は８素子です。

    いずれも、上図のように左側の若い番号のピンと対する右側のピンで各々入力と出力になります。

●「連枝」では出力値確定まで、出力ピンがフロートになっています。

  出力の性質に応じて、プルダウン抵抗が必要になる場合があります。

出力増幅をしない場合

●　「連枝」は出力は正論理、入力は負論理です。

●　ＬＥＤは、例としての負荷です。容量以内なら何でもかまいません。

発振子

PIC16F628やPIC12F629のように発振子を内臓するもの以外は、発振子を下図のように接続します。

リセットピンの処理

PIC16F84、PIC12F629のようにリセット機能を内蔵しているもの意外は、リセットピンを5Vにプルアップする必要があります。

●　この他、リセット用素子（PST573等）を使用する方法もあります。


サンプル回路

これらのサンプルは、実験用に使用したもので、あまり整理されていません。

従って、必ずしも動作を保証するものではありません。

しかし充分、回路製作の参考になると思います。

￥ＣＰＵ　フォルダーの中には、各ＣＰＵの動作テストに使用したファイルが雑多に入っています。

￥ADATST　フォルダーの中には、Ａ／Ｄ、Ｄ／Ａに関する命令を含む回路があります。

￥ＣＭＰ　フォルダーの中には、比較命令を命令を含む回路があります。

￥ＬＡＴＣＨ　フォルダーの中には、Ｌりれーによる電源再立ち上げ時に前値を記憶する回路の例が入っています。

￥ＳＥＧＭＥＮＴ　フォルダーの中には、ＰＩＣの７－ＳＥＧＭＥＮＴのＳＣＡＮ含む回路があります。

￥ＳＥＲＩＡＬ　フォルダーの中には、ＰＩＣのシリアル通信命令を含む回路があります。Ｈ８のシリアル通信の回路例はありません。

￥ＳＴＥＰＭＯＴＲ　フォルダーの中には、ＰＩＣのステップッピングモータを動作させる回路例が入っています。

￥ＬＣＤ　フォルダー中に、ＬＣＤのサンプル回路があります。

解凍してご使用ください。


概要1

    ＰＩＣ１８Ｆ４５２（４５８）　　１８Ｆ４５２５（８５）　　１８Ｆ４５２０　　１８Ｆ４５５０  １８Ｆ４６８０　１８Ｆ４５Ｋ２０ １８Ｆ４６Ｋ２２  　　ＰＩＣ１８Ｆ２５２（２５８）　　１８Ｆ２５２５（２５８５）　　１８Ｆ２５２０　　１８Ｆ２５５０   １８Ｆ２６８０　　１８Ｆ２５Ｋ２０ 　１８Ｆ２６Ｋ２２

概要

ＰＩＣ１８Ｆ４５２の変換ライブラリーまたは、ＰＩＣ１８Ｆ４５２５の変換ライブラリーを使用して、基本命令によるシーケンス動作（Ｓ版）と、１６ビットの応用命令（Ｐ版）をＣＰＵに実行させることが出来ます。

各ＣＰＵの特徴は以下の通りです。

上２つのみＰ１８Ｆ４５２－ＬＢ　他はＰ１８Ｆ４５２５－ＬＢが摘要されます。

発振子は、外部接続または内蔵の場合の基本発振周波数で、内部で４倍（か１．６倍）周されます。

   ＰＩＣ18F452（２５２）   　　32K-ROM              　          　   　  10MHz *4

                                    A/Dﾁｬﾝﾈﾙ　8

  ＰＩＣ18F458（２５８）  　　32K-ROM　　                　　　　　　   10MHz *4 =40MHz　CAN通信機能

                                    A/Dﾁｬﾝﾈﾙ　8

  ＰＩＣ18F4520（２５２０）  32K-ROM    内蔵MCLR、内蔵Osc     8Hz *4 =32MHz

                                    A/Dﾁｬﾝﾈﾙ　13

  ＰＩＣ18F4525（２５２５）  48K-ROM    内蔵MCLR、内蔵Osc　   8Hz *4 =32MHz

                                   A/Dﾁｬﾝﾈﾙ　13

  ＰＩＣ18F4585（２５８５）  48K-ROM    内蔵MCLR、内蔵Osc　 　8Hz *4 =32MHz　　　CAN通信機能

                                    A/Dﾁｬﾝﾈﾙ　11

  ＰＩＣ18F4550（２５５０）  32K-ROM    内蔵MCLR、内蔵Osc   　20MHz *1.6=32MHz 　ＵSB機能

                                    A/Dﾁｬﾝﾈﾙ　13

  ＰＩＣ18F4680（２６８０）  64K-ROM    内蔵MCLR、内蔵Osc　 　8Hz *4 =32MHz　　　CAN通信機能

                                    A/Dﾁｬﾝﾈﾙ　11

  ＰＩＣ18F45K20（２５Ｋ２０） 32K-ROM    内蔵MCLR、内蔵Osc  16MHz*4 =64MHz

                                    A/Dﾁｬﾝﾈﾙ　13

  ＰＩＣ18F46K22（２６Ｋ２２） 64K-ROM    内蔵MCLR、内蔵Osc  16MHz*4 =64MHz

                                    A/Dﾁｬﾝﾈﾙ　30

ＰＩＣ１８Ｆ４５２（１８Ｆ４５８）の基本仕様

  ピン数　　４０ピン

      Ｉ／Ｏ数　　計３３ピン（全ピンＩＮ／ＯＵＴ任意に設定可能）

  使用可能リレー番号

          Ｘ、Ｙリレ－番号

  拡張を使用しない場合

        入出力リレー　 ビット番号　　　　対応ピックＰＩＮ名

          ？００　～　？０５　（　ＲＡ０　～　ＲＡ５　）

          ？１０　～　？１７　（　ＲＢ０　～　ＲＢ７　）

          ？２０　～　？２７　（　ＲＣ０　～　ＲＣ５　）

          ？３０　～　？３７　（　ＲＤ０　～　ＲＤ７　）

          ？４０　～　？４２　（　ＲＥ０　～　ＲＥ２　）

              合計　　　　３３ ピン

    註）？にはＸか、Ｙが入ります。

  ＰＩＣ１８Ｆ２５２の場合、ＲＤポート、ＲＥポートがないため使用可能ピン数が減ります。

              合計　　　　２２ ピン

註）ＲＡ４は例外的にオープンコレクターピンになっており、それによる吸い込み出力となり、入力に使用する場合はプルアップ抵抗が必要になります。

ＰＩＣ１８Ｆ４５２５の基本仕様

  ピン数　　４０ピン

      Ｉ／Ｏ数　　計３７ピン（ＩＮ／ＯＵＴ任意に設定可能　ＰＩＮ１は入力のみ）

      ＭＣＬＲ、と外付け発振子をつなぐＯＳＣ１，ＯＳＣ２ピンをＩ／Ｏピンに使用できます。

      下図はそのすべてをＩ／Ｏに使用した場合です。

使用可能リレー番号

          Ｘ、Ｙリレ－番号

  拡張を使用しない場合

        入出力リレー　 ビット番号　　　　対応ピックＰＩＮ名

          ？００　～　？０７　（　ＲＡ０　～　ＲＡ７　）

          ？１０　～　？１７　（　ＲＢ０　～　ＲＢ７　）

          ？２０　～　？２７　（　ＲＣ０　～　ＲＣ５　）

          ？３０　～　？３７　（　ＲＤ０　～　ＲＤ７　）

          ？４０　～　？４２　（　ＲＥ０　～　ＲＥ３　）

                合計　　　　３６ ピン

    註）？にはＸか、Ｙが入ります。

  ＰＩＣ１８Ｆ２５？の場合、ＲＤポート、ＲＥポートがないため使用可能ピン数が減ります。

                合計　　　　２５ ピン

ＰＩＣのピン呼称及びクロック説明
ＶＤＤ | ５Ｖ電源
ＶＳＳ | ０Ｖ（ＧＮＤ）電源
ＭＣＬＲ | 外つけの場合、リセットピン（０でリセットのため、常時プルアップ）
ＯＳＣ１ ＯＳＣ２ | ＰＩＣ１８Ｆ４５２（４５８） 水晶発振子（１０ＭＨｚ）接続(必須） 他のＰＩＣＰＩＣ１８Ｆシリーズは水晶発振子（８Ｈｚ）接続又は内部クロック 設計画面上の＜ＣＰＵ設定＞のディフォルト値に従ってください。 発振子内蔵可のＣＰＵでも、外付けは可です（いずれも内部で×４されます） 註）＜ＣＰＵ設定＞中の可変クロックは外付けにする場合のみに摘要され 内蔵の場合はディフォルト値のみになります。
各ピンが入力になるか、出力になるかは回路上の設定番号をＸで始めるか、Ｙで始めるかで任意に選択できます。

最大定格
全ピン吐き出し電流合計 | ３００ｍＡ
全ピン吸い込み電流合計 | ２５０ｍＡ
各ポート合計 | ２００ｍＡ
各Ｉ／Ｏピン吸込み電流 | ２５ｍＡ
各Ｉ／Ｏピン吹き出し電流 | ２５ｍＡ
ＲＯＭ容量 | ＰＩＣ１８Ｆ４５２/４５２０/４５８/４５５０/４５Ｋ２０ ３２Ｋバイト ＰＩＣ１８Ｆ４５２５/４５８５ ４８Ｋバイト ＰＩＣ１８Ｆ４６２０/４６８０/４６Ｋ２２ ６４Ｋバイト

註）ＥＥＰＲＯＭのため、電気的にロム・ライター上で消去＆書き込みができます。

データ用ＥＥＰＲＯＭ内蔵のため、保持リレーの内容の電源断後の保持が可能になります。

註）正確な値いはマイクロチップ社のマニュアルを優先としますのでそちらを参照して下さい。

特長

  １）ＦＬＡＳＨメモリーのため、上書きでプログラムの変更が可能で、紫外線によるイレーザーの必要がありません。

  ２）データ用ＥＥＰＲＯＭを内蔵のため、保持リレーの内容保存には外付けのＥＥＰＲＯＭは必要ありません。

  ３）ＰＩＣに基本的に必要な外付け部品は、１０ＭＨzの水晶発信子と、２つの２０ピコ・コンデンサーのみです。

  内蔵クロックがあるＣＰＵの場合はこの限りではございません。

  一般的には少し精度は落ちますが、１０ＭＨｚのセラロック１個で充分です。２～８ＭＨｚでも動作しますが、シリアル通信は動作しません。Ｄ／Ａコンバータの出力周波数も変わってきます。

    （Ｓ版では、設定を変えることはできません）。

実行速度

実行速度は相当に早いはずですが、正確には測定していません。１０ＭＨzの発信の場合、ＬＤ命令で、０．４マイクロ、ＯＲ、ＡＮＤ命令で０．２マイクロ、それぞれ実行時間がかかります。命令により実行速度に大きな差があります。

チャッタリング防止

「連枝」上の《ＣＰＵ設定》でチャッタリング防止を選択すると、高速タイマＴ３２７を使用し、１ｍｓごとに入力の取り込みを行います。この入力の取り込み間隔はD8009で固定値として設定変更可能です。

また、入力ピンごとでチャッタリング防止の有効無効を指定できます。D8010:PORTA,D8011:PORTB,D8012:PORTC,D8013:PORTD,D8014:PORTE ビットＯＮでチャッタ防止対象となります。

チャッタ防止対象とチャッタ防止非対象それぞれで信号の論理を反転させることができます。M8010のコイルを配置すると、チャッタ非対象の論理反転。M8011のコイルでチャッタ対象を論理反転できます。

入力ピン

各ピンを入力として使用するとき、内部に弱いプルアップをもっているポートＢ（１０～１７）以外は、４．７Ｋ～２０Ｋオームの抵抗で、プルアップする必要が有ります。

出力ピン

各ピンを出力として使用するとき、１ピン当り２５ｍＡ（吹込み、吐出し共）を出力できますが、ＣＰＵトータルでは、３００ｍＡが最大出力になるため、６２００４等のトランジスタ・アレーにより、リレー等を駆動することをおすすめします。

対応版

ワンチップ・マイコンであるため、次に述べるようにハードから来る制約を受けることになります。

  1. ＣＰＵのＲＡＭ容量のため使用可能なリレーやタイマ、カウンタの数が制約されます。

  2. ＣＰＵの持つＩ／Ｏ（入出力）のピン数により、入出力の接点数に制約があります。

  3. 拡張Ｉ／ＯはＰＩＣ１８Ｆ４５２を２個使用出来ます。拡張用ＰＩＣを接続すると、本体のＰＩＣと、拡張用PICとの通信のために、使用できるピン番号が違ってきます。

回路上のアドバイス

  ＶＤＤ、ＶＳＳピンの直近のパスコン（１０４）は必須です。

  ＰＩＣ１８Ｆ４５２の場合、両側にＶＤＤ、ＶＳＳピンがありますが、両側にパスコン（１０４）を付けるのがベターです。


命令5

    ＰＩＣ１８Ｆ４５２（４５８）　　１８Ｆ４５２５（８５）　　１８Ｆ４５２０　　１８Ｆ４５５０  １８Ｆ４６８０　　 　１８Ｆ４５Ｋ２０　　１８Ｆ４６Ｋ２２  ＰＩＣ１８Ｆ２５２（２５８）　　１８Ｆ２５２５（２５８５）　　１８Ｆ２５２０　　１８Ｆ２５５０   １８Ｆ２６８０　　１８Ｆ２５Ｋ２０ 　１８Ｆ２６Ｋ２２

シーケンス基本命令

名称 | 命令記号
接点命令 | ＬＤ、ＬＤＩ、ＡＮＤ、ＡＮＩ、ＯＲ、ＯＲＩ
結合命令 | ＡＮＢ、ＯＲＢ
演算結果 | ＭＰＳ、ＭＲＤ、ＭＰＰ
出力命令 | ＯＵＴ（Ｍ、Ｙ）、Ｔ、Ｃ
デバイスのセット、リセット | ＳＥＴ（Ｍ、Ｙ）、ＲＳＴ（Ｍ、Ｙ、Ｃ、Ｔ、Ｄ）
立ち上がり微分、立ち下がり微分 | ＰＬＳ、ＰＬＦ
シフト命令 | ＳＦＴ
終了命令 | ＥＮＤ
継続命令 | －－＞＞、＞＞－－
註）継続命令は－＞＞は、次ぎの行の＞＞－－のみに継続動作します。

応用命令

  ＰＩＣの応用命令は１６ビットの範囲内で実行されます。

  ダブルワード命令はサポートしていません。

  Ｋ４Ｍ１６　等の桁指定はＫの値いにかかわらず必ずＫ４即ち１６ビットと見なされます（Ｍ以下の数値は８の倍数としてください）。

マスタコントロール命令

ＭＣ、ＭＣＲ

算術演算命令

名称 | 命令記号
BCD4桁加算（２） | ＋、＋Ｐ
BCD4桁減算（２） | －、－Ｐ
BCD4桁乗算 | ＊、＊Ｐ 指定先の２ワードに答えが入ります。 答えにＤ１０を指定した場合、Ｄ１１まで２ワード使用します。
BCD4桁除算 （被除数16ビット、除数16ﾋﾞｯﾄ、答え16ビット） | ／、／Ｐ 指定先の１ワードに答えが入ります。 余りはその先の１ワードに入ります。 答えにＤ１０を指定した場合、Ｄ１１まで２ワード使用します。
BIN16ビット加算（２） | B＋、B＋Ｐ
BIN16ビット減算（２） | B－、B－Ｐ
BIN16ビット乗算(答え32ビット） | B＊、B＊Ｐ 指定先の２ワード（例、Ｄ１０、Ｄ１１）に答えが入ります。 答えにＤ１０を指定した場合、Ｄ１１まで２ワード使用します。
BIN16ビット除算 （被除数16ビット、除数16ﾋﾞｯﾄ、答え16ビット） | B／、B／Ｐ （例、Ｂ／ Ｄ１０ Ｄ１１） 被除数は１ワード（例Ｄ１０） 答えは１ワード（例Ｄ１１）に入ります。 余りは１６ﾋﾞｯﾄのみで、その先の1ワード（D１２）に入ります。
BIN３２ビット除算 （被除数32ビット、除数16ﾋﾞｯﾄ、答え32ビット） | DB／、DB／Ｐ （例 ＤＢ／ Ｄ０ Ｄ１０） 被除数は２ワード（例Ｄ０，Ｄ１） 答えは指定先の２ワード（例Ｄ１０、Ｄ１１）に入ります。 余りは１６ﾋﾞｯﾄのみで、その先の1ワード（D１２）に入ります。 つまり、答えにＤ１０を指定した場合、Ｄ１２まで３ワード使用します。 被除数に直値は不可です。
16ビットBCDデータインクリメント 16ビットBCDデータデクリメント | ＩＮＣ、ＩＮＣＰ ＤＥＣ、ＤＥＣＰ
16ビットBＩＮデータインクリメント | ＩＮＣＢ、ＩＮＣＢＰ
16ビットBＩＮデータデクリメント | ＤＥＣＢ、ＤＥＣＢＰ

BCD<－>BIN変換命令

BINデータ－>BCD4桁変換 | ＢＣＤ、ＢＣＤＰ ＦＦＦＦの範囲内の変換が可能です。 指定先の2バイト（Ｄ？）に答えが入り、3バイト目（Ｄ？＋１）に万の位4バイト目（Ｄ？＋１）に10万の位が入ります。
BCD4桁－>BINデータ変換 | ＢＩＮ、ＢＩＮＰ ９９９９の範囲内の変換です。指定先の２バイト（Ｄ？）のみにその変換値が入ります。

データ転送命令

16ビットデータ転送 | ＭＯＶ、ＭＯＶＰ
16ビットデータ否定転送 | ＣＭＬ、ＣＭＬＰ
16ビットデータ交換 | ＸＣＨ、ＸＣＨＰ
16ビット２の補数 | ＮＥＧ、ＮＥＧＰ

  データ転送命令の桁指定オペランドの説明

  ①    ＭＯＶ　Ｄ０　Ｋ４Ｍ８

  ②　　ＭＯＶ　Ｄ０　Ｋ４Ｙ２０

とした時、下図の上の転送前Ｓの値は転送後Ｄの各々の下段の①②の表示ビットに入ります。

図中の１／０の値はサンプルです。

  ①　　　　 M23 M22 M21M20M19M18M17M16M15M14M13M12M11M10M9 M8

  ②　　　     Y2F      ～　　　　　　　　　　　　 Y28Y27　　　～                          Y20

この命令が　ＭＯＶ　Ｋ４Ｍ８　Ｄ０　のように逆に第１オペランド側が桁指定の場合、転送前Ｓの側が同じくＭ８～Ｍ２３の間の各ビットに割り当てられます。

Ｋ４は４桁の意味で４ビットが１桁ですからＫ４は１６ビットを表わします。ＰＩＣの場合、例外的にＫ？の数字がいくつでもＫ４とみなされ、それに従って動作します（ＳＥＲＩ、ＳＥＲＯ、ＤＡＣＯ、ＡＣ２ＣＩ、ＮＡ２ＣＩ命令は取り扱いが1バイトのため、Ｋ２とみなされます）。

 ②の場合通常（拡張時）Ｙ２８以降は使用されないので無視され、ラダー的にはＹ２０～Ｙ２７のみ使用されます。

註）Ｋ４Ｍ８のようにＫ４のあとのデバイス（Ｍ、Ｌ等）の数値は０または８の倍数にしてください。

註）Ｙ出力の場合

     Ｙ接点の応用命令の桁指定による出力は末尾0のみです。

     ０～４チャンネルでは通常２桁８ビットのみに関連しますが、もし拡張側で使用していれば、拡張側も変化させるので注意が必要です。ここで拡張側を使用する場合、本体側、拡張側を単独に８ﾋﾞｯﾄのみ変化させることはできません。

     ５～７チャンネルの拡張は出力のオペランドに使用でき４桁16ビットが変化します。

註）拡張側は入力になるオペランドには指定できません。

     チャンネル８以上は不可です。

論理演算命令

16ビットデータ論理積 | ＷＡＮＤ、ＷＡＮＤＰ
16ビットデータ論理和（２） | ＷＯＲ、ＷＯＲＰ
16ビットデータ排他的論理和（２） | ＷＸＯＲ、ＷＸＯＲＰ
16ビットデータ否定排他的論理和（２） | ＷＸＮＲ、ＷＸＮＲＰ
デコード | ＤＥＣＯ、ＤＥＣＯＰ（第３オペランドは必ずＫ８とみなされます）

比較演算命令

16ビットデータ比較

＝、＜＞、＞、＜＝、＜、＞＝

註）負の数が含まれる比較は正常動作しませんのでご注意ください。負の数かどうかの判定は以下の方法で行えます。

ローテーション命令

16ビットデータの右ローテーション（１） | ＲＯＲ、ＲＯＲＰ
16ビットデータの右ローテーション（２） | ＲＣＲ、ＲＣＲＰ
16ビットデータの左ローテーション（１） | ＲＯＬ、ＲＯＬＰ
16ビットデータの左ローテーション（２） | ＲＣＬ、ＲＣＬＰ

シフト命令

16ビットデータnビット右シフト | ＳＦＲ、ＳＦＲＰ
16ビットデータnビット左シフト | ＳＦＬ、ＳＦＬＰ

ソフトウエア・タイマ

１μＳタイマ | ＭＣ１
１００μＳタイマ | ＭＣ１００

終了命令

全命令終了命令 | ＥＮＤ
１クール終了点命令 | ＦＥＮＤ（この命令以降にサブルーチンとその被コールポイントＰを置く）

ジャンプ命令

サブルーチン・コール命令

ＳＣＡＬＬ（コールの対象サブルーチンは必ずＦＥＮＤのあとＥＮＤの前に置き、頭に被コールポイントＰを置き、Ｐにコールの対象番号をつける）

サブルーチン中のＸ、Ｙ接点は通常の接点でダイレクト接点にはなりません。そのオン/オフはループの論理に影響を与えます。

リターン命令

ＲＥＴＲＮ（サブルーチンの最後に置く）

ＳＣＡＬＬ、ＩＮＴ命令ともに対象サブルーチンからＲＥＴＲＮ命令で戻ります。

ＲＥＴＲＮ命令の頭には常時オンの接点をおきます。

ウォッチドッグタイマクリア命令

ウォッチドッグタイマ値をクリア命令

CLRWDT

ウォッチドッグを有効にした場合、必ずこの命令を記載します。記載しない場合、ウォッチドッグタイマのオーバーフローでＣＰＵがリセットされます。

定数テーブル読出し命令

テーブルからのデータ読出し命令

RDTBL

コメントに記載したデータテーブルからデータを読み出します。
テーブル番号は０～２９で定義でき、指定するデータの種類もアスキー文字や１０進数値、１６進数値など様々です。

註）各応用命令の動作については関数ヘルプを参照してください。

特殊補助リレー

機能 | デバイス
0.1 秒クロックパルス | Ｍ９０３０
0.2 秒クロックパルス | Ｍ９０３１
1 秒クロックパルス | Ｍ９０３２
常時ＯＮ リレー | Ｍ９０３６
常時ＯＦＦリレー | Ｍ９０３７
立上り後1スキャンのみONリレー | Ｍ９０３８
立上り１クール後1スキャンのみONリレー | Ｍ９０３９
エラー受信きたフラグ | Ｍ９０４０
正常受信きたフラグ | Ｍ９０４１
０フラッグ | Ｍ９０１３

微分ポイント数

    ＰＬＳ、ＰＬＦ、Ｔ、Ｃ命令の数の合計と、微分命令の数の合計は１７６６個をえることがきません。（上記命令は微分動作を含み、微分ポイントを使用します）。つまり、通常の使用では無制限に近いことになります。

ステップ数とメモリ

    ＣＰＵ中のＲＯＭ容量により、ラダー（シーケンス回路）のステップ数が制約されます。

    １８Ｆ４５２（２５２）容量は３２Ｋバイトですが、システムに４Ｋ～６Ｋ取られます。

    各命令が使用する合計のバイト数が３２Ｋを越えると、アセンブル（機械語変換）時に、エラーになります。

    目安で、４０００ステップぐらいのラダーが構成できるはずです。

○ダイレクト命令

   特に周辺ＬＳＩのモードセットの時に通常ループ中にダイレクト出力する命令が必要になります。

  ＯＵＴＤ、ＳＥＴＤ、ＲＳＴＤ、ＭＯＶＤ命令があり、各々ＯＵＴ、ＳＥＴ、ＲＳＴ、ＭＯＶ命令のダイレクト版になっています。

  この命令の直前に、各々ＯＵＴ、ＳＥＴ、ＲＳＴ、ＭＯＶ命令が実行されますので通常ループの論理接点に影響を与えます。

○ＭＯＶＫ命令

  ＭＯＶＫ命令は、Ｘ，Ｙで指定される桁指定のピンにダイレクトに入出力する命令です。

    出力の場合、第１オペランドは出力する値い、第２オペランドは出力ビット数と、出力開始ビットです。

  例えばＭＯＶＫ　Ｈ３４　Ｂ６Ｙ１２はＨ３４の値いをＹ１２～Ｙ１７まで、６ビット出力します。Ｙ１０～Ｙ１１には影響しません。

  以下のような場合、Ｄ６の内容をＹ３１から７ビット出力します。Ｄ６中のビット０～６が出力され、ビット７は無視されます。

  ＭＯＶＫ命令は、通常ループの接点論理に影響を与えません。

○ＭIＶＫ命令

第１オペランドがＢで始まるビット指定の場合のＭＩＶＫ命令は以下のようになります。

  この命令は、Ｘ１０から４ビットをＭ８からのチャンネル接点に入れるという命令ですが、この場合Ｘ１０からの４ビットは１時的に入力接点モードになります（方向性レジスタが切り替わる）。

  このことによって、双方向性の必要な周辺ＬＳＩ（機器）を利用することができます。但し、第一オペランドが必ず０ビットを起点としなくてはならないので注意が必要です（もしＸ１０に当たる接点を全く別のＹ１０として出力に使用しているとすると、この命令の実行時、瞬間的に出力がフロートになってしまいます）。

  ＭＩＶＫ命令はダイレクト命令ですが、第２オペランドの接点論理には影響を与えます。

註）関数ヘルプ中の「ダイレクト命令」を参照してください。


      ＰＩＣ１８Ｆ４５２（４５８）　　１８Ｆ４５２５（８５）　　１８Ｆ４５２０　　１８Ｆ４５５０  １８Ｆ４６８０　　 　１８Ｆ４５Ｋ２０　　１８Ｆ４６Ｋ２２　　  ＰＩＣ１８Ｆ２５２（２５８）　　１８Ｆ２５２５（２５８５）　　１８Ｆ２５２０　　１８Ｆ２５５０   １８Ｆ２６８０　　１８Ｆ２５Ｋ２０ 　　１８Ｆ２６Ｋ２２

デバイス範囲

  Ｍリレ－（補助リレー）

    Ｍ０　～Ｍ１０２３

    合計　１０２４

  1. ラダー上では同一接点を何回でも使用できます。出力は、通常、１リレーにつき１個所ですが、実際は何箇所でも使用できます。出力リレー（Ｙ）については、2ヶ所以上で出力として使用すると警告が出ます（無視可能です）。

  2. ステッピング・モータを使用すると　Ｍ０　～Ｍ６８７　合計　６８８になります。

  3. R-リレーを使用すると、Ｍ０　～Ｍ８５５　　合計　８５６になります。

特殊補助リレー

機能 | デバイス
0.1 秒クロックパルス | Ｍ９０３０
0.2 秒クロックパルス | Ｍ９０３１
1 秒クロックパルス | Ｍ９０３２
常時ＯＮ リレー | Ｍ９０３６
常時ＯＦＦリレー | Ｍ９０３７
立上り後1スキャンのみONリレー | Ｍ９０３８
立上り１クール後1スキャンのみONリレー | Ｍ９０３９
エラー受信きたフラグ | Ｍ９０４０
正常受信きたフラグ | Ｍ９０４１
０フラッグ | Ｍ９０１３

初期設定デバイス

応用機能ごとで初期設定デバイスや制御デバイスを作成しました。主にＭ８０００番～Ｍ９９９９番とＤ８０００番～Ｄ９９９９です。

デバイスモニタなどではモニタ出来ませんが、初期設定やＣＰＵのメモリを直接変更するようにしています。

各種デバイスを活用することでより細かな制御が可能となります。

   ◎保持（Ｌ）リレー　（Ｐ版のみ扱えます）

      Ｌ０～Ｌ６３　を最大とする。

変化があると、保持リレーはＣＰＵ内部のＥＥＰＲＯＭデ－タメモリ－に書き込まれます。

電源断後にもそのＯＮ／ＯＦＦ結果をキープし、電源再立上げ時にキープした結果を読み込みます。

書き込みに２０ｍＳ以上かかることがあります。回路の体内時計がくるいますので、頻ぱんに変化する入出力は避けて下さい。

  註）ＭＯＶ命令で桁指定する場合、必ずＫ４Ｌ？が指定され、４桁１６ビットが使用されます。

  ◎ステップリレー

      Ｊ００００　～Ｊ０９９９

      チャンネル、ステップ番号

① ３，４桁目がチャンネルを表わし、１，２桁目がステップ番号を表わします。

② 同一のチャンネル内で一つのステップリレーのみがオンになっていす。

つまりあるステップリレーが最後にオンになれば、他の同一チャンネル内のリレーは自動的にオフになります。

③ チャンネルが違うステップリレーは同時にオンが可能です。

このことはチャンネルを替えれば、各々のチャンネルで個別のステップ動作による並列動作が可能になることを意味しています。

 註）ＪのステップリレーはＬＤＩ（ＬＤ ＮＯＴ）、ＡＮＩ（ＡＮＤ ＮＯＴ），ＯＲ命令のとき、Ｊ５－１０のようにハイフンでつないである範囲をカバーできます。カバー範囲内の接点のどれか一つでもオン（１）になれば、ＬＤＩ、ＡＮＩの場合論理結果が０（オフ）になります。ＯＲの場合は論理結果が１（オン）になります。

カバー範囲は同一チャンネル内（０～９９　か１００～１９９の範囲内）ならＯＫです。

註）ステップリレーは電源断後に前値は失われ、キープされません。

  ◎タイマ

 タイマ－番号Ｔ０～Ｔ１６７は100mS単位で設定します。

 Ｔ０～Ｔ３１　９９９９×100mS　＝９９９．９秒までの設定ができます。

 Ｔ３２～Ｔ１６７　は１２７×100mS　＝１２．７秒までの設定ができます。

  タイマとカウンタは同一メモリーを使用するためタイマとカウンタ番号は重複して設定はできません。

タイマとカウンタ番号は詰めて使用するのが効率的です。（精度、－５０ｍＳ～０　）

タイマ－番号Ｔ３００～Ｔ３２７は１ｍＳ単位の高速タイマ。（精度、－１mＳ～０）

設定範囲は、９９９９×１ｍＳ = ９９９９ｍｓまでの設定ができます。

Ｔ３２７はチャッタ防止にチェックを入れると使用できません。

（註）各精度は１クールによる経過時間を含みません。

（註）直値の場合、頭にＨをつけるとＦＦＦＦＨまで設定できます。(PIC18F452シリーズ)

  注意

  1. １００ｍＳ単位のタイマについて、もしＴ２　Ｋ１ と設定すれば０～１００ｍＳの範囲になり、Ｔ２ Ｋ３ と設定すれば２００～３００ｍＳの範囲になります（１クールの時間が各タイマー時間より長い場合そちらが優先します）。

  2. １ｍＳ高速タイマは、１ｍＳ単位で設定します。減算は１ｍＳ毎に行われるので誤差は１ｍＳになります（各精度は１クールによる経過時間を含みません、１クールの時間が各タイマー時間に優先します）。

  3. 設定は直値の場合、通常、Ｋを頭につけたＢＣＤ値としますが、ＰＩＣ１８Ｆ４５２シリーズでは、頭にＨをつけるとﾊﾞｲﾅﾘｰ値となり、ＨＦＦＦＦまでセットできます。

  4. Ｄﾒﾓﾘｰや桁指定（例Ｋ４Ｍ１６）等を設定値として、第２ｵﾍﾟﾗﾝﾞﾄに適用出来ます。内容はすべてＢＣＤと判断されます。

◎カウンタ

 カウンター番号Ｃ０～Ｃ１６７が使用できます。

 Ｃ０～Ｃ３１　９９９９までの設定ができます。

 Ｃ３２～Ｃ１６７　２５５までの設定ができます。

  ◎Ｄメモリー（１６ﾋﾞｯﾄメモリー）

 ＰＩＣ１８Ｆ４５２シリーズは　　  Ｄ０～Ｄ６３　　　まで

 Ｐ１Ｃ１８Ｆ４５２５シリーズは　Ｄ０～Ｄ６３ と Ｄ９４～Ｄ１２５　まで使用できます。

     註）過去のバージョンではＤ６４以降が使用できていたようですが、現状はＤ２００～Ｄ２１４やシリアル通信に使用しています。

      Ｄ６４以降をＤ９４以降に変更することをお勧めいたします。

  ◎保持（Ｄ）メモリー

 Ｄ２００～Ｄ２１４ を記憶用ﾒﾓﾘｰとし、電源断後もその値いを 保持します。

変化があると、保持リレーと保持メモリーは内部のＥＥＰＲＯＭデ－タメモリ－に書き込まれ、電源の再立ち上がり時に読み込まれます。

書き込みに２０ｍＳ以上かかることがありますので、回路の体内時計がくるいますので、頻ぱんに変化する入出力は避けて下さい。（保持リレーのメモリは電源立ち上げ時に読込まれます。）

     註）デバッガを使用する時やシリアル通信を使用するとき、保持（Ｄ）メモリーは使えません。

        お客様からのご依頼で変換エラーにはしないようにしています。

  ◎Ｗメモリー（ＣＡＮ通信，Ｉ２Ｃ通信用１６ﾋﾞｯﾄメモリー）

  Ｗ０～Ｗ７　　　　ＰＩＣ１８Ｆ４５２、４５８、４５２０

  Ｗ０～Ｗ１５　　　ＰＩＣ１８Ｆ４５２５、ＰＩＣ１８Ｆ４６Ｋ２２

  ◎Ｂリレー（ＣＡＮ通信，Ｉ２Ｃ通信用）

  Ｂ００～ＢＦＦ（２５５個）　データ・メモリー

ＣＰＵごとに責任範囲を設定し、各ＣＰＵからデータを報告させます。（チャンネル数Ｆ、１チャンネル当たり１６点）

 ◎間接アドレス

    ＶＢ　　　　　　　　　間接アドレス設定用のレジスタです。一つのみ存在します。

例　　　　ＭＯＶ　Ｋ１０　ＶＢ　　　は間接アドレス設定用レジスタにアドレスを設定します。

                                    この場合、データメモリーのＤ１０のアドレスを設定します。

※　間接アドレスでアクセスできる範囲はＤ０～Ｄ４９までとなります。（バイト単位のアドレスで０～９９）

※　間接アドレスVBに書き込むことができる命令はＭＯＶのみです。

※　間接アドレスVBを変化させる場合は、ＭＯＶかまたはＶ１、ＶＦをご利用ください。

    Ｖ０，Ｖ１，ＶＦ　　　各々、ＶＢの指定するアドレス(バイト単位）の値いを扱った後に、アドレスを変化ます。

例　　　　ＭＯＶ　Ｖ０　Ｄ０　　　　　　はそのレジスタの内容のアドレスの内容を、Ｄ０メモリーにコピーします。アドレスは無変化。

          ＭＯＶ　Ｖ１　Ｄ０　　　　　　同上を実行した後にアドレスを一つインクリメント（１バイト増やす）します。

          ＭＯＶ　ＶＦ　Ｄ０　　　　　　同じくコピーした後にアドレスを一つデクリメント（１バイト減らす）します。

  間接指定を利用することで、ワードデバイスの下位バイト、上位バイトに別々にアクセスすることができます。

  連続するワードデバイスの上位バイトと下位バイトをセットで扱うこともできます。

  註）ＰＩＣ１８Ｆ４５２に関しては全命令が、間接アドレスによる間接アクセスに対応します。

  註）間接アクセスはＤメモリーのみを対象とします。

  註）第三オペランドでは、ＶＦ（アドレス・デクリメント）は使用できませＮ。

  ◎システム初期設定デバイス

  プログラムではなく、初期設定として取り込むための特殊デバイスです。

  設定値は、システム設定として利用され、実行時には変更できません。

  また、ＨＥＸファイル変換時には、ラダー部は設定部分を除いて読み飛ばします。

M8000:システム初期設定ブロックの開始を表す接点です。

M8010:チャッタ非対象を論理反転させるリレーです。配置で反転します。

M8011:チャッタ対象を論理反転させるリレーです。配置で反転します。

D8009:チャッタサンプリング間隔を指定するデータレジスタです。ms単位で指定します。

D8010:ポートＡのチャッタ防止の対象を指定します。ビットＯＮでチャッタ対象指定となります。

D8011:ポートＢのチャッタ防止の対象を指定します。ビットＯＮでチャッタ対象指定となります。

D8012:ポートＣのチャッタ防止の対象を指定します。ビットＯＮでチャッタ対象指定となります。

D8013:ポートＤのチャッタ防止の対象を指定します。ビットＯＮでチャッタ対象指定となります。

D8014:ポートＥのチャッタ防止の対象を指定します。ビットＯＮでチャッタ対象指定となります。

注意

  1. シリアル通信を使用するか、デバッグ・モ－ドで使用すると、Ｄ６４までとなります。

  2. 機械語（．ＨＥＸ）に変換する場合デバイスの範囲以外や、使用制限オーバーなどがありますとエラーとなり変換されませんので注意してください。


3

    １８Ｆ４５２５（８５）　　１８Ｆ４５２０　　  １８Ｆ４６８０　　１８Ｆ４６Ｋ２２　　　 １８Ｆ４５Ｋ２０　　　 　　１８Ｆ２５２５（２５８５）　　１８Ｆ２５２０　　１８Ｆ２５５０   １８Ｆ２６８０　　１８Ｆ２６Ｋ２２ 　　　 １８Ｆ２５Ｋ２０

 コメント機能

ラダーには説明書きとして、コメントを記載することができます。

コメントの記載は、空行を追加してから、コメント入力を行います。

※現状は、ＰＩＣ１８Ｆ４５２５シリーズや４６Ｋ２２、４５Ｋ２０のみ対応しています。

コメントの記述の仕方により、以下の機能を使用することが可能となります。

  1. 行に対するコメント

    2.

  2. データテーブルの定義

    3.

  3. プログラムの範囲コメント設定

１．行に対するコメント

２．データテーブルの定義

コメント部に特殊な書き出しをすると、ＲＯＭ（プログラムメモリ）にデータを定義することができます。記述する場所は、どの位置に記載しても構いません。先頭や後方にまとめて配置しても、使用する前に記載しても構いません。（コンパイル時に最初にデータとして取り込みます。） このデータは、応用命令「ＲＤＴＢＬ」を利用することで読み出すことができます。

ＬＣＤへの表示文字の定義やシリアル通信で使用する文字列、数値のデータ配列などをわかりやすく、効率的に定義することができます。

  ＬＣＤやシリアルなどはコマンド前に記載するとメンテナンスがしやすくなります。

書き出し文字 (小文字も可能ですが、統一必要) | 意味 | 記載例
STR または str | 文字列でデータを指定し、テーブルを作成する。文字列は半角カタカナが使用できます。特殊文字は使用できませんのでご注意ください。 |
DEC または dec (Decimalの略です) | １０進数でデータを指定しテーブルを作成する（16ビット単位） |
HEX または hex (HexaDecimalの略です) | １６進数でデータを指定しテーブルを作成する。記載した文字は１６進数として変換します。0xで始まる場合は、xを無視します。（16ビット単位） |
BDE または bde (Byte Decimalの略です) | １０進数でデータを指定しテーブルを作成する（8ビット単位） |
BHE または bhe (Byte HexaDecimalの略です) | １６進数でデータを指定しテーブルを作成する。記載した文字は１６進数として変換します。0xで始まる場合は、xを無視します。（8ビット単位） |

  テーブルには、必ずテーブル番号を指定してください。この番号は０～２９の３０個使用できます。テーブル番号は欠番を設けることができます。ただし、ＲＤＴＢＬコマンドを使用して読み出す場合には、欠番のテーブルはすべて一番小さな番号のデータを使用することになります。（ただし、欠番を設けた場合は、使用しているテーブル番号の最大値までのテーブル管理ＲＯＭメモリを占有することになります。１番あたり２ワード分2命令分を使用します。）

テーブルからのデータ読出し命令

RDTBL

コメントに記載したデータテーブルからデータを読み出します。
テーブル番号は０～２９で定義できます。テーブルからデータを読み出し、データ格納先に１ワード分格納します。

テーブル番号：０～２９で指定できます。指定は固定値またはＤで行えます。

データ位置：０～２５５で指定できます。テーブル番号のデータの内、先頭（０番目）から何番目かを指定します。 指定は、固定値またはＤで行えます。

データ格納先：データを格納する先を指定できます。ＤやＶ、Ｍなどが指定できます。

（注意）固定値で指定するテーブル番号は存在する番号のみ指定してください。

（注意）ワードデバイスの指定時は、存在しない番号は、存在する番号のうち最小値が使用されます。

（注意）固定値で指定する値はＨ，ＫのいずれもＢＣＤ値となり同一値となります。

テーブルを活用した使用方法

テーブルを活用することでＬＣＤに表示する文字列を定義することができます。

数値などを表示する場合は、変更したい部分のデータのみ変更します。

３．プログラムの範囲コメント設定

コメント部に「/*」や「*/」を記述することで当該記述に囲われた範囲をコメント部として扱うことができます。

一時的にＨＥＸファイルに含めたくないプログラムなどをこのコメントで囲ってください。

プログラムとしては出力されなくなります。


I/O･拡張

    ＰＩＣ１８Ｆ４５２（４５８）　　１８Ｆ４５２５（８５）　　１８Ｆ４５２０　　１８Ｆ４５５０  １８Ｆ４６８０　　１８Ｆ４６Ｋ２２　　　 １８Ｆ４５Ｋ２０　　　 ＰＩＣ１８Ｆ２５２（２５８）　　１８Ｆ２５２５（２５８５）　　１８Ｆ２５２０　　１８Ｆ２５５０   １８Ｆ２６８０　　１８Ｆ２６Ｋ２２ 　　　 １８Ｆ２５Ｋ２０

  同一ＰＩＣ素子を使用する場合（応用命令に含まれる）

  拡張の接続

ＰＩＣ１８Ｆシリーズすべてに摘要されます。

接続抵抗の抵抗値は０が原則です。

主ＣＰＵ（ＰＩＣ）側では、どのピンを入力に使用するか、出力に使用するかピン毎に任意です。

  入出力リレー　 ビット番号　　　　対応ピックＰＩＮ名

      ？００　～　？０５　　　　　　　（　１－ＲＡ０　～　ＲＡ５（ＲＡ７）　）

      ？１０　～　？１７　　　　　　　（　１－ＲＢ０　～　ＲＢ７　）

      ？２３、２４、２６、２７　　　　　（　１－ＲＣ３，４、６、７　）

      ？３０　～　？３６　　　　　　　（　１－ＲＤ０　～　ＲＤ６　）

      ？４０　～　？４２　　　　　　　（　１－ＲＥ０　～　ＲＥ２　）

      ？２０、？２１、？２２、？２５（ＲＣ０、ＲＣ１、ＲＣ２、ＲＣ５）は拡張用接続に使用でＩ／Ｏには不可

      （拡張（スレーブ）側のピン番号）

      ？０８　～　？０Ｃ　　　　　　　（　２－ＲＡ０　～　ＲＡ５（ＲＡ７））

      ？１８　～　？１Ｆ　　　　　　　（　２－ＲＢ０　～　ＲＢ７　）

      ？２Ｂ、２Ｃ、２Ｅ、２Ｆ　　　　　（　２－ＲＣ３，４、６、７　）

      ？３８　～　？３Ｆ　　　　　　　（　２－ＲＤ０　～　ＲＤ７　）

      ？４８　～　？４Ａ　　　　　　　（　２－ＲＥ０　～　ＲＥ２　）

      ？２０、？２１、？２２、？２５（ＲＣ０、ＲＣ１、ＲＣ２、ＲＣ５）は拡張用接続に使用でＩ／Ｏには不可

        合計　　　５８ ピン

註）？にはＸか、Ｙが入ります。

註）１－はメイン、２－は拡張側

註）ＰＩＣ１８Ｆ４５２（４５８）以外はＲＡ７まで使用できます。

拡張（スレーブ）側でもどのピンを入力に使用するか、出力に使用するかは、ピン毎に任意です。

拡張の使用は《ＣＰＵ設定》で設定しますが、拡張を設定しているのに拡張側を接続していないと、相互通信待ちで、ハングアップする可能性があります。

メイン側と拡張側の、（ＲＣ０ ～ＲＣ２）と、（ＲＣ５）は相互の通信に使用されるため、Ｉ／Ｏとして全く使用できなくなります。

拡張方法は、図に従って下さい。各ピンは同一番号どうしを接続して下さい。

マスターＣＰＵと拡張ＣＰＵの距離は１５ＣＭ以内にして下さい。

拡張側にはＰＩＣ１８Ｆ４５２－ＬＢ使用の場合は￥８Ｆ５￥Ｅ０８￥中のEXSLAV6.HEXを

              ＰＩＣ１８Ｆ４５２５－ＬＢ使用の場合は￥８Ｆ５５￥Ｅ０８￥中のEX55SLAV6.HEXを書き込んでください。

              ＰＩＣ１８Ｆ４６Ｋ２２ＣＰＵ　使用の場合は￥８Ｆ５５￥Ｅ０８￥中のEXSLAV46K22.HEXを書き込んでください。

              ＰＩＣ１８Ｆ４５Ｋ２０ＣＰＵ　使用の場合は￥８Ｆ５５￥Ｅ０８￥中のEXSLAV45K20.HEXを書き込んでください。

              （例外としてＰＩＣ１８Ｆ４５５０の場合は￥８Ｆ５５￥Ｅ０８￥中のEX4550SLV.HEXを書き込んでください）。

拡張側はマスター側とＩ／Ｏのやり取りの動作のみをします。

註１）拡張側のＣＰＵはＰＩＣ１８Ｆ４５？シリーズであれば別のＣＰＵでもかまいません。

註２）ＰＩＣ１８Ｆ４５５０の場合は、ＲＣ５ではなく、ＲＣ６どうしを接続します。

    それに従って、使用できるピン番号が変わります。

エクスパンダー素子による拡張

  Ｉ２Ｃ通信によるため、ＲＣ３（ＳCＬ）、ＲＣ４（ＳＤＡ）の２ピンのみを拡張用に使用します。

  マイクロチップ社のＥＸＰＡＮＤＥＲ用素子ＭＣＰ２３００８（８ﾋﾞｯﾄ）とＭＣＰ２３０１７（１６ﾋﾞｯﾄ）の各ピンを

  拡張側の入出力として使用できます。全部で１１９ピンをＩ／Ｏピンとして使用可能です。

  ８ビットと１６ビットの拡張用素子を同時に使用することができます。

  どのピンを入力に使用するか、出力に使用するかピン毎に任意で、メインＣＰＵ側ソフトで決定します。

  入出力リレー　 ビット番号　　　　対応ピックＰＩＮ名

      ？００　～　？０５　　　　　　　（　１－ＲＡ０　～　ＲＡ５（ＲＡ７）　）

      ？１０　～　？１７　　　　　　　（　１－ＲＢ０　～　ＲＢ７　）

      ？２０、２１、２２　～　？２５、２６、２７　（　１－ＲＣ０、１、２　～　ＲＣ５、６、７　）

      ？３０　～　？３６　　　　　　　（　１－ＲＤ０　～　ＲＤ７　）

      ？４０　～　？４２　　　　　　　（　１－ＲＥ０　～　ＲＥ２　）

      ？２３、２３（ＲＣ３、ＲＣ４）は拡張用接続に使用でＩ／Ｏには不可

      （ＭＣＰ２３００８による拡張側のピン番号）

      ？０８　～　？０Ｆ　　　　　　　（　２・１－ＧＰ０　～　ＧＰ７　）　：ＭＣＰ２３００８×１

      ？１８　～　？１Ｆ　　　　　　　（　２・２－ＧＰ０　～　ＧＰ７　）　：ＭＣＰ２３００８×１

      ？２８　～　？２Ｆ　　　　　　　（　２・３－ＧＰ０　～　ＧＰ７　）　：ＭＣＰ２３００８×１

      ？３８　～　？３Ｆ　　　　　　　（　２・４－ＧＰ０　～　ＧＰ７　）　：ＭＣＰ２３００８×１

      ？４８　～　？４Ｆ　　　　　　　（　２・５－ＧＰ０　～　ＧＰ７　）　：ＭＣＰ２３００８×１

        合計　　ＭＣＰ２３００８を５つ使用した場合、７１ ピン

                  ＭＣＰ２３００８の使用数は任意です。

      （ＭＣＰ２３０１７による拡張側のピン番号）

      ？５０　～　？５Ｆ　　　　　　　（　３・１－ＧＰＡ０　～　ＧＰＡ７　）　：ＭＣＰ２３０１７×１

                                        （　３・１－ＧＰＢ０　～　ＧＰＢ７　）

      ？６０　～　？６Ｆ　　　　　　　（　３・２－ＧＰＡ０　～　ＧＰＡ７　）　：ＭＣＰ２３０１７×１

                                        （　３・２－ＧＰＢ０　～　ＧＰＢ７　）

      ？７０　～　？７Ｆ　　　　　　　（　３・３－ＧＰＡ０　～　ＧＰＡ７　）　：ＭＣＰ２３０１７×１

                                        （　３・３－ＧＰＢ０　～　ＧＰＢ７　）

        合計　　ＭＣＰ２３０１７を３つ使用した場合、さらに４８ピンのＩ／Ｏピンがが加わります

                  ＭＣＰ２３０１７の使用数は任意です。

註１）？にはＸか、Ｙが入ります。

註２）１－はメイン、２・?、３・？－は拡張側のＩ／Ｏ番号

註３）ＰＩＣ１８Ｆ４５２（４５８）以外はＲＡ７まで使用できます。

  回路例としてはＰＩＣ１６Ｆ８７７の場合のものになっていますが、ピン的にはコンパチです。

    エクスパンダ使用のＭＣＰ２３００８ＭＣＰ２３０１７拡張回路例(回路図)

      アドレス設定は正論理です。

    拡張用素子のアドレス設定用ＤＩＰ－ＳＷを除いて、他のＤＩＰ-ＳＷやＬＥＤはＩ／Ｏのテストのためですので無視して下さい。


Ｉ２Ｃによる拡張通信

    ＰＩＣ１８Ｆ４５２（４５８）　　１８Ｆ４５２５（８５）　　1８Ｆ４５２０　　１８Ｆ４５５０  １８Ｆ４６８０　１８Ｆ４５Ｋ２０　　１８Ｆ４６Ｋ２２ 　　 ＰＩＣ１８Ｆ２５２（２５８）　　１８Ｆ２５２５（２５８５）　　1８Ｆ２５２０　　１８Ｆ２５５０   １８Ｆ２６８０　　１８Ｆ２５Ｋ２０　　１８Ｆ２６Ｋ２２

Ｉ２Ｃ通信による拡張（別売り）

  「連枝」（れんり）の拡張Ｉ２Ｃ通信は複数のＣＰＵを連携させることができます。

  通信に使用するピンは、Ｉ２Ｃ通信（ＲＣ３［ＳＣＫ］、ＲＣ４［ＳＤＡ］）ピンです。（ＶｃｃおよびＶｓｓは当然必要です）

動作確認済みは、ＰＩＣ１８Ｆ４６Ｋ２２（ＰＩＣ１８Ｆ２６Ｋ２２）のみです。そのほかのＣＰＵの場合は、動作未検証です。

１８Ｆ４５２５シリーズ相互の通信は可能です。また１８Ｆ４５２シリーズ相互は可能です。４５２５シリーズと４５２シリーズの通信は不可とお考え下さい。

※　１８Ｆ４５２と２５２は通信可能です。シリーズの異なる通信は不可です。　１８Ｆ４５２　と　１８Ｆ４５２５は通信不可

「連枝」の拡張Ｉ２Ｃ通信は、ＣＰＵに設定した責任範囲となるＢリレーの接点情報とＷメモリーのデータ情報の変化を、他の全ＣＰＵに伝達するものです。

Ｂリレーは変化が無くても常に通信を行います。

※Ｗリレーは複数のＣＰＵで書き換えできますが、データの安全性は保障されません。（複数のＣＰＵで同一Ｗメモリを変更した場合の結果はタイミングによってどちらになるかは決まっていません。）

Ｉ２Ｃ通信では、通信データが多くなると通信の衝突が発生します。そのため接続するＣＰＵ数や使用するデータ数が増えると更新が正常にされないことがあります。

※通信の受信ノミをチェックすることでデータを送信しなくなります。データモニタのみの場合は、「受信ノミ」にチェックを入れることをお勧めします。

Ｂリレー範囲　　　　　　　Ｂ００　～　Ｂ７Ｆ

Ｗメモリー範囲　      　　Ｗ０　～　Ｗ７　　 ＰＩＣ１８Ｆ４５２５シリーズ、ＰＩＣ１８Ｆ４６Ｋ２２（２６Ｋ２２）の場合、Ｗ０～Ｗ３１が可能

  [ビルド中]の＜ＣＰＵ設定＞で、[通信あり]にチェックを入れ、右側のラジオボタンをＩ２Ｃ側にします。（Ｉ２Ｃ：４００ｋＨｚ、低速Ｉ２Ｃ：１５０ｋＨｚ）

  Ｂリレーに関しては、そのＣＰＵの責任範囲のＢリレーチャンネルをＢ００からＢ７０の中から選択して、さらにそのカバーチャンネル数（１チャンネル当たり１６点０～Ｆ）を選びます。

  Ｂリレーに関して、情報を受けるだけで送信しない時は、カバーチャンネル数はゼロになります。

責任範囲のＢリレーチャンネルの値いに何かＢ００からＢ７０の中から不使用のものを設定して、カバーチャンネル数をゼロのままにしてください。

   Wメモリーに関しては、上記Ｗメモリー範囲で、変化があれば送信します。

Ｉ２Ｃ通信では、同一バス上につながれたＰＩＣがマルチマスターとなって通信を行います。そのため、あるＣＰＵがマスターでデータを送信しているときには、別のＣＰＵはスレーブとなります。

スレーブとなったＣＰＵは受信処理を行います。他のＣＰＵがマスターとなっているときには、他のＣＰＵがマスターになろうとすると衝突が発生しますが、回避するように対応しています。

この衝突検出の場合、送信できなかったＣＰＵは次回の待ち時間を短くしています。正常送信できたＣＰＵは次のデータ送信のタイミングを遅らせています。

ＣＰＵの個数や送信するデータ数が多くなるとそれだけ衝突が頻発しますので、データの更新が遅くなります。使用されないＢデバイスは詰めて使用し、責任範囲のＢリレーも少なくなるようにしてください。

Ｗデバイスも頻繁に変化するような使用方法は避けた方が良いでしょう。

通信速度変更リレー　Ｍ８２７０

初期設定リレーＭ８０００のa接点の後ろにＭ８２７０のリレーのコイルを配置するとI2C通信の速度を１ＭＨｚに変更できます。

状態の更新周期を早くすることができます。（ＣＰＵ設定の速度は無効となります）

拡張Ｉ２Ｃでの「連枝」の仕様です。

  ◎ユーザーはＢリレーとＷメモリを回路上で使用し、どちらの通信かを設定するだけでプロトコルについて何も考える必要はありません。拡張Ｉ２Ｃのライブラリをご使用ください。


ＣＡＮによる拡張通信

    ＰＩＣ１８Ｆ４５８　　１８Ｆ４５８５　　  １８Ｆ４６８０　　  　　ＰＩＣ１８Ｆ２５８　　１８Ｆ２５８５　　  １８Ｆ２６８０

ＣＡＮ通信による拡張（別売り）

  「連枝」（れんり）のＣＡＮ通信は以下の2通りの方法があります。

  ①ＣＰＵに上位コンパチのＰＩＣ１８Ｆ４５８（２５８）を使用し、＋ＣＡＮ変換ライブラリ（別売り）を使用する。

  ②ＣＰＵに上位コンパチのＰＩＣ１８Ｆ４５８５（２５８５、４６８０、２６８０）を使用し、＋ＣＡＮ変換ライブラリを使用する。

  ハード回路構成上、ＰＩＣ１８Ｆ４５８（２５８、４５８５、２５８５）とＭＣＰ２５５１がメインのＩＣになります。両方ともマイクロチップ社製ですが、後者はＲＳ２３２Ｃ通信回路のＭＡＸ２３２にあたります。

※　１８Ｆ４５８と２５８は通信可能です。シリーズの異なる通信は不可です。　１８Ｆ４５８　と　１８Ｆ４５８５は通信不可

  回路例を示します。　　　　　　　　　　　　　　　　　１８Ｆ４５８．ＣＡＮ回路例

「連枝」のＣＡＮ通信は基本的に、ＣＡＮ通信配線したＣＰＵのＢリレーの接点情報とＷメモリーのデータ情報の変化を、他の全ＣＰＵに伝達するものです。変化しなければ、最初の１回だけであとはなにも通信しません。

Ｂリレー範囲　　　　　　　Ｂ００　～　Ｂ７Ｆ

Ｗメモリー範囲　      　　Ｗ０　～　Ｗ７　　 　ＰＩＣ１８Ｆ４５８５（２５８５）の場合、Ｗ０～Ｗ３１が可能

  [ビルド中]の＜ＣＰＵ設定＞で、[通信あり]にチェックを入れ、右側のラジオボタンをＣＡＮ側にします。

  Ｂリレーに関しては、そのＣＰＵの責任範囲のＢリレーチャンネルをＢ００からＢ７０の中から選択して、さらにそのカバーチャンネル数を選びます。責任範囲のＢリレーチャンネルの値いは、そのＣＰＵのもつ固有アドレスをも意味し、全ＣＰＵの受信確認に使用します。

  Ｂリレーに関して、情報を受けるだけで送信しない時は、カバーチャンネル数はゼロになります。しかしそのＣＰＵの固有アドレスは必要ですので、責任範囲のＢリレーチャンネルの値いに何かＢ００からＢ７０の中から不使用のものを設定して、カバーチャンネル数をゼロのままにしてください。

   Wメモリーに関しては、上記Ｗメモリー範囲で、変化があれば送信します。

  「連枝」のＣＡＮ通信は、Ｂリレー（１）に関しては、ＣＡＮの持つ物理層による通信のリトライのほか、[連枝」自身で受信側からＡＣＫを出し、送信側でそれにより通信されたことの確認を行います。

  Ｂリレー（１）のチャンネル数を送信する場合、立ち上がり時に確認した存在する外部ＣＰＵすべてからのアックを待って、それが終わるまで、通信のリトライを「連枝」として続けます。３１回送ってまだ返事のない場合、そのＣＰＵを相手から消します。

  外部ＣＰＵとして認識していなかったＣＰＵが新たにＣＡＮ通信ループに加わった場合は、それは相手としてすぐ認識され新たに情報を送った場合のアックを受ける相手として認識されます。

  Ｗメモリーの変化とＢリレー（２）の変化の場合は、ただ１回送るだけで、他のＣＰＵからのアックを待ちません。

ＣＡＮでの「連枝」の仕様です。

  ◎ユーザーはＢリレーとＷメモリを回路上で使用し、どちらの通信かを設定するだけでプロトコルについて何も考える必要はありません。　ＣＡＮのライブラリー（ＣＡＮＩＮＦＯ２．Ｈ）を使用してください。

  ＣＡＮ通信にはシリアル通信のＭＡＸ２３２にあたる周辺素子ＭＣＰ２５５１の接続が必要です。

          ビルド－＞ＣＰＵ設定画面中での設定が必要です。　　メインのＣＰＵ以外は受信のみになります。

                    ＣＡＮ拡張設定

  ラインで複数箇所で操作しする場合、

従来は押し釦やパイロットランプ等を実配線で配線していましたが、この従来方法だと配線が複雑かつ冗長になります。

マイコンの発達により、シリアル通信の方法がとられるようになりましたが、このためには高価なシステムを組み込むか、自ら複雑なプロトコルを組んで動作させなくてはなりませんでした。

  「連枝」（れんり）のＩＣＡＮ通信によれば、Ｂが頭につくBリレーを使用すればその変化値が、自動的に他の連結ＣＰＵに送られます。複雑なプロトコルは全て「連枝」側でコンパイルしてくれます。

◎ＣＡＮでは通信失敗の場合はＰＩＣ１８Ｆ４５８の持つＣＡＮ機能の物理層によって自動的にリトライがなされるとともに、「連枝」（れんり）のソフトによってもＡＣＫが確認されます。

  つまり、ユーザーとしてはＢリレーを使用するだけの仕様です。他に１６ビットのＷメモリーもそれを回路中に使用するだけで送信されます。

  例として荷物用３階エレベータを、「連枝」（れんり）のＣＡＮ通信で操作する場合の回路の一部を次に示します。

この時、６行目の出力のＢ０７による３階ランプ点灯は各階で行わなくてはなりませんから、従来は実配線で各階に持っていかなくてはなりませんでした。

また７行目の１階行き押しボタンも各階に置かなくてはならないので、これも実配線で各階の押しボタンからの実配線が必要でした。

連枝ではそれらをすべて、接点Ｂとして制御盤において、あとは２本のＣＡＮ通信で各階の制御部分から持って来ればよいことになります。

３階の制御部の回路は以下のようになります。

  以上で全回路です。単純なＩ／Ｏだけの回路になります。

入力情報についてはＩ／Ｏの結果を接点Ｂに変えるだけで、その結果が各階に通信されます。

  ２階も同様な回路になります。

本体制御盤と各階の通信によって、エレベータは動作します。２階と３階も通信を行っていますがこの場合、意味はありません。

  「連枝」はその他、Ｗメモリー１６ワードも相互に通信します。

  これによって、各部所のアナログセンサーの値い等を、本体を始めとする各制御部に送ることができます。

  通信のプロトコル等はすべて「連枝」の変換ライブラリー（別売り）が構成してくれます.。

ハード回路構成上、ＰＩＣ１８Ｆ４５８（２５８）とＭＣＰ２５５１がメインのＩＣになります。両方ともマイクロチップ社製ですが、後者はＲＳ２３２Ｃ通信回路のＭＡＸ２３２にあたります。

  ＣＡＮ通信の回路例を示します。　　　　　　　　　１８Ｆ４５８・ＣＡＮ回路例

  （上記エレベータ回路ではありません）。


A/D．D/A

    ＰＩＣ１８Ｆ４５２（４５８）　　１８Ｆ４５２５（８５）　　1８Ｆ４５２０　　１８Ｆ４５５０  １８Ｆ４６８０　１８Ｆ４５Ｋ２０　　１８Ｆ４６Ｋ２２　　  ＰＩＣ１８Ｆ２５２（２５８）　　１８Ｆ２５２５（２５８５）　　1８Ｆ２５２０　　１８Ｆ２５５０   １８Ｆ２６８０　　１８Ｆ２５Ｋ２０ 　１８Ｆ２６Ｋ２２

Ａ／Ｄコンバータ（応用命令に含まれる）

○１８Ｆ４５２の場合

  １８Ｆ４５Ｘは、ＲＡポート、ＲＥポートのピンをＡ／Ｄコンバート・モードで使用する事ができます。

「連枝」は、それを利用して、合計８チャンネルのＡＤＣＯ（Ａ／Ｄコンバータ）命令を使用できます。

ＲＡ０～ＲＡ５（Ｘ００～Ｘ０５（Ｘ０４を除く））と、

ＲＥ０～ＲＥ２（Ｘ４０～Ｘ４２）の内の、１ビットを選び、Ａ／Ｄの結果値の、格納先を書き込みます。

下の命令ではＲＡ１への入力が１０ビットでＡ／Ｄ変換されてＤ０に入ります。

例　　　ＡＤＣＯ　Ｘ１　Ｄ０

註）ＲＡ１，ＲＡ３の一方又は両方をＡ／Ｄコンバートとして使用すればＲＡ０，ＲＡ１，ＲＡ３がＡ／Ｄピン・モードになり、Ｉ／Ｏには使用できなくなります。

  ＲＡ２，ＲＡ５の一方又は両方をＡ／Ｄコンバートとして使用すれば、ＲＡ０，１，２，３，５すべてがＡ／Ｄピン･モードになり、Ｉ／Ｏには使用できなくなりますので注意が必要です。

  また、ＲＥ０～ＲＥ２のうちの１ピンでもＡ／Ｄコンバートに使用すると、以上Ａ／Ｄに使用できる全８ピンがＡ／Ｄにのみ使用可能になり、Ｉ／Ｏ出力には使用出来なくなります。

  ＲＡ０のみをのＡ／Ｄコンバートとして使用すれば、ＲＡ０の１ピンのみがＡ／Ｄピン・モードになり、他のピンは通常のＩ／Ｏとして使用できます。

○１８Ｆ４５２５、１８Ｆ４５２０の場合

ＲＡポートほかにＲＢポートのＲＢ０，１，２，３，４が使用できます。

◎合計Ａ／Ｄが１３チャンネルになります。

ピン番号　　　ＲＢ０，　ＲＢ４，　ＲＢ１，ＲＢ３，ＲＢ２，ＲＥ２，ＲＥ１，ＲＥ０，ＲＡ５，ＲＡ３，ＲＡ２，ＲＡ１，ＲＡ０

チャンネル 　ＡＮ１２，ＡＮ１１，ＡＮ１０，ＡＮ９，ＡＮ８，ＡＮ７，ＡＮ６，ＡＮ５，ＡＮ４，ＡＮ３，ＡＮ２，ＡＮ１，ＡＮ０

のように上と下のピン番号とチャンネル番号が対応しますが、

あるＡＮ番号を使用すると、その番号以下のＡＮ番号を持つピンはすべてＡ／Ｄピン･モードになります。

あるＡＮ番号を使用すると、その番号以下のＡＮ番号を持つピンは入力ピンとして利用できます。出力ピンとしては利用できません。

例（ＡＮ８＝ＲＢ２をＡ／Ｄピンに使用すると、ＡＮ７～ＡＮ０の対応ピンがＡ／Ｄピン･モードになります）。

例（ＡＮ８＝ＲＢ２をＡ／Ｄピンに使用すると、ＡＮ７～ＡＮ０の対応ピンが入力ピンのみ使用可能です。Ａ/Ｄピン・モードはサンプル時のみ変更）。

逆に言えば、ＰＩＣ１８Ｆ４５２の場合と違って、ＡＮ番号に注意して詰めて使用すれば、１ピンの無駄も無くＡ／ＤとＩ／Ｏの使用割りあてが可能です。

＊Ｂポート、ＥポートについてはＡＮ？が大変不規則なことに注意。

ハードウェア上の仕様となりますので、出力としては使えないことをご了承ください。

○１８Ｆ４５８５、１８Ｆ４５８０の場合

ＲＡポートほかにＲＢポートのＲＢ０，１，４，ＲＥポートのＲＥ０，１，２が使用できます。

◎合計Ａ／Ｄが１１チャンネルになります。

ピン番号　　　ＲＢ０，ＲＢ４，ＲＢ１，ＲＥ２，ＲＥ１，ＲＥ０，ＲＡ５，ＲＡ３，ＲＡ２，ＲＡ１，ＲＡ０

チャンネル 　ＡＮ１０，ＡＮ９，ＡＮ８，ＡＮ７，ＡＮ６，ＡＮ５，ＡＮ４，ＡＮ３，ＡＮ２，ＡＮ１，ＡＮ０

のように上と下のピン番号とチャンネル番号が対応しますが、

あるＡＮ番号を使用すると、その番号以下のＡＮ番号を持つピンはすべてＡ／Ｄピン･モードになります。

例（ＡＮ８＝ＲＢ１をＡ／Ｄピンに使用すると、ＡＮ７～ＡＮ０の対応ピンがＡ／Ｄピン･モードになります）。

逆に言えば、ＰＩＣ１８Ｆ４５２の場合と違って、ＡＮ番号に注意して詰めて使用すれば、１ピンの無駄も無くＡ／ＤとＩ／Ｏの使用割りあてが可能です。

＊Ｂポート、ＥポートについてはＡＮ？が大変不規則なことに注意。

○１８Ｆ４６Ｋ８０の場合

ＲＡポートほかにＲＢポートのＲＢ０，１，４，ＲＥポートのＲＥ０，１，２が使用できます。

◎合計Ａ／Ｄが１１チャンネルになります。

ピン番号　　　ＲＢ０，ＲＢ４，ＲＢ１，ＲＥ２，ＲＥ１，ＲＥ０，ＲＡ５，ＲＡ３，ＲＡ２，ＲＡ１，ＲＡ０

チャンネル 　ＡＮ１０，ＡＮ９，ＡＮ８，ＡＮ７，ＡＮ６，ＡＮ５，ＡＮ４，ＡＮ３，ＡＮ２，ＡＮ１，ＡＮ０

のように上と下のピン番号とチャンネル番号が対応しますが、

※　１８Ｆ４６Ｋ８０シリーズは、分解能が１２ビットとなっています。測定結果は、０～４０９５（ＦＦＦH)の１２ビットです。

○１８Ｆ４５Ｋ２０の場合

ＲＡポートほかにＲＢポートのＲＢ０，１，２，３，４，ＲＥポートの０，１，２が使用できます。

◎合計Ａ／Ｄが１３チャンネルになります。

ピン番号　　ＲＡ０，ＲＡ１，ＲＡ２，ＲＡ３，ＲＡ５，ＲＢ０，ＲＢ１，ＲＢ２，ＲＢ３，ＲＢ４，

              ＲＥ０，ＲＥ１，ＲＥ２

各ピンは個別にチャンネルに設定できます。　他のピンに影響しません。

○１８Ｆ４６Ｋ２２の場合

ＲＡポートほかにＲＢポートのＲＢ０，１，４が使用できます。

◎合計Ａ／Ｄが２９チャンネルになります。

ピン番号　　ＲＡ０，ＲＡ１，ＲＡ２，ＲＡ３，ＲＡ５，ＲＢ０，ＲＢ１，ＲＢ２，ＲＢ３，ＲＢ４，ＲＢ５,

              ＲＣ２，ＲＣ３，ＲＣ４，ＲＣ５，ＲＣ６，ＲＣ７，ＲＤ０，ＲＤ１，ＲＤ２，ＲＤ３，ＲＤ４，ＲＤ５，ＲＤ６，ＲＤ７，

              ＲＥ０，ＲＥ１，ＲＥ２

各ピンは個別にチャンネルに設定できます。　他のピンに影響しません。

○ＰＩＣ１８Ｆ４＊シリーズ共通

註）Ｄﾒﾓﾘｰ以外にも桁指定（例Ｋ４Ｍ１６）等を設定値として指定できます。

註）ＲＡ２、ＲＡ３をリファランス電圧にするモードはサポートしていません。

12bitＡ／Ｄコンバータ（別売り）

  １８Ｆ４５Ｘは、ＳＰＩの外部１２ビットのＡ／ＤコンバータＭＣＰ３２０４、ＭＣＰ３２０８からデータを読み取ることができます。

  ＭＣＰ３２０４は４チャンネル、

  ＭＣＰ３２０８は８チャンネルのＡ／Ｄコンパートができます。

  ＡＤＣＯ２　命令を使用します。

  ＡＤＣＯ２　Ｘ０？　Ｄ０

  のように書き、？のところに０～７（又は０～３）のチャンネルの数字をいれてください。Ｄのアドレスは任意です。

  接続は　　ＰＩＣ１８Ｆ４５？（ピン番号）　　ＭＣＰ３２０８（ピン番号）　　３２０４（ピン番号）

                    ＲＣ０　　　　　（１５）　　-------　　ＣＳ　　　　（１０）　　　　　（８）

                  ＲＣ１　　　　　（１６）　　-------　　ＣＬＫ　　　（１３）　　　　　（１１）

                  ＲＣ２           （１７)   　-------    Ｄｏｕｔ　　　（１２）　　　　　（１０）

                  ＲＣ５　　　　　（２４）　　-------　　Ｄｉｎ　　　　（１１）　　　　　（９）

  となります。

  ＡＤＣＯ２　Ｘ１？　Ｄ０

  のように書くと　ＲＤポートを使用するようになり

  接続は次のようになります。

              ＰＩＣ１８Ｆ４５？（ピン番号）　　ＭＣＰ３２０８（ピン番号）　　３２０４（ピン番号）

                    ＲＤ０　　　　　（１９）　　-------　　ＣＳ　　　　（１０）　　　　　（８）

                  ＲＤ１　　　　　（２０）　　-------　　ＣＬＫ　　　（１３）　　　　　（１１）

                  ＲＤ２            （２１)   　-------    Ｄｏｕｔ　　　（１２）　　　　　（１０）

                  ＲＤ５　　　　　（２８）　　-------　　Ｄｉｎ　　　　（１１）　　　　　（９）

  ◎註、ＵＳＢタッチパネルの時は、この命令は使用できません。

Ｄ／Ａコンバータ（ＰＷＭ変換）（応用命令に含まれる）

  １８ＦＸ５ＸＸは、ＲＣポートのピンをＰＷＭコンバート・モードで使用する事ができます。

「連枝」は、それを利用して、ＤＡＣＯ（Ｄ／Ａコンバータ）命令を使用できます。

Ｄ／Ａ変換のもとの８ビットの値い（バイナリー値）の格納先を第１オペランドとし、結果の出力ピンとして、ＲＣ１（Ｙ２１）、ＲＣ２（Ｙ２２）を第２オペランドとして書き込みます。

ＰＩＣ１８Ｆ４５８（２５８）またはＰＩＣ１８Ｆ４５８５（２５８５）、ＰＩＣ１８Ｆ４６８０（２６８０）、ＰＩＣ１８Ｆ４６Ｋ８０の場合、ＲＣ２の１ビットのみです。他のＣＰＵについてはＲＣ１、ＲＣ２の2ビットを指定できます。

下の命令ではＤ０（下位８ビット）の値がＤ／Ａ変換（ＰＷＭ変換）されて、ＲＣ２に出力されます。

※PIC18F46K80の場合は、Ｄ０（下位１０ビット）の値がＤ／Ａ変換（ＰＷＭ変換）されて、ＲＣ２に出力されます。

  Ｄ０の設定値がデューティ比の値を表します。０が０％、１０２３が９９％となります。

例　　　ＤＡＣＯ　Ｄ０　Ｙ２２

註）ＰＷＭの出力は発振周波数１０ＭＨz（内部で×４）の場合、９．７７Khzの基本パルス内でのＤｕｔｙサイクルになります。Ｄｕｔｙサイクルは8ビット分解能（０～ＦＦ）の指定で決定されます。４５Ｋ２０実測で１５．６ｋＨｚです。

註）Ａ／Ｄ、Ｄ／Ａコンバート命令に関しては、変換内容デバイスとしてＤメモリー以外（例、Ｋ４Ｍ０、Ｔ１０ｅｔｃ．）も使用可能です。

    直値の入力も可能ですが、その場合バイナリー値のみのため、頭にＨをつけてください。


特殊命令2

    ＰＩＣ１８Ｆ４５２（４５８）　　１８Ｆ４５２５（８５）　　1８Ｆ４５２０　　１８Ｆ４５５０  １８Ｆ４６８０　１８Ｆ４５Ｋ２０　　１８Ｆ４６Ｋ２２　　  ＰＩＣ１８Ｆ２５２（２５８）　　１８Ｆ２５２５（２５８５）　　1８Ｆ２５２０　　１８Ｆ２５５０   １８Ｆ２６８０　　１８Ｆ２５Ｋ２０ 　　１８Ｆ２６Ｋ２２

特殊命令

ＳＥＧ命令（応用命令に含まれる）

  ＳＥＧ命令は2桁の７セグメント表示をします。

  ※RB6を使用する場合、ＰＩＣＫＩＴなどの書込み器が接続されていると正しく動作しないことがございます。

動作確認する場合は、ＰＩＣＫＩＴを外して動作確認してください。

□第２オペランドを

          ＳＥＧ　Ｋ１２　Ｋ２Ｙ０    とするとき

  ＲＡ０－＞ＲＡ１に、各５ｍＳのスキャン出力を出し、

  ＲＢ０～ＲＢ６に1桁目－＞2桁目－＞３桁目－＞４桁目の７セグメント出力を出します。

          ＳＥＧ　Ｋ１２　Ｋ２Ｙ１０    とするとき

  ＲＣ０－＞ＲＣ１に、各５ｍＳのスキャン出力を出し、

  ＲＢ０～ＲＢ６に1桁目－＞2桁目の７セグメント出力を出します。

          ＳＥＧ　Ｋ１２　Ｋ２Ｙ２０    とするとき

  ＲＤ０－＞ＲＤ１に、各５ｍＳのスキャン出力を出し、

  ＲＣ０～ＲＣ６に1桁目－＞2桁目の７セグメント出力を出します。

          ＳＥＧ　Ｋ１２　Ｋ２Ｙ３０    とするとき

  ＲＡ０－＞ＲＡ１に、各５ｍＳのスキャン出力を出し、

  ＲＤ０～ＲＤ６に1桁目－＞2桁目の７セグメント出力を出します。

□拡張指定があり、第２オペランドをＫ２Ｙ７０とするとき

  ７－ﾁｬﾝﾈﾙの

  ＧＰＢ０－＞ＧＰＢ３に、各５ｍＳのスキャン出力を出し、

  ＧＰＡ０～ＧＰＡ６に1桁目－＞2桁目の７セグメント出力を出します。

          ＳＥＧ　Ｋ１２　Ｋ２Ｙ７０

    ＤＳＥＧ命令は４桁の７セグメント表示をします。　回路ハード図

□第２オペランドを

          ＤＳＥＧ　Ｋ１２３４　Ｋ２Ｙ０    とするとき

  ＲＡ０－＞ＲＡ１－＞ＲＡ２－＞ＲＡ３に、各５ｍＳのスキャン出力を出し、

  ＲＢ０～ＲＢ６に1桁目－＞2桁目－＞３桁目－＞４桁目の７セグメント出力を出します。

          ＤＳＥＧ　Ｋ１２３４　Ｋ２Ｙ１０    とするとき

  ＲＣ０－＞ＲＣ１－＞ＲＣ２－＞ＲＣ３に、各５ｍＳのスキャン出力を出し、

  ＲＢ０～ＲＢ６に1桁目－＞2桁目－＞３桁目－＞４桁目の７セグメント出力を出します。

          ＤＳＥＧ　Ｋ１２３４　Ｋ２Ｙ２０    とするとき

  ＲＤ０－＞ＲＤ１－＞ＲＤ２－＞ＲＤ３に、各５ｍＳのスキャン出力を出し、

  ＲＣ０～ＲＣ６に1桁目－＞2桁目－＞３桁目－＞４桁目の７セグメント出力を出します。

          ＤＳＥＧ　Ｋ１２３４　Ｋ２Ｙ３０    とするとき

  ＲＡ０－＞ＲＡ１－＞ＲＡ２－＞ＲＡ３に、各５ｍＳのスキャン出力を出し、

  ＲＤ０～ＲＤ６に1桁目－＞2桁目－＞３桁目－＞４桁目の７セグメント出力を出します。

□拡張指定があり、第２オペランドをＫ２Ｙ７０とするとき

  ７－ﾁｬﾝﾈﾙの

  ＧＰＢ０－＞ＧＰＢ１－＞ＧＰＢ２－＞ＧＰＢ３に、各５ｍＳのスキャン出力を出し、

  ＧＰＡ０～ＧＰＡ６に1桁目－＞2桁目－＞３桁目－＞４桁目の７セグメント出力を出します。

          ＤＳＥＧ　Ｋ１２３４　Ｋ２Ｙ７０

  ２命令ともに、第一オペランドは、Ｄメモリー等の直値以外も指定できます。

  拡張を使用しない場合、第２オペランドは無視されますが、結果としてはＲＢポートを使用するので、Ｋ２Ｙ１０と指定しておいてください。

  ＲＢ７や、スキャンに使用しないＲＣポートのピンは他の用途に使用できます。

  拡張を使用するとき、

  チャンネル７の不使用ポートは他の用途に使用することはできません。

  7セグメント表示データは下記の表になります。

     ＤＳＥＧＰ命令はゼロサプレスをした結果の４桁の７セグメント表示をします。

  例えば、１２３４は１２３４と表示し、０２３４は２３４と右詰で表示します。

  同じく、００３４Ｈは３４と、０００４は４と右詰で表示します。

    ＳＥＧＰ命令はゼロサプレスをした結果の２桁の７セグメント表示をします。

  例えば、１２は１２と表示し、０２は　２と右詰で表示します。

註）これらのＳＥＧ，ＤＳＥＧ，ＳＥＧＰ，ＤＳＥＧＰ命令は、どれか一種類を一回のみ使用してください。

    もし、２つの別の値いを表示したいときは、例えば　ＤＳＥＧ　Ｄ0　Ｋ２Ｙ１０　のＤ０をその都度、その

    ２つの値いのどちらかにしてください。

ＤＰの追記について(18F4525,46K22,45K20シリーズのみ)

ＤＰを Ｒ*７ に配線して、ラダーを追記することでＤＰの表示を制御することができます。18F45K20(25K20)18F46K22(18F25K22)のみ

ＤＰを使用する場合は、初期設定リレー接点（M8000)の後ろにＤＰ使用フラグ（M8250）を配置してください。これにより、ＤＰが使用できます。

表示非表示は、DSEG D0 K2Y10と指定した場合は、D1の値によって決まります。

D1.b0 １桁目のＤＰ表示（1)非表示(0)

D1.b1 ２桁目のＤＰ表示（1)非表示(0)

D1.b2 ３桁目のＤＰ表示（1)非表示(0)

D1.b3 ４桁目のＤＰ表示（1)非表示(0)

注意）ＢＣＤ命令とＤＰ表示を行う場合、ＢＣＤ命令より前にＤＰの値を設定しないでください。ＢＣＤ命令は転送先は３２ビットとなるので上書きされます。

ラダーの指定 内容 記載サンプル
DSEG D10 K2Y2F
第１オペランド | 出力先７セグメントＬＥＤの４/2桁 | D10
第１オペランド＋１※ ※特殊リレーＭ８２５０配置で、ＤＰ表示。
Ｍ８２５０ナシなら、影響しない。 		※D11
第２オペランド | 出力先のポート番号とＭＡＸ７２１９選択指定 | RC0,RC1,RC5を使用

ＤＳＥＧ命令（ＭＡＸ７２１９版）（別途ライブラリ18F46K22(18F26K22)のみ）

DESEG命令で、デバイスの指定を 「K2Y*F」　と指定した場合は、ＭＡＸ７２１９を使用した８桁の7セグ出力を行います。

命令は「　DSEG D0 K2Y1F　」のように指定します。この場合、Ｄ０とＤ１に格納されたＢＣＤ値またはＢＩＮ値を７セグに出力します。

注意）使用できるポートは１ポートのみです。使用ポートの下記のピン以外は通常ピンとして使用できます。

指令で使用する信号線は、３本です。電源を含めても５本となります。

ラダーの指定 内容 記載サンプル
DSEG D10 K2Y20
第１オペランド | 出力先７セグメントＬＥＤの下４桁 | D10
第１オペランド＋１ | 出力先７セグメントＬＥＤの上４桁 | D11
第１オペランド＋２※ ※特殊リレーＭ８２５０配置で、ＤＰ表示。
Ｍ８２５０ナシなら、影響しない。 		※D12
第２オペランド | 出力先のポート番号 | RC0,RC1,RC5

  ◎使用ピン

 | Ａポート使用時 （ピン番号） | Ｂポート使用時 （ピン番号） | Ｃポート使用時 （ピン番号） | Ｄポート使用時 （ピン番号）
第２オペランドの指定 | Ｋ２ＹＦ | Ｋ２Ｙ１Ｆ | Ｋ２Ｙ２Ｆ | Ｋ２Ｙ３Ｆ
チップセレクトＰＩＮ ＡＤＣＥ | ＲＡ０（２） | ＲＢ０（３３） | ＲＣ０（１５） | ＲＤ０（１９）
クロック ＣＬＫ | ＲＡ１（３） | ＲＢ１（３４） | ＲＣ１（１６） | ＲＤ１（２０）
ＳＰＩ素子にとってのＤＡＴＡＩ | ＲＡ５（７） | ＲＢ５（３８） | ＲＣ５（２４） | ＲＤ５（２７）

ＤＰの追記について

ラダーを追記することでＤＰの表示を制御することができます。

ＤＰを使用する場合は、初期設定リレー接点（M8000)の後ろにＤＰ使用フラグ（M8250）を配置してください。これにより、ＤＰが使用できます。

表示非表示は、DSEG D0 K2Y1Fと指定した場合は、D2の値によって決まります。

D2.b0 | １桁目のＤＰ表示 | 表示（1)非表示(0)
D2.b1 | ２桁目のＤＰ表示 | 表示（1)非表示(0)
D2.b2 | ３桁目のＤＰ表示 | 表示（1)非表示(0)
D2.b3 | ４桁目のＤＰ表示 | 表示（1)非表示(0)
D2.b4 | ５桁目のＤＰ表示 | 表示（1)非表示(0)
D2.b5 | ６桁目のＤＰ表示 | 表示（1)非表示(0)
D2.b6 | ７桁目のＤＰ表示 | 表示（1)非表示(0)
D2.b7 | ８桁目のＤＰ表示 | 表示（1)非表示(0)


ステッピング・モータ

    ＰＩＣ１８Ｆ４５２（４５８）　　１８Ｆ４５２５（８５）　　1８Ｆ４５２０　　１８Ｆ４５５０  １８Ｆ４６８０　１８Ｆ４５Ｋ２０　　１８Ｆ４６Ｋ２２　　　 ＰＩＣ１８Ｆ２５２（２５８）　　１８Ｆ２５２５（２５８５）　　1８Ｆ２５２０　　１８Ｆ２５５０   １８Ｆ２６８０　　１８Ｆ２５Ｋ２０　　１８Ｆ２６Ｋ２２

  ステッピングモータ・コントローラ（別売り）

  連枝は１８ＦＸ５Ｘ中に、２軸のステッピングモータ・コントローラを内蔵する事ができます。トランジスタ・アレーで１回増幅すれば、直接ステッピングモータ・ドライバを駆動することができます。

※シリアル通信など割込みを使用する機能と併用した場合、正常動作しないことがあります。（タッチパネル通信、オンボードデバッグ、シリアル通信）

１． 動作は１軸あたり１８種類を指定する事ができます。

２． ＳＴＥＰ命令は１軸当たりの動作ピンを任意に選ぶことができ、スピードはおよそ３００p/s(300Hz)～およそ５０００p/s(5kHz)まで、選択することができます。

３． 動作ステップ数は、最大８、３００、０００までです。

４． スピードの立上り、立下りは最大ステップ数に応じた台形波で変化します。

５． 動作ステップ数を０にすると、リミットによるオフまで無限走行になります。

６． 回転方向については、別ピンを使用し、別に設定してください。

０軸と１軸で合計２軸の動作が可能ですが、同時動作はできません。

０軸　　ＰＩＣのＲＤ０ピンから出力します。orＲＣ０（２５２，２５８）ピンから出力します。

         動作番号はＳ００～Ｓ１７までで、

         対応するＳ０接点、動作中はオン、それ以外はオフです。

１軸　　ＰＩＣのＲＤ１（４５２，４５８の場合）orＲＣ１（２５２，２５８）ピンから出力します。

         動作番号はＳ１００～Ｓ１１７までで、

         対応するＳ１接点、動作中はオン、それ以外はオフです。

註）動作番号は３桁目（１００の位）が０軸か１軸を決定するだけで、あとは動作の目安にすぎません。

    （出来るだけ小さい番号にしないと、その間の不使用番号分のＲＯＭメモリーを食うことになります）。

命令は　　ＳＴＥＰ　　動作番号　　最大スピード　　総動作パルス数　　　の順で書きます。　　回路例

最大スピードは１００単位で直値のみの入力になります。下２桁は無視されます。

総動作パルス数は直値の時はＢＣＤで入力しますが、メモリ値とする場合、Ｄメモリーのみが使用できます。（実際のＣＰＵ動作時、Ｄメモリーにはバイナリー値を入れるようにして下さい。

直値は変換時にバイナリー値に変えてＰＩＣに入れられますが、Ｄメモリーの場合はＰＩＣ内部でバイナリーにしている余裕がないからです。Ｄメモリーを使用する場合は、指定のＤとＤ＋１の３２ビットが総パルス数（バイナリー値）を表わします。

Ｄ８の場合　Ｄ８の１６ﾋﾞｯﾄとＤ９の下位８ﾋﾞｯﾄがその値いとなります。）

   例　　ＳＴＥＰ　　Ｓ１０２　Ｋ３００　Ｋ８００００

          ＳＴＥＰ　　Ｓ０４　　K５００　　Ｄ１０

 画面上の動作確認はできますが（タイマのように考えれば良い）、モニターはＳ０、Ｓ１の接点のみ表示され、ステップ数等は表示されません。

  ◇停止時に、残パルス数が、Ｄ２８（下位16ビット）とＤ２９（上位8ビットが下位部分）に入れられます。

  高速カウンタ_パルス命令_タイマ割込みパルス命令、キー・スキャン命令

  －セット（別売り）

以下の4つの命令を含みます。

ＳＴＥＰ、ＨＣＴＲ、ＰＵＬＳＥの４つの命令の内、２つ同時に使用することはできません。

※シリアル通信など割込みを使用する機能と併用した場合、正常動作しないことがあります。（タッチパネル通信、オンボードデバッグ、シリアル通信）

  ①ＨＣＴＲ（高速カウンタ）命令

    入力ピン＝ＲＡ４、出力ピン＝ＲＤ０（かＲＣ０）、使用カウンタ＝Ｃ１０００、

    カウンタ数設定＝Ｃ１０００の第一オペランド、カウンタ値読み取り＝Ｄ３０

    Ｃ１０００（カウンタ１０００）は

    ◎ＲＡ４を入力として、第一ｵﾍﾟﾗﾝﾄﾞのＢＣＤ値をカウントします（最大９９９９）。

    ハード的な割込みでカウントするのでクロックの許す限り、どんな高速でもカウントしします。

    第一ｵﾍﾟﾗﾝﾄﾞに、直値のみならず、Ｄﾒﾓﾘｰや桁指定（例Ｋ４Ｍ１６）等を設定値として指定できます。

    Ｃ１０００への頭の入力をオンすると、ＲＤ０（かＲＣ０）ピンは=1になります。

    カウント・アップﾟすると、ＲＤ０（かＲＣ０）ピンは =0になります。

    またはＣ１０００への頭の入力をオフすると、ＲＤ０（かＲＣ０）ピンは=０になります。

    つまりＣ１０００のオフはカウンタ・リセットに相当します （RST C1000命令 は意味が有りません）。

    ＰＩＣ１８Ｆ４５２（４５８）（０）の時、出力ピンがＲＤ０、ＰＩＣ１８Ｆ２５２（２５８）（０）の時、出力ピンがＲＣ０になります。

    途中のカウント値は、減算中のカウント・アップまでのＢＣＤ値がＤ３０に入ります。

    カウント値を停止させるには、Ｃ１０００の頭をオフにするか、ＲＡ４への入力をハード的に停止するかによります。

      Ｃ１０００　Ｋ０

    とすると、ＦＦＦＦh+1（＝０）までのカウントをします。

    ◎この場合もＤ３０にカウンタ値のＢＩＮＡＲＹ値が入り、単純にカウント値を知りたい時に便利です。

  ②ＰＵＬＳＥ （パルス）命令

   第1オペランドﾞ Ｓ???  の３桁目が

                        ０の場合、ＲＤ０（４５２，４５８） or ＲＣ０（２５２，２５８）　にパルスを出力し、

                           例　PULSE S025 K500 K3000

                           １の場合、ＲＤ１（４５２，４５８）  or ＲＣ１（４５２，４５８） にパルスを出力します。

                           例　PULSE S110 K8000 D20

     パルスを出力する。

                   １、２桁目　×１００uＳ = パルス幅

     パルス幅が、Ｐ／Ｓ（第2ｵﾍﾟﾗﾝﾄﾞ）による周期幅Ｔより大の場合、パルス幅は、Ｔ／２になる。

      第３オペランドはパルス数を設定します。

      Ｄﾒﾓﾘｰ中、の値いを設定する時は１６進数を入れます。

      第３オペランドにＫ０を設定すると無限（走行）パルスになります。

 ③KSCAN（キー・スキャン）命令

    ＫＳＣＡＮ命令を書くことにより、４×４のキーマトリックスからの入力を得ることができます。

    回路は以下の通りで、Ｂ、Ｃ、Ｄのいずれかのポート８ビット全てを使用します。

    ｜－－－｜｜－－－－－－－－－－－－－－－（ＫＳＣＡＮ　　Ｋ２Ｘ２０　Ｋ２Ｍ８）－｜

  と書くと、Ｃポートから入力して１６個の押し釦のオン／オフがＭ８～Ｍ２３まで入ります。

  （ハード的にはポートの下位４ビットが出力、上位4ビットが入力になります）。

  上図のPUSHSWのところの添付数字の順に＜bit０＞から＜bit１５＞まで入ります。

  第２オペランドにはＤメモリーも使用できます。

  同時に押せるのは２個までです。それ以上押すと回り込みで違った値いを示すことになります。


別途命令3

    ＰＩＣ１８Ｆ４５２（４５８）　　１８Ｆ４５２５（８５）　　１８Ｆ４５２０　　１８Ｆ４５５０  １８Ｆ４６８０　　１８Ｆ４６Ｋ２２　　　 １８Ｆ４５Ｋ２０　　　 ＰＩＣ１８Ｆ２５２（２５８）　　１８Ｆ２５２５（２５８５）　　１８Ｆ２５２０　　１８Ｆ２５５０   １８Ｆ２６８０　　１８Ｆ２６Ｋ２２ 　　　 １８Ｆ２５Ｋ２０

 液晶表示 （別売り）

  小型液晶表示器のＳＣ１６０２ＢＳ（１６文字×２）に文字表示する命令があります。

  （コンパチ品に文字表示ができます）。

  註）ＳＣ１６０２ＢＳは、ＬＳＩのＨＤ４４７８０（日立製）のコンパチ品を内蔵するものです。

      同規格であれば、別製品でもかまいません。

  ＬＣＤが接続できるポートは第３オペランドで指定できます。

  Ｋ２Ｙ１０－＞ＲＢポート

  Ｋ２Ｙ２０－＞ＲＣポート

  Ｋ２Ｙ３０－＞ＲＤポート

  Ｋ２Ｙ４０－＞拡張用素子ＭＣＰ３２００８（アドレス＝４）

  註）ＭＣＰ３２００８で表示するには（拡張用変換ＬＢ　Ｐ７７－ＥＸＰ－ＬＢが必要です）。

  註）その時、□拡張有り、のチェックは不要です。

  註）他拡張素子の接続は可能ですが、ＣＰＵ間のＩ２Ｃ通信との兼用は不可です。

  同じく、ＳＣ２００４ＣＳ（２０文字×４）、ＡＣＭ０８０２（８文字×２）も同じ命令で文字表示ができます。

  但し表示バイト数を２１以上に取った時の、２１以降の文字が

  ＬＣＤＨ命令の時、３行目から表示され、

  同じく、ＬＣＤＬ命令の時４行目から表示されます。

  上行・表示命令　ＬＣＤＨ

  例　ＬＣＤＨ　Ｋ１６　Ｄ１８　Ｋ２Ｙ２０

                    |       |         |___ＬＣＤに利用するポートアドレス

                    |       |_____________表示データの先頭Ｄメモリー番号（Ｄ１８～Ｄ２６の１６バイト分）

                    |_____________________上位２桁表示位置、下位２桁表示バイト数（０番目から書き出し）

  下行・表示命令　ＬＣＤＬ

  例　ＬＣＤＬ　Ｋ５１６　Ｄ１８　Ｋ２Ｙ２０

                      |          |          |___ＬＣＤに利用するポートアドレス

                      |          |_____________表示データの先頭Ｄメモリー番号（Ｄ１８～Ｄ２６の１６バイト分）

                      |_____________________上位２桁表示位置、下位２桁表示バイト数（０開始の５番目から書き出し）

※　表示位置指定は、拡張素子は未対応です。（拡張素子は表示バイト数のみ指定可能）

上記最初の２つのオペランドは先頭文字（Ｋ）以外の値いは任意です。

ＬＣＤ？命令の常時オンは避けて下さい。１００ｍＳ以上に一回くらいの表示をお薦めします。

接続方法は以下のようです。

●ＰＩＣポートを使用する場合

                           11  12  13   14     4    6     7    8    9    10   5     1      2       3

ＬＣＤコネクタ　       D4  D5  D6   D7    RS   E    D0  D1  D2  D3  RW   VDD  VSS  VLC

ＰＩＣピン　　          R?0 R?1 R?2 R?3  R?4 R?5  G   G    G   G  R?6   5V      G    2～5V

●ＭＣＰ２３００８を使用する場合（PIC18F46K22,PIC18F45K20シリーズは未確認）

                           11  12  13   14     4    6     7    8    9    10   5     1      2       3

ＬＣＤコネクタ　       D4  D5  D6   D7    RS   E    D0  D1  D2  D3  RW   VDD  VSS  VLC

ＭＣＰ２３００８　　 GP0 GP1 GP2 GP3 GP4 GP5  G  G   G   G    G    5V      G    2～5V

液晶に使用するMCP23008の、不使用ピン（ＧＰ７）は他用途には使用できません。

MCP23008を液晶表示を使用する場合、ＢとＷを使用したＩ２Ｃ通信とは併用できません。

他の拡張用素子とは併用できます。

註）ＲＷピンはＭＣＰ３２００８ピンを使用の場合、Ｇ（ＮＤ）に接続します。

  仮想的にＲＥポートの拡張側（４８～４Ｆ）を使用するため　ＬＣＤＨ　Ｋ１６　Ｄ１８　Ｋ２Ｙ４０

  のようにポート先をＹ４０に指定します。

註）ＣＰＵからの距離を１０ｃｍ以上にすると、動作が不安定になる場合があります。

    その場合、ＲＳ，Ｅ、ＲＷピンのＣＰＵ直近での１０ＫΩ程度のプルアップが有効です。

液晶に（Ｒ？０～Ｒ？６）を使用したポートのＲ？７は、入力（のみ）ピンとして使用できます。

ＶＬＣは、照度調整で０～５Ｖを２～１０ＫΩ程度のボリュームで分割し、ボリュームの中点をＶＬＣに直結します。

命令の例として、ＳＣ１６０２、ＳＣ２００４（秋月電子販売）　と書きますが、第３オペランドによって使用ポートを変更できます。

◎特殊リレー　Ｍ９１１０番、Ｍ９１１１番

ＬＣＤの表示が異常となった場合、ＬＣＤ初期化処理の呼び出しをリレーでご用意いたしました。任意のタイミングで初期化することができます。使用例は当ページの最後に記載。

Ｍ９１１０：ＬＣＤ初期化実行

Ｍ９１１１：ＬＣＤ画面クリア実行

A／Ｄコンバータの結果値等を表示する時は下記命令を使用する必要が有ります。

ＢＣＤＤＡ命令（１６ビット）（ＬＣＤ命令に付属しています）

      ＢＣＤ　→アスキー数字列

BCDDA   Dn     Dm

の意味は以下のようです。

         b15 ----------------------- b0

Dn      　 0000    0000    0000    0000　　　　　　　　0000の0には,0か1が入ります。

        b15-----------b8 b7----------b0

Dm + 0 　　　百の桁　　　　　　　千の桁

Dm + 1 　　　一の桁　　　　　　　十の桁

このことにより、Ｄｎの中の数値は、アスキー値として上位（千の桁）から、Ｄｍの中の下位バイトからの順序で入ります。

これによってＬＣＤＨ（ＬＣＤＬ）命令を使用すれば、自動的に、Ｄｍ+0下位バイトからＤｍ+1の上位バイト向かって、その順で液晶にアスキー値が送られることになります。

註）ＨＥＸ値のＡを入れてもエラーにはならず、アスキーの４１に変換されます。

ニーモニックの場合下記のようになり、Ｍ０がオンすればRA1 のＡ／Ｄ値のＢＣＤ変換された値いがＬＣＤの上側に表示されます。

もし、３，４行目のＢＣＤ変換命令がなければ、ＨＥＸＡ値のまま表示されます。

                                        ; example

        LD M0

        ADCO X01 D8 ; D8 =1EF <- Analogue Value of X01(RA1)PIN

        LD M0

        BCD D8 D9 ; D9 =495

        LD M0

        BCDDA D9 D0 ; D0 =3430 D1 =3539

        LD M0

        LCDH K4 D0 K2Y10 ; Display 0495 on LCD

ＳＵＰ０命令（ＬＣＤ命令に付属しています）

  ＬＣＤ表示のための０サプレス命令で、BCDDA命令とともに使用します。

  ＢＣＤＤＡ命令は、Ｄｍ、Ｄｍ＋１メモリーに以下のようにアスキー値を入れます。

                上位　　　　　　　　　下位

Dm + 0 　　　百の桁　　　　　　　千の桁

Dm + 1 　　　一の桁　　　　　　　十の桁

  このＢＣＤＤＡA命令のあと、時、このＳＵＰ０命令を使用すると、頭部分の各桁が０(アスキーで３０ｈ）の場合、これをスペース（アスキーで２０ｈ）に置き換えます。

  ＳＵＰ０　Ｄｍ　Ｋ２

  はＤｍから２ワード分の０サプレスをおこないます。

例えば本来Ｄｍ，Ｄｍ＋１に左側の表示がされるような値いが入っている時

          １２３４　－＞１２３４

          ０２３４　－＞　２３４

          ００３４　－＞　　３４

          ０００４　－＞　　　４

          ００００　－＞　　　０　　のように表示が変わります。

  ＳＵＰ０　Ｄｍ　Ｋ１　　　　の時は、

          １２　－＞１２

          ０２　－＞　２

          ００　－＞　０　　のように表示が変わります。

  Ｋ？の数値は０～１６までの値がとれ、その範囲での０サプレスを行います。

特殊リレー　Ｍ９１１０（ＬＣＤ初期化実行）　Ｍ９１１１（画面クリア））

ループ中にＬＣＤの初期化コマンドを送ったり、画面クリア要求を出したりできます。

従来なら通信データがノイズ等で崩れた場合、マイコンを再起動する必要がありましたが、

ループ中に初期化コマンドが画面クリア要求を出すことができます。

※使用する場合、ループ内で初期化コマンドやクリア要求を出すので、スキャンタイムが大幅に伸びます。

※動作指令は、立上りなどの１スキャンオン信号で行ってください。

※クリア要求により画面がクリアされます。次のＬＣＤＨやＬＣＤＬの実行まで表示は行われません。

通信の不具合で、表示画面が完全におかしくなった場合は、Ｍ９１１０のリレーをオンにします。

画面の表示をクリアする場合は、Ｍ９１１１をオンにします。

画面の表示をクリアのみ行いたい場合は、Ｍ９１１１のみ配置・オンにします


別途命令3

    ＰＩＣ１８Ｆ４５２（４５８）　　１８Ｆ４５２５（８５）　　１８Ｆ４５２０　　１８Ｆ４５５０  １８Ｆ４６８０　　１８Ｆ４６Ｋ２２　　　 １８Ｆ４５Ｋ２０　　　 ＰＩＣ１８Ｆ２５２（２５８）　　１８Ｆ２５２５（２５８５）　　１８Ｆ２５２０　　１８Ｆ２５５０   １８Ｆ２６８０　　１８Ｆ２６Ｋ２２ 　　　 １８Ｆ２５Ｋ２０

Ｉ２Ｃ液晶モジュール（別売り）

  Ｉ２Ｃで動作する液晶モジュールがあります。

  ＳＢ１６０２Ｂ、ＳＢ１６０２Ｅがストロベリーリナックス社、から

AE-AQM1602A(KIT)　Ｉ２Ｃ接続小型キャラクタＬＣＤモジュール（１６×２行・３．３Ｖ／５Ｖ）ピッチ変換キット が秋月電子、から発売されています。

ＬＣＤモジュール　１６×２行　白色バックライト付白文字　黒背景　ＡＱＭ１６０２Ｙ－ＮＬＷ－ＦＢＷ 動作確認済み

１６０２Ａ、２００４Ａ（Ｉ２Ｃー＞ＥｘｐａｎｄｅｒＩＣ）がＡｍａｚｏｎや中華系の通販サイト、から販売されています。

  （ＡＣＭ１６０２Ｎ１－ＦＬＷ－ＦＢＷは現状不可です。前提が３．３Ｖ系のため動作確認できておりません。）

  上写真下部の端子は左から１番ですが、

  １、－ＲＳＴ　　　　－＞ﾌﾟﾙアップ->ＶＤＤ（ここの５番端子）（マイコンによるリセットはしていません）。

  ２、ＳＣＬ　　　　　 －＞ＰＩＣのＳＣＬ端子（ＰＩＣ１８Ｆ４５２の場合、１８番ピン）

  ３、ＳＤＡ　　　　　 －＞ＰＩＣのＳＤＡ端子（　　//　　　　　　　　　　２３番ピン）

  ４、ＶＳＳ　　　　　 －＞グランド

  ５、ＶＤＤ　　　　　 －＞電源（２．７～３．６Ｖ）

※ＰＩＣ１８Ｆ４６Ｋ２２ではＩ２ＣピンはRC3[SCL],RC4[SDA](MSSP1)とRD0[SCL],RD1[SDA](MSSP2)があります。

  命令で指定するときに、K2Y2Cと指定するとMSSP1を使用できます。K2Y3Cと指定するとMSSP2を使用できます。

    下図はメーカーからのものです。

  ２，３番ピンは各々２０～３３ＫΩ（当社では２２ＫΩ）でプルアップします。

 (プルアップの電圧はマイコン用の５Vを使用しました。そのまま３V装置に接続しています。

  安定動作のために必要であれば、レベル変換をお願いします）。

  ＶＤＤは５Ｖでも動作しますが、メーカー保証は上記の通りです。

  変換ＬＢはデｨフォルトで５Ｖにあわせていますが、

  初期設定デバイスＤ８１１０にコントラストを書き込むことで初期値の設定変更できます

  ３Vの時の値いも記されていますので、３Ｖの時はそちらを生かしてください。

  （?contrast?は値が大きいほど表示が濃くなります）。

  （値いによっては、全く表示されない場合もあります）。

  上行・表示命令　ＬＣＤＨ

  例　ＬＣＤＨ　Ｋ１６　Ｄ１８　Ｋ２Ｙ２Ｃ

                    |       |         |___ＬＣＤに利用するポートアドレス

                    |       |_____________表示データの先頭Ｄメモリー番号（Ｄ１８～Ｄ２６の１６バイト分）

                    |_____________________上位２桁表示位置、下位２桁表示バイト数（０番目から書き出し）

  下行・表示命令　ＬＣＤＬ

  例　ＬＣＤＬ　Ｋ５１６　Ｄ１８　Ｋ２Ｙ２Ｃ

                      |          |          |___ＬＣＤに利用するポートアドレス

                      |          |_____________表示データの先頭Ｄメモリー番号（Ｄ１８～Ｄ２６の１６バイト分）

                      |_____________________上位２桁表示位置、下位２桁表示バイト数（０開始の５番目から書き出し）

上記最初の２つのオペランドは先頭文字（Ｋ）以外の値いは任意です。

※ＰＩＣ１８Ｆ４６Ｋ２２、ＰＩＣ１８Ｆ４５Ｋ２０より、表示位置の指定ができるようになりました。第１オペランドの上位２桁が表示位置（ＢＣＤ）となります。

 ◎使用命令

  ＬＣＤＨ、ＬＣＤＬ、ＢＣＤＤＡに関しての仕様は全く同じです。

  ただ、　上例の　ＬＣＤＬ　Ｋ１６　Ｄ１８　Ｋ２Ｙ２Ｃ　の第３オペランドのＫ２Ｙ？？を必ず、Ｋ２Ｙ２Ｃ（４６Ｋ２２はＫ２Ｙ３Ｃも可）としてください。これによって「連枝」はＩ２Ｃ通信の液晶モジュールと判断します。

（Ｙ２ＣはＩ２Ｃのもじりです）。

※　ＰＩＣ１８Ｆ４６Ｋ２２は、Ｙ３Ｃを使用できます。（ＳＣＬ２：ＲＤ０、ＳＤＡ２：ＲＤ１）拡張通信を使用するなどＲＣ３，ＲＣ４が使用できない場合にご利用ください。

ＬＣＤを使用するために、＜ＣＰＵ設定＞で［Ｉ２Ｃ］にチェックを入れる必要はありません。拡張Ｉ２Ｃを使用する場合は、その使用方法に従ってください。

  ◎設定

  このＩ２Ｃ液晶モジュールを使用するとき、＜ＣＰＵ設定＞でＩ２Ｃにチェックをいれないでください。Ｉ２Ｃ拡張のチェックです。

  註）このモジュールを使用するとき、同じＩ２Ｃ通信を使用する拡張や、ＣＰＵ間のＩ２Ｃ通信そのものを併用することはできません。

      また、通常のポート接続のＬＣＤ表示も同時にはできませＮ。

  註）ＳＣＬ，ＳＤＡのプルアップ抵抗値はＩ２Ｃ通信等では２ＫΩくらいを考えていましたが、ここでは２０Ｋ～３３ＫΩとなっています。その明確な根拠はわかりません。使用電圧との関係で適当な値いを使用してください（２．７ＫΩでも動作していました）。

◎アイコン表示

  Ｉ２Ｃ液晶モジュールにはアイコン（絵）を表示する機能があります

  が「連枝」ではこれをサポートしていません。

◎特殊リレー　Ｍ９１１０番、Ｍ９１１１番

ＬＣＤの表示が異常となった場合、ＬＣＤ初期化処理の呼び出しをリレーでご用意いたしました。任意のタイミングで初期化することができます。

Ｍ９１１０：ＬＣＤ初期化実行

Ｍ９１１１：ＬＣＤ画面クリア実行

◎特殊デバイス　Ｄ８１１０番

Ｉ２Ｃではコントラストの設定をコマンドで指定します。この設定値をプログラムから指定できるようになりました。

（ただし、現状は実行中には変更できません。ＨＥＸ変換時のみ変更できます）

Ｄ８１１０：ＬＣＤの明るさの設定根拠となる値を指定する。３．３Ｖ　Ｈ２０、５Ｖ　Ｈ０Ｅが目安です。

◎LCDLとLCDHによる表示位置指定

Ｉ２ＣではLCDLとLCDHの文字の表示位置（０　から始まります）を指定することができるようになっています。

コマンドで表示するデータのバイト数を指定しますが、上位バイトはいままでは使用していませんでした。

これを拡張して、上位バイトに表示位置を指定すると指定したデータを指定位置から開始して出力させることができます。

◎特殊リレー　Ｍ９１１０番、Ｍ９１１１番

ＬＣＤの表示が異常となった場合、ＬＣＤ初期化処理の呼び出しをリレーでご用意いたしました。任意のタイミングで初期化することができます。

Ｍ９１１０：ＬＣＤ初期化実行

Ｍ９１１１：ＬＣＤ画面クリア実行

A／Ｄコンバータの結果値等を表示する時は下記命令を使用する必要が有ります。

ＢＣＤＤＡ命令（１６ビット）（ＬＣＤ命令に付属しています）

      ＢＣＤ　→アスキー数字列

BCDDA   Dn     Dm

の意味は以下のようです。

         b15 ----------------------- b0

Dn      　 0000    0000    0000    0000　　　　　　　　0000の0には,0か1が入ります。

        b15-----------b8 b7----------b0

Dm + 0 　　　百の桁　　　　　　　千の桁

Dm + 1 　　　一の桁　　　　　　　十の桁

このことにより、Ｄｎの中の数値は、アスキー値として上位（千の桁）から、Ｄｍの中の下位バイトからの順序で入ります。

これによってＬＣＤＨ（ＬＣＤＬ）命令を使用すれば、自動的に、Ｄｍ+0下位バイトからＤｍ+1の上位バイト向かって、その順で液晶にアスキー値が送られることになります。

註）ＨＥＸ値のＡを入れてもエラーにはならず、アスキーの４１に変換されます。

ニーモニックの場合下記のようになり、Ｍ０がオンすればRA1 のＡ／Ｄ値のＢＣＤ変換された値いがＬＣＤの上側に表示されます。

もし、３，４行目のＢＣＤ変換命令がなければ、ＨＥＸＡ値のまま表示されます。

                                        ; example

        LD M0

        ADCO X01 D8 ; D8 =1EF <- Analogue Value of X01(RA1)PIN

        LD M0

        BCD D8 D9 ; D9 =495

        LD M0

        BCDDA D9 D0 ; D0 =3430 D1 =3539

        LD M0

        LCDH K4 D0 K2Y10 ; Display 0495 on LCD

ＳＵＰ０命令（ＬＣＤ命令に付属しています）

  ＬＣＤ表示のための０サプレス命令で、BCDDA命令とともに使用します。

  ＢＣＤＤＡ命令は、Ｄｍ、Ｄｍ＋１メモリーに以下のようにアスキー値を入れます。

                上位　　　　　　　　　下位

Dm + 0 　　　百の桁　　　　　　　千の桁

Dm + 1 　　　一の桁　　　　　　　十の桁

  このＢＣＤＤＡA命令のあと、時、このＳＵＰ０命令を使用すると、頭部分の各桁が０(アスキーで３０ｈ）の場合、これをスペース（アスキーで２０ｈ）に置き換えます。

  ＳＵＰ０　Ｄｍ　Ｋ２

  はＤｍから２ワード分の０サプレスをおこないます。

例えば本来Ｄｍ，Ｄｍ＋１に左側の表示がされるような値いが入っている時

          １２３４　－＞１２３４

          ０２３４　－＞　２３４

          ００３４　－＞　　３４

          ０００４　－＞　　　４

          ００００　－＞　　　０　　のように表示が変わります。

  ＳＵＰ０　Ｄｍ　Ｋ１　　　　の時は、

          １２　－＞１２

          ０２　－＞　２

          ００　－＞　０　　のように表示が変わります。

  Ｋ？の数値は０～１６までの値がとれ、その範囲での０サプレスを行います。

以下の記載特殊リレー及び特殊デバイスはPIC18F46K22,PIC18F45K20シリーズのみ対応です。

ただし、PIC18F45K20は3.3Vなので、ＬＣＤの表示がはっきり表示しないことがあります。

対応するLCDのタイプ

同一の型番のＬＣＤなら複数のＬＣＤを制御できるようになりました。

対応しているＬＣＤの機種とＩ２Ｃアドレス値（設定値）
対応ＬＣＤ機種 | アドレス値 | 設定値 | その他注意事項
AQM0802 | 0x3E | 0x7C | 従来型の使用方法で使用可
SB1602B,SB1602E | 0x3E | 0x7C | 従来型の使用方法で使用可
2004A / 8574T | 0x20-0x27 | 0x40-0x4E | M8111でデバイス選択必要 データシート上100kHzMaxだが400kHzでも動作した。 できれば、M8115またはM8116で100kHz選択した方が良い
2004A / 8574AT | 0x38-0x3F | 0x70-0x7E | M8111でデバイス選択必要 データシート上100kHzMaxだが400kHzでも動作した。 できれば、M8115またはM8116で100kHz選択した方が良い

設定値は、初期設定デバイスＭ８０００の後ろにＤ８１１５を使用し、LCDに対応したアドレスを書き込んでください。

これによりＩ２Ｃアドレスが設定できます。

※AQM0802,SB1602の場合は、初期値を0x7Cとしていますので、設定する必要はありません。

※M8111を配置し、8574を選択の場合は、初期値を0x7Eとしていますので、8574ATのｱﾄﾞﾚｽ0x3Fの場合は設定する必要はありません。

以下の例は、8574Tを使用したＬＣＤを使用する場合の初期化プログラムの例です。

複数のＬＣＤを実行時に切り替え

特殊レジスタ（Ｍ８０００番台、Ｄ８０００番台等）

複数のＬＣＤを実行時に切り替えることができるようになりました。

※ただし、異なる機種は切り替えて使用することはできません。

レジスタ名 | 説明 | 対象となるポート
M8110 | 配置することで複数のＬＣＤを使用する設定に切り替えます。 イニシャル処理は連枝では行いません。 イニシャル処理はユーザで呼び出す必要があります。 | 共通
M8111 | 配置することでLCDタイプを8574シリーズにします。 | 共通
M8115 | 配置することで通信速度を100kHz（低速）設定にします。 | MSSP1(RC3[SCL],RC4[SDA])
M8116 | 配置することで通信速度を100kHz（低速）設定にします。 | MSSP2(RD0[SCL],RD1[SDA])
D8110 | 起動時のＬＣＤのコントラストを指定します。 | MSSP1(RC3[SCL],RC4[SDA])
D8111 | 起動時のＬＣＤのコントラストを指定します。 | MSSP2(RD0[SCL],RD1[SDA])
D8115 | 起動時のＬＣＤのＩ２Ｃ設定値（アドレス）を指定します。 | MSSP1(RC3[SCL],RC4[SDA])
D8116 | 起動時のＬＣＤのＩ２Ｃ設定値（アドレス）を指定します。 | MSSP2(RD0[SCL],RD1[SDA])
D8117 | 起動時のＬＣＤの動作設定を指定します。 | MSSP1(RC3[SCL],RC4[SDA])
D8118 | 起動時のＬＣＤの動作設定を指定します。 | MSSP2(RD0[SCL],RD1[SDA])
M9110 | LCDのイニシャライズ処理を呼び出します。 マルチＬＣＤの場合にM9038のa接点の後ろに配置して初期化処理を行います。 | MSSP1(RC3[SCL],RC4[SDA])
M9111 | LCDの表示をクリアする処理を呼び出します。 コイルの後に１ｍｓ程度の待ちを設けるようにします。 | MSSP1(RC3[SCL],RC4[SDA])
M9112 | LCDの設定処理を呼び出します。 制御ビット選択以外の初期化処理を呼び出します。 | MSSP1(RC3[SCL],RC4[SDA])
M9113 | LCDのイニシャライズ処理を呼び出します。 マルチＬＣＤの場合にM9038のa接点の後ろに配置して初期化処理を行います。 | MSSP2(RD0[SCL],RD1[SDA])
M9114 | LCDの表示をクリアする処理を呼び出します。 コイルの後に１ｍｓ程度の待ちを設けるようにします。 | MSSP2(RD0[SCL],RD1[SDA])
M9115 | LCDの設定処理を呼び出します。 制御ビット選択以外の初期化処理を呼び出します。 | MSSP2(RD0[SCL],RD1[SDA])
M9116 | LCDの表示シフト、カーソル移動処理を呼び出します。 | MSSP1(RC3[SCL],RC4[SDA])
M9117 | LCDの表示シフト、カーソル移動処理を呼び出します。 | MSSP2(RD0[SCL],RD1[SDA])
D9110 | Ｉ２Ｃアドレスをセットできます。 単独ＬＣＤ、複数のＬＣＤを使用する場合に用います。 | 共通(MSSP1,MSSP2)
D9111 | ＬＣＤのイニシャライズ処理設定値が設定できます。 単独ＬＣＤ、複数のＬＣＤを使用する場合に用います。 | 共通（MSSP1,MSSP2)
D9112 | ＬＣＤの表示シフト、カーソルシフトが設定できます。 単独ＬＣＤ、複数のＬＣＤを使用する場合に用います。 | 共通（MSSP1,MSSP2)

※M8000番台、D8000番台はラダーの先頭、末尾関係なく配置できます。（Ｍ８０００のa接点の後ろに配置してください）

※D9110～D9112は、使用する直前に配置して設定を行ってください。使用場所と値の設定が離れると正しく動かないことがあります。

特に,D9111とD9112は命令内部でデータを変更しますので、連続して使用する場合であっても使用前にＭＯＶで設定値を書き込んでください。

※D9110～D9112は、MOV命令（MOVP命令）で代入のみ可能です。

※MSSP2(RD0[SCL],RD1[SDA])は、PIC18F46K22のみ対応の機能です。

※起動時のＬＣＤのイニシャライズ処理は以下の通りです。

Display:On,Cursor Off,EntryModeSet I/D=1:Increment,Shift=0:No Shift,DL=0,N=1,F=05*8 dots font

※ＬＣＤのコントラストの設定は対応機種のみ行えます。

D9111およびD8117,D8118の設定値
b7 | b6 | b5 | b4 | b3 | b2 | b1 | b0
BL[1] | N[1] | F[0] | D[1] | C[0] | B[0] | I/D[1] | S[0]
バックライト | デューティ選択 | ドット選択 | 画面表示 | カーソル表示 | カーソル点滅 | アドレス増減 | 表示のシフト

※[]はデフォルト値です。

ビット位置 | 設定名 | 内容
b0 | S | カーソルの移動をするかどうか。 表示をシフトさせる(1) 表示をシフトさせない(0)
b1 | I/D | カーソルの移動方向。 アドレスをインクリメントする(1) アドレスをデクリメントする(0)
b2 | B | カーソルを点滅させるかどうか。 カーソルを点滅(1) カーソルを点滅させない(0)
b3 | C | カーソルを表示させるかどうか。 カーソルを表示(1) カーソルを表示しない(0)
b4 | D | 画面の表示をオンする。 画面の表示をオンする(1) 画面の表示をオフする(0)
b5 | F 又は DH | ５×１０ドットマトリクス又はdouble Height Font（１） ５×７ドットマトリクスまたは通常font（０）
b6 | N | 1/16デューティ（１） 1/8又は1/11デューティ（０）
b7 | BL | バックライトＯＮ（１） バックライトＯＦＦ（０）

※バックライトの制御は、ＰＣＦ８５７４シリーズで対応機種のみ使用可能です。

以下の例は、ＰＣＦ８５７４シリーズでバックライトとＬＣＤの表示をボタンで制御する例です。

省電力のため、バックライトを消します。うっすら表示がされていると気になる場合は、表示をＯＦＦします。

※表示をＯＦＦからＯＮに切り替えた場合、ＬＣＤＨやＬＣＤＬで表示処理を行わないと何も表示されません。

D9112の設定値
b7 | b6 | b5 | b4 | b3 | b2 | b1 | b0
BL[1] | － | － | － | S/C | R/L | － | －
バックライト | － | － | － | 表示、カーソル | 移動方向 | － | －

ビット位置 | 設定名 | 内容
b0 | － | －
b1 | － | －
b2 | R/L | 右シフト（１） 左シフト（０）
b3 | S/C | 表示をシフト（アドレスは変化せず）（１） カーソルシフト（０）
b4 | － | －
b5 | － | －
b6 | － | －
b7 | BL | バックライトＯＮ（１） バックライトＯＦＦ（０）

※バックライトのＯＮ／ＯＦＦのビットは必ず設定してください。

※カーソルシフトを行う場合は、必ずカーソル表示してからご利用ください。表示していない場合は確認できません。

カーソルをシフトするラダー例

表示をシフトするラダー例

PIC18F46K22の場合、Ｉ２ＣＬＣＤを２つ使用できます

PIC18F46K22では、Ｉ２Ｃ通信ができる機能が２系統あります。（MSSP1[RC3,RC4],MSSP2[RD0,RD1])

同時に２系統利用する場合、ＬＣＤの初期化設定や初期化アドレスをそれぞれ記載してください。

また、ＬＣＤＨやＬＣＤＬなどのコマンドについては、アドレスが異なる場合、

コマンドの前でアドレスをセットして、出力先をデバイス名(K2Y2C MSSP1,K2Y3C MSSP2)で指定することになります。

それぞれ分けて出力を指定してください。


ステッピング・モータ

    ＰＩＣ１８Ｆ４５２（４５８）　　１８Ｆ４５２５（８５）　　1８Ｆ４５２０　　１８Ｆ４５５０  １８Ｆ４６８０　１８Ｆ４５Ｋ２０　　１８Ｆ４６Ｋ２２　　　 ＰＩＣ１８Ｆ２５２（２５８）　　１８Ｆ２５２５（２５８５）　　1８Ｆ２５２０　　１８Ｆ２５５０   １８Ｆ２６８０　　１８Ｆ２５Ｋ２０　　１８Ｆ２６Ｋ２２

  ｴﾝｺｰド（別売り）

ＥＮＣＯＤ（エンコーダ）命令

２相のエンコーダ（インクリメンタル方式）のカウント値を計測します。

モータの回転数（速度）や回転量を測定したり、モータのフィードバック制御などに用いることができます。

ラダーを作成しているＣＰＵで測定する方法と別置きのチップで測定する方法をご用意いたしました。

※両方を同一ＣＰＵで使用することはできません。いずれか一方のみ使用できます。

※ENCOD命令はラダー内で１か所のみ配置できます。条件は接点の並列直列等で決定してください。

概要

（１）ラダーを作成しているＣＰＵで測定する方法・・・エンコーダのパルス周波数が低い場合にご利用ください。

  ＣＰＵの使用している機能により取りこぼしが発生することがあります。人間が操作する程度なら問題ありません。

（２）別置きのチップで測定する方法・・・モータの回転数の測定など20kHzまでのパルスでしたら測定できます。

    ８ピン素子のＰＩＣ１２Ｆ１８２２を使用し、当該チップで測定を行います。

    測定結果を独自プロトコルでやり取りし、使用します。（ビット長16ビット、32ビットが選択できます。）

詳細

（１）ラダーを作成しているＣＰＵで測定する方法（PIC18F46K22,PIC18F26K22,PIC18F45K20,PIC18F25K20のみ対応）

  変化の頻度（周波数）が少ないエンコーダの場合ご使用いただけます。

４逓倍のエンコードを行います。測定した結果は、指定したＥＮＣＯＤ命令で指定したデバイスに格納されます。(0000H～FFFFH)

現在値を変更する場合は、データレジスタを変更してください。これにより変更が可能です。

※指定したデバイスは、エンコードで使用するカウント値を直接使用しています。ＭＯＶ命令で変更可能です。

※信号が変化中にカウント値を変更した場合、値の信頼性は崩れます。信号が無変化の時に変更するようにしてください。

※命令の条件がＯＦＦ→ＯＮの立ち上がりでカウント値は０になります。

    エンコーダ命令を配置します。また、初期設定リレーＭ８０００のa接点の後ろにＭ８３０５のコイルを配置します。

エンコーダ命令に加え、Ｍ８３０５が配置されることでＥＮＣＯＤ命令でＲＢ４とＲＢ５のエンコードを行います。

以下の商品で動作を確認いたしました。

ロータリーエンコーダ（２４クリックタイプ）

（２）別置きのチップで測定する方法

    ＰＩＣ１２Ｆ１８２２とＰＩＣ１８Ｆ４５２シリーズと接続します。

接続ピンにより、３タイプあります。

１．標準

２．ＳＴＥＰやＰＵＬＳＥを使用する

３．ＤＡ変換（ＰＷＭ）を使用する

１．標準

  ＰＩＣ１８Ｆ４５２　　　　　　　　　　                     　　　　　　　　　　　　　エンコーダ

                                       ＰＩＣ１２Ｆ１８２２（括弧内）

        ＶＳＳ　　　　　－－　　　　　Ｐ８　　　ＶＳＳ　　　　　　　　－－　　　　 Ｃ相　　　－－ ＧＮＤ

                                        Ｐ７　　　ＧＰ０（ＲＡ０）　　　　－－　　　　Ａ相

                                        Ｐ６　　　ＧＰ１（ＲＡ１）　　　　－－　　　　Ｂ相

  Ｐ１６　　ＲＣ１　　　－－　　　　　Ｐ５　　  ＧＰ２（ＲＡ２） －－  １０ＫΩ　　－－－－－－ ＧＮＤ

  Ｐ２４　　ＲＣ５　　　－－　　　　　Ｐ４　　　ＧＰ３（ＲＡ３）

  Ｐ１７　　ＲＣ２　　　－－　　　　　Ｐ３　　　ＧＰ４（ＲＡ４）

  Ｐ１５　　ＲＣ０　　　－－　　　　　Ｐ２　　　ＧＰ５（ＲＡ５）

        ＶＤＤ　　　　　－－　　　　　Ｐ１　　　ＶＤＤ

ＰＩＣ１２Ｆ１８２２を使用する場合は下図になります。

    註１）ＰＩＣ１８Ｆ４５２と、ＰＩＣ１２Ｆ１８２２間の通信は「連枝」固有の独自なハンドシェークで行います。

    註２）ＰＩＣ１２Ｆ１８２２素子のエンコード入力は割込みによります。

    註３）エンコーダのＡ相およびＢ相は通常プルアップします。ご使用されるエンコーダのマニュアルをご確認ください。

    第一ｵﾍﾟﾗﾝﾄﾞに、Ｄﾒﾓﾘｰや桁指定（例Ｋ４Ｍ１６）等を設定値として指定できます。

    エンコード･カウンタ値がそこに入ります。

            例　ＥＮＣＯＤ　Ｄ１０

    エンコーダ用のカウンタ（最大７ＦＦＦｈ/最大ＦＦＦＦＦＦＦＦｈ）のリセットは、頭の接点をオンした瞬間に行います。

    １８Ｆ４５２５シリーズは最大７ＦＦＦｈです。１８Ｆ４６Ｋ２２、１８Ｆ４５Ｋ２０シリーズは通常ＦＦＦＦｈです。

    １８Ｆ４６Ｋ２２、１８Ｆ４５Ｋ２０シリーズは３２ビット用のＨＥＸファイルおよびＭ８３００のリレーを初期設定で配置すれば３２ビットとなります。

    頭の接点のオフ時は、エンコーダ値が保たれます。

    オフの間、Ｄ？の値いを変えるのは任意です。

    ただし、ＯＮにした瞬間にエンコーダは０リセットされます。

    ＰＩＣ１２Ｆ１８２２の場合、最大応答周波数は２０ＫＨｚです。

  ◎ＥＮＣＯＤのオペコードの18F4525シリーズ変換ライブラリー（ＥＣＤ１８２２１．Ｈ）、
18F45k20,18F46K22シリーズ変換ライブラリー（ＥＣＤ１８２２１_ｋ32bitPORT*．Ｈ）をＳＥＱ・ＨＥＸ変換時に使用するとともに、

    外部のエンコーダ素子としてのＰＩＣ１２Ｆ１８２２のＨＥＸファイルが提供されます。

    ＰＩＣ１２Ｆ１８２２　４逓倍　(15bit)の場合　ＥＮＣＭ１８３１．ＨＥＸ

    ＰＩＣ１２Ｆ１８２２　４逓倍　(16bit)の場合　ＥＮＣＭ１８３１＿１６ｂｉｔ．ＨＥＸ

    ＰＩＣ１２Ｆ１８２２　逓倍　　(16bit)の場合　ＥＮＣＯ＿１８２２＿ｑｕａｒｔｅｒ．ＨＥＸ

    ＰＩＣ１２Ｆ１８２２　４逓倍　(32bit)の場合　ＥＮＣＭ１８３１＿３２ｂｉｔ．ＨＥＸ

エンコーダの分解能 | 対象ＣＰＵ | 使用ＨＥＸファイル （CPU 12F1822） | 注意事項
１５ビット | PIC18F4525他従来ＣＰＵ | ＥＮＣＭ１８３１．ＨＥＸ |
１６ビット | PIC18F46K22/26K22 PIC18F45K20/25K20 | ＥＮＣＭ１８３１＿１６ｂｉｔ．ＨＥＸ |
１６ビット | PIC18F46K22/26K22 PIC18F45K20/25K20 | ＥＮＣＯ＿１８２２＿ｑｕａｒｔｅｒ．ＨＥＸ | 16ビット分解能ですが、４逓倍のカウントを エンコーダ素子側で１／４にして送信しています。
３２ビット | PIC18F46K22/26K22 PIC18F45K20/25K20 | ＥＮＣＭ１８３１＿３２ｂｉｔ．ＨＥＸ | M8000の初期設定リレーa接点の 後にM8300をコイルで入れてください。

    以上は、チャタリングのないフォトインタラプタを使用したエンコーダを想定しています。

２．ＳＴＥＰやＰＵＬＳＥを使用する場合

ＲＣ０およびＲＣ１が使用できませんので、ＲＣ０およびＲＣ１を使用しない場合は、以下の図の配線としてください。

※　この場合、ラダー上にM8000の初期設定リレーa接点の後ろにM8302をコイルで入れてください。

M8000のM8302を検出することで、上図のピン配置で通信するプログラムに切り替わります。

※　ピン配置を変えるだけで、STEPやPULSEの出力タイミングを保証するものではございません。

３．ＤＡ変換（ＰＷＭ）を使用する場合

ＲＣ１およびＲＣ２が使用できませんので、ＲＣ１およびＲＣ２を使用しない場合は、以下の図の配線としてください。

※　この場合、ラダー上にM8000の初期設定リレーa接点の後ろにM8303をコイルで入れてください。

M8000のM8303を検出することで、上図のピン配置で通信するプログラムに切り替わります。


通信

    ＰＩＣ１８Ｆ４５２（４５８）　　１８Ｆ４５２５（８５）　　1８Ｆ４５２０　　１８Ｆ４５５０  １８Ｆ４６８０　１８Ｆ４５Ｋ２０　　１８Ｆ４６Ｋ２２ 　　 ＰＩＣ１８Ｆ２５２（２５８）　　１８Ｆ２５２５（２５８５）　　1８Ｆ２５２０　　１８Ｆ２５５０   １８Ｆ２６８０　　１８Ｆ２５Ｋ２０　　１８Ｆ２６Ｋ２２

シリアル通信命令

  ＲＸはＲＣ７、ＴＸはＲＣ６を使用します。

  ＣＰＵ－１　　　　　　ＣＰＵ－２

    ＲＣ６　　－－－　　ＲＣ７

    ＲＣ７　　－－－　　ＲＣ６　　　クロスで配線します。

  ボーレートは９６００ｂｐｓと１９２００ｂｐｓ、その他、１８Ｆ４６Ｋ２２、１８Ｆ４５Ｋ２０では、ストップビットとパリティビットが選択できます。

   データ長８ビットの場合、１ストップビット、ノン･パリティです。

   データ長７ビットの場合、２ストップビット、ノン･パリティです。

  ＲＸはＲＣ７、ＴＸはＲＣ６を使用します。

シリアル通信命令は、ＳＥＲＩ、ＳＥＲＯ、ＳＲＧＯ命令群とＳＲＩＮ、ＳＲＯＴ命令群があり

どちらかを選択して使用することができます。

特殊レジスタ　Ｄ８１７０

  １８Ｆ４６Ｋ２２、１８Ｆ２６Ｋ２２および１８Ｆ４５Ｋ２０、１８Ｆ２５Ｋ２０は、データ長８ビット、１ストップビット、ノン・パリティにおいて、以下の速度で通信が可能です。

※このレジスタの設定を行った場合、ＣＰＵ設定の通信速度やデータ長などの設定は無視されます。

※このレジスタを使用時は、ＣＰＵ設定のシリアルにチェックを必ず入れてください。

設定値 | 通信速度
0 | 使用できない
1 | 110bps
2 | 300bps
3 | 600bps
4 | 1200bps
5 | 2400bps
6 | 4800bps
7 | 9600bps
8 | 14400bps
9 | 19200bps
10 | 38400bps
11 | 57600bps
12 | 115200bps
13 | 230400bps
14 | 460800bps
15 | 921600bps

◎ＳＥＲＩ、ＳＥＲＯ、ＳＲＧＯ命令（応用命令（基本LB)に含まれる）

  シリアル通信に関する設定はメニュー中のＣＰＵ設定で行います。

  送信バイト数、受信バイト数、ボーレートが設定できます。

  送信バイト数は設定数が必ず送信されます。

  受信バイト数に関しては、設定数を最大値として指定レングス分を受信します。

  送受信バイトが各々数バイト程度でＭＡＸです。

  送受信がお互いに相手の領域を食う関係にあり、

  ６０　＞＝（受信バイト＋４）＊２　＋（送信バイト＋４）　の範囲を限度とします。

  （ステップリレーを使用すると、左辺が変化し　５０　＞＝＊　になります）。

シリアル通信のフォーマットは以下の通りです。

０２－８？－＊＊－＊＊－　　　　－＊＊－＊＊－０３

  ｜　　｜　｜＿＿＿データ　＿＿＿＿｜　　｜　　　｜＿＿　エンド

  ｜　　｜　　　　　　　　　　　　　　　　　　　　　｜＿＿＿＿＿　データのＸＯＲ

  ｜　　｜

  ｜　　｜＿＿＿＿＿＿＿＿＿＿＿＿＿＿レングス（下位７ﾋﾞｯﾄ）　Ｄ７は常に＝１

   |                                 この次から０３の前の前までのバイト数（つまりデータ数）

  ｜＿＿＿＿＿＿＿＿＿＿＿＿＿＿＿＿　スタート

データ以外（レングス以前、ＸＯＲ以降）はすべて自動生成されます。

シリアル通信に関する命令は、ＳＥＲＩ、ＳＥＲＯ、ＳＲＧＯです。

ＳＥＲＩ命令

      通信入力があった場合、

      第１オペランドは受信データの何番目を示す（Ｋを頭につけたＢＣＤ値。１番目はＫ１でＫ０ではない）。

      第2オペランドは第1オペランドの示すデータの格納先を示す。

    例　ＳＥＲＩ　　Ｋ２　　Ｄ０　（2番目のデータをＤ０に入れる）

    桁指定はＫ？の？にかかわらず２桁＝８ビットとみなされます。

     註）このＫは第一オペランドのＫとは無関係です。

  （註）受信完了時に正常ならば１クールのみ 特殊リレーＭ９０４１がオンになります。

                         異常ならば１クールのみ 特殊リレーＭ９０４０がオンになります。

ＳＥＲＯ命令

      第１オペランドは送信データの何番目に置くかを示す（Ｋを頭につけたＢＣＤ値）。

      第２オペランドは送信するデータの取り込み先を示す。

    例　ＳＥＲＯ　Ｋ２　　Ｋ４Ｍ０（Ｍ０からの8ビットを2番目のデータとして送る）

ＳＲＧＯ命令

    送信を開始します。

    微分命令（ＳＲＧＯＰ）があります。

    ＜ＣＰＵ設定＞中で［］シリアル通信にチェックを入れ、送信バイトを設定します。

    その数値に従って、送信バイト数が決まります。

註）受信バイト数は送り手側のレングスで決まるので、殆ど意味がありません。

無手順Ｃ通信（別売り）

◎ＳＲＩＮ、ＳＲＯＴ命令

  無手順通信のためアスキー・コード（７ＦＨ以下）のみを送ることが出来ます。

  この命令を使用したシリアル通信はフォーマットの指定は有りません。

  但し、０ＤＨ（ｷｬﾘｯｼﾞ･ﾘﾀｰﾝ）で受信は終りとし、次からまた新たな受信とします。

  ０ＡＨは常に無視されます。特に０ＤＨ、０ＡＨ（ﾗｲﾝﾌｨｰﾄﾞ）の場合は、、その次からの受信になります。

  ０Ｄはカウント数に含めます。０Ａはカウントにも含めません。（送信の場合はこの０ＤＨに特別な意味はありません）。

  ボーレートは＜ＣＰＵ設定＞中で９６００ｂｐｓと１９２００ｂｐｓのどちらかを選択できます。

  同じ設定枠中の送信バイト、受信バイトは無関係で、両方＝０でかまいません。

  シリアル通信には、ＲＸのＲＣ７ピンとＴＸのＲＣ６ピンを使用します。

  ８ビットを１単位として送ります。

  １ストップビット、パリティ無しです。

  下記の受信命令の第一オペランドで指定する受信バイト数受信が済めば、その次から新たな受信となります。

  受信命令　ＳＲＩＮ

例

  ＳＲＩＮ　Ｋ３０　Ｄ１８　Ｍ１８０

                |       |         |___受信終了後オンする接点番号

                |       | 　　　（　＝＞１　ﾊﾞｯﾌｧに新ﾃﾞｰﾀが入った。ＣＰＵ内部側ﾃﾞ自動的に

                |       |　　　　　＝＞０　ﾊﾞｯﾌｧを読込んだので更新可の通知　ﾕｰｻﾞ側ﾃﾞ）

                |       |_____________受信データの先頭格納Ｄメモリー番号

                |_____________________受信バイト数（最大１２０）

  ＳＲＩＮの命令の頭の接点がオフで電気が来てないと、指定先の内容は更新されません。

  しかし、リングバッファへの取り込みと、上記Ｋ３０の３０バイト毎に、上記Ｍ１８０をオンすることを続けます。

  このことはＭ１８０のオン／オフに拘わらず実行されます。

  註）受信内容ははＤメモリー列へ下位，上位の順で８ビットずつ、ＩＮＰＵＴされます

      上例でＫ３０とした場合、３０バイトの受信データがＤ１８～Ｄ３２の１５ワードへ送られます。

              Ｍ１８０（Ｂ接点）

  ｜－－－｜／｜－－－－－－［ＳＲＩＮ　Ｋ３０　Ｄ１８　Ｍ１８０］－｜

  上記回路だと、３０バイトの受信ごとにＭ１８０をオンし（これによってＤ１８にデータを送り込んだ後にＳＲＩＮ命令自体がオフし）、別行の回路でＭ１８０をオフすることによって（ＳＲＩＮ命令がオンし）、次の３０バイトを指定先（この場合Ｄ１８）にリングバッファから送り込みます（すでに次の３０バイトが来ていればそれを送り、来ていなければ３０バイトになるのを待ちます）。

  上記、Ｍ１８０、Ｋ３０、Ｄ１８は各々一つの例です。

  どうしても追いつかない場合（そんなことは起きにくいことですが）、頭にＭ１８０の代わりにＭ９０３６（常時オン）を入れることによって、常に最新のデータが、指定先に送り込まれることになります。

  ●０Ｄ（ゼロＤ）を区切りとして、新たなカウントを始めます。

    このことによって、リングバッファの頭を決定することができます。

  送信命令　ＳＲＯＴ

例

  ＳＲＯＴ　Ｋ３０　Ｄ１８　Ｍ１８０

                |       |         |___送信終了後オフする接点番号

                |       |　　　　（　＝＞０　送り終わった信号。ＣＰＵ内部側ﾃﾞ自動的に

                |       |　　　　　　＝＞１　送るべきﾃﾞｰﾀが揃ったら、１とする。ﾕｰｻﾞ側ﾃﾞ）

                |       |_____________送信データの先頭Ｄメモリー番号

                |_____________________送信バイト数（最大１２０）

  上記３つのオペランドは先頭文字以外の値いはすべて任意です。

  註）指定Ｄメモリー列はすべて下位，上位の順で８ビット（通常アスキーに対応）＊２＝１６ビット送られます。

      上例でＫ３０とした場合、Ｄ１８～Ｄ３２の１５ワードが送られます。

                Ｍ２０

  ｜－－－｜｜－－－－－－［ＳＲＯＴ　Ｋ３０　Ｄ１８　Ｍ２０］－｜

  上記回路のようにすれば、他の回路でＭ２０をオンすれば、一回だけ通信することができます。

  ◎通信内容はアスキーでなくても可です（０～FFｈであれば良い。


通信

    ＰＩＣ１８Ｆ４５２（４５８）　　１８Ｆ４５２５（８５）　　1８Ｆ４５２０　　１８Ｆ４５５０  １８Ｆ４６８０　１８Ｆ４５Ｋ２０　　１８Ｆ４６Ｋ２２ 　　 ＰＩＣ１８Ｆ２５２（２５８）　　１８Ｆ２５２５（２５８５）　　1８Ｆ２５２０　　１８Ｆ２５５０   １８Ｆ２６８０　　１８Ｆ２５Ｋ２０　　１８Ｆ２６Ｋ２２

汎用Ｉ２Ｃ命令（別売り）

  「連枝」の汎用のＩ２Ｃライブラリー（Ｐ４５２－Ｉ２ＣＰＲＯＴ－ＬＢ）によれば、

  Ｉ／Ｏのうち２ピンを使用して、

  殆どのＩ２Ｃを入出力とするＩＣを動作させることができます。

この時の使用する最終オペランドの、Ｋ２Ｙ？０の　？が１の時はＢポート、２の時はＣポートを使用します。

同じコマンドで最終ｵﾍﾟﾗﾝﾄﾞにより通信するデバイスを振り分けます。

※通信速度は400kＨｚを目安にＡＣＫの確認を行わないプログラムです。

※通信速度を100kＨｚに変更することができます。

速度は初期設定デバイスで指定した速度となります。（デフォルトは400kHz)

100kHzの通信速度選択は、M8121(PORTB 100kHz),M8122(PORTC 100kHz)のいずれかをM8000の後ろに配置してください。

  （８ビット単位のデータを前提にしたＩ２Ｃ素子）。

同一バス上に複数の機器を接続できますが、通信のプログラムの作り方により正常通信できないことがあります。

複数機器を接続して通信を行う場合は、通信失敗受信データが（ＦＦ）を考慮して作成した方が良いでしょう。

同一バス上に接続する機器の通信速度は同じとしてください。異なる速度の場合は通信できない可能性が高いです。

機器との通信は、マイスキャン実行（M9036)はお控えください。スキャンタイムが伸びます。

マイスキャン実行は、通信エラーの原因となります。

汎用Ｉ２Ｃの各種命令

ＩＣ２素子のそれぞれのプロトコルを、次の命令によって構成します。

  １）Ｗ２ＣＯ　　　書き込みを前提にデバイスのアドレスを送ります。　Ｄ７～Ｄ１にアドレスが入り　Ｄ０＝０　となります。

                    このアドレスは、デバイスの外部ＡＤＲＥＳＳ－ピンで決まるものです。

                    例えばアドレスが５の時は、?@?@?@１０１を左回転し、@?@?@１０１０になります。

                    Ｄ７～Ｄ１は@?@?@１０１　となり、Ｄ０＝０として８ビットを送ります（Ｄ７から６～０の順に送る）。

                    @?@?@の部分もすべてアドレスとみなされて、アドレスと一緒に左１ﾋﾞｯﾄ回転され、

                    Ｄ６～Ｄ０がＤ７～Ｄ１になります。

      例　Ｗ２Ｃ０　Ｈ２５　Ｋ２Ｙ１０　　アドレスが５の時の書き方で、ルーチン中で左回転しＨ２５－＞Ｈ４Ａとします。

          （Ｄ０　＝０とします。Ｈ２５の２はデバイスによって違います）。

  ２）Ｗ２ＣＤＯ　　　データを送ります。　送るデータの８ビットがそのまま　Ｄ７～Ｄ０に入ります。

                    Ｄ０はデータに従って、０か１の任意値になります。

                    「連枝」では、直値、データ、桁指定付き接点データを第１オペランドにできます。

                    １）Ｗ２ＣＯや、３）Ｒ２ＣＯと区別する方法は、４）ＳＴＡ２Ｃとの組み合わせによります。

  ３）Ｒ２ＣＯ　　　読み込みを前提にデバイスのアドレスを送ります。　Ｄ７～Ｄ１にアドレスが入り　Ｄ０＝１　となります。

                    このアドレスは、デバイスの外部ＡＤＲＥＳＳ－ピンで決まるものです。

                    例えばアドレスが５の時は、?@?@?@１０１を左回転し、@?@?@１０１１になります。

                    Ｄ７～Ｄ１は@?@?@１０１　となり、Ｄ０＝１として８ビットを送ります。

                    @?@?@の部分もすべてアドレスとみなされて、アドレスと一緒に左１ﾋﾞｯﾄ回転され、

                    Ｄ６～Ｄ０がＤ７～Ｄ１になります（Ｄ７から６～０の順に送る）。

      例　Ｒ２Ｃ０　Ｈ２５　Ｋ２Ｙ１０　　アドレスが５の時の書き方で、ルーチン中で左回転しＨ２５－＞Ｈ４Ｂとします。

          （Ｄ０　＝１とします。Ｈ２５の２はデバイスによって違います）。

  ４）ＡＣ２ＣＩ　　　データを読み込みをし、最後にアックを送ります。

                    第２オペランドにデータが入ります。

                    １データのみ受け取って、次にすぐストップ命令（ＳＴＰ２Ｃ）を出す時に多く使用されます。

                       （逆にデータを連続的に受け取る時に使用する素子もあります）。

  ５）ＮＡ２ＣＩ　　　データを読み込みをし、最後にナックを送ります。

                    第２オペランドにデータが入ります。

                    データを連続的に受け取る時に多く使用されます。

                       （逆に１データのみ受け取る時に使用する素子もあります）。

※一般的なＩ２Ｃ素子では、データ受信の最後はＮＡＫで終わらせてください。ＮＡＫで終了しないと別の素子が終了を認識しないことがあります。

※ＡＣ２ＣＩ，ＮＡ２ＣＩは、第２オペランドにＭを指定すると新しいライブラリでは１バイト単位のみ変更します。

この仕組みを使用することでバイトオーダがＨ側から送られるか、Ｌ側から送られるかで内部リレーの番号を調整してください。

データの取り扱いがとても楽になります。

  ６）ＳＴＡ２Ｃ　　　スタート信号を出します。

  ７）ＳＴＰ２Ｃ　　　ストップ信号を出します。

  ◎オペランドと使用ピン

    １）、２）、３）の命令の第１オペランドはＩ２Ｃ素子に送るデータとなり、第２オペランドは、

    ＲＢポートの１，５ピン（１１，１５）を使用するときは、Ｋ２Ｙ１０とします。

    ＲＣポートの１，５ピン（２１，２５）を使用するときは、Ｋ２Ｙ２０とします。

      １ピンはＳＣＬ、５ピンはＳＤＡとして接続します

    ４）、５）の命令の第１オペランドには受け取ったデータが入り、第２オペランドは、

    上記に従って、Ｋ２Ｙ１０、Ｋ２Ｙ２０になります。

    ６）、７）の命令は、第１オペランドのみで上記に従った、Ｋ２Ｙ１０かＫ２Ｙ２０になります。

   註）使用する１，５ピンは１０ＫΩ(目安）でプルアップします。

配線長が長くなる（静電容量が増加）の場合は抵抗を小さくする必要があります。

使用事例

  ＴｏＦ測距センサーモジュール

商品のサイト： http://akizukidenshi.com/catalog/g/gM-14538/

ローコストのToF(測距センサ）モジュールです。電源電圧は３．３Ｖです。５Ｖで使用する場合は、Ｉ２Ｃのレベル変換が必要となります。

測定結果は、I2C経由でｍｍ単位のデータを取得できます。

通信速度は、100kHz(bps)のみサポートされています。

使用する場合は、初期設定リレーM8000の後ろにM8121（PORTB100kHz選択）を配置してください。

初期設定リレーM8000の後ろにM8122（PORTC100kHz選択）の場合は、PORTCとなります。

（現状は、M8121でもM8122でも100kHzとなります）

サンプルプログラム　「pic18F45k20_MTOFB_2.MBS」

  リアルタイムクロックＲＴＣ８５６４

商品のサイト： http://akizukidenshi.com/catalog/g/gI-00233/

動作電圧：1.8V~5V

宮崎エプソン(セイコーエプソン・エプソントヨコム)のリアルタイムクロックIC(RTC-8564NB)を使ったクロックモジュールです。I2Cインターフェース(2線式)でPICやH8などと通信可能です。

通信速度は400kHzが可能です。

サンプルプログラム　「pic18F45k20_RTC8564.MBS」


通信

    ＰＩＣ１８Ｆ４５２（４５８）　　１８Ｆ４５２５（８５）　　1８Ｆ４５２０　　１８Ｆ４５５０  １８Ｆ４６８０　１８Ｆ４５Ｋ２０　　１８Ｆ４６Ｋ２２ 　　 ＰＩＣ１８Ｆ２５２（２５８）　　１８Ｆ２５２５（２５８５）　　1８Ｆ２５２０　　１８Ｆ２５５０   １８Ｆ２６８０　　１８Ｆ２５Ｋ２０　　１８Ｆ２６Ｋ２２

汎用ＳＰＩ命令（別売り）

  「連枝」の汎用のＳＰＩライブラリー（Ｐ４５２－ＳＰＩＣＰＲＯＴ－ＬＢ）によれば、

  Ｉ／Ｏのうち４ピンを使用して、

  殆どのＳＰＩを入出力とするＩＣを動作させることができます。

  ＳＰＩ素子のそれぞれのプロトコルを、次の命令によって構成します。

  この時の使用する最終オペランドの、Ｋ２Ｙ？０の　？が１の時はＢポート、２の時はＣポートのいずれかを使用します。

現状は、どちらか一方のみ使用できます。

  送るビット数は１～１６のうちの任意数です。

  １）ＷＳＰＤＯ　　データを送ります。

                  第１オペランドは、Ｋで始まるビット数です。、

                  指定したビット数だけ第２オペランドで示す数値やＤメモリーの内容を頭から送ります。

                   第３オペランドはＫ２Ｙ？０になります。

    例　ＷＳＰＤＯ　Ｋ６　Ｈ２３　Ｋ２Ｙ２０　　　　これは２３の６ビット（１０００１１）を左から順にＳＰＩ素子に送ります。

    例　ＷＳＰＤＯ　Ｋ６　Ｄ０　Ｋ２Ｙ２０

                            Ｄ０にＨ２３が入っている場合、頭の１０ビットの０を飛ばして１００１１を左から順に送ります。

  ２）ＲＳＰＤＩ　　　　データを受け取ります。

                   第１オペランドは、Ｋで始まるビット数です。

                  指定したビット数のデータが第２オペランドの指定ＤメモリーにＤ１５～Ｄ０に右詰めで入ります。

                  第３オペランドはＫ２Ｙ？０になります。

    例　ＲＳＰＤＩ　Ｋ１２　Ｄ８　Ｋ２Ｙ２０　　　　これはＳＰＩ素子からの１２ビットの値をＤ８に右詰で入れます。

                                                    Ｄ８のＤ１５～Ｄ１２は００００になります。

  ３）ＳＴＡＴＳ　　　スタート信号を出します（ＣＳをＬＯＷにします）。

  ４）ＳＴＯＰＳ　　　ストップ信号を出します（ＣＳをＨＩＧＨにします）。

※ チップセレクトピンは、ＳＴＡＴＳとＳＴＯＰＳで変更しますが、ＲＳＴＤやＳＥＴＤを使用すれば複数の機器を制御できます。

※ ＳＴＡＴＳ命令とＳＴＯＰＳ命令は必ずしも記載する必要はありません。機器により使用しない場合があります。

  ◎使用ピン

                                          Ｂポート使用時　　　　　　　　　Ｃポート使用時

                                                    （ピン番号）　　　　　　　　　　　　（ピン番号）

  チップセレクトＰＩＮ　　ＡＤＣＥ    　 　 　ＲＢ０（３３） 　　　　　　　 　　　　ＲＣ０（１５）

  クロック　　　　　　　　　ＣＬＫ     　　　 ＲＢ１（３４）　　　　　　　　　　　　ＲＣ１（１６）

  ＳＰＩ素子にとってのＤＡＴＡＯＵＴ  　　　ＲＢ２（３５）　　　　　　　　　　　　ＲＣ２（１７）

  ＳＰＩ素子にとってのＤＡＴＡＩＮ　　 　　　ＲＢ５（３８）　　　　　　　　　　　　ＲＣ５（２４）

    ３）、４）の命令は、オペランドなしで、オペコード（その命令）のみになります。

PIC18F46K22、PIC18F45K20シリーズにおける汎用ＳＰＩ通信

PIC18F46K22における汎用ＳＰＩ通信は、通信設定を追加することができます。

通信設定を行うことで、様々なＩＣとのシリアル通信が可能となります。

また、従来（１８Ｆ４５２５シリーズ）ではポートＢまたはポートＣのいずれかしか利用できませんでしたが、両方同時に使用することができます。

仕様変更により、ＳＴＡＴＳおよびＳＴＯＰＳがサポートされなくなります。

※通信相手を有効にするために、ＣＳのピンをダイレクト命令（ＲＳＴＤ）でＬＯＷにしてください。

  また、通信が終わった段階でＣＳのピンをダイレクト命令（ＳＥＴＤ）でＨＩＧＨにしてください。

第１オペランド | 取り扱いビット数と通信設定
第２オペランド | 送信データまたは送信データが格納されたデバイス（Ｍ、Ｄまたは定数） 受信データ格納先デバイス
第３オペランド | ＳＰＩ通信を行うポートを表すピン指定 Ｋ２Ｙ１０（ＲＢ０，ＲＢ１，ＲＢ２，ＲＢ５） Ｋ２Ｙ２０（ＲＣ０，ＲＣ１，ＲＣ２，ＲＣ５）

通信設定

通信する相手の通信設定により、命令に以下のデータを指定します。

これにより、通信する方式を実行時に切り替えることが可能です。

同一バス上に複数のＩＣがつながっている場合についても、通信時に変更することができます。

ビット位置 | モード | 設定内容 | 追記
b0 | MODE0 | 0:選択なし,1:MODE0 | b0～b3までのビットがＯＦＦの場合、 MODE3（従来方式）を使用します。
b1 | MODE1 | 0:選択なし,1:MODE1
b2 | MODE2 | 0:選択なし,1:MODE2
b3 | MODE3 | 0:選択なし,1:MODE3
b4 | ビットオーダ | ０:MSB First,1:LSB First | 受信、送信命令のいずれも ビットオーダを選択できます。

汎用ＳＰＩ通信の事例

①シリアルパラレル変換ＩＣ　７４ＨＣ５９５の例

http://akizukidenshi.com/catalog/g/gI-14053/

ライブラリの使用サンプルとして、「18f46k22_74HC595.MBS」があります。これをご確認ください。

②MCP4922(DA変換ＩＣ ２ＣＨ）とMCP3208(AD変換ＩＣ ８ＣＨ)

http://akizukidenshi.com/catalog/g/gI-02090/

http://akizukidenshi.com/catalog/g/gI-00238/

ライブラリのサンプルとして、「pic46k22_spiAD_DA.mbs」があります。これをご確認ください。


ｵﾝﾎﾞｰﾄﾞ書き込み

    ＰＩＣ１８Ｆ４５２（４５８）　　１８Ｆ４５２５（８５）　　1８Ｆ４５２０　　１８Ｆ４５５０  １８Ｆ４６８０　１８Ｆ４５Ｋ２０　　１８Ｆ４６Ｋ２２  　　ＰＩＣ１８Ｆ２５２（２５８）　　１８Ｆ２５２５（２５８５）　　1８Ｆ２５２０　　１８Ｆ２５５０   １８Ｆ２６８０　　１８Ｆ２５Ｋ２０　　１８Ｆ２６Ｋ２２

ＰＩＣの書き込みについては、「連枝」では基本的に責任の範囲外で、他社ロムライターの使用をお願いしています。

◎オンボード書き込み（Ｐ版、S版に含まれます）

  書込みを行う場合、USART通信を用いて行います。

USART通信は、ＣＯＭ通信（＋－１５Ｖ）と＋５Ｖの通信があります。従来のパソコンとの通信では、

ＣＯＭ通信（＋－１５Ｖ）で行われていましたが、ＵＳＢシリアル通信を用いるとマイコンの信号レベルの＋５Ｖの通信が行えます。

  ＜ビルド＞メニュー中の＜ＣＰＵ設定＞で、＊．ＳＥＱファイルを、ＳＥＱ・ＤＢＸ変換する。
     例えばＡＡＡ．ＳＥＱを変換すると、ＡＡＡＸ．ＨＥＸと、ファイル名の最後にＸがついたＨＥＸファイルになります。

    （通常のＳＥＱ・ＨＥＸ変換によると、ＡＡＡ．ＨＥＸ ファイルが生成されます）。

  この時の第１回の書き込みは、市販ロムライター等（PICKIT)によって行われますが、２回目からは＜ビルド＞中の［オンボード］書き込みによってパソコンから直接、書き込むことができます。

  その時基板には、ＭＡＸ２３２によるＲＳ２３２Ｃポートまたは、ＵＳＢシリアル変換器が必要です。

  書込みにはＵＳＡＲＴを使用するため、マイコンのシリアル通信ポートに、レベル変換したＲＳ２３２Ｃポートの信号を入れるか、

  USBシリアル変換した通信信号を入力してください。

  方法は以下の通りです。

  ①　パソコンとＰＩＣ基板をＲＳ２３２ＣまたはＵＳＢシリアル変換で接続し、＜ＣＰＵ設定＞でＣＯＭ番号を現状に合わせます。

      （パソコン側にＲＳ２３２Ｃ用のコネクターがない時、USB->シリアル変換モジュールが必要です）。

  ②　パソコン画面を設計画面にし、＜ビルド＞中のオンボード書き込みのダイアログＢＯＸを立ち上げる。

  ④　書き込みたい＊Ｘ．ＨＥＸファイルを選択し、［スタート］をクリックすると、書き込み動作を開始し終了すると［ＥＮＤ］がでます。

  ⑤　［ＯＫ］を押すと、書き替えたプログラムの動作を開始します。

◎註　ボーレートは内部で１９２００ｂｐｓに固定されています。

  註１）ブート領域がコード・プロテクトされているときは、何回でも書き込みができますが、書き込み受け付け開始の場所は走行中のノン･プロテクトの通常領域にあります。
  註２）オンボード書き込み時の不慮の失敗により、再書き込みが出来なくなるときがあります。その時は、またＣＰＵを基板から抜いて、外部で、市販ロムライタによって再び第１回目の書き込みを行う必要があります。

  註３）ＳＥＱ・ＤＢＸ変換をすると、オンボード書き込みと合わせてデバッグもできます。

  註４）セグメント表示とか、パルス発生とか、Ｉ２Ｃ通信・ＣＡＮ通信、チャッタ防止とかのモードの使用、不使用が変化するプログラムを書き換えるをことはできません。（割込み領域はブート領域にあり、書き換えないからです）。

  ◎ＰＩＣ基板上のＲＳ２３２Ｃ回路は以下のようになり、以下の回路がパソコンのコネクターとストレートコネクターで接続されます。

  （コネクタの７，８ピンとの接続は不要です。ＭＡＸ２３２の１１，１２番ピンも未接続で可です）。

   ＲＳ２３２Ｃでの通信

   ＵＳＢシリアル変換器での通信


SCALL88

  ＰＩＣ１８Ｆ４５２（４５８）　　１８Ｆ４５２５（８５）　　1８Ｆ４５２０　　１８Ｆ４５５０  １８Ｆ４６８０　１８Ｆ４５Ｋ２０　　１８Ｆ４６Ｋ２２ 　　 ＰＩＣ１８Ｆ２５２（２５８）　　１８Ｆ２５２５（２５８５）　　1８Ｆ２５２０　　１８Ｆ２５５０   １８Ｆ２６８０　　１８Ｆ２５Ｋ２０　　１８Ｆ２６Ｋ２２

SCALL命令とサブルーチン

ＳＣＡＬＬ命令によりサブルーチンをコールできます。

［ＳＣＡＬＬ　Ｐ０］　とか　［ＳＣＡＬＬ　Ｐ１］とか書きます。

サブルーチンはＦＥＮＤ命令のあとに置かれます。

｜------------------------------------［ＦＥＮＤ］｜

のようにこの命令の左側は直線のみになります。

サブルーチンの最後には［ＲＥＴＲＮ］命令が置かれ、これによってメインのラダーに戻ります。［ＲＥＴＲＮ］の左には通常、常時オン接点Ｍ９０３６を置きます。

 Ｐ？を置くにはツールバーの [image] をクリックし、Ｐを置いた後に [image] をクリックして、Ｐのあとに数字を置いてセットします。

  サブルーチンの考え方は以下のようです。

  ①　Ｘ、Ｙの入出力は通常の接点でダイレクトではない。

  ②　微分（前変化）記録はキープされます。

      複数回呼ぶことによって、微分記録は不正確なものなりますので、微分命令の使用は推奨されません。

  ③　ラダーは１回のみループして抜けますが、通常のラダーの無限回のループの中の一環として実行されます。

  ④　入出力の変化は、通常ループの論理に直接影響をあたえます。

註）原則として、サブルーチン中の微分動作の正常動作は保証されません（タイマ、カウンタを含む）。


割りこみ

    割り込みの使い方

      ＜ＣＰＵ設定＞中の□割込みにチェックを入れると、右端のツールバー [image] が活色化します、それをクリックすると

以下左のダイアログボックスが出ます。

設定可能な時間は、０．１ｍｓ単位です。２００と指定すると２０．０ｍｓとなります。

回数を指定すると指定回数分実行されます。０を指定すると無限動作となります。

※低位割込みを使用したタイマ処理です。通信命令やダイナミック点灯などの機能と同時に使うと時間が大きくずれることがあります。

※タイマ回路内（割込み内）で時間のかかる処理や演算処理はお控えください。正常動作しないことがあります。

※タイマ回路内（割込み内）の出力はダイレクト出力となっています。

    （１）タイマ割り込み設定

  この場合、タイマ割り込みのみになります。

  [新規ラダー］釦のクリックで生成されるテンプレートのラダーは以下のようになります。

  左上の接点や、出力Ｙ００については、適当なＩ／Ｏ（又はＭリレー）値を入れてください。

  左上の接点（又はリレー番号）はタイマ割り込みをオンとします。

  （リレー入力の時は接点形状を変更した方がベターです）。

  接点９０５３以降、［ＩＲＥＴ］までの回路を任意に製作します（下部参照）。

  （タイマ、カウンタ等の微分命令は使用できません。）

  設定した回数だけ、９０５３のオン/オフ命令による動作を繰り返します（回数無制限の時は＝０を設定します。）

    （２）Ｉ／Ｏ割り込み設定

  割り込みはＲＢ２（Ｘ１２）ピンを使用します。

  ［新規ラダー］により以下のテンプレートのラダーができます。

  左上の接点や、出力Ｙ００については、適当なＩ／Ｏ（又はＭリレー）値を入れてください。

  （左上の接点は常時オン接点（Ｍ９０３５）でも可です）

  接点９０５６以降、［ＩＲＥＴ］までの回路を任意に製作します（下部参照）。

  （タイマ、カウンタ等の微分命令は使用できません。）

    （３）ＲＢ２割り込みによるオン／オフタイマ起動回路の設定

  ＲＢ２の割り込みにより、オンオフタイマが起動します。

   ［新規ラダー］により以下のテンプレートのラダーができます。

  左上の接点や、出力Ｙ００については、適当なＩ／Ｏ（又はＭリレー）値を入れてください。
  （左上の接点に、常時オン接点（Ｍ９０３５）が使用できます）。

  最初のタイマ割り込みの例の1番上の［Ｔ０ＩＳＴＡ］命令が、この回路の右上の［ＩＮＢＳＴＡ］命令に変わっていて、それ以外は、同じ回路です。

  違うのは、この場合タイマ割り込みがＲＢ２のオン（＝０）入力により起動することです（ＲＢ２は回路図上はありません）。

  Ｍ９０５３以降の回路は、最後に［ＩＲＥＴ］が入りさえすれば任意です。

  但し、微分命令が使用できないのは、他の場合と同じです。

    （４）ＲＢ２割り込みによるタイマ起動回路（オン／オフなし）の設定

  この場合、タイマのオン／オフはなしで、ＲＢ２オンの度にタイマ割り込みが指定の周期で指定の回数だけ発生します。

   ［新規ラダー］により以下のテンプレートのラダーができます。

    （５）ＲＢ２割り込みとタイマ割り込み回路を併用した設定

    ＲＢ２割り込みと、タイマ割り込みが独立して動作ます。

   ［新規ラダー］により以下のテンプレートのラダーができます。

  左上の接点や、出力Ｙ００については、適当なＩ／Ｏ（又はＭリレー）値を入れてください。

  （左上の接点に、常時オン接点（Ｍ９０３５）が使用できます）。

    これは（１）、（２）の組み合わせで、最大のテンプレートになります。

  ◎これらのテンプレート、最初にプログラムの最終段（ＥＮＤの前に）作られます。

    （必ず、上のどれかの回路になります）。

    これを任意の接点や関数で改造して作っていきます。

    Ｍ９０５３やＭ９０５６の割り込みのスタート接点と［ＩＲＥＴ］命令以外は任意に回路を組めます。

    （微分命令は不可です。設定画面中に［回数設定］以外にカウント動作をしたい場合は、

    ＩＮＣ（インクリメント）命令をＤ、Ｃメモリーに使用し、任意の値いとＣＭＰ命令とを組み合わせを使用してください。

  ◎途中で、製作中の回路を大幅修正したい時は、もう一度、原点に帰るために、

    もう一度、［新規ラダー］により、同じ回路を製作中の回路の下につくり、

    どちらかへのコピー＆ペーストで、回路を完成し、片方を削除してください。

    割り込みの実際の使い方

  ◎実際にＰＩＣに書き込んで動作させます。

  その時、Ｘ、Ｙの入出力はすべてダイレクトになります。

  その他の接点やＤメモリーについては、通常ループ中の扱いと同じで、ループ中の回路に影響を与えます。

  ◎通常ループ中にダイレクトに入出力する命令についてはヘルプを参照してください。

    （１）タイマ割り込み設定

  タイマ割り込みのみの回路です。

  Ｘ２４をオンすると、［ＩＥＮＤ］以降の回路のタイマ割り込みが発生し、Ｙ３６に図１のパルスが指定数だけ、設定に従った、オン・オフ幅で発生します。

  （ＯＵＴＦ命令は出力接点のオフ命令です）。

     図１

    （２）Ｉ／Ｏ割り込み設定

  ＲＢ２による、Ｉ／Ｏ割り込みのみの回路です。

  Ｘ１５をオンすると、［ＩＥＮＤ］以降の回路にＲＢ２＝０によるＩ／Ｏ割り込みが発生します。

、ＲＢ２をオンする毎に、Ｙ３２がオンとオフを繰返します。

  （チャッタリングに注意が必要です）。

    （３）ＲＢ２割り込みによるオン／オフ・タイマ起動回路の設定

  Ｍ８がオンすると、ＲＢ２による割り込みでＴＭＲ３の回路が起動します。

  ＲＢ２をオンする毎に、Ｙ３１が指定時間に従って、指定回数だけオンとオフを繰返します。

  （図２の波形の上はＲＢ２の入力、下はＹ３１の出力です）。

             図２

  ◎スキャン回路のアイデア

    以下のような回路にすれば、タイマ割り込みのたびにスキャン用のビットがＲＤ０～ＲＤ３に発生します。

    （スキャン出力の取り込み回路は省略していますが、

      ラダーの最初か最後にＭＩＶＫ命令を使用すればＯＫです）。

  タイマ割込み設定値変更レジスタ

タイマ割込み設定レジスタを使用するとプログラム実行時に実行回数と共に、

ＯＮ時間とＯＦＦ時間を設定できます。

時間の設定は、タイマの条件の立ち上がり時に行われます。

変更する場合は、タイマを一度停止し、再度起動しなおしてください。

０．０１ｍｓ単位で値を設定できますが、システムに負担をかけるため０．１ｍｓ以上が望ましいです。

ＰＩＣ１８Ｆ４５２５シリーズのタイマ割込みの設定について
レジスタ番号 | 書込み
Ｄ９２３０ | 割込み動作開始の回数を指定します。 0x8000（16ビット目ON)で無限動作となります。 ０では無限動作（動作しない）とはなりません。
Ｄ９２３１ | ＯＮ時間を指定します。設定値はH（バイナリ値）で指定し、0.01秒単位です。 （1[0.01ms] ～ 6553 H1999[65.53]msまでの範囲としてください。） 0または6554(H199A)以上はタイマが正常動作しません。 ユーザー様側で比較命令等で超えないようにしてください。
Ｄ９２３２ | ＯＦＦ時間を指定します。設定値はH（バイナリ値）で指定し、0.01秒単位です。 （1[0.01ms] ～ 6553 H1999[65.53]msまでの範囲としてください。） 0または6554(H199A)以上はタイマが正常動作しません。 ユーザー様側で比較命令等で超えないようにしてください。

ＰＩＣ１８Ｆ４６Ｋ２２，ＰＩＣ１８Ｆ４５Ｋ２０のタイマ割込みの設定について
レジスタ番号 | 書込み
Ｄ９２３０ | 割込み動作開始の回数を指定します。 0x8000（16ビット目ON)で無限動作となります。 ０では無限動作とはなりません。
Ｄ９２３１ | ＯＮ時間を指定します。設定値はH（バイナリ値）で指定し、0.01秒単位です。 （1[0.01ms] ～ 3276 HCCC[32.76]msまでの範囲としてください。） 0または3277以上はタイマが正常動作しません。 ユーザー様側で比較命令等で超えないようにしてください。
Ｄ９２３２ | ＯＦＦ時間を指定します。設定値はH（バイナリ値）で指定し、0.01秒単位です。 （1[0.01ms] ～ 3276 HCCC[32.76]msまでの範囲としてください。） 0または3277以上はタイマが正常動作しません。 ユーザー様側で比較命令等で超えないようにしてください。

※間接的にＤ＊に設定値を転送し、Ｄ９２３０への転送時は、書込み値はＨで指定してください。

以下、サンプルラダー


デバッグ

  デバッグの概要

  連枝のデバッグはROM書きされたPICやAVRチップを用いて、連枝のデバック画面上で動作をモニターするものです。

動作確認はパソコン上でマウスを用いてシミュレーションしますが、デバッグはパソコンとPIC基板と機械を実際に接続して機械の入出力情報を画面に吸い上げて動作を行います。

  機械の押し釦スイッチやリミットスイッチが、そのまま連枝のデバック画面に入力されプログラミング通りの処理を行い出力に反映し、機械に動作を指令します。

◎デバッグには、それぞれＰＩＣに対応するデバッガ（別売り）が必要です（自作も可能です）。

  PICマイコンの接続

プログラムローダーで書き込んだPICをデバッガーに差し込みます。これをシーケンス基板のPICの位置に差込ます。このとき差込の方向に注意をしてください。

秋月のPICライター

注意：何も書き込みされていないPICの場合デバッガーで直接書き込むことができません。そのために始めにPICライターでプログラムを書き込んで置く必要があります。

＊PIC対応ピンに関してはCPUヘルプのＰＩＣマイコンを参考にしてください。

デバッグ用ファイルを作成する

  回路デバッグをするには専用のデバッガ（別売り）が必要です。

  デバッグにはデバッグ用のファイルを作成する必要があります。

  1. 回路を作成したらCPU設定でCPUを選びます。選んだCPUの入出力の番号に間違いがないか確かめます。

  2. 回路コンパイルで動作確認用のSEQファイルを作ります。

  3. SEQファイルで動作でシミュレーションします。

  4. シミュレーションがOKならビルドメニューのSEQ・DBＸ変換をクリックします。回路に異常がなければASMファイルを経てHEXファイルを作成します（通常のファイル名に最後にXがついたもの）。デバッグにはこの*x.HEXファイルを使用します

  5. 最初の１回だけ、通常のロムライターで*x.HEXファイルを書き込みます

  6. デバッガーにROMを装着します。

  7. ＜ＣＰＵ設定＞で[ＣＯＭポート]を、パソコンの実値に合わせます。

  8. オン・ボードROM書きでデバッガーに装着したROMに書き込みます。

SEQ・HEX変換とSEQ・DBＸ変換の違い

  1. SEQ・HEX変換はROMライターでROMに書き込みます。この場合はデバッガーで外部とコンピュータとの通信ができません。そのまま基板に差し込んで使用します。ファイルネームの末尾にxは付きません。

  2. SEQ・DBＸ変換はデバッガーを使用して外部とコンピュータの通信ができます。デバックが終われば、１、に戻ってSEQ・HEX変換した*.HEXﾌｧｲﾙをＣＰＵに書き込み、基板に差し込んで使用します。

デバッグの仕方

  ◎ＲＳ２３２Ｃの接続

デバッガのＤサブ９ピンとパソコンを接続し、４０ピンプローブでＰＩＣボードとデバッガを接続します。。

パソコン上の「連枝」の画面によりオン･ボード書き込みとデバッグができます。

PIC16F877、PIC18F452のマイコ基板ンを接続します。連枝の動作画面にあるアイコン [image] をクリックします。

「ターゲット側の電源が入っていないか、通信が成り立っていません！！」と警告がでるとコンピュータとデバッガーとの通信が成り立っていませんので接続を確かめて、電源を入れてください。

もう1度 [image] をクリックすると開くのダイアログボックスが開き*x.SEQファイルを選んでください。

デバッグ画面。赤の四角で囲まれているのが導通した部分です。

押釦スイッチやリミットスイッチのON/OFFは外部で行います。X11とX16が外部からONされたところ

回路の訂正

  1. 回路の訂正は [image] をクリックして回路作成を呼びだします。回路は２重化されますのでデバッグ画面を終了して、回路作成だけにします。

  2. 回路を訂正します。

  3. 回路コンパイルをしてSEQファイルを作成します。

  4. 動作確認を行います。

  5. SEQ・DBG変換で*x.HEXファイルを作成します。

  6. オン・ボードROM書きでROMに書き込みます。

デバッガーで動作確認が完了したらデバッガーからROMを取り出して、普通のSEQ・HEX変換を実行し末尾にXのつかない＊．ＨＥＸファイルを作成して、ＲＯＭライターでＲＯＭに書きプリント基板に装着します。

ＰＩＣの通常の書き込みについては、「連枝」では基本的に責任の範囲外で、他社ロムライターの使用をお願いしています。

  ◎ＰＩＣ基板上のＲＳ２３２Ｃ回路は以下のようになり、以下の回路がパソコンのコネクターとストレートコネクターで接続されます。

（コネクタの７，８ピンとの接続は不要です。ＭＡＸ２３２の１１，１２番ピンも未接続で可です）。

   ＵＳＢシリアル変換器での通信


MEWTOCOL対応タッチパネル

  ＰＩＣ１８Ｆ４５２（４５８）　　１８Ｆ４５２５（８５）　　1８Ｆ４５２０  　１８Ｆ４５Ｋ２０　　１８Ｆ４６Ｋ２２ 　　 ＰＩＣ１８Ｆ２５２（２５８）　　１８Ｆ２５２５（２５８５）　　1８Ｆ２５２０   　　１８Ｆ２５Ｋ２０　　１８Ｆ２６Ｋ２２

「連枝」（れんり）は別売りソフトで、パナソニックのタッチパネルに対応しています。

ＰＩＣではＰＩＣ１８Ｆ４５２（２５２）のシリーズににのみ摘要され、ＲＣ７（ＲＸ）、ＲＣ６（ＴＸ）を使用します。

通常はＭＡＸ２３２を外付けして、タッチパネルのＳＤ、ＲＤ側と下図のようにクロスすなるように接続します。

ＰＩＣ側　ＲＸ　－　ＳＤ　タッチパネル側

          ＴＸ　－　ＲＤ

パナソニックのFPシリーズのＰＬＣのの通信プロトコルはMEWTOCOL通信というものです。

  ＭＥＷＴＯＣＯＬ通信は下図のように、コマンドに対するレスポンスは常に一方通行で、表示システム側からＰＬＣ（シーケンサ）に現状の接点（や部品）の状態を質問するか、表示システム側からＰＬＣに接点（や部品）の状態を設定指示するかで、ＰＬＣ側から質問したり、指示することは全くありません。

  １図目はパソコンとＰＬＣの応答を表わし、２図目はタッチパネルとＰＬＣの役目を持つワンチップマイコンとの応答を表わしています。

  通常の市販タッチパネルとＰＬＣの組み合わせは、２図目上部のタッチパネルと、１図目下部のプログラムコントローラ（ＰＬＣ）の組み合わせを使用していることになります。

ＭＥＷＴＯＣＯＬ規格では

下の表１の接点群を、タッチパネル側とＰＬＣ側で共有し、タッチパネルに表示される接点の内容のＰＬＣ側への質問と、タッチパネル側から変化した接点のＰＬＣ側への指示を行います。

すべてタッチパネル側からＰＬＣ側へ質問と指示を行い、ＰＬＣ側からタッチパネル側への質問や指示はありません。

（タッチパネルからの通信はすべて画面構成に従って自動的に行われます）。

ユーザーは共有する接点群をタッチパネル側で設定し、その接点群を取り込んだ回路をＰＬＣ側で構成してコンパイルすれば、制御をスタートして、タッチパネルからの質問に答えながら、機械コントロールを継続します。

アドレス

アドレスは「連枝」（ＰＩＣ）側ではＥＥＨか０１Ｈの場合受け付けるように設定しています。

ＭＥＷＴＯＣＯＬでは一般的にスルーアドレスの時アドレスをＥＥとします。

入力　パソコン（＝タッチパネル）側からの質問事項は以下の項目です。

    接点

外部入力　　　　　　Ｘ

外部出力　　　　　　Ｙ

内部リレー　　　　　Ｒ

タイマ　　　　　　　　Ｔ

カウンタ　　　　　　　Ｃ

データレジスタ　　ＤＴ

 表１

 リンクリレーＬは使用しません。

  ◎通信プロトコルは、タッチパネル側の属性設定から自動的に作製されるので、ユーザは余り意識する必要は有りません。

  しかし、次のような注意が必要です。

１ | 今回、タッチパネルのために、Ｒ接点をサポートしています００～９Ｆまで使用できます。チャンネル、ビットともにＢＩＮ扱いです。 タッチパネル上の押し釦として使用すれば、画面上のクリックによるシミュレーションも出来て便利です。 Ｒ０～Ｆ Ｒ１０～１Ｆ Ｒ２０～Ｒ２Ｆあたりはタッチパネル側の予約エリアのことが多いので使用できません。 （要エリア確認 パナソニックＧＴＷＩＮの場合本体環境設定の基本設定内） タッチパネルに出力するＹ接点としてチャンネル８，９を利用できます。
２ | タイマＴ、カウンタＣは、パナソニックのタッチパネル側の属性設定の時ＥＶで指定します。Ｔ７はＥＶ７と設定します。
３ | データレジスタはタッチパネル側の属性設定の時ＤＴで指定します。「連枝」側のＤ１はＤＴ１と設定します。 ＤＴ０～ＤＴ２はタッチパネル側の予約エリアのことが多いので使用できません。 （要エリア確認）
４ | Ｖｅｒ．８より、ＰＩＣ１８Ｆ４５２のタイマとカウンタは同一の番号を使用できなくなりました（従来の変換ＬＢではそのまま使用できます）。 ＭＥＷＴＯＣＯＬ仕様にあわせる為です。
５ | タッチパネル側ではＭリレーは使用できません。ＰＬＣの「連枝」側ではその動作のため、タッチパネルと無関係に自由に使用できます。
６ | ボーレートは１９２００固定です。 データ長 ８ビット ＳＴＯＰﾋﾞｯﾄ １ビット パリティ ナシ パナソニックＧＴＷＩＮの場合 ＰＬＣ機種にパナソニックＦＰシリーズを選択します。 （ファイル->ユーティリティ->ＰＬＣ機種変換）

出力　パソコン（＝タッチパネル）側からの設定事項は以下の項目です。

    接点

内部リレー　　　　　Ｒ

データレジスタ　　ＤＴ

  「連枝」では  リンクリレーＬは使用しません。またタイマ（Ｔ）、カウンタ（Ｃ）の設定値の、タッチパネル側からの設定はできませんので、必要の場合、間接的にデータレジスタ（ＤＴ＝Ｄ）等を使用してください。


ＰＩＣタッチパネル

    ＰＩＣ１８Ｆ４５５０  １８Ｆ２５５０   １８Ｆ４５５３　　１８Ｆ２５５３

「連枝」（れんり）はＰＩＣ１８Ｆ４５５０（２５５０）の変換ＬＢによってWINDOWS／タブレットをタッチパネルとして使用できます。

◎大体の手順

  Ａ）パソコン上に「連枝」（れんり）を立ち上げ、＜ＣＰＵ設定＞で、ＰＩＣ１８Ｆ４５５０を選び、

      □ＴＰＡＬ（タッチパネル）にチェックをいれます。

    その右のラジオ釦で、ブートによる書き込みか、

    PICKIT-3等のロムライタによるかを選択します。

    「連枝」（れんり）の回路設計を完了します。

    [コンパイル]し、[ＳＥＱ・ＨＥＸ]変換すると、

  ＤＯＳ窓プロンプトが表示されるので、>LNK と入力します（小文字も可）。

  ◎（例として、ファイル名を　ＫＡＷＡとします ）。

      これによって、KAWA.HEXができ、このHEXファイルを基板上のＰＩＣに書き込みます。

      書き込みには、ＰＩＣＫＩＴ３による方法と、ブートによる方法の２種類があります（後述）。

  Ｂ）パソコン上の「連枝」でタッチパネル画面を設計する。

    「連枝」画面上の４番目のツールバー [image] 　をクリックすると

    「ディフォルト画面を作りますか？」と聞いてくるので[はい」をクリックします。

    次の説明の２つのダイアログＢＯＸでそれぞれ「ＯＫ」を押します。

    次のダイアログＢＯＸで「コピー」を押すと、最も基本的な１ページ目の画面ができます（下図）。

           3図、この画面をそのままタブレットに送ります。

      （大きさ、色、位置のアレンジもできます）。

      ツールバー右端に上のように表示されますので、タッチパネル画面のKAWA.PANとして保存します。

◎　これによって容易にラダーの設計画面に応じたタッチパネル画面を容易に作ることができます。

  Ｃ）タブレット（WINDOWS）上の設定。

  ＵＳＢメモリー等により、\Renri\フォルダー内の [image] TpalRen.exeを

  WINDOWSタブレットの適当な場所にコピーします。

  このコピーの作業は最初の1回だけです。

  Ｄ）タブレットと基板を接続として、動作させる。

  製作したＰＩＣ基板とタブレット（WINDOWS）をＵＳＢコードで接続します。

     TpalRen.exeをのショートカットをディスクトップ上に置き、クリックすると、ダイアログＢＯＸが立ち上げり、

    [新しく開く]をクリックすると使用するタッチパネル画面の選択画面になります。

      先程作ったKAWA.pan選択すると、KAWA.PANの画面が立ち上がります。

  ① ラダー設計をする。（ＰＣ上）

    ラダーの設計は通常の連枝と同じです。

    ラダーにはタッチパネル上の接点を含んで設計することになりますが、

    タッチパネル用接点にはMリレーでなくRリレーを使用します。

    入力　パソコン（＝タッチパネル）側からの質問事項は以下の項目です。

    接点

外部入力　　　　　　Ｘ

外部出力　　　　　　Ｙ

内部リレー　　　　　Ｒ

タイマ　　　　　　　　Ｔ

カウンタ　　　　　　　Ｃ

データレジスタ　　　Ｄ　（スタンダード版では使用不可です）

    出力　パソコン（＝タッチパネル）側からの設定事項は以下の項目です。

    接点

外部入力　　　　　　Ｘ

外部出力　　　　　　Ｙ

内部リレー　　　　　Ｒ

データレジスタ　　　Ｄ　（スタンダード版では使用不可です）

  ◎通信プロトコルは、タッチパネル側の属性設定から自動的に作製されるので、ユーザは余り意識する必要は有りません。

  しかし、次のような注意が必要です。

１ | 今回、タッチパネルのために、Ｒ接点をサポートしています００～９Ｆまで使用できます。チャンネル、ビットともにＢＩＮ扱いです。 タッチパネル上の押し釦として使用します。 （ＲＡ０～ＲＡＦは背景製作に使用します）。 Ｘ、Ｙ、Ｔ、Ｃ、D に関しては「連枝」（れんり）の仕様と同じです。
２ | X接点は、基板側にとっての入力ですが、タッチパネルにとっても入力になります。X接点は常に、基板側の操作になります。 他のデバイスは、タッチパネルが入力であれば、基板側では出力です。またその逆も（出力であれば入力）もなりたちます。
３ | Ｖｅｒ．８．０より、ＰＩＣ１８Ｆ４５２のタイマとカウンタは同一の番号を使用できなくなりました。
４ | タイマ（Ｔ）、カウンタ（Ｃ）の設定値の、タッチパネル側からの設定はできませんので、必要の場合、間接的にデータレジスタ（Ｄ）等を使用してください（スタンダード版では不可で、基板側での設定が必要になります）。
５ | タッチパネル側ではＭリレーは使用できません。 「連枝」の基板側ではその動作のため、タッチパネルと無関係にＭリレーを自由に使用できます。

  ② タッチパネルの画面を製作する。（ＰＣ上）

タッチパネル画面を立ち上げます。

タッチパネル設定画面を立ち上げます。これにより新しい部品を加えたり、

選択した部品の形状、色、ラベル等を設定します。

１ページ以降の全ページをカスケードで表示します。

選択した各部品の位置や、大きさをそろえます。

選択した各部品のラベルの大きさをそろえます。

このＩＣＯＮをクリックして、画面上の部品をクリックすると、

タッチパネル設定画面中の部品がセレクトされます。

背景画面の色を設定します。

左上のタテ並びの方向キーをクリックし続けると下部の白枠が上下し、タブレット画面にあわせる目安になります。

タッチパネルとの通信に使用します。現在不使用です（取りあえず、他のICONのオフに使用しましょう）。

ツールＢＡＲ上の他のＩＣＯＮをクリックしこのＩＣＯＮをクリックすると、そのＩＣＯＮの説明が出ます。

左側のアップダウン・コントローラで設定した数のページを右側に表示します。

最大ページ数を上欄のアップダウン・コントローラで設定します。

現在アクティブのページをコピーし、新たにアクティブにしたページに全コピーします。

◎画面や部品を拡大、縮小するために、各ページ左上の下図アイコンを使用します。

  ◎新規作成の場合

    １）上部左から4番目のＩＣＯＮをクリックすると、「ディフォルト画面を作りますか？」と聞いてきます。

        「はい」をクリックすると、ラダー回路で使用している全部品の内、０ページにＹ接点とＲ接点が表示されます。

        通常、オフ時の色になっていますが、左クリックするとオン時の色に変化します。

        （最初は形状、色ともにディフォルト値になります）

    ２）最後のダイアログＢＯＸの[コピー]をクリックすると、

        １ページに０ページの全部品がコピーされ、これによって基本的画面ができます。

  ◎画面の改良

    ◇基本的に、トライ＆エラーで、全画面が設定できます。

    １）左から5番目のＩＣＯＮをクリックし、タッチパネル設定の画面（以下設定画面）を立ち上げ、

        各部品の形状、色、ラベルを変更します。

    ２）Ｙ接点とＲ接点以外の新しい部品を加えたい時は、タッチパネル設定画面中の[I/O-TXT]をクリックすると、

        「Ｉ／Ｏ部品表」が表示されるので、その中から選んで[加入]をクリックすると、その部品が設定画面に加えられます。

    ３）設定画面中の[単ＯＫ]で、選択した部品の各値いが確定し、[反映]で、その結果が０ぺージに反映されます。

    ４）０ページに置かれた部品（デバイス）を右クリックし、表示されたデバイス番号を左クリックして、

        右側の１ページ以降の画面の左クリックによって任意の場所にその部品を貼り付けます。

    ５）１ページ以降の画面上にある部品を左クリックで特定し、

        左上のタテ並びの矢印-ＩＣＯＮのクリックにより大きさを変化します。

    ６）一番、右側のＩＣＯＮで最大ページ数を設定し、その左のICONをクリックすることにより、

        アップダウン・コントローラで設定した数のページが、新しく表示されます。

        設定できる、最大のページは２０です。

    ７）Ｄメモリーに関しては、タッチパネルにとって入力になるか出力になるか設定替えをすることができます。

        他の部品は回路図に従って「Ｉ／Ｏ部品表」上で、既にどちらかに決まっています。

  ③ コンパイルし、ＨＥＸ変換しする。（通常の「連枝」の手順と同じです）。

    １）ラダー回路設計と、画面設計を完了した後、＜ビルド＞中の[SEQ.HEX変換]をクリックします。

      （コンパイルの前に[ＣＰＵ設定]で、ＰＩＣ１８Ｆ４５５０（２５５０）を選択してください）。

    ２）「コンパイル中です」が表示され、しばらくすると「ＤＯＳ窓」が表示されます。

    ３）「ＤＯＳ窓」のコマンドラインにｌｎｋ ?（LNK ?）と入力します。

        これによて?_*．ＨＥＸファイルができます。

    ○ＰＩＣ１８Ｆ４５５０の場合、ＭＣＬＲのリセットは外部のみで、内部リセットは使用できません。

  ④ 製作した画面データをタブレットにコピーする。（PC－＞タブレット）

    １）パソコンとWINDOWSタブレットをＵＳＢケーブルで接続します。

    ２）ＰＣ上で③で製作された*.PANファイルを、タブレットの任意の場所にコピーします。

  ⑥ 生成したＨＥＸファイルを基板上に書き込む。（基板上）

    書き込みはブートによる方法と、書き込み器による方法があります。

  ◇書き込み器は秋月のＡＫＩ－ＰＩＣプログラマーやＰＩＣＫＩＴ３が使用できます。

  （他に市販のどんな書き込み器でも構いません）。

    ＰＩＣＫＩＴ３の場合は以下のようになります。

    ⑤ 生成したＨＥＸファイルを基板上に書き込む（基板上）

      （書き込み器は秋月のＡＫＩ－ＰＩＣプログラマーやＰＩＣＫＩＴ３が使用できます。）

    ◇書き込み器は何でも構いませんが、ＰＩＣＫＩＴ３の場合は以下のようになります。

    １）ＰＩＣＫＩＴ３を接続した基板の電源をいれます。

    ２）ＭＰＬＡＢを立ち上げる。

    ３）＜Configureの＞ところのSelect DeviceをクリックしＣＰＵを選びます。

    ４）＜Programmer＞のところのSelect ProgrammerをクリックしＰＩＣｋｉｔ３を選びます。

    ５）＜File＞メニュー中のImportをクリックして、「連枝」で形成した*.HEXファイルを選んで、Importします。

        *.HEXファイルの名前は、④で任意に作成したファイル名になります。

    ６）＜Programmer＞のところのProgramをクリックします。

      ＰＩＣＫＩＴ３の接続回路については、このページの真中辺に詳細されています。

  ◇ブートによる場合は以下のようになります。

    １）最初の一回だけ、ブート用のプログラムを書き込み器で書く必要があります。

        \Renri\PIC\apk\中のａｋｉ２５５０ｂｔｌｄ．ｈｅｘ（秋月電子提供）を通常のロムライタ

      （PICKIT３を含む）でＰＩＣ１８Ｆ４５５０（２５５０）に書き込みます。

      ＲＣ６ピンにブート書き込み（オン）と通常ラン（オフ）との切り替えＳＷをつけます。

      ＲＣ６をブート側にして、パソコンとUSBで接続すると、ＲＣ０のＬＥＤが点滅します。

      （２図参照）

    ２）\Renri\PIC\apk\中のHIDBootLoader.exeのショートカットを作り、

      それをパソコンの適当な場所に置き、クリックして画面を立ち上げ、

      切り替えＳＷをオン（ＧＮＤ側）にします。

      註）立ち上がりの度に?正しくインストールされませんでした?という、警告が出ますが

          無視します。

  [ Open Hex File ]で④で作成した＊．ｈｅｘファイルを読み込み、

    [ Prigram/Verify ] で書き込むと上の画面の表示になり、書き込みが成功します。

    通常ランさせるために切り替えＳＷをオフにして、再立上げするかリセットします。

  ○PIC18F4550の場合,MCLRのリセットは外部のみで、内部リセットは使用できません。

  ◎拡張機能はタブレット接続の場合は不可です。

  ⑥ ＰＩＣ１８Ｆ４５５０のＵＳＢ基板とタブレットをＵＳＢコネクターで接続する。

  タブレットにコピーしたMetaREN.exeを立ち上げ、動作させたいタッチ画面ファイル

  （PANファイル）を立ち上げます（前ページ参照）。

  前回、立ち上げたファイルは記憶され、再立上げで再表示されます。

  ○ 次にＰＩＣ基板とタブレットをＵＳＢで繋いで、COMPORT-No.をあわせます。

  WINDOWSにおけるＵＳＢ通信は、仮想シリアル通信であるＣＤＣを使用しているため、

  デバイスマネージャーに表れる「ポート(COMとLPT)」のUSB Communications Port(COM?)

  の括弧内のNo.ににCOMPORT-No.を合わせる必要があります。

   メニュー中の＜ファイル＞－＞[COM_PORT]をクリックすると１図の画面が表示されます。

  ここで、[一覧]をクリックすると、その右の２図の画面が表示されます。

  この[一覧]の画面のうち（ＣＯＭ１）以外の次のＣＯＭ番号（通常は =3）を

  1図の画面の右上部で設定します。

  [摘要]をクリックすると、?通信不可?の表示が?通信可?に変わり、通信＆制御を開始します。

  ◎これで、タッチパネルから基板のＩ／Ｏを制御し、動作の結果を表示することができます。

  デバイスマネージャーについては＜デバイスマネージャーの表示＞で検索して、

  手持ちのＰＣのO/S上の操作方法に従ってください。

  註）WINDOWS・タブレットでは、ワンタッチは左クリックのワンタッチ、長押しは右クリックと解釈しますので、

    手動動作などで、実際に長押しが必要な押し釦はオルタネートに設定してオン/オフしてください。

  ⑦ タッチパネル画面の説明

       < 　>　　　　　２つのﾍﾟｰｼﾞの画面を、往復させます。

        １　　　　　　１ページを表示します。

        ２、３，４　　それぞれ各ページを表示します。

        >> 　　　　　　次のページに移行します（１０ページまで）。

        ２/３　　　　　画面を２／３サイズにします。

        TITLE　　　　　タイトルを上部に表示します。

        Ｉ/Ｏ　　　　　下図のように、ＣＰＵのＩ/Ｏの現状を色の変化で表示します。

  （途中、省略しています）。

  ⑧ＰＩＣ基板側

     ＵＳＢコネクタを搭載した、ブートローダ用ＰＩＣ基板の基本回路は以下のようです。

    「連枝」でタッチパネルに対応するＣＰＵは、ＰＩＣ１８Ｆ４５５０（２５５０）、４５５３（２５５３）です。


概要

    ＰＩＣ１６Ｆ８７７（６）　　ＰＩＣ１６Ｆ８８７（６）

概要

  ＰＩＣ１６Ｆ８７７は４０ピンのＰＩＣ１６Ｆ８７７の変換ライブラリーを使用し、ＰＩＣ１６Ｆ８８７はＰＩＣ１６Ｆ８８７の変換ライブラリーを使用して、基本命令によるシーケンス動作（Ｓ版）と、１６ビットの応用命令（Ｐ版）をＣＰＵに実行させることが出来ます。

（８７７と８７６（８８７と８８６）はＩ／Ｏ数がすくない（ＲＤ、ＲＥポートがない）以外は、ＲＯＭ，ＲＡＭ数等ソフト的には全く等しいものです。　各々４０ピン用のＰＩＣ１６Ｆ８７７の変換ＬＢか、ＰＩＣ１６Ｆ８８７の変換ＬＢを使用します）。

ＰＩＣ１６Ｆ８７７の基本仕様

 ＲＯＭ容量　　８Ｋワード（１４ｂｉｔ／１ワード）

  ピン数　　 ４０ピン

      Ｉ／Ｏ数　　計３３ピン（全ピンＩＮ／ＯＵＴ任意に設定可能）

  使用可能リレー番号

            Ｘ、Ｙリレ－番号

入出力リレー　 ビット番号　　　　対応ピックＰＩＮ名

      入出力リレー　 ビット番号　　　　対応ピックＰＩＮ名

          ？００　～　？０５　（　ＲＡ０　～　ＲＡ５　）

          ？１０　～　？１７　（　ＲＢ０　～　ＲＢ７　）

          ？２０　～　？２７　（　ＲＣ０　～　ＲＣ５　）

          ？３０　～　？３７　（　ＲＤ０　～　ＲＤ７　）

          ？４０　～　？４２　（　ＲＥ０　～　ＲＥ２　）

                        合計　　　　３３ ピン

註）？にはＸか、Ｙが入ります。

  ＰＩＣ１６Ｆ８７６の場合、ＲＤポート、ＲＥポートがないため使用可能ピン数が減ります。

              合計　　　　２２ ピン

註）ＲＡ４は例外的にオープンコレクターピンになっており、それによる吸い込み出力となり、入力に使用する場合はプルアップ抵抗が必要になります。

ＰＩＣ１６Ｆ８８７の基本仕様

ＲＯＭ容量　　８Ｋワード（１４ｂｉｔ／１ワード）

  ピン数　　４０ピン

      Ｉ／Ｏ数　　計３６ピン（３５ピンはＩＮ／ＯＵＴ任意に設定可能　ＰＩＮ１は入力のみ）

      ＭＣＬＲ、と外付け発振子をつなぐＯＳＣ１，ＯＳＣ２ピンをＩ／Ｏピンに使用できます。

      下図はそのすべてをＩ／Ｏに使用した場合です。ＰＩＣ１６Ｆ８８６の基本仕様

註）ＰＩＣ１６Ｆ８８７はＭＣＬＲピンを入力（Ｉ）ピンに、ＯＳＣ１、ＯＳＣ２ピンを入出力（Ｉ／Ｏ）ピンに使用できます。

  使用可能リレー番号

            Ｘ、Ｙリレ－番号

入出力リレー　 ビット番号　　　　対応ピックＰＩＮ名

      入出力リレー　 ビット番号　　　　対応ピックＰＩＮ名

          ？００　～　？０７　（　ＲＡ０　～　ＲＡ７　）

          ？１０　～　？１７　（　ＲＢ０　～　ＲＢ７　）

          ？２０　～　？２７　（　ＲＣ０　～　ＲＣ５　）

          ？３０　～　？３７　（　ＲＤ０　～　ＲＤ７　）

          ？４０　～　？４２　（　ＲＥ０　～　ＲＥ３　）

                        合計　　　　３６ ピン

註）？にはＸか、Ｙが入ります。

  ＰＩＣ１６Ｆ８８６の場合、ＲＤポートがなく、ＲＥポートがＲＥ３のみになるため使用可能ピン数が減ります。

              合計　　　　２５ ピン

ＰＩＣのピン呼称及びクロック説明
ＶＤＤ | ５Ｖ電源
ＶＳＳ | ０Ｖ（ＧＮＤ）電源
ＭＣＬＲ | リセットピン（０でリセットのため、常時プルアップ）
ＯＳＣ１ | ＰＩＣ１６Ｆ８７７水晶発振子（２０ＭＨｚ）接続 ＰＩＣ１６Ｆ８８７は内蔵の場合８ＭＨｚ固定 註）＜ＣＰＵ設定＞中の可変クロックは外付けにする場合のみに摘要され 内蔵の場合はディフォルト値のみになります。
ＯＳＣ２
各ピンが入力になるか、出力になるかは回路上の設定番号をＸで始めるか、Ｙで始めるかで任意に選択できます。

最大定格
全ピン吐き出し電流合計 | ２５０ｍＡ
全ピン吐き出し電流合計 | ３００ｍＡ
各ポート合計 | ２００ｍＡ
各Ｉ／Ｏピン吸込み電流 | ２５ｍＡ
各Ｉ／Ｏピン吹き出し電流 | ２５ｍＡ
ＲＯＭ容量 | ８Ｋワード

註）ＥＥＰＲＯＭのため、電気的にロム・ライター上で消去＆書き込みができます。

データ用ＥＥＰＲＯＭ内蔵のため、保持リレーの内容の電源断後の保持が可能になります。

註）正確な値いはマイクロチップ社のマニュアルを優先としますのでそちらを参照して下さい。

特長

  1. ＶＳＳ電流が各ピン合計電流より小さいため、出力増幅用のトランジスタ・アレーを使用した方が無難です。

  2. ＦＬＡＳＨメモリーのため、上書きでプログラムの変更が可能で、紫外線によるイレーザーで消去する必要がありません。

  3. データ用ＥＥＰＲＯＭを内蔵のため、保持リレーの内容保存には外付けのＥＥＰＲＯＭは必要ありません。

  4. ＰＩＣ１６Ｆ８７６に基本的に必要な外付け部品は、２０ＭＨＺの水晶発信子と、２つの２０ピコ・コンデンサーのみです。２～２０ＭＨｚの設定が可能ですが、２０MHｚ以外では。シリアル通信は動作しません。Ｄ／Ａコンバータの出力周波数も変わってきます。少し精度は落ちますが、セラロックはＭａｘ１６Ｍｈｚまでが使用できます。

  5. ＰＩＣ１６Ｆ８８６は水晶を外付けする場合８ＭＨｚを使用します。内蔵発振周波数は８ＭＨｚです。

実行速度

実行速度は相当に早いはずですが、正確には測定していません。２０ＭＨＺの発振の場合、ＬＤ命令で、０．８マイクロ、ＯＲ、ＡＮＤ命令で０．４マイクロ、それぞれ正確に実行時間がかかります。

  チャッタリング防止

「連枝」上の《ＣＰＵ設定》でチャッタリング防止を選択すると、入力取込みに一定間隔を置くようになり、チャッタリングをある程度防止できます。

チャッタリング防止

「連枝」上の《ＣＰＵ設定》でチャッタリング防止を選択すると、高速タイマＴ２０１を使用し、１０ｍｓごとに入力の取り込みを行います。この入力の取り込み間隔はD8009で固定値として設定変更可能です。

また、入力ピンごとでチャッタリング防止の有効無効を指定できます。D8010:PORTA,D8011:PORTB,D8012:PORTC,D8013:PORTD,D8014:PORTE ビットＯＮでチャッタ防止対象となります。

チャッタ防止対象とチャッタ防止非対象それぞれで信号の論理を反転させることができます。M8010のコイルを配置すると、チャッタ非対象の論理反転。M8011のコイルでチャッタ対象を論理反転できます。

入力ピン

各ピンを入力として使用するとき、内部に弱いプルアップをもっているポートＢ（１０～１７）以外は、４．７Ｋ～２０Ｋオームの抵抗で、プルアップする必要が有ります。

ＲＡ４はオープン・ドレインの為、入力に使用するには、プルアップ抵抗が必要です。

出力ピン

各ピンを出力として使用するとき、１ピン当り２５ｍＡ（吹込み、吐出し共）を出力できますが、ＣＰＵトータルでは、３００ｍＡが最大出力になるため、６２００４等のトランジスタ・アレーにより、リレー等を駆動することをおすすめします。

ＲＡ４はオープン・ドレインの為、引き込み出力のみです。

対応版

ワンチップ・マイコンのＰＩＣ・１６Ｆ８７７（８８７）であるため、次に述べるようにハードから来る制約を受けることになります。

  1. ＣＰＵのＲＡＭ容量が比較的小さいため使用可能なリレーやタイマ、カウンタの数が制約されます。

  2. ＣＰＵの持つＩ／Ｏ（入出力）のピン数により、入出力のリレー数に制約があります。

回路上のアドバイス

  ＶＤＤ、ＶＳＳピンの直近のパスコン（１０４）は必須です。

  ＰＩＣ１６Ｆ８７７（８８７）の場合、両側にＶＤＤ、ＶＳＳピンがありますが、両側にパスコン（１０４）を付けるのがベターです。


Ｉ／Ｏ・拡張

    ＰＩＣ１６Ｆ８７７（６）　　ＰＩＣ１６Ｆ８８７（６）

◎拡張

  拡張用素子を使用する場合　同一ＰＩＣ素子を使用する場合

  拡張の接続（ＰＩＣ１６Ｆ８８７も同じです）

接続抵抗の抵抗値は０が原則です。

ＲＣ？に関しては５０ＫΩ程度のプルダウン抵抗が有効な場合があります（マイクロチップ社マニュアルによる）。

主ＣＰＵ（ＰＩＣ）側では、どのピンを入力に使用するか、出力に使用するかピン毎に任意です。

  入出力リレー　 ビット番号　　　　対応ピックＰＩＮ名

      ？００　～　？０４　　　　　　（　１－ＲＡ０　～　ＲＡ４　）

      ？１０　～　？１７　　　　　　　（　１－ＲＢ０　～　ＲＢ７　）

      ？２０、２１、２２　～　？２６、２７　（　１－ＲＣ０、１、２　～　ＲＣ６、７　）

      ？３０　～　？３６　　　　　　　（　１－ＲＤ０　～　ＲＤ７　）

      ？４０　～　？４２　　　　　　　（　１－ＲＥ０　～　ＲＥ２　）

      ？２３～？２５（ＲＣ３～ＲＣ５）は拡張用接続に使用でＩ／Ｏには不可

      （拡張側のピン番号）

      ？０８　～　？０Ｃ　　　　　　　（　２－ＲＡ０　～　ＲＡ４　）

      ？１８　～　？１Ｆ　　　　　　　（　２－ＲＢ０　～　ＲＢ７　）

      ？２８、２９、２Ａ　～　？２Ｅ、２Ｆ　（　２－ＲＣ０、１、２　～　ＲＣ６、７　）

      ？３８　～　？３Ｆ　　　　　　　（　２－ＲＤ０　～　ＲＤ７　）

      ？４８　～　？４Ａ　　　　　　　（　２－ＲＥ０　～　ＲＥ２　）

    ？２３～？２５（ＲＣ３～ＲＣ５）は拡張用接続に使用でＩ／Ｏには不可

        合計　　　５８ ピン

註）？にはＸか、Ｙが入ります。

註）１－はメイン、２－は拡張側のＩ／Ｏ番号

拡張側でもどのピンを入力に使用するか、出力に使用するかは、ピン毎に任意です。

拡張の使用は《ＣＰＵ設定》で設定しますが、拡張を設定しているのに拡張側を接続していないと、相互通信待ちで、ハングアップする可能性があります。

メイン側と拡張側の、（ＲＣ３ ～ＲＣ５）と、（ＲＡ５）は相互の通信に使用されるため、Ｉ／Ｏとして全く使用できなくなります。

拡張方法は、図に従って下さい。ＲＣ４とＲＣ５をクロスに、ＲＣ３，ＲＡ５は同一番号どうしを接続して下さい。

マスターＣＰＵと拡張ＣＰＵの距離は１５ＣＭ以内にして下さい。

拡張側には必ず￥７Ｍ中のＥＸＰＩ７７５．ＨＥＸを書き込んで下さい。

拡張側はマスター側とＩ／Ｏのやり取りの動作のみをします。

註）リセットをかける場合はメイン側と拡張側同時にリセットをかける必要があります。

註）拡張方として以下のＭＣＰ２３００８による方法を推奨いたします。

エクスパンダー素子（ＭＣＰ２３００８）による拡張

  Ｉ２Ｃ通信によるため、ＲＣ３（ＳCＬ）、ＲＣ４（ＳＤＡ）の２ピンのみを拡張用に使用します。

  マイクロチップ社のＥＸＰＡＮＤＥＲ用素子ＭＣＰ２３００８の１０番ピン～１７番ピンを拡張側の入出力として使用できます。

主ＣＰＵ（ＰＩＣ）側では、どのピンを入力に使用するか、出力に使用するかピン毎に任意です。

  入出力リレー　 ビット番号　　　　対応ピックＰＩＮ名

      ？００　～　？０４　　　　　　　（　１－ＲＡ０　～　ＲＡ４　）

      ？１０　～　？１７　　　　　　　（　１－ＲＢ０　～　ＲＢ７　）

      ？２０、２１、２２　～　？２５、２６、２７　（　１－ＲＣ０、１、２　～　ＲＣ５、６、７　）

      ？２３、２４（ＲＣ３、ＲＣ４）は拡張用接続に使用でＩ／Ｏには不可

      （拡張側のピン番号）

      ？０８　～　？０Ｆ　　　　　　　（　２・１－ＧＰ０　～　ＧＰ７　）　：ＭＣＰ２３００８×１

      ？１８　～　？１Ｆ　　　　　　　（　２・２－ＧＰ０　～　ＧＰ７　）　：ＭＣＰ２３００８×１

      ？２８　～　？２Ｆ　　　　　　　（　２・３－ＧＰ０　～　ＧＰ７　）　：ＭＣＰ２３００８×１

      ？３８　～　？３Ｆ　　　　　　　（　２・４－ＧＰ０　～　ＧＰ７　）　：ＭＣＰ２３００８×１

      ？４８　～　？４Ｆ　　　　　　　（　２・５－ＧＰ０　～　ＧＰ７　）　：ＭＣＰ２３００８×１

        合計　　ＭＣＰ２３００８を５つ使用した場合、８０ ピン

                  ＭＣＰ２３００８の使用数は任意です。

      （ＭＣＰ２３０１７による拡張側のピン番号）

      ？５０　～　？５７　　　　　　　（　３・１－ＧＰＡ０　～　ＧＰＡ７　）　：ＭＣＰ２３０１７×１

      ？５８　～　？５Ｆ　　　　　　　（　３・１－ＧＰＢ０　～　ＧＰＢ７　）

      ？６０　～　？６７　　　　　　　（　３・２－ＧＰＡ０　～　ＧＰＡ７　）　：ＭＣＰ２３０１７×１

      ？６８　～　？６Ｆ　　　　　　　（　３・２－ＧＰＢ０　～　ＧＰＢ７　）

      ？７０　～　？７７　　　　　　　（　３・３－ＧＰＡ０　～　ＧＰＡ７　）　：ＭＣＰ２３０１７×１

      ？７８　～　？７Ｆ　　　　　　　（　３・３－ＧＰＢ０　～　ＧＰＢ７　）

        合計　　ＭＣＰ２３０１７を３つ使用した場合、さらに４８ピンのＩ／Ｏピンがが加わります

                  ＭＣＰ２３０１７の使用数は任意です。

註１）？にはＸか、Ｙが入ります。

註２）１－はメイン、２・？－は拡張側のＩ／Ｏ番号

  回路例としてはＰＩＣ１６Ｆ８７７の場合のものになっていますが、使用ピンはコンパチです。

  エクスパンダ使用のＭＣＰ２３００８ＭＣＰ２３０１７拡張回路例

      アドレス設定は正論理です。

    拡張用素子のアドレス設定用ＤＩＰ－ＳＷを除いて、他のＤＩＰ-ＳＷやＬＥＤはＩ／Ｏのテストのためですので無視して下さい。


デバイス範囲3

    ＰＩＣ・１６Ｆ８７７（６）、８８７（６）

デバイスの範囲

  Ｍリレ－（補助リレー）

    Ｍ０　～Ｍ４３１

    合計　４３２

  1. 補助リレーとしての出力は一個当り、箇所のみに限定されます。

  2. ラッチリレ－等、種リレ－が使用されるとその分、の数が減少します。

  3. ラダー上では同一接点を何回でも使用できます。

  4. 拡張接点を使用すると、Ｍ０～Ｍ３８３になります。

特殊補助リレー

機能 | デバイス
0.1 秒クロックパルス | Ｍ９０３０
0.2 秒クロックパルス | Ｍ９０３１
1 秒クロックパルス | Ｍ９０３２
常時ＯＮ リレー | Ｍ９０３６
常時ＯＦＦリレー | Ｍ９０３７
立上り後1スキャンのみONリレー | Ｍ９０３８
立上り１クール後1スキャンのみONリレー | Ｍ９０３９
エラー受信きたフラグ | Ｍ９０４０
正常受信きたフラグ | Ｍ９０４１
０フラッグ | Ｍ９０１３

  保持リレー　（Ｐ版のみ扱えます）

    Ｌ０　～Ｌ４７

    合計　４８

  これを使用すると、Ｍ（補助）リレーの使用可能番号が減少します。

変化があると、保持リレーは１６Ｆ８７６内部のＥＥＰＲＯＭデ－タメモリ－に書き込まれます。

電源断後にもそのＯＮ／ＯＦＦ結果をキープし、電源再立上げ時にキープした結果を読み込みます。

書き込みに２０ｍＳ以上かかることがあります。回路の体内時計がくるいますので、頻ぱんに変化する入出力は避けて下さい。

註）ＭＯＶ命令で桁指定する場合、必ずＫ４Ｌ？が指定され、４桁１６ビットが使用されます。

註）Ｌ０はロット不良の可能性があり、Ｌ１からの使用をお薦めします。

  ステップリレー

      Ｊ００００　～Ｊ０７９９

① ３，４桁目がチャンネルを表わし、１，２桁目がステップ番号を表わします。

② 同一のチャンネル内で一つのステップリレーのみがオンになっていす。

つまりあるステップリレーが最後にオンになれば、他の同一チャンネル内のリレーは自動的にオフになります。

③ チャンネルが違うステップリレーは同時にオンが可能です。

このことはチャンネルを替えれば、各々のチャンネルで個別のステップ動作による並列動作が可能になることを意味しています。

註）ステップリレーは電源断後に前値は失われ、キープされません

  タイマ、ウンター

  両方とも０番から始まり、計で７４個使用できます。タイマとカウンタは別のメモリーを使用するためタイマとカウンタ番号は重複してもかまいません。タイマとカウンタ番号はそれぞれ詰めて使用するのが効率的です。

 タイマ－番号２００、２０１は１０ｍＳ単位の高速タイマ（最大値２．５５Ｓ、直値指定のみ）です（他のタイマ－の個数とは無関係です）。

  注意

  1. タイマは、単位が１００ｍＳで、２５．５秒（Ｋ２５５）が最大です。カウンタは、２５５（Ｋ２５５）が最大です。

  2. 長時間タイマはタイマとカウンタで構成して下さい。

  3. ステッピングモ－タ駆動ソフト（別売り）を使用すると、タイマ－、カウンタ－の合計数が７４個になります。

  4. タイマ、カウンタの入力は直値か、Ｄメモリー値によります。

  データ・メモリー

    Ｄ０　～Ｄ４０

  注意

  1. シリアル通信を使用するか、デバッグ・モ－ドで使用すると、Ｄ３０までとなります。

  2. ＨＥＸに変換する場合デバイスの範囲以外やＸ、ＹまたはＴ、Ｃの重なり、使用制限オーバーなどがありますとエラーとなり変換されませんので注意してください。

◎間接アドレス

  ＰＩＣ１６Ｆ８７７（６）、Ｆ８８７（６）では、間接アドレスによる間接アクセスは不可です。

  ◎システム初期設定デバイス

  プログラムではなく、初期設定として取り込むための特殊デバイスです。

  設定値は、システム設定として利用され、実行時には変更できません。

  また、ＨＥＸファイル変換時には、ラダー部は設定部分を除いて読み飛ばします。

M8000:システム初期設定ブロックの開始を表す接点です。

M8010:チャッタ非対象を論理反転させるリレーです。配置で反転します。

M8011:チャッタ対象を論理反転させるリレーです。配置で反転します。

D8009:チャッタサンプリング間隔を指定するデータレジスタです。ms単位で指定します。

D8010:ポートＡのチャッタ防止の対象を指定します。ビットＯＮでチャッタ対象指定となります。

D8011:ポートＢのチャッタ防止の対象を指定します。ビットＯＮでチャッタ対象指定となります。

D8012:ポートＣのチャッタ防止の対象を指定します。ビットＯＮでチャッタ対象指定となります。

D8013:ポートＤのチャッタ防止の対象を指定します。ビットＯＮでチャッタ対象指定となります。

D8014:ポートＥのチャッタ防止の対象を指定します。ビットＯＮでチャッタ対象指定となります。


命令

    ＰＩＣ・１６Ｆ８７７（６）、１６Ｆ８８７（６）

シーケンス基本命令

名称 | 命令記号
接点命令 | ＬＤ、ＬＤＩ、ＡＮＤ、ＡＮＩ、ＯＲ、ＯＲＩ
結合命令 | ＡＮＢ、ＯＲＢ
演算結果 | ＭＰＳ、ＭＲＤ、ＭＰＰ
出力命令 | ＯＵＴ（Ｍ、Ｙ）、Ｔ、Ｃ
デバイスのセット、リセット | ＳＥＴ（Ｍ、Ｙ）、ＲＳＴ（Ｍ、Ｙ、Ｃ、Ｔ、Ｄ）
立ち上がり微分、立ち下がり微分 | ＰＬＳ、ＰＬＦ
シフト命令 | ＳＦＴ
終了命令 | ＥＮＤ
継続命令 | －－＞＞、＞＞－－
註）継続命令は－＞＞は、次ぎの行の ＞＞－－のみに継続動作します。

応用命令

  ＰＩＣの応用命令は１６ビットの範囲内で実行されます。

  ダブルワード命令はサポートしていません。

  Ｋ４Ｍ１６　等の桁指定はＫの値いにかかわらず必ずＫ４即ち１６ビットと見なされます（Ｍ以下の数値は８の倍数としてください）。

算術演算命令

名称 | 命令記号
BCD4桁加算（１） | ＋＝、＋＝Ｐ
BCD4桁加算（２） | ＋、＋Ｐ
BCD4桁減算（１） | －＝、－＝Ｐ
BCD4桁減算（２） | －、－Ｐ
BCD4桁乗算 | ＊、＊Ｐ 指定先の２ワードに答えが入ります。 答えにＤ１０を指定した場合、Ｄ１１まで２ワード使用します
BCD4桁除算 | ／、／Ｐ 指定先の１ワードに答えが入ります。 余りはその先の１ワードに入ります。 答えにＤ１０を指定した場合、Ｄ１１まで２ワード使用します。
BIN16ビット加算（１） | B＋＝、B＋＝Ｐ
BIN16ビット加算（２） | B＋、B＋Ｐ
BIN16ビット減算（１） | B－＝、B－＝Ｐ
BIN16ビット減算（２） | B－、B－Ｐ
BIN16ビット乗算 | B＊、B＊Ｐ 指定先の２ワード（例、Ｄ１０、Ｄ１１）に答えが入ります。 答えにＤ１０を指定した場合、Ｄ１１まで２ワード使用します。
BIN16ビット除算 | B／、B／Ｐ 指定先の２ワード（例Ｄ１０）に答えが入ります。 余りは１６ﾋﾞｯﾄのみで、その先の1ワード（D１１）に入ります。 つまり、答えにＤ１０を指定した場合、Ｄ１１で２ワード使用します。
16ビットBCDデータインクリメント | ＩＮＣ、ＩＮＣＰ
16ビットBCDデータデクリメント | ＤＥＣ、ＤＥＣＰ

BCD<－>BIN変換命令

BINデータ－>BCD4桁変換 | ＢＣＤ、ＢＣＤＰ
BCD4桁－>BINデータ変換 | ＢＩＮ、ＢＩＮＰ

データ転送命令

16ビットデータ転送 | ＭＯＶ、ＭＯＶＰ
16ビットデータ否定転送 | ＣＭＬ、ＣＭＬＰ
16ビットデータ交換 | ＸＣＨ、ＸＣＨＰ
16ビット２の補数 | ＮＥＧ、ＮＥＧＰ

  データ転送命令の桁指定オペランドの説明

  ①    ＭＯＶ　Ｄ０　Ｋ４Ｍ８

  ②　　ＭＯＶ　Ｄ０　Ｋ４Ｙ２０

とした時、下図の上の転送前Ｓの値は転送後Ｄの各々の下段の①②の表示ビットに入ります。

図中の１／０の値はサンプルです。

  ①　　　　 M23 M22 M21M20M19M18M17M16M15M14M13M12M11M10M9 M8

  ②　　　     Y2F      ～　　　　　　　　　　　　 Y28Y27　　　～                          Y20

この命令が　ＭＯＶ　Ｋ４Ｍ８　Ｄ０　のように逆に第１オペランド側が桁指定の場合、転送前Ｓの側が同じくＭ８～Ｍ２３の間各ビットに割り当てられます。

Ｋ４は４桁の意味で４ビットが１桁ですからＫ４は１６ビットを表わします。ＰＩＣの場合、例外的にＫ？の数字がいくつでもＫ４とみなされ、それに従って動作します。

 ②の場合通常（拡張時）Ｙ２８以降は使用されないので無視され、ラダー的にはＹ２０～Ｙ２７のみ使用されます。

註）Ｋ４Ｍ８のようにＫ４のあとのデバイス（Ｍ、Ｌ等）の数値は０または８の倍数にしてください。

論理演算命令

16ビットデータ論理積（１） | ＷＡＮＤ＝、ＷＡＮＤ＝Ｐ
16ビットデータ論理積（２） | ＷＡＮＤ、ＷＡＮＤＰ
16ビットデータ論理和（１） | ＷＯＲ＝、ＷＯＲ＝Ｐ
16ビットデータ論理和（２） | ＷＯＲ、ＷＯＲＰ
16ビットデータ排他的論理和（１） | ＷＸＯＲ＝、ＷＸＯＲ＝Ｐ
16ビットデータ排他的論理和（２） | ＷＸＯＲ、ＷＸＯＲＰ
16ビットデータ否定排他的論理和（１） | ＷＸＮＲ＝、ＷＸＮＲ＝Ｐ
16ビットデータ否定排他的論理和（２） | ＷＸＮＲ、ＷＸＮＲＰ
デコード | ＤＥＣＯ、ＤＥＣＯＰ（第３オペランドは必ずＫ８とみなされます）

比較演算命令

16ビットデータ比較

＝、＜＞、＞、＜＝、＜、＞＝

ローテーション命令

16ビットデータの右ローテーション（１） | ＲＯＲ、ＲＯＲＰ
16ビットデータの右ローテーション（２） | ＲＣＲ、ＲＣＲＰ
16ビットデータの左ローテーション（１） | ＲＯＬ、ＲＯＬＰ
16ビットデータの左ローテーション（２） | ＲＣＬ、ＲＣＬＰ

シフト命令

16ビットデータnビット右シフト | ＳＦＲ、ＳＦＲＰ
16ビットデータnビット左シフト | ＳＦＬ、ＳＦＬＰ

ジャンプ命令

サブルーチン・コール命令 | ＳＣＡＬＬ（コールの対象サブルーチンは必ずＦＥＮＤのあとＥＮＤの前 に置き、頭に被コールポイントＰを置いて、コールの対象番号をつける）
リターン命令 | ＲＥＴＲＮ（サブルーチンの最後に置く）

ソフトウエア・タイマ

１μＳタイマ | ＭＣ１
１００μＳタイマ | ＭＣ１００

終了命令

全命令終了命令 | ＥＮＤ
１クール終了点命令 | ＦＥＮＤ（この命令以降にサブルーチンとその被コールポイントＰを置く）

註）各応用命令の動作については関数ヘルプを参照してください。

特殊補助リレー

機能 | デバイス
0.1 秒クロックパルス | Ｍ９０３０
0.2 秒クロックパルス | Ｍ９０３１
1 秒クロックパルス | Ｍ９０３２
常時ＯＮ リレー | Ｍ９０３６
常時ＯＦＦリレー | Ｍ９０３７
立上り後1スキャンのみONリレー | Ｍ９０３８
０フラッグ | Ｍ９０１３

微分ポイント数

    ＰＬＳ、ＰＬＦ、Ｔ、Ｃ命令の数の合計と、微分命令の数の合計は３２０個をえることがきません。（上記命令は微分動作を含み、微分ポイントを使用します。）

ステップ数とメモリ

    ＣＰＵ中のＲＯＭ容量により、ラダー（シーケンス回路）のステップ数が制約されます。

    １６Ｆ８７７の容量は８Ｋワードですが、システムに２Ｋ～３Ｋ取られます。

    各命令が使用する合計のバイト数が８Ｋを越えると、アセンブル（機械語変換）時に、エラーになります。

    目安で、１７００ステップぐらいのラダーが構成できるはずです。

○ダイレクト命令

    ＰＩＣ１６Ｆ８７７（６）、Ｆ８８７（６）では、ダイレクトに出力する命令はありません。

    入出力は、すべて、スキャンタイムの最初に一回のみ行われます。


SEG,A/D,D/A,ｼﾘｱﾙ

    ＰＩＣ・１６Ｆ８７７（６）、８８７（６）

特殊命令

ＳＥＧ命令（応用命令に含まれる）

    ＳＥＧ命令は2桁の７セグメント表示をします。

  ＲＣ０－＞ＲＣ１に、各５ｍＳのスキャン出力を出し、

  ＲＢ０～ＲＢ６に1桁目－＞2桁目の７セグメント出力を出します。

        ＳＥＧ　Ｋ１２　Ｋ２Ｙ１０

    ＤＳＥＧ命令は４桁の７セグメント表示をします。　回路ハード図

  ＲＣ０－＞ＲＣ１－＞ＲＣ２－＞ＲＣ３に、各５ｍＳのスキャン出力を出し、

  ＲＢ０～ＲＢ６に1桁目－＞2桁目－＞３桁目－＞４桁目の７セグメント出力を出します。

        ＤＳＥＧ　Ｋ１２３４　Ｋ２Ｙ１０

  ２命令ともに、第一オペランドは、Ｄメモリー等の直値以外も指定できます。

  第２オペランドは無視されますが、結果としてはＲＢポートを使用するので、Ｋ２Ｙ１０と指定しておいてください。

  ＲＢ７や、スキャンに使用されないＲＣポートのピンは他の用途に使用できます。

  7セグメント表示データは下記の表になります。

    ＤＳＥＧＰ命令はゼロサプレスをした結果の４桁の７セグメント表示をします。

  例えば、１２３４は１２３４と表示し、０２３４は２３４と右詰で表示します。

  同じく、００３４Ｈは３４と、０００４は４と右詰で表示します。

    ＳＥＧＰ命令はゼロサプレスをした結果の２桁の７セグメント表示をします。

  例えば、１２は１２と表示し、０２は　２と右詰で表示します。


A/D,D/A

    ＰＩＣ・１６Ｆ８７７（６）、８８７（６）

Ａ／Ｄコンバータ（応用命令に含まれる）

  １６Ｆ８７７（６）は、ＲＡポートのピンをＡ／Ｄコンバート・モードで使用する事ができます。

「連枝」は、それを利用して、合計５チャンネルのＡＤＣＯ（Ａ／Ｄコンバータ）命令を使用できます。

０００～００５（００４を除く）の内の、１ビットを選び、Ａ／Ｄの結果値の、格納先を書き込みます。

下の命令ではＲＡ１への入力が１０ビットでＡ／Ｄ変換されてＤ０に入ります。

例　　　ＡＤＣＯ　Ｘ１　Ｄ０

注意

ＡＤコンバートに１ピンでも使用すればＲＡ０，ＲＡ１，ＲＡ３がＡ／Ｄピン・モードになり、Ｉ／Ｏには使用できなくなります。

  ＲＡ２，ＲＡ５の一方又は両方をＡ／Ｄコンバートとして使用すれば、ＲＡ０，１，２，３，５すべてがＡ／Ｄピン･モードになりますので注意が必要です。

  ＰＩＣ１６Ｆ８７６ではステッピングモータ・コントローラ（別売り）をサポートしています。

１６Ｆ８８６は、ＲＡポートほかにＲＢポートのＲＢ０，１，２，３，４，５が使用できます。

◎合計Ａ／Ｄが１１チャンネルになります。

１６Ｆ８７６と違って全ピンがＡ／ＤにもＩ／Ｏにも使用できます。つまりＡ／Ｄに使用しなければＩ／Ｏピンになります。

註）、Ｄﾒﾓﾘｰ以外にも桁指定（例Ｋ４Ｍ１６）等を設定値として指定できます。

Ｄ／Ａコンバータ（ＰＷＭ変換）（応用命令に含まれる）

  １６Ｆ８７６（８８６）は、ＲＣポートのピンをＰＷＭコンバート・モードで使用する事ができます。

「連枝」は、それを利用して、ＤＡＣＯ（Ｄ／Ａコンバータ）命令を使用できます。

Ｄ／Ａ変換のもとの８ビット(バイナリー）の値いの格納先を第１オペランドとし、結果の出力ピンとして、ＲＣ１、ＲＣ２（Ｙ２１、Ｙ２２）の内の１ビットを選び第２オペランドとして書き込みます。

下の命令ではＤ０（下位８ビット）の値がＡ／Ｄ変換（ＰＷＭ変換）されて、ＲＣ１に出力されます。

例　　　ＤＡＣＯ　Ｄ０　Ｙ２１

註）ＰＷＭの出力は１９．５３Khzの基本パルス内でのＤｕｔｙサイクルになります。Ｄｕｔｙサイクルは8ビット分解能（０～ＦＦ）の指定で決定されます。

註）Ａ／Ｄ、Ｄ／Ａコンバート命令に関しては、変換内容デバイスとしてＤメモリー以外（例、Ｋ４Ｍ０、Ｔ１０ｅｔｃ．）も使用可能です。

    直値の入力も可能ですが、その場合バイナリー値のみのため、頭にＨをつけてください。


液晶表示

    ＰＩＣ・１６Ｆ８７７（６）、８８７（６）

液晶表示 （別売り）

  小型液晶表示器のＳＣ１６０２ＢＳ（１６文字×２）に文字表示する命令があります。

  （コンパチ品に文字表示ができます）。

  註）ＳＣ１６０２ＢＳは、ＬＳＩのＨＤ４４７８０（日立製）のコンパチ品を内蔵するものです。

      同規格であれば、別製品でもかまいません。

  ＬＣＤが接続できるポートは第３オペランドで指定できまが、

  ＲＢポート、ＲＤポートが指定できます。

  Ｋ２Ｙ１０－＞ＲＢポート

  Ｋ２Ｙ３０－＞ＲＤポート

  Ｋ２Ｙ４０－＞拡張用素子ＭＣＰ３２００８（アドレス＝４）

  註）ＭＣＰ３２００８で表示するには（拡張用変換ＬＢ　Ｐ７７－ＥＸＰ－ＬＢが必要です）。

  註）その時、□拡張有り、のチェックは不要です。

  同じく、ＳＣ２００４ＣＳ（２０文字×４）、ＡＣＭ０８０２（８文字×２）も同じ命令で文字表示ができます。

  但し表示バイト数を２１以上に取った時の、２１以降の文字が

  ＬＣＤＨ命令の時、３行目から表示され、

  同じく、ＬＣＤＬ命令の時４行目から表示されます。

  上行・表示命令　ＬＣＤＨ

  例　ＬＣＤＨ　Ｋ１６　Ｄ１８　Ｋ２Ｙ1０

                    |       |         |___ＬＣＤに利用するポートアドレス

                    |       |_____________表示データの先頭Ｄメモリー番号

                    |_____________________表示バイト数

  下行・表示命令　ＬＣＤＬ

  例　ＬＣＤＬ　Ｋ１６　Ｄ１８　Ｋ２Ｙ１０

                    |       |         |___ＬＣＤに利用するポートアドレス

                    |       |_____________表示データの先頭Ｄメモリー番号

                    |_____________________表示バイト数

上記最初の２つのオペランドは先頭文字（Ｋ）以外の値いは任意です。

ＬＣＤ？命令の常時オンは避けて下さい。１００ｍＳ以上に一回くらいの表示をお薦めします。

接接続方法は以下のようです。

●ＰＩＣポートを使用する場合

                           11  12  13   14     4    6     7    8    9    10   5     1      2       3

ＬＣＤコネクタ　       D4  D5  D6   D7    RS   E    D0  D1  D2  D3  RW   VDD  VSS  VLC

ＰＩＣピン　　          R?0 R?1 R?2 R?3  R?4 R?5  G   G    G   G  R?6   5V      G    2～5V

●ＭＣＰ２３００８を使用する場合

                           11  12  13   14     4    6     7    8    9    10   5     1      2       3

ＬＣＤコネクタ　       D4  D5  D6   D7    RS   E    D0  D1  D2  D3  RW   VDD  VSS  VLC

ＭＣＰ２３００８　　 GP0 GP1 GP2 GP3 GP4 GP5  G  G   G   G    G    5V      G    2～5V

註）ＣＰＵからの距離を１０ｃｍ以上にすると、動作が不安定になる場合があります。

    その場合、ＲＳ，Ｅ、ＲＷピンのＣＰＵ直近での１０ＫΩ程度のプルアップが有効です。

Ｒ？７は、入力（のみ）ピンとして使用できます。

MCP23008の、不使用ピンは他用途には使用できません。

ＶＬＣは、照度調整で０～５Ｖを２～１０ＫΩ程度のボリュームで分割し、ボリュームの中点をＶＬＣに直結します。

命令の例として、ＬＣＤＬ　Ｋ１６　Ｄ１８　Ｋ２Ｙ１０　と書きますが、指定できるのはＫ２Ｙ１０によるＲＢポートのみです。

A／Ｄコンバータの結果値等を表示する時は下記命令を使用する必要が有ります。

ＢＣＤＤＡ命令（１６ビット）（ＬＣＤ命令に付属しています）

      ＢＣＤ　→アスキー数字列

BCDDA   Dn     Dm

の意味は以下のようです。

         b15 ----------------------- b0

Dn      　 0000    0000    0000    0000　　　　　　　　0000の0には,0か1が入ります。

        b15-----------b8 b7----------b0

Dm + 0 　　　百の桁　　　　　　　千の桁

Dm + 1 　　　一の桁　　　　　　　十の桁

このことにより、Ｄｎの中の数値は、アスキー値として上位（千の桁）から、Ｄｍの中の下位バイトからの順序で入ります。

これによってＬＣＤＨ（ＬＣＤＬ）命令を使用すれば、自動的に、Ｄｍ+0下位バイトからＤｍ+1の上位バイト向かって、その順で液晶にアスキー値が送られることになります。

註）ＨＥＸ値のＡを入れてもエラーにはならず、アスキーの４１に変換されます。

ニーモニックの場合下記のようになり、Ｍ０がオンすればRA1 のＡ／Ｄ値のＢＣＤ変換された値いがＬＣＤの上側に表示されます。

もし、３，４行目のＢＣＤ変換命令がなければ、ＨＥＸＡ値のまま表示されます。

                                        ; example

        LD M0

        ADCO X01 D8 ; D8 =1EF <- Analogue Value of X01(RA1)PIN

        LD M0

        BCD D8 D9 ; D9 =495

        LD M0

        BCDDA D9 D0 ; D0 =3430 D1 =3539

        LD M0

        LCDH K4 D0 K2Y10 ; Display 0495 on LCD

ＳＵＰ０命令（ＬＣＤ命令に付属しています）

  ＬＣＤ表示のための０サプレス命令で、BCDDA命令とともに使用します。

  ＢＣＤＤＡ命令は、Ｄｍ、Ｄｍ＋１メモリーに以下のようにアスキー値を入れます。

                上位　　　　　　　　　下位

Dm + 0 　　　百の桁　　　　　　　千の桁

Dm + 1 　　　一の桁　　　　　　　十の桁

  この時、このＳＵＰ０命令を使用すると、各桁が０(アスキーで３０ｈ）の場合、これをスペース（アスキーで２０ｈ）に置き換えます。

  ＳＵＰ０　Ｄｍ　Ｋ２

  はＤｍから２ワード分の０サプレスをおこないます。

例えば本来Ｄｍ，Ｄｍ＋１に左側の表示がされるような値いが入っている時

          １２３４　－＞１２３４

          ０２３４　－＞　２３４

          ００３４　－＞　　３４

          ０００４　－＞　　　４

          ００００　－＞　　　０　　のように表示が変わります。

  ＳＵＰ０　Ｄｍ　Ｋ１　　　　の時は、

          １２　－＞１２

          ０２　－＞　２

          ００　－＞　０　　のように表示が変わります。

  Ｋ？の数値は０～１６までの値がとれ、その範囲での０サプレスを行います。


別途命令2

    ＰＩＣ・１６Ｆ８７７（６）、８８７（６）

  ステッピングモータ・コントローラ（別売り）

  連枝は１６Ｆ８７６（８８６）中に、２軸のステッピングモータ・コントローラを内蔵する事ができます。トランジスタ・アレーで１回増幅すれば、直接ステッピングモータ・ドライバを駆動することができます。

１． 動作は１軸あたり１８種類を指定する事ができます。

２． ＳＴＥＰ命令は１軸当たりの動作ピンを任意に選ぶことができ、スピードは３００p/s～５０００p/sまで、選択することができます。

３． 動作ステップ数は、最大８、３００、０００までです。

４． スピードの立上り、立下りは最大ステップ数に応じた台形波で変化します。

５．　動作ステップ数を０にすると、リミットによるオフまで無限走行になります。

６． 回転方向については、別ピンを使用し、別に設定してください。

０軸と１軸で合計２軸の動作が可能ですが、同時動作はできません。

０軸　　ＰＩＣのＲＤ０（８７７の場合）orＲＣ０（８７６）ピンから出力します。

         動作番号はＳ００～Ｓ１７までで、

         対応するＳ０接点、動作中はオン、それ以外はオフです。

１軸　　ＰＩＣのＲＤ１（８７７の場合）orＲＣ１（８７６）ピンから出力します。

         動作番号はＳ１００～Ｓ１１７までで、

         対応するＳ１接点、動作中はオン、それ以外はオフです。

註）動作番号は３桁目（１００の位）が０軸か１軸を決定するだけで、あとは動作の目安にすぎません。

    （出来るだけ小さい番号にしないと、その間の不使用番号分のＲＯＭメモリーを食うことになります）。

命令は　　ＳＴＥＰ　　動作番号　　最大スピード　　総動作パルス数　　　の順で書きます。

最大スピードは１００単位で直値のみの入力になります。、下２桁は無視されます。

総動作パルス数は直値の時はＢＣＤで入力しますが、メモリ値とする場合、Ｄメモリーのみが使用できます。（実際のＣＰＵ動作時、Ｄメモリーにはバイナリー値を入れるようにして下さい。

直値は変換時にバイナリー値に変えてＰＩＣに入れられますが、Ｄメモリーの場合はＰＩＣ内部でバイナリーにしている余裕がないからです。Ｄメモリーを使用する場合は、指定のＤとＤ＋１の３２ビットが総パルス数（バイナリー値）を表わします。

Ｄ８の場合　Ｄ８の１６ﾋﾞｯﾄとＤ９の下位８ﾋﾞｯﾄがその値いとなります。）

   例　　ＳＴＥＰ　　Ｓ１０２　Ｋ３００　Ｋ８００００

          ＳＴＥＰ　　Ｓ０４　　K５００　　Ｄ１０

 画面上の動作確認はできますが（タイマのように考えれば良い）、モニターはＳ０、Ｓ１の接点のみ表示され、ステップ数等は表示されません。

  ◇停止時に、残パルス数が、Ｄ２８（下位16ビット）とＤ２９（上位8ビットが下位部分）に入れられます。

  パルス命令セット（別売り）

以下の４つの命令を含みます。

ＳＴＥＰ、ＥＮＣＯＤ、ＨＣＴＲ、ＰＵＬＳＥの４つの命令の内、２つ同時に使用することはできません。

①ＥＮＣＯＤ（エンコーダ）命令

    RA2　を　ロータリーエンコーダのＡ相に接続します。

    RA3　を　ロータリーエンコーダのＢ相に接続します。

    ＧＮＤ　を　　　　　　　　//　　　　　Ｃ相　　　//

    第一ｵﾍﾟﾗﾝﾄﾞに、Ｄﾒﾓﾘｰや桁指定（例Ｋ４Ｍ１６）等を設定値として指定できます。

    エンコード･カウンタ値がそこに入ります。

            例　ＥＮＣＯＤ　Ｄ１０

    エンコーダ用のカウンタ（最大ＦＦＦＦ）のリセットは、頭の接点をオフにすることにより行います。

    （この場合、ＲＳＴ　Ｄ１０　はあまり意味を持ちません）。

    １ｍＳ程度の割込みによるカウントのため、指でまわす程度の速度にしか、正確な対応はできません。

  ②ＨＣＴＲ（高速カウンタ）命令

    Ｃ１０００（カウンタ１０００）は

    ＲＡ４を入力として、第一ｵﾍﾟﾗﾝﾄﾞのＢＣＤ値をカウントします（最大９９９９）。

    ハード的な割込みでカウントするので、どんな高速でもカウントし、カウントアップ時はＣ１０００接点をオンにします。。

    第一ｵﾍﾟﾗﾝﾄﾞに、Ｄﾒﾓﾘｰや桁指定（例Ｋ４Ｍ１６）等を設定値として指定できます。

    Ｃ１０００への頭の入力をオンすると、ＲＣ０（ＲＤ０）ピンは=1になります。

    カウント・アップﾟすると、ＲＣ０（ＲＤ０）ピンは =0になります。またはＣ１０００への頭の入力をオフすると、ＲＣ０（ＲＤ０）ピンは=０になります。

    つまりHCTR命令オフはカウンタ・リセットﾀに相当します （RST C1000命令 は意味が有りません）。

    ＰＩＣ１６Ｆ８７６の時、出力ピンがＲＣ０、ＰＩＣ１６Ｆ８７７の時、出力ピンがＲＤ０になります。

    途中のカウント値は、減算中のカウント・アップまでのＢＣＤ値がＤ３０に入ります。

    カウント値を停止させるには、HCTR命令の頭をオフにするか、ＲＡ４への入力をハード的に停止するかによります。

  ③ＰＵＬＳＥ （パルス）命令

   第1オペランドﾞ Ｓ???  の３桁目が

                         ０の場合、ＲＤ０（８７７） or ＲＣ０（８７６）　にパルスを出力し、

                           例　PULSE S025 K500 K3000

                           １の場合、ＲＤ１（８７７） or ＲＣ１（８７６）　にパルスを出力します。

                           例　PULSE S110 K8000 D20

     パルスを出力する。

                   １、２桁目　×１００uＳ = パルス幅

     パルス幅が、Ｐ／Ｓ（第2ｵﾍﾟﾗﾝﾄﾞ）による周期幅Ｔより大の場合、パルス幅は、Ｔ／２になる。

      第３オペランドはパルス数を設定します。

      Ｄﾒﾓﾘｰ中、の値いを設定する時は１６進数を入れます。

      第３オペランドにＫ０を設定すると無限（走行）パルスになります。


シリアル

    ＰＩＣ・１６Ｆ８８

シリアル通信命令（応用命令に含まれる）

  ＲＸはＲＣ７、ＴＸはＲＣ６を使用します。

  ＣＰＵ－１　　　　　　ＣＰＵ－２

    ＲＣ６　　－－－　　ＲＣ７

    ＲＣ７　　－－－　　ＲＣ６　　　クロスで配線します。

  シリアル通信に関する設定はメニュー中のＣＰＵ設定で行います。

  送信バイト数、受信バイト数、ボーレートが設定できます。

  送信バイト数は設定数が必ず送信されます。

  受信バイト数に関しては、設定数を最大値として指定レングス分を受信します。

  送受信バイトが各々数バイト程度でＭＡＸです。

  送受信がお互いに相手の領域を食う関係にあり、

  ３２　＞＝（受信バイト＋４）＊２　＋（送信バイト＋４）　の範囲を限度とします。

  ボーレートは９６００ｂｐｓと１９２００ｂｐｓの2種類が選択できます。

シリアル通信のフォーマットは以下の通りです。

０２－８？－＊＊－＊＊－　　　　－＊＊－＊＊－０３

  ｜　　｜　｜＿＿＿データ　＿＿＿＿｜　　｜　　　｜＿＿　エンド

  ｜　　｜　　　　　　　　　　　　　　　　　　　　　｜＿＿＿＿＿　データのＸＯＲ

  ｜　　｜

  ｜　　｜＿＿＿＿＿＿＿＿＿＿＿＿＿＿レングス（下位７ﾋﾞｯﾄ）　Ｄ７は常に＝１

   |                                 この次から０３の前の前までのバイト数（つまりデータ数）

  ｜＿＿＿＿＿＿＿＿＿＿＿＿＿＿＿＿　スタート

シリアル通信に関する命令は、ＳＥＲＩ、ＳＥＲＯ、ＳＲＧＯです。

８ビットを１単位として送ります。

１ストップビット、ノン･パリティです。

ＳＥＲＩ命令

      通信入力があった場合、

      第１オペランドは受信データの何番目を示す（Ｋを頭につけたＢＣＤ値）。

      第2オペランドは第1オペランドの示すデータの格納先を示す。

    例　ＳＥＲＩ　　Ｋ２　　Ｄ０　（2番目のデータをＤ０に入れる）

    桁指定はＫ？の？にかかわらず２桁＝８ビットとみなされます。

     註）このＫは第一オペランドのＫとは無関係です。

ＳＥＲＯ命令

      第１オペランドは送信データの何番目に置くかを示す（Ｋを頭につけたＢＣＤ値）。

      第２オペランドは送信するデータの取り込み先を示す。

    例　ＳＥＲＯ　Ｋ２　　Ｋ４Ｍ０（Ｍ０からの8ビットを2番目のデータとして送る）

ＳＲＧＯ命令

    送信を開始します。

    微分命令（ＳＲＧＯＰ）があります。

    ＜ＣＰＵ設定＞中で［］シリアル通信にチェックを入れ、送信バイトを設定します。

    その数値に従って、送信バイト数が決まります。

註）受信バイト数は送り手側のレングスで決まるので、殆ど意味がありません。

データマスクデバイス（ D8160 ）

初期設定リレーの後ろにD8160への書込みを記載すると、マイコン側への送信時のデータ長指定が柔軟に行えます。

以下の例では、データ長となるビットを下位４ビットとする設定です。

上位４ビットは無視します。そのため、パソコンからのレングス（送信データ長さ）が１～９ならアスキーコードで指定できます。

レングスが２バイトなら、従来は、0x82でしたが、この設定を使用すると、0x82でも、0xA2でも、0x32でもエラーにはなりません。

マスクの値のうち０となるビットは捨てられるからです。

  回路例：

ＵＳＢシリアル変換器での通信


シリアル

    ＰＩＣ・１６Ｆ８７７（６）、８８７（６）

シリアル通信命令（応用命令に含まれる）

  ＲＸはＲＣ７、ＴＸはＲＣ６を使用します。

  ＣＰＵ－１　　　　　　ＣＰＵ－２

    ＲＣ６　　－－－　　ＲＣ７

    ＲＣ７　　－－－　　ＲＣ６　　　クロスで配線します。

  シリアル通信に関する設定はメニュー中のＣＰＵ設定で行います。

  送信バイト数、受信バイト数、ボーレートが設定できます。

  送信バイト数は設定数が必ず送信されます。

  受信バイト数に関しては、設定数を最大値として指定レングス分を受信します。

  送受信バイトが各々数バイト程度でＭＡＸです。

  送受信がお互いに相手の領域を食う関係にあり、

  ３２　＞＝（受信バイト＋４）＊２　＋（送信バイト＋４）　の範囲を限度とします。

  ボーレートは９６００ｂｐｓと１９２００ｂｐｓの2種類が選択できます。

シリアル通信のフォーマットは以下の通りです。

０２－８？－＊＊－＊＊－　　　　－＊＊－＊＊－０３

  ｜　　｜　｜＿＿＿データ　＿＿＿＿｜　　｜　　　｜＿＿　エンド

  ｜　　｜　　　　　　　　　　　　　　　　　　　　　｜＿＿＿＿＿　データのＸＯＲ

  ｜　　｜

  ｜　　｜＿＿＿＿＿＿＿＿＿＿＿＿＿＿レングス（下位７ﾋﾞｯﾄ）　Ｄ７は常に＝１

   |                                 この次から０３の前の前までのバイト数（つまりデータ数）

  ｜＿＿＿＿＿＿＿＿＿＿＿＿＿＿＿＿　スタート

シリアル通信に関する命令は、ＳＥＲＩ、ＳＥＲＯ、ＳＲＧＯです。

８ビットを１単位として送ります。

１ストップビット、ノン･パリティです。

ＳＥＲＩ命令

      通信入力があった場合、

      第１オペランドは受信データの何番目を示す（Ｋを頭につけたＢＣＤ値）。

      第2オペランドは第1オペランドの示すデータの格納先を示す。

    例　ＳＥＲＩ　　Ｋ２　　Ｄ０　（2番目のデータをＤ０に入れる）

    桁指定はＫ？の？にかかわらず２桁＝８ビットとみなされます。

     註）このＫは第一オペランドのＫとは無関係です。

ＳＥＲＯ命令

      第１オペランドは送信データの何番目に置くかを示す（Ｋを頭につけたＢＣＤ値）。

      第２オペランドは送信するデータの取り込み先を示す。

    例　ＳＥＲＯ　Ｋ２　　Ｋ４Ｍ０（Ｍ０からの8ビットを2番目のデータとして送る）

ＳＲＧＯ命令

    送信を開始します。

    微分命令（ＳＲＧＯＰ）があります。

    ＜ＣＰＵ設定＞中で［］シリアル通信にチェックを入れ、送信バイトを設定します。

    その数値に従って、送信バイト数が決まります。

註）受信バイト数は送り手側のレングスで決まるので、殆ど意味がありません。

データマスクデバイス（ D8160 ）

初期設定リレーの後ろにD8160への書込みを記載すると、マイコン側への送信時のデータ長指定が柔軟に行えます。

以下の例では、データ長となるビットを下位４ビットとする設定です。

上位４ビットは無視します。そのため、パソコンからのレングス（送信データ長さ）が１～９ならアスキーコードで指定できます。

レングスが２バイトなら、従来は、0x82でしたが、この設定を使用すると、0x82でも、0xA2でも、0x32でもエラーにはなりません。

マスクの値のうち０となるビットは捨てられるからです。

  回路例：

ＵＳＢシリアル変換器での通信


オンボード書込み

    ＰＩＣ・１６Ｆ８７７（６）、８８７（６）

ＰＩＣの書き込みについては、「連枝」では基本的に責任の範囲外で、他社ロムライターの使用をお願いしています。

◎オンボード書き込み（Ｐ版、S版に含まれます）

  ＜ビルド＞メニュー中の＜ＣＰＵ設定＞で、＊．ＳＥＱファイルを、ＳＥＱ・ＤＢＸ変換する。
     例えばＡＡＡ．ＳＥＱを変換すると、ＡＡＡＸ．ＨＥＸと、ファイル名の最後にＸがついたＨＥＸファイルになります。

    （通常のＳＥＱ・ＨＥＸ変換によると、ＡＡＡ．ＨＥＸ ファイルが生成されます）。

  この時の第１回の書き込みは、市販ロムライター等（PICKIT)によって行われますが、２回目からは＜ビルド＞中の［オンボード］書き込みによってパソコンから直接、書き込むことができます。

  その時基板には、ＭＡＸ２３２によるＲＳ２３２Ｃポートまたは、ＵＳＢシリアル変換器が必要です。

  書込みにはＵＳＡＲＴを使用するため、マイコンのシリアル通信ポートに、レベル変換したＲＳ２３２Ｃポートの信号を入れるか、

  USBシリアル変換した通信信号を入力してください。

  方法は以下の通りです。

  ①　パソコンとＰＩＣ基板をＲＳ２３２ＣまたはＵＳＢシリアル変換で接続し、＜ＣＰＵ設定＞でＣＯＭ番号を現状に合わせます。

      （パソコン側にＲＳ２３２Ｃ用のコネクターがない時、USB->シリアル変換モジュールが必要です）。

  ②　パソコン画面を設計画面にし、＜ビルド＞中のオンボード書き込みのダイアログＢＯＸを立ち上げる。

  ④　書き込みたい＊Ｘ．ＨＥＸファイルを選択し、［スタート］をクリックすると、書き込み動作を開始し終了すると［ＥＮＤ］がでます。

  ⑤　［ＯＫ］を押すと、書き替えたプログラムの動作を開始します。

◎註　ボーレートは内部で１９２００ｂｐｓに固定されています。

  註１）ブート領域がコード・プロテクトされているときは、何回でも書き込みができますが、書き込み受け付け開始の場所は走行中のノン･プロテクトの通常領域にあります。
  註２）オンボード書き込み時の不慮の失敗により、再書き込みが出来なくなるときがあります。その時は、またＣＰＵを基板から抜いて、外部で、市販ロムライタによって再び第１回目の書き込みを行う必要があります。

  註３）ＳＥＱ・ＤＢＸ変換をすると、オンボード書き込みと合わせてデバッグもできます。

  註４）セグメント表示とか、パルス発生とか、Ｉ２Ｃ通信・ＣＡＮ通信、チャッタ防止とかのモードの使用、不使用が変化するプログラムを書き換えるをことはできません。（割込み領域はブート領域にあり、書き換えないからです）。

  ◎ＰＩＣ基板上のＲＳ２３２Ｃ回路は以下のようになり、以下の回路がパソコンのコネクターとストレートコネクターで接続されます。

  （コネクタの７，８ピンとの接続は不要です。ＭＡＸ２３２の１１，１２番ピンも未接続で可です）。

   ＲＳ２３２Ｃでの通信

   ＵＳＢシリアル変換器での通信


SCALL8877

    ＰＩＣ・１８Ｆ４５２（４５８）　　ＰＩＣ１８Ｆ４５２５　　ＰＩＣ１８Ｆ４５２０　　ＰＩＣ１８Ｆ４５５０

SCALL命令とサブルーチン

ＳＣＡＬＬ命令によりサブルーチンをコールできます。

［ＳＣＡＬＬ　Ｐ０］　とか　［ＳＣＡＬＬ　Ｐ１］とか書きます。

サブルーチンはＦＥＮＤ命令のあとに置かれます。

｜------------------------------------［ＦＥＮＤ］｜

のようにこの命令の左側は直線のみになります。

サブルーチンの最後には［ＲＥＴＲＮ］命令が置かれ、これによってメインのラダーに戻ります。

［ＲＥＴＲＮ］の左には通常、常時オン接点Ｍ９０３６を置きます。

 Ｐ？を置くにはツールバーの [image] をクリックし、Ｐを置いた後に [image] をクリックして、Ｐのあとに数字を置いてセットします。

  サブルーチンの考え方は以下のようです。

  ①　Ｘ、Ｙの入出力は通常の接点でダイレクトではない。

  ②　微分（前変化）記録はキープされます。

      複数回呼ぶことによって、微分記録は不正確なものなりますので、微分命令の使用は推奨されません。

  ③　ラダーは１回のみループして抜けますが、通常のラダーの無限回のループの中の一環として実行されます。

  ④　入出力の変化は、通常ループの論理に直接影響をあたえます。

註）原則として、サブルーチン中の微分動作の正常動作は保証されません（タイマ、カウンタを含む）。


概要2

    ＰＩＣ・１６Ｆ８８

概要

  ＰＩＣ１６Ｆ８８は１８ピンのＰＩＣ１６Ｆ８８の変換ライブラリーを使用して、基本命令によるシーケンス動作（Ｓ版）と、１６ビットの応用命令（Ｐ版）をＣＰＵに実行させることが出来ます（ＰＩＣ１６Ｆ８８ではＰ１Ｃ１６Ｆ８７７と殆ど同等に応用命令が使用できます）。

ＲＯＭ容量　　４Ｋワード（１４ｂｉｔ／１ワード）

ＰＩＣ１６Ｆ８８の基本仕様

    Ｉ／Ｏ数　　計１６ピン（全ピンＩＮ／ＯＵＴ任意に設定可能）

  ＰＩＣ１６Ｆ８８の基本回路、ピン数　　１６ピン

註）ＲＡ５は入力のみに使用できます

ＰＩＣのピン呼称及びクロック説明
ＶＤＤ | ５Ｖ電源
ＶＳＳ | ０Ｖ（ＧＮＤ）電源
ＭＣＬＲ | リセットピン（０でリセットのため、常時プルアップ）（内蔵可）
ＯＳＣ１ | ４ＭＨｚ、８ＭＨｚ（内蔵も可） 内蔵、外付けとも、2種類設定可
ＯＳＣ２
各ピンが入力になるか、出力になるかは回路上の設定番号をＸで始めるか、Ｙで始めるかで任意に選択できます。

最大定格
全ピン吸い込み電流合計 | ２００ｍＡ
全ピン吐き出し電流合計 | ２００ｍＡ
各Ｉ／Ｏピン吸込み電流 | ２５ｍＡ
各Ｉ／Ｏピン吹き出し電流 | ２５ｍＡ
ＲＯＭ容量 | ４Ｋワード

註）ＥＥＰＲＯＭのため、電気的にロム・ライター上で消去＆書き込みができます。

データ用ＥＥＰＲＯＭ内蔵のため、保持リレーの内容の電源断後の保持が可能になります。

註）正確な値いはマイクロチップ社のマニュアルを優先としますのでそちらを参照して下さい。

特長

  1. ＶＳＳ電流が各ピン合計電流より小さいため、出力増幅用のトランジスタ・アレーを使用した方が無難です。

  2. ＥＥＰＲＯＭのため、上書きでプログラムの変更が可能にため、紫外線によるイレーザーで消去する必要がありません。

  3. データ用ＥＥＰＲＯＭを内蔵のため、保持リレーの内容保存には外付けのＥＥＰＲＯＭは必要ありません。

  4. 基本的に必要な外付け部品は、す４ＭＨＺの水晶発振子と、２つの２０ピコ・コンデンサーのみです。一般的には少し精度は落ちますが、４Ｍｈｚのセラロック１個で充分です。また＜ＣＰＵ設定＞で＜ＸＴＬ外部＞にチェックをいれなければ、内蔵の４ＭＨＺ発振を利用することになり、外付けの発振子は不要になります。

  5. ＜ＣＰＵ設定＞で[リセット外部]にチェックをいれなければ、内蔵のリセット回路を使用することになり、外付けリセット回路は不要になります（外付けの場合はは４番ピンになりますがくわしくはマニュアルを参照して下さい）。

実行速度

実行速度は相当に早いはずですが、正確には測定していません。４ＭＨＺの発振の場合、ＬＤ命令で、４マイクロ、ＯＲ、ＡＮＤ命令で２マイクロ、それぞれ正確に実行時間がかかります。

  チャッタリング防止

「連枝」上の《ＣＰＵ設定》でチャッタリング防止を選択すると、入力取込みに一定間隔を置くようになり、チャッタリングをある程度防止できます。

チャッタリング防止

「連枝」上の《ＣＰＵ設定》でチャッタリング防止を選択すると、高速タイマＴ２０１を使用し、１０ｍｓごとに入力の取り込みを行います。この入力の取り込み間隔はD8009で固定値として設定変更可能です。

また、入力ピンごとでチャッタリング防止の有効無効を指定できます。D8010:PORTA,D8011:PORTB ビットＯＮでチャッタ防止対象となります。

チャッタ防止対象とチャッタ防止非対象それぞれで信号の論理を反転させることができます。M8010のコイルを配置すると、チャッタ非対象の論理反転。M8011のコイルでチャッタ対象を論理反転できます。

対応版

ワンチップ・マイコンであるため、次に述べるようにハードから来る制約を受けることになります。

  1. ＣＰＵのＲＡＭ容量が比較的小さいため使用可能なリレーやタイマ、カウンタの数が制約されます。

  2. ＣＰＵの持つＩ／Ｏ（入出力）のピン数により、入出力のリレー数に制約があります。

  3. 拡張Ｉ／Ｏはできません。Ｉ／Ｏに使用できるピン数は、最大１６ピンです。

  使用可能リレー番号

            Ｘ、Ｙリレ－番号

入出力リレー　 ビット番号　　　　対応ピックＰＩＮ名

            ？００　～　？０７　（　ＲＡ０　～　ＲＡ５　）

            ？１０　～　？１７　（　ＲＢ０　～　ＲＢ７　）

              合計　　　　１６ ピン

          註）？にはＸか、Ｙが入ります。

          註）ＲＡ５（？０５）は入力のみに使用できます。

ダイレクト入出力

  ＰＩＣ１６Ｆ８８にはダイレクト入出力のサポートは有りません。

エクスパンダー素子（ＭＣＰ２３００８）による拡張

  Ｉ２Ｃ通信によるため、ＲＣ３（ＳCＬ）、ＲＣ４（ＳＤＡ）の２ピンのみを拡張用に使用します。

  マイクロチップ社のＥＸＰＡＮＤＥＲ用素子ＭＣＰ２３００８の１０番ピン～１７番ピンを拡張側の入出力として使用できます。

主ＣＰＵ（ＰＩＣ）側では、どのピンを入力に使用するか、出力に使用するかピン毎に任意です。

  入出力リレー　 ビット番号　　　　対応ピックＰＩＮ名

      ？００　～　？０７　　　　　　　（　１－ＲＡ０　～　ＲＡ７　）

      ？１０、１２～１３、１５～１７　（　１－ＲＢ０、ＲＢ２～ＲＢ３、ＲＢ５～ＲＢ７　）

      ？１１、１４（ＲＢ１、ＲＢ４）は拡張用接続に使用でＩ／Ｏには不可

      （拡張側のピン番号）

      ？０８　～　？０Ｆ　　　　　　　（　２・１－ＧＰ０　～　ＧＰ７　）　：ＭＣＰ２３００８×１

      ？１８　～　？１Ｆ　　　　　　　（　２・２－ＧＰ０　～　ＧＰ７　）　：ＭＣＰ２３００８×１

      ？２８　～　？２Ｆ　　　　　　　（　２・３－ＧＰ０　～　ＧＰ７　）　：ＭＣＰ２３００８×１

      ？３８　～　？３Ｆ　　　　　　　（　２・４－ＧＰ０　～　ＧＰ７　）　：ＭＣＰ２３００８×１

      ？４８　～　？４Ｆ　　　　　　　（　２・５－ＧＰ０　～　ＧＰ７　）　：ＭＣＰ２３００８×１

        合計　　ＭＣＰ２３００８を５つ使用した場合、５４ ピン

                  ＭＣＰ２３００８の使用数は１～５まで任意です。

註１）？にはＸか、Ｙが入ります。

註２）１－はメイン、２・？－は拡張側のＩ／Ｏ番号

    エクスパンダ使用の拡張回路

  拡張用素子のアドレス設定用ＤＩＰ－ＳＷを除いて、他のＤＩＰ-ＳＷやＬＥＤはＩ／Ｏのテストのためですので無視して下さい。

  アドレス設定は正論理です。


デバイス範囲4

    ＰＩＣ・１６Ｆ８８

デバイスの範囲

  Ｍリレ－（補助リレー）

    Ｍ０　～Ｍ４７９

    合計　４８０

  1. 補助リレーとしての出力は一個当り、箇所のみに限定されます。

  2. ラッチリレ－等、種リレ－が使用されるとその分、の数が減少します。

  3. ラダー上では同一接点を何回でも使用できます。

特殊補助リレー

機能 | デバイス
0.1 秒クロックパルス | Ｍ９０３０
0.2 秒クロックパルス | Ｍ９０３１
1 秒クロックパルス | Ｍ９０３２
常時ＯＮ リレー | Ｍ９０３６
常時ＯＦＦリレー | Ｍ９０３７
立上り後1スキャンのみONリレー | Ｍ９０３８
立上り１クール後1スキャンのみONリレー | Ｍ９０３９
エラー受信きたフラグ | Ｍ９０４０
正常受信きたフラグ | Ｍ９０４１
０フラッグ | Ｍ９０１３

  保持リレー　（Ｐ版のみ扱えます）

    Ｌ０　～Ｌ４７

    合計　４８

  これを使用すると、Ｍ（補助）リレーの使用可能番号が減少します。

変化があると、保持リレーは１６Ｆ８８内部のＥＥＰＲＯＭデ－タメモリ－に書き込まれます。

電源断後にもそのＯＮ／ＯＦＦ結果をキープし、電源再立上げ時にキープした結果を読み込みます。

書き込みに２０ｍＳ以上かかることがあります。回路の体内時計がくるいますので、頻ぱんに変化する入出力は避けて下さい。

註）ＭＯＶ命令で桁指定する場合、必ずＫ４Ｌ？が指定され、４桁１６ビットが使用されます。

  ステップリレー

      Ｊ００００　～Ｊ０７９９

① ３，４桁目がチャンネルを表わし、１，２桁目がステップ番号を表わします。

② 同一のチャンネル内で一つのステップリレーのみがオンになっていす。

つまりあるステップリレーが最後にオンになれば、他の同一チャンネル内のリレーは自動的にオフになります。

③ チャンネルが違うステップリレーは同時にオンが可能です。

このことはチャンネルを替えれば、各々のチャンネルで個別のステップ動作による並列動作が可能になることを意味しています。

註）ステップリレーは電源断後に前値は失われ、キープされません

  タイマ、ウンター

  両方とも０番から始まり、計で７４個使用できます。タイマとカウンタは別のメモリーを使用するためタイマとカウンタ番号は重複してもかまいません。タイマとカウンタ番号はそれぞれ詰めて使用するのが効率的です。

 タイマ－番号２００、２０１は１０ｍＳ単位の高速タイマ（最大値２．５５Ｓ、直値指定のみ）です（他のタイマ－の個数とは無関係です）。

  注意

  1. タイマは、単位が１００ｍＳで、２５．５秒（Ｋ２５５）が最大です。カウンタは、２５５（Ｋ２５５）が最大です。

  2. 長時間タイマはタイマとカウンタで構成して下さい。

  3. ステッピングモ－タ駆動ソフト（別売り）を使用すると、タイマ－、カウンタ－の合計数が７４個になります。

  4. タイマ、カウンタの入力は直値か、Ｄメモリー値によります。

  データ・メモリー

        Ｄ０　～Ｄ４０

  注意

  1. ＨＥＸに変換する場合デバイスの範囲以外やＸ、ＹまたはＴ、Ｃ使用制限オーバーなどがありますとエラーとなり変換されませんので注意してください。

◎間接アドレス

  ＰＩＣ１６Ｆ８８では、間接アドレスによる間接アクセスは不可です。

  ◎システム初期設定デバイス

  プログラムではなく、初期設定として取り込むための特殊デバイスです。

  設定値は、システム設定として利用され、実行時には変更できません。

  また、ＨＥＸファイル変換時には、ラダー部は設定部分を除いて読み飛ばします。

M8000:システム初期設定ブロックの開始を表す接点です。

M8010:チャッタ非対象を論理反転させるリレーです。配置で反転します。

M8011:チャッタ対象を論理反転させるリレーです。配置で反転します。

D8009:チャッタサンプリング間隔を指定するデータレジスタです。ms単位で指定します。

D8010:ポートＡのチャッタ防止の対象を指定します。ビットＯＮでチャッタ対象指定となります。

D8011:ポートＢのチャッタ防止の対象を指定します。ビットＯＮでチャッタ対象指定となります。


命令6

    ＰＩＣ・１６Ｆ８８

シーケンス基本命令

名称 | 命令記号
接点命令 | ＬＤ、ＬＤＩ、ＡＮＤ、ＡＮＩ、ＯＲ、ＯＲＩ
結合命令 | ＡＮＢ、ＯＲＢ
演算結果 | ＭＰＳ、ＭＲＤ、ＭＰＰ
出力命令 | ＯＵＴ（Ｍ、Ｙ）、Ｔ、Ｃ
デバイスのセット、リセット | ＳＥＴ（Ｍ、Ｙ）、ＲＳＴ（Ｍ、Ｙ、Ｃ、Ｔ、Ｄ）
立ち上がり微分、立ち下がり微分 | ＰＬＳ、ＰＬＦ
シフト命令 | ＳＦＴ
終了命令 | ＥＮＤ
継続命令 | －－＞＞、＞＞－－
註）継続命令は－＞＞は、次ぎの行の＞＞－－のみに継続動作します。

応用命令

  ＰＩＣの応用命令は１６ビットの範囲内で実行されます。

  ダブルワード命令はサポートしていません。

  Ｋ４Ｍ１６　等の桁指定はＫの値いにかかわらず必ずＫ４即ち１６ビットと見なされます（Ｍ以下の数値は８の倍数としてください）。

マスタコントロール命令

ＭＣ、ＭＣＲ

算術演算命令

名称 | 命令記号
BCD4桁加算（１） | ＋＝、＋＝Ｐ
BCD4桁加算（２） | ＋、＋Ｐ
BCD4桁減算（１） | －＝、－＝Ｐ
BCD4桁減算（２） | －、－Ｐ
BCD4桁乗算 | ＊、＊Ｐ 指定先の２ワードに答えが入ります。 答えにＤ１０を指定した場合、Ｄ１１まで２ワード使用します
BCD4桁除算 | ／、／Ｐ 指定先の１ワードに答えが入ります。 余りはその先の１ワードに入ります。 答えにＤ１０を指定した場合、Ｄ１１まで２ワード使用します。
BIN16ビット加算（１） | B＋＝、B＋＝Ｐ
BIN16ビット加算（２） | B＋、B＋Ｐ
BIN16ビット減算（１） | B－＝、B－＝Ｐ
BIN16ビット減算（２） | B－、B－Ｐ
BIN16ビット乗算 | B＊、B＊Ｐ 指定先の２ワード（例、Ｄ１０、Ｄ１１）に答えが入ります。 答えにＤ１０を指定した場合、Ｄ１１まで２ワード使用します。
BIN16ビット除算 | B／、B／Ｐ 指定先の２ワード（例Ｄ１０）に答えが入ります。 余りは１６ﾋﾞｯﾄのみで、その先の1ワード（D１１）に入ります。 つまり、答えにＤ１０を指定した場合、Ｄ１１で２ワード使用します。
16ビットBCDデータインクリメント | ＩＮＣ、ＩＮＣＰ
16ビットBCDデータデクリメント | ＤＥＣ、ＤＥＣＰ

BCD<－>BIN変換命令

BINデータ－>BCD4桁変換 | ＢＣＤ、ＢＣＤＰ
BCD4桁－>BINデータ変換 | ＢＩＮ、ＢＩＮＰ

データ転送命令

16ビットデータ転送 | ＭＯＶ、ＭＯＶＰ
16ビットデータ否定転送 | ＣＭＬ、ＣＭＬＰ
16ビットデータ交換 | ＸＣＨ、ＸＣＨＰ
16ビット２の補数 | ＮＥＧ、ＮＥＧＰ

  データ転送命令の桁指定オペランドの説明

  ①    ＭＯＶ　Ｄ０　Ｋ４Ｍ８

  ②　　ＭＯＶ　Ｄ０　Ｋ４Ｙ２０

とした時、下図の上の転送前Ｓの値は転送後Ｄの各々の下段の①②の表示ビットに入ります。

図中の１／０の値はサンプルです。

  ①　　　　 M23 M22 M21M20M19M18M17M16M15M14M13M12M11M10M9 M8

  ②　　　     Y2F      ～　　　　　　　　　　　　 Y28Y27　　　～                          Y20

この命令が　ＭＯＶ　Ｋ４Ｍ８　Ｄ０　のように逆に第１オペランド側が桁指定の場合、転送前Ｓの側が同じくＭ８～Ｍ２３の間の各ビットに割り当てられます。

Ｋ４は４桁の意味で４ビットが１桁ですからＫ４は１６ビットを表わします。ＰＩＣの場合、例外的にＫ？の数字がいくつでもＫ４とみなされ、それに従って動作します。

 ②の場合通常（拡張時）Ｙ２８以降は使用されないので無視され、ラダー的にはＹ２０～Ｙ２７のみ使用されます。

註）Ｋ４Ｍ８のようにＫ４のあとのデバイス（Ｍ、Ｌ等）の数値は０または８の倍数にしてください。

論理演算命令

16ビットデータ論理積（１） | ＷＡＮＤ＝、ＷＡＮＤ＝Ｐ
16ビットデータ論理積（２） | ＷＡＮＤ、ＷＡＮＤＰ
16ビットデータ論理和（１） | ＷＯＲ＝、ＷＯＲ＝Ｐ
16ビットデータ論理和（２） | ＷＯＲ、ＷＯＲＰ
16ビットデータ排他的論理和（１） | ＷＸＯＲ＝、ＷＸＯＲ＝Ｐ
16ビットデータ排他的論理和（２） | ＷＸＯＲ、ＷＸＯＲＰ
16ビットデータ否定排他的論理和（１） | ＷＸＮＲ＝、ＷＸＮＲ＝Ｐ
16ビットデータ否定排他的論理和（２） | ＷＸＮＲ、ＷＸＮＲＰ
デコード | ＤＥＣＯ、ＤＥＣＯＰ（第３オペランドは必ずＫ８とみなされます）

比較演算命令

16ビットデータ比較

＝、＜＞、＞、＜＝、＜、＞＝

ローテーション命令

16ビットデータの右ローテーション（１） | ＲＯＲ、ＲＯＲＰ
16ビットデータの右ローテーション（２） | ＲＣＲ、ＲＣＲＰ
16ビットデータの左ローテーション（１） | ＲＯＬ、ＲＯＬＰ
16ビットデータの左ローテーション（２） | ＲＣＬ、ＲＣＬＰ

シフト命令

16ビットデータnビット右シフト | ＳＦＲ、ＳＦＲＰ
16ビットデータnビット左シフト | ＳＦＬ、ＳＦＬＰ

ジャンプ命令

サブルーチン・コール命令 | ＳＣＡＬＬ（コールの対象サブルーチンは必ずＦＥＮＤのあとＥＮＤの前 に置き、頭に被コールポイントＰを置いて、コールの対象番号をつける）
リターン命令 | ＲＥＴＲＮ（サブルーチンの最後に置く）

ソフトウエア・タイマ

１μＳタイマ | ＭＣ１
１００μＳタイマ | ＭＣ１００

終了命令

全命令終了命令 | ＥＮＤ
１クール終了点命令 | ＦＥＮＤ（この命令以降にサブルーチンとその被コールポイントＰを置く）

註）各応用命令の動作については関数ヘルプを参照してください。

特殊補助リレー

機能 | デバイス
0.1 秒クロックパルス | Ｍ９０３０
0.2 秒クロックパルス | Ｍ９０３１
1 秒クロックパルス | Ｍ９０３２
常時ＯＮ リレー | Ｍ９０３６
常時ＯＦＦリレー | Ｍ９０３７
立上り後1スキャンのみONリレー | Ｍ９０３８
０フラッグ | Ｍ９０１３

微分ポイント数

    ＰＬＳ、ＰＬＦ、Ｔ、Ｃ命令の数の合計と、微分命令の数の合計は３２０個をえることがきません。（上記命令は微分動作を含み、微分ポイントを使用します。）

ステップ数とメモリ

    ＣＰＵ中のＲＯＭ容量により、ラダー（シーケンス回路）のステップ数が制約されます。

    １６Ｆ８８の容量は４Ｋワードですが、システムに１Ｋ～２Ｋ取られます。

    各命令が使用する合計のバイト数が４Ｋを越えると、アセンブル（機械語変換）時に、エラーになります。

    目安で、８００ステップぐらいのラダーが構成できるはずです。


特殊命令3

    ＰＩＣ・１６Ｆ８８

特殊命令

ＳＥＧ命令（応用命令に含まれる）

    ＳＥＧ命令は2桁の７セグメント表示をします。

  ＲＡ０－＞ＲＡ１に、各５ｍＳのスキャン出力を出し、

  ＲＢ０～ＲＢ６に1桁目－＞2桁目の７セグメント出力を出します。

        ＳＥＧ　Ｋ１２　Ｋ２Ｙ１０

   ＤＳＥＧ命令は４桁の７セグメント表示をします。　　　　回路ハード図

  ＲＡ０－＞ＲＡ１－＞ＲＡ２－＞ＲＡ３に、各５ｍＳのスキャン出力を出し、

  ＲＢ０～ＲＢ６に1桁目－＞2桁目－＞３桁目－＞４桁目の７セグメント出力を出します。

        ＤＳＥＧ　Ｋ１２３４　Ｋ２Ｙ１０

  ２命令ともに、第一オペランドは、Ｄメモリー等の直値以外も指定できます。

  第２オペランドは無視されますが、結果としてどちらもＲＢポートを使用するので、Ｋ２Ｙ１０と指定しておいてください。

  ＲＢ７や、スキャンに使用されないＲＣポートのピンは他の用途に使用できます。

  7セグメント表示データは下記の表になります。

    ＤＳＥＧＰ命令はゼロサプレスをした結果の４桁の７セグメント表示をします。

  例えば、１２３４は１２３４と表示し、０２３４は２３４と右詰で表示します。

  同じく、００３４Ｈは３４と、０００４は４と右詰で表示します。

    ＳＥＧＰ命令はゼロサプレスをした結果の２桁の７セグメント表示をします。

  例えば、１２は１２と表示し、０２は　２と右詰で表示します。

Ａ／Ｄコンバータ（応用命令に含まれる）

  １６Ｆ８８は、ＲＡポートのピンをＡ／Ｄコンバート・モードで使用する事ができます。

「連枝」は、それを利用して、ＡＤＣＯ（Ａ／Ｄコンバータ）命令を使用できます。

ＲＡ０～ＲＡ４（Ｘ００～Ｘ０４）の内の、１ビットを選び、Ａ／Ｄの結果値の、格納先を書き込みます。

下の命令ではＲＡ１への入力が１０ビットでＡ／Ｄ変換されてＤ０に入ります。

例　　　ＡＤＣＯ　Ｘ１　Ｄ０

注意

  Ａ／Ｄコンバートには１ピン単位で使用できます。ＲＡ０～ＲＡ４のうちＡ／Ｄコンバートに使用しないピンはすべてＩ／Ｏに使用できます。

  ＰＩＣ１６Ｆ８８はＲＢ６、ＲＢ７もＡ／Ｄコンバートとの兼用ピンになっていますが、「連枝」ではこれを使用せず、Ｉ／Ｏピンのみに使用します

Ｄ／Ａコンバータ（ＰＷＭ変換）（応用命令に含まれる）

  １６Ｆ８８は、ＲＢ３ピンをＰＷＭコンバート・モードで使用する事ができます。

「連枝」は、それを利用して、ＤＡＣＯ（Ｄ／Ａコンバータ）命令を使用できます。

Ｄ／Ａ変換のもとの６ビットの値い（バイナリー）の格納先を第１オペランドとし、結果の出力ピンとして、ＲＢ３（Ｙ１３）を選び第２オペランドとして書き込みます。

下の命令ではＤ０（下位６ビット）の値がＡ／Ｄ変換（ＰＷＭ変換）されて、ＲＢ３に出力されます。

例　　　ＤＡＣＯ　Ｄ０　Ｙ１３

註）ＰＷＭの出力は１５．６Khzの基本パルス内でのＤｕｔｙサイクルになります。Ｄｕｔｙサイクルは６ビット分解能（０～３Ｆ）の指定で決定されます。

註）Ａ／Ｄ、Ｄ／Ａコンバート命令に関しては、変換内容デバイスとしてＤメモリー以外（例、Ｋ４Ｍ０、Ｔ１０ｅｔｃ．）も使用可能です。

    直値の入力も可能ですが、その場合バイナリー値のみのため、頭にＨをつけてください。

シリアル通信命令

  ＲＸはＲＢ２、ＴＸはＲＢ６を使用します。

  ＣＰＵ－１　　　　　　ＣＰＵ－２

    ＲＢ２　　－－－　　ＲＢ６

    ＲＢ６　　－－－　　ＲＢ２　　　クロスで配線します。

  ボーレートは９６００ｂｐｓと１９２００ｂｐｓの2種類が選択できます。

   ８ビットを１単位として送ります。

  １ストップビット、ノン･パリティです。

  ＲＸはＲＢ２、ＴＸはＲＢ６を使用します。

シリアル通信命令は、ＳＥＲＩ、ＳＥＲＯ、ＳＲＧＯ命令があります。

◎ＳＥＲＩ、ＳＥＲＯ、ＳＲＧＯ命令（応用命令（基本LB)に含まれる）

  シリアル通信に関する設定はメニュー中のＣＰＵ設定で行います。

  送信バイト数、受信バイト数、ボーレートが設定できます。

  送信バイト数は設定数が必ず送信されます。

  受信バイト数に関しては、設定数を最大値として指定レングス分を受信します。

  送受信バイトが各々数バイト程度でＭＡＸです。

  送受信がお互いに相手の領域を食う関係にあり、

  ６０　＞＝（受信バイト＋４）＊２　＋（送信バイト＋４）　の範囲を限度とします。

  （ステップリレーを使用すると、左辺が変化し　５０　＞＝＊　になります）。

シリアル通信のフォーマットは以下の通りです。

０２－８？－＊＊－＊＊－　　　　－＊＊－＊＊－０３

  ｜　　｜　｜＿＿＿データ　＿＿＿＿｜　　｜　　　｜＿＿　エンド

  ｜　　｜　　　　　　　　　　　　　　　　　　　　　｜＿＿＿＿＿　データのＸＯＲ

  ｜　　｜

  ｜　　｜＿＿＿＿＿＿＿＿＿＿＿＿＿＿レングス（下位７ﾋﾞｯﾄ）　Ｄ７は常に＝１

   |                                 この次から０３の前の前までのバイト数（つまりデータ数）

  ｜＿＿＿＿＿＿＿＿＿＿＿＿＿＿＿＿　スタート

データ以外（レングス以前、ＸＯＲ以降）はすべて自動生成されます。

シリアル通信に関する命令は、ＳＥＲＩ、ＳＥＲＯ、ＳＲＧＯです。

ＳＥＲＩ命令

      通信入力があった場合、

      第１オペランドは受信データの何番目を示す（Ｋを頭につけたＢＣＤ値。１番目はＫ１でＫ０ではない）。

      第2オペランドは第1オペランドの示すデータの格納先を示す。

    例　ＳＥＲＩ　　Ｋ２　　Ｄ０　（2番目のデータをＤ０に入れる）

    桁指定はＫ？の？にかかわらず２桁＝８ビットとみなされます。

     註）このＫは第一オペランドのＫとは無関係です。

  （註）受信完了時に正常ならば１クールのみ 特殊リレーＭ９０４１がオンになります。

                         異常ならば１クールのみ 特殊リレーＭ９０４０がオンになります。

ＳＥＲＯ命令

      第１オペランドは送信データの何番目に置くかを示す（Ｋを頭につけたＢＣＤ値）。

      第２オペランドは送信するデータの取り込み先を示す。

    例　ＳＥＲＯ　Ｋ２　　Ｋ４Ｍ０（Ｍ０からの8ビットを2番目のデータとして送る）

ＳＲＧＯ命令

    送信を開始します。

    微分命令（ＳＲＧＯＰ）があります。

    ＜ＣＰＵ設定＞中で［］シリアル通信にチェックを入れ、送信バイトを設定します。

    その数値に従って、送信バイト数が決まります。

註）受信バイト数は送り手側のレングスで決まるので、殆ど意味がありません。


別途命令4

    ＰＩＣ・１６Ｆ８８

  ステッピングモータ・コントローラ（別売り）

  連枝は１６Ｆ８８中に、２軸のステッピングモータ・コントローラを内蔵する事ができます。トランジスタ・アレーで１回増幅すれば、直接ステッピングモータ・ドライバを駆動することができます。

１． 動作は１軸あたり１８種類を指定する事ができます。

２． ＳＴＥＰ命令は１軸当たりの動作ピンを任意に選ぶことができ、スピードは３００p/s～５０００p/sまで、選択することができます。

３． 動作ステップ数は、最大８、３００、０００までです。

４． スピードの立上り、立下りは最大ステップ数に応じた台形波で変化します。

５．　動作ステップ数を０にすると、リミットによるオフまで無限走行になります。

６． 回転方向については、別ピンを使用し、別に設定してください。

０軸と１軸で合計２軸の動作が可能ですが、同時動作はできません。

０軸　　ＰＩＣのＲＢ０ピンから出力します。

         動作番号はＳ００～Ｓ１７までで、

         対応するＳ０接点、動作中はオン、それ以外はオフです。

１軸　　ＰＩＣのＲＢ１ピンから出力します。

         動作番号はＳ１００～Ｓ１１７までで、

         対応するＳ１接点、動作中はオン、それ以外はオフです。

註）動作番号は３桁目（１００の位）が０軸か１軸を決定するだけで、あとは動作の目安にすぎません。

  （出来るだけ小さい番号にしないと、その間の不使用番号分のＲＯＭメモリーを食うことになります）。

命令は　　ＳＴＥＰ　　動作番号　　最大スピード　　総動作パルス数　　　の順で書きます。

最大スピードは１００単位で直値のみの入力になります。、下２桁は無視されます。

総動作パルス数は直値の時はＢＣＤで入力しますが、メモリ値とする場合、Ｄメモリーのみが使用できます。（実際のＣＰＵ動作時、Ｄメモリーにはバイナリー値を入れるようにして下さい。

直値は変換時にバイナリー値に変えてＰＩＣに入れられますが、Ｄメモリーの場合はＰＩＣ内部でバイナリーにしている余裕がないからです。Ｄメモリーを使用する場合は、指定のＤとＤ＋１の３２ビットが総パルス数（バイナリー値）を表わします。

Ｄ８の場合　Ｄ８の１６ﾋﾞｯﾄとＤ９の下位８ﾋﾞｯﾄがその値いとなります。）

   例　　ＳＴＥＰ　　Ｓ１０２　Ｋ３００　Ｋ８００００

          ＳＴＥＰ　　Ｓ０４　　K５００　　Ｄ１０

 画面上の動作確認はできますが（タイマのように考えれば良い）、モニターはＳ０、Ｓ１の接点のみ表示され、ステップ数等は表示されません。

  ◇停止時に、残パルス数が、Ｄ２８（下位16ビット）とＤ２９（上位8ビットが下位部分）に入れられます。

  パルス命令（別売り）

以下の４つの命令を含みます。

ＳＴＥＰ、ＥＮＣＯＤ、ＨＣＴＲ、ＰＵＬＳＥの４つの命令の内、２つ同時に使用することはできません。

①ＥＮＣＯＤ（エンコーダ）命令

    RA2　を　ロータリーエンコーダのＡ相に接続します。

    RA3　を　ロータリーエンコーダのＢ相に接続します。

    ＧＮＤ　を　　　　　　　　//　　　　　Ｃ相　　　//

    第一ｵﾍﾟﾗﾝﾄﾞに、Ｄﾒﾓﾘｰや桁指定（例Ｋ４Ｍ１６）等を設定値として指定できます。

    エンコード･カウンタ値がそこに入ります。

            例　ＥＮＣＯＤ　Ｄ１０

    エンコーダ用のカウンタ（最大ＦＦＦＦ）のリセットは、頭の接点をオフにすることにより行います。

    （この場合、ＲＳＴ　Ｄ１０　はあまり意味を持ちません）。

    １ｍＳ程度の割込みによるカウントのため、指でまわす程度の速度にしか、正確な対応はできません。

  ②ＨＣＴＲ（高速カウンタ）命令

    Ｃ１０００（カウンタ１０００）は

    ＲＡ４を入力として、第一ｵﾍﾟﾗﾝﾄﾞのＢＣＤ値をカウントする（最大９９９９）。

    ハード的な割込みでカウントするので、どんな高速でもカウントし、カウントアップ時はＣ１０００接点をオンにします。。

    第一ｵﾍﾟﾗﾝﾄﾞに、Ｄﾒﾓﾘｰや桁指定（例Ｋ４Ｍ１６）等を設定値として指定できます。

    Ｃ１０００への頭の入力をオンすると、ＰＢ０ﾋﾟﾝは=1になります。

    ｶｳﾝﾄ･ｱｯﾌﾟすると、ＲＢ０ﾋﾟﾝは =0になります。またはＣ１０００への頭の入力をオフすると、ＰＢ０ﾋﾟﾝは=０になります。

    つまりHCTR命令ｵﾌはｶｳﾝﾀ･ﾘｾｯﾄに相当します (RST C1000命令 ﾊ意味がｱﾘﾏｾﾝ)。

    途中のカウント値は、減算中のカウント・アップまでのＢＣＤ値がＤ３０に入ります。

    カウント値を停止させるには、HCTR命令の頭をオフにするか、ＲＡ４への入力をハード的に停止するかによります。

  ③ＰＵＬＳＥ （パルス）命令

    第１オペランド Ｓ??? 　の３桁目が

                        ０の場合、ＲＢ０ピンににパルスを出力し、

                           例　PULSE S025 K500 K3000

                           １の場合、ＲＢ１ピンにパルスを出力します。

                           例　PULSE S110 K8000 D20

        第１オペランド Ｓ??? 　の１、２桁目　×１００uＳ = パルス幅

        パルス幅が、Ｐ／Ｓ（第２オペランド）による周期幅Ｔより大の場合、パルス幅は、Ｔ／２になります。

    第２オペランドでは最大スピードを１００単位で直値（ＢＣＤ）のみの入力によって設定します。、下２桁は無視されます。

        １００Ｐ／Ｓ～５０００Ｐ／Ｓの範囲で設定できます。

    第３オペランドﾞはパルス数を設定する。

    Ｄメモリー中の値いを設定する時は１６進数を入れます。

    総動作パルス数は直値の時はＢＣＤで入力しますが、メモリ値とする場合、Ｄメモリーのみが使用できます。

    （Ｄメモリーにはバイナリー値を入れるようにして下さい）。

    第３オペランドﾞにＫ０（ゼロ）を設定すると無限パルス（走行）になります。

   ④ＴＴＭＲ（ティーチングタイマ）命令

    設計画面中でタイマ番号をT1000と書くと、T1000はティーチング･タイマになり、

    １０ｍＳ単位で、時間をカウントし、第２ｵﾍﾟﾗﾝﾄﾞで指定される場所にその値いを

    入れていきます。

    第２ｵﾍﾟﾗﾝﾄﾞはＤメモリーに限られます。

    第２ｵﾍﾟﾗﾝﾄﾞは本来のタイマの場合、設定値ですが、

    TTMRの場合、Ｄメモリーに限定され、この第２ｵﾍﾟﾗﾝﾄﾞのＤメモリー（&+1Ｄメモリー）に

    TIMER1の割込(10mS毎)回数のカウント値が入ります。

    T1000ﾆﾊ 他のﾀｲﾏと同じようなリセットするRST命令はありません。

    リセットはT1000の頭のオフからオンへの変化時のみによります。

    シミュレーションの動作画面中ﾆ表示される値いは、

    T1000の頭のオフ時のみに値いが変化した形ちで表示されます。


１６Ｆ８４Ａ

    ＰＩＣ・１６Ｆ８４Ａ

概要

ＰＩＣ１６Ｆ８４Ａの変換ライブラリーを使用して、基本命令によるシーケンス動作をさせることができます。

ＲＯＭ容量　　１Ｋワード（１４ｂｉｔ）

ピン数　　　１８ピン

    Ｉ／Ｏ　計１３ピン（全ＩＮ／ＯＵＴ任意）

            （５（ＲＡポート）＋８（ＲＢポート））

  ＰＩＣ１６Ｆ８４Ａの基本仕様

註）ＲＡ４は例外的にオープンコレクターピンになっており、それによる吸い込み出力となり、入力に使用する場合はプルアップ抵抗が必要になります。

ＰＩＣのピン呼称説明
ＶＤＤ | ５Ｖ電源
ＶＳＳ | ０Ｖ（ＧＮＤ）電源
ＭＣＬＲ | リセットピン（０でリセットの為、常時プルアップ）
ＯＳＣ１ | 水晶発振子（２０，８，４ＭＨｚ）接続 Ｓ版は２０ＭＨｚのみです。
ＯＳＣ２
各ピンが入力になるか、出力になるかは回路上の設定番号をＸで始めるか、Ｙで始めるかで任意に選択できます。

最大定格
全ピン吸い込み電流合計 | １００ｍＡ
全ピン吐き出し電流合計 | １５０ｍＡ
各Ｉ／Ｏピン吸込み電流 | ２５ｍＡ
各Ｉ／Ｏピン吹き出し電流 | ２５ｍＡ
ＲＯＭ容量 | １Ｋバイト

註）ＥＥＰＲＯＭのため、電気的にロム・ライター上で消去＆書き込みができます。

データ用ＥＥＰＲＯＭ内蔵のため、保持リレーの内容の電源断後の保持が可能になります。

註）正確な値いはマイクロチップ社のマニュアルを優先としますのでそちらを参照して下さい。

実行速度

実行速度は相当に早いはずですが、正確には測定していません。２０ＭＨＺの発信の場合、ＬＤ命令で、０．８マイクロ、ＯＲ、ＡＮＤ命令で０．４マイクロ、それぞれ正確に実行時間がかかります。

  チャッタリング防止

「連枝」上の《ＣＰＵ設定》でチャッタリング防止を選択すると、入力取込みに一定間隔を置くようになり、チャッタリングをある程度防止できます。

チャッタリング防止

「連枝」上の《ＣＰＵ設定》でチャッタリング防止を選択すると、高速タイマＴ２０１を使用し、１０ｍｓごとに入力の取り込みを行います。この入力の取り込み間隔はD8009で固定値として設定変更可能です。

また、入力ピンごとでチャッタリング防止の有効無効を指定できます。D8010:PORTA,D8011:PORTB ビットＯＮでチャッタ防止対象となります。

チャッタ防止対象とチャッタ防止非対象それぞれで信号の論理を反転させることができます。M8010のコイルを配置すると、チャッタ非対象の論理反転。M8011のコイルでチャッタ対象を論理反転できます。

入力ピン

各ピンを入力として使用するとき、内部に弱いプルアップをもっているポートＢ（１０～１７）以外は、４．７Ｋ～２０Ｋオームの抵抗で、プルアップする必要が有ります。

ＲＡ４はオープン・ドレインの為、入力に使用するには、プルアップ抵抗が必要です。

出力ピン

各ピンを出力として使用するとき、１ピン当り２５ｍＡ（吹込み、吐出し共）を出力できますが、ＣＰＵトータルでは、３００ｍＡが最大出力になるため、６２００４等のトランジスタ・アレーにより、リレー等を駆動することをおすすめします。

ＲＡ４はオープン・ドレインの為、引き込み出力のみです。

特長

  1. ＶＳＳ電流が各ピン合計電流より小さいため、出力増幅用のトランジスタ・アレーを使用した方が無難です。

  2. ＦＬＡＳＨメモリーのため、上書きでプログラムの変更が可能で、紫外線によるイレーザーで消去する必要がありません。

  3. データ用ＥＥＰＲＯＭを内蔵のため、保持リレーの内容保存には外付けのＥＥＰＲＯＭは必要ありません。

  4. ＰＩＣに基本的に必要な外付け部品は、２０ＭＨＺの水晶発信子と、1つの２０ピコ・コンデンサーのみです。一般的には少し精度は落ちますが、２０Ｍｈｚのセラロック１個で充分です。

対応版

    連枝の１６Ｆ８４変換ライブラリーによるＨＥＸ変換は、対照がＰＩＣのワンチップ・マイコンである為、次に述べるようにそのハードから来る制約を受ける事になります。

   ＣＰＵ中のＲＡＭ容量が比較的に小さい為、使用可能なリレーやタイマの数が、制約されます。

又、ＣＰＵの持つＩ／Ｏ（入出力）のピン数により、入出力リレーの数が制約されます。

使用可能なリレー番号　　　　　Ｍ０　～Ｍ５１１

入出力ピン　 ビット番号　　　　対応ピックＰＩＮ名

              ？００　～？０４　（　ＲＡ０　～ＲＡ５　）

              ？１０　～？１７　（　ＲＢ０　～ＲＢ７　）

                    合計　　　　１３ ピン

    註）？にはＸか、Ｙが入ります。

  主ＣＰＵ（ＰＩＣ）側では、どのピンを入力に使用するか、出力に使用するかピン毎に任意です。

＊　PIC１６Ｆ８４には、拡張は有りません。

注意

ＨＥＸに変換する場合デバイスの範囲以外やＸ、ＹまたはＴ、Ｃの重なり、使用制限オーバーなどがありますとエラーとなり変換されませんので注意してください。

シーケンス命令

名称 | 命令記号
接点命令 | ＬＤ、ＬＤＩ、ＡＮＤ、ＡＮＩ、ＯＲ、ＯＲＩ
結合命令 | ＡＮＢ、ＯＲＢ
演算結果 | ＭＰＳ、ＭＲＤ、ＭＰＰ
出力命令 | ＯＵＴ（Ｍ、Ｙ）、Ｔ、Ｃ
デバイスのセット、リセット | ＳＥＴ（Ｍ、Ｙ）、ＲＳＴ（Ｍ、Ｙ、Ｃ、Ｔ、Ｄ）
立ち上がり微分、立ち下がり微分 | ＰＬＳ、ＰＬＦ
シフト命令 | ＳＦＴ
終了命令 | ＥＮＤ
継続命令 | －－＞＞、＞＞－－
註）継続命令は－＞＞は、次ぎの＞＞－－のみに継続動作します。

特殊補助リレー

名称 | デバイス
0.1 秒クロックパルス | Ｍ９０３０
0.2 秒クロックパルス | Ｍ９０３１
1 秒クロックパルス | Ｍ９０３２
常時ＯＮ リレー | Ｍ９０３６
常時ＯＦＦリレー | Ｍ９０３７
立上り後1スキャンのみONリレー | Ｍ９０３８

    ＣＰＵ中のＲＯＭ容量により、ラダー（シーケンス回路）のステップ数が制約されます。

    １６Ｆ８４の容量は１Ｋバイトですが、システムに役３００バイト取られます。

    ＡＮＤ、ＯＲの論理命令は２バイト、ＬＤ命令は４バイト、ＯＵＴ命令は５バイト、Ｔ、Ｃ命令には大体１０バイトが必要です。

注意

システムとの合計が１Ｋを越えると、アセンブル（機械語変換）時に、エラーになります。

目安で、１４０ステップ（命令）ぐらいのラダーが構成できるはずです。

  ◎システム初期設定デバイス

  プログラムではなく、初期設定として取り込むための特殊デバイスです。

  設定値は、システム設定として利用され、実行時には変更できません。

  また、ＨＥＸファイル変換時には、ラダー部は設定部分を除いて読み飛ばします。

M8000:システム初期設定ブロックの開始を表す接点です。

M8010:チャッタ非対象を論理反転させるリレーです。配置で反転します。

M8011:チャッタ対象を論理反転させるリレーです。配置で反転します。

D8009:チャッタサンプリング間隔を指定するデータレジスタです。10ms単位で指定します。

D8010:ポートＡのチャッタ防止の対象を指定します。ビットＯＮでチャッタ対象指定となります。

D8011:ポートＢのチャッタ防止の対象を指定します。ビットＯＮでチャッタ対象指定となります。


デバイス範囲5

    ＰＩＣ・１６Ｆ８４Ａ

デバイス範囲

Ｍリレ－（補助リレー）

    Ｍ０００　～Ｍ３３５

        合計　３３６

注意

  1. 補助リレーとしての出力は一個当り、１箇所のみに限定されます。

  2. ラッチリレ－、タイマ接点、カウンタ接点等、別種リレ－が使用されるとその分、上の数が減少します。　（コンパイル中に、最大Ｍリレ－番号が表示されます。）

  3. ラダー上では同一接点を何回でも使用できます（当然！！）。

  保持リレー（Ｌリレー）　（Ｐ版のみ扱えます）

    Ｌ００　～００１５

    合計　１６

  これを使用すると、Ｍ（補助）リレーの使用可能番号が減少します。

変化があると、保持リレーは１６Ｆ８４内部のＥＥＰＲＯＭデ－タメモリ－に書き込まれます。

電源断後にもそのＯＮ／ＯＦＦ結果をキープし、電源再立上げ時にキープした結果を読み込みます。

書き込みに２０ｍＳ以上かかることがあります。頻ぱんに変化する入出力は、回路の体内時計が狂いますので避けて下さい。

タイマ、カウンタ

    タイマは０番から始まり、合計で２０個使用できます。

    カウンタ、０番から始まり、合計で６個使用できます。

    タイマ－番号２００、２０１は１０ｍＳ単位の高速タイマ－です。

注意

  1. タイマは、２５．５秒が最大です。カウンタは、２５５が最大です。長時間タイマはタイマとカウンタの組み合わせで構成して下さい。

  2. タイマ、カウンタは最大の番号＋１個が使用数になります。つまり、途中の番号はすべて使用されているとみなされますので、番号を詰めて使用するのが効率的です。

  3.  高速タイマ－の場合最大２．５５秒になります。

  4. タイマ、カウンタの入力値は、直値のみ可能で、データメモリー等での入力は不可です。

微分ポイント数

  ＰＬＳ、ＰＬＦ、Ｔ、Ｃ命令の数の合計は６４を越える事はできません。

  （上記命令は微分動作を含み、微分ポイントを使用します。）

以上は目安です。タイマ、カウンタ、微分ポイント数、補助リレー、保持リレーの使用可能数は、トータルで制限されていて、例えば、タイマ、カウンタ数が多ければリレー数が減少し、逆であれば、使用可能なリレー数が増加します。

使用可能のリレー数を越えると、コンパイル時にエラーになりますのでどれかを減らして、調整して下さい。

データ・メモリー

無し！！


  １２Ｆ６２９

概要

ＰＩＣ１２Ｆ６２９ の変換ライブラリーを使用して、基本命令によるシーケンス動作と、アナログ２入力の比較操作が行えます。

ＲＯＭ容量　　１Ｋワード（１４ｂｉｔ）

ピン数　　　８ピン

    Ｉ／Ｏ　計６ピン（全ＩＮ／ＯＵＴ任意）

            ６（ＧＰポート）

  ＰＩＣ１２Ｆ６２９の基本回路

註）ＧＰ３は入力のみに使用できます。

ＰＩＣのピン呼称説明
ＶＤＤ | ５Ｖ電源
ＶＳＳ | ０Ｖ（ＧＮＤ）電源
ＭＣＬＲ | リセットピン（０でリセット）
ＯＳＣ１ | 水晶発振子（４ＭＨｚ） 内蔵が前提です。
ＯＳＣ２
各ピンが入力になるか、出力になるかは回路上の設定番号をＸで始めるか、Ｙで始めるかで任意に選択できます。

最大定格
全ピン吐き出し電流合計 | １００ｍＡ
全ピン吐き出し電流合計 | １５０ｍＡ
各ポート合計 | ５０～１５０ｍＡ
各Ｉ／Ｏピン吸込み電流 | ２５ｍＡ
各Ｉ／Ｏピン吹き出し電流 | ２０ｍＡ
ＲＯＭ容量 | １Ｋバイト

註）ＥＥＰＲＯＭのため、電気的にロム・ライター上で消去＆書き込みができます。

データ用ＥＥＰＲＯＭ内蔵のため、保持リレーの内容の電源断後の保持が可能になります。

註）正確な値いはマイクロチップ社のマニュアルを優先としますのでそちらを参照して下さい。

実行速度

実行速度は内蔵、外付けともに４ＭＨＺの発振を前提にしています、ＬＤ命令で、４マイクロ、ＯＲ、ＡＮＤ命令で２マイクロ、それぞれ正確に実行時間がかかります。

  チャッタリング防止

「連枝」上の《ＣＰＵ設定》でチャッタリング防止を選択すると、入力取込みに一定間隔を置くようになり、チャッタリングをある程度防止できます。

チャッタリング防止

「連枝」上の《ＣＰＵ設定》でチャッタリング防止を選択すると、高速タイマＴ２０１を使用し、１０ｍｓごとに入力の取り込みを行います。この入力の取り込み間隔はD8009で固定値として設定変更可能です。

また、入力ピンごとでチャッタリング防止の有効無効を指定できます。D8010:PORTA ビットＯＮでチャッタ防止対象となります。

チャッタ防止対象とチャッタ防止非対象それぞれで信号の論理を反転させることができます。M8010のコイルを配置すると、チャッタ非対象の論理反転。M8011のコイルでチャッタ対象を論理反転できます。

入力ピン

各ピンを入力として使用するとき、＜ＣＰＵ設定＞で?プルアップ?を設定すると各入力ピンに弱いプルアップがかかります。

（Ｘ０３：ＧＰ０３は例外的にプルアップされません。従って外付けのプルアップ抵抗が必ず必要です）。

それで不十分の場合は．７Ｋ～２０Ｋオームの抵抗で、プルアップする必要が有ります。

出力ピン

各ピンを出力として使用するとき、１ピン当り２５ｍＡ（吹込み、吐出し共）を出力できますが、ＣＰＵトータルでは、３００ｍＡが最大出力になるため、６２００４等のトランジスタ・アレーにより、リレー等を駆動することをおすすめします。

特長

  1. ＶＳＳ電流が各ピン合計電流より小さいため、出力増幅用のトランジスタ・アレーを使用した方が無難です。

  2. ＦＬＡＳＨメモリーのため、上書きでプログラムの変更が可能で、紫外線によるイレーザーで消去する必要がありません。

  3. データ用ＥＥＰＲＯＭを内蔵のため、保持リレーの内容保存には外付けのＥＥＰＲＯＭは必要ありません。

  4. 基本的に必要な外付け部品は、す４ＭＨＺの水晶発振子と、２つの２０ピコ・コンデンサーのみです。一般的には少し精度は落ちますが、１０Ｍｈｚのセラロック１個で充分です。また＜ＣＰＵ設定＞で?ＸＴＬ内部?を選択すれば、内蔵の４ＭＨＺ発振を利用することになり、外付けの発振子は不要になります。

  5. ＜ＣＰＵ設定＞で?リセット内部?を選択すれば、内蔵のリセット回路を使用することになり、外付けリセット回路は不要になります（外付けの場合はは４番ピンになりますがくわしくはマニュアルを参照して下さい）。

対応版

  連枝の１２Ｆ６２９変換ライブラリによるＨＥＸ変換は、対照がＰＩＣのワンチップ・マイコンである為、次に述べるようにそのハードから来る制約を受ける事になります。

   ＣＰＵ中のＲＡＭ容量が比較的に小さい為、使用可能なリレーやタイマの数が、制約されます。

又、ＣＰＵの持つＩ／Ｏ（入出力）のピン数により、入出力リレーの数が制約されます。

入出力リレー　 ビット番号　　　　対応ピックＰＩＮ名

          ？００　～？０５　（　ＧＰ０　～ＧＰ５　）

              合計　　　　６ ピン

    註）？にはＸか、Ｙが入ります。

  主ＣＰＵ（ＰＩＣ）側では、どのピンを入力に使用するか、出力に使用するかピン毎に任意です。

＊　PIC１２Ｆ６２９には、拡張は有りません。

注意

ＨＥＸに変換する場合デバイスの範囲以外やＸ、ＹまたはＴ、Ｃの重なり、使用制限オーバーなどがありますとエラーとなり変換されませんので注意してください。

シーケンス命令

名称 | 命令記号
接点命令 | ＬＤ、ＬＤＩ、ＡＮＤ、ＡＮＩ、ＯＲ、ＯＲＩ
結合命令 | ＡＮＢ、ＯＲＢ
演算結果 | ＭＰＳ、ＭＲＤ、ＭＰＰ
出力命令 | ＯＵＴ（Ｍ、Ｙ）、Ｔ、Ｃ
デバイスのセット、リセット | ＳＥＴ（Ｍ、Ｙ）、ＲＳＴ（Ｍ、Ｙ、Ｃ、Ｔ、Ｄ）
立ち上がり微分、立ち下がり微分 | ＰＬＳ、ＰＬＦ
シフト命令 | ＳＦＴ
終了命令 | ＥＮＤ
継続命令 | －－＞＞、＞＞－－
註）継続命令は－＞＞は、次ぎの＞＞－－のみに継続動作します。 ＣＰＵのＩ／Ｏのハード特性により、入出力の電流容量が決まります。

    註）回路中にＭ９０３５を使用すると、ＧＰ０，ＧＰ１がアナログ入力となり、その入力を比較するモードになります。ＧＰ０＞ＧＰ１の時、下記中の特殊補助リレーのＭ９０３５を　＝１にします（Ｐ版のみ扱えます）。

特殊補助リレー

名称 | デバイス
0.1 秒クロックパルス | Ｍ９０３０
0.2 秒クロックパルス | Ｍ９０３１
1 秒クロックパルス | Ｍ９０３２
比較出力 | Ｍ９０３５
常時ＯＮ リレー | Ｍ９０３６
常時ＯＦＦリレー | Ｍ９０３７
立上り後1スキャンのみONリレー | Ｍ９０３８

    ＣＰＵ中のＲＯＭ容量により、ラダー（シーケンス回路）のステップ数が制約されます。

    １２Ｆ６２９の容量は１Ｋバイトですが、システムに役３００バイト取られます。

    ＡＮＤ、ＯＲの論理命令は２バイト、ＬＤ命令は４バイト、ＯＵＴ命令は５バイト、Ｔ、Ｃ命令には大体１０バイトが必要です。

注意

システムとの合計が１Ｋを越えると、アセンブル（機械語変換）時に、エラーになります。

目安で、１４０ステップぐらいのラダーが構成できるはずです。

  ◎システム初期設定デバイス

  プログラムではなく、初期設定として取り込むための特殊デバイスです。

  設定値は、システム設定として利用され、実行時には変更できません。

  また、ＨＥＸファイル変換時には、ラダー部は設定部分を除いて読み飛ばします。

M8000:システム初期設定ブロックの開始を表す接点です。

M8010:チャッタ非対象を論理反転させるリレーです。配置で反転します。

M8011:チャッタ対象を論理反転させるリレーです。配置で反転します。

D8009:チャッタサンプリング間隔を指定するデータレジスタです。10ms単位で指定します。

D8010:ポートＡのチャッタ防止の対象を指定します。ビットＯＮでチャッタ対象指定となります。


デバイス範囲6

  １２Ｆ６２９

デバイス範囲

Ｍリレ－（補助リレー）

    Ｍ０００　～Ｍ３３５

        合計　３３６

注意

  1. ラッチリレ－、タイマ接点、カウンタ接点等、別種リレ－が使用されるとその分、上の数が減少します。　（コンパイル中に、最大Ｍリレ－番号が表示されます。）

  2. ラダー上では同一接点を何回でも使用できます（当然！！）。

  保持リレー（Ｌリレー）　（Ｐ版のみ扱えます）

    Ｌ００　～００１５

    合計　１６

  これを使用すると、Ｍ（補助）リレーの使用可能番号が減少します。

変化があると、保持リレーはＣＰＵ内部のＥＥＰＲＯＭデ－タメモリ－に書き込まれます。

電源断後にもそのＯＮ／ＯＦＦ結果をキープし、電源再立上げ時にキープした結果を読み込みます。

書き込みに２０ｍＳ以上かかることがあります。回路の体内時計がくるいますので、頻ぱんに変化する入出力は避けて下さい。

〇　回路中にＭ９０３５を使用すると、ＧＰ０，ＧＰ１がアナログ入力となり、その入力を比較するモードになります。ＧＰ０＞ＧＰ１の時、下記中の特殊補助リレーのＭ９０３５を　＝１にします（Ｐ版のみ扱えます）。

タイマ、カウンタ

    タイマは０番から始まり、合計で２０個使用できます。

    カウンタ、０番から始まり、合計で６個使用できます。

    タイマ－番号２００、２０１は１０ｍＳ単位の高速タイマ－です。

注意

  1. タイマは、２５．５秒が最大です。カウンタは、２５５が最大です。長時間タイマはタイマとカウンタの組み合わせで構成して下さい。

  2. タイマ、カウンタは最大の番号＋１個が使用数になります。つまり、途中の番号はすべて使用されているとみなされますので、番号を詰めて使用するのが効率的です。

  3.  高速タイマ－の場合最大２．５５秒になります。

微分ポイント数

  ＰＬＳ、ＰＬＦ、Ｔ、Ｃ命令の数の合計は６４を越える事はできません。

  （上記命令は微分動作を含み、微分ポイントを使用します。）

以上は目安です。タイマ、カウンタ、微分ポイント数、補助リレー、保持リレーの使用可能数は、トータルで制限されていて、例えば、タイマ、カウンタ数が多ければリレー数が減少し、逆であれば、使用可能なリレー数が増加します。

使用可能のリレー数を越えると、コンパイル時にエラーになりますのでどれかを減らして、調整して下さい。

データ・メモリー

無し！！


１６Ｆ６２８.６４８

    ＰＩＣ・１６Ｆ６２８、６４８Ａ

概要

ＰＩＣ１６Ｆ６２８（１６Ｆ６４８）の変換ライブラリーを使用して、基本命令によるシーケンス動作と、アナログ２入力の比較操作が行えます。

ＲＯＭ容量　　１６Ｆ６２８　　２Ｋワード（１４ｂｉｔ）

                 １６Ｆ６４８　　４Ｋワード（１４ｂｉｔ）

ピン数　　　１８ピン

Ｉ／Ｏ　計１６ピン（全ＩＮ／ＯＵＴ任意）

        （８（ＲＡポート）＋８（ＲＢポート））

  ＰＩＣ１６Ｆ６２８,１６Ｆ６4８の基本仕様

註）ＲＡ４はオープン・ドレインの為、引き込み出力のみです。入力に使用するには、プルアップ抵抗が必要です。

註）ＲＡ６，ＲＡ７はＯＳＣ２，ＯＳＣ１として発信器を接続することもできますが、

    発振を内蔵としてＩ／Ｏピンとして使用できます。「連枝」のディフォルトは発信器内蔵になっています。

註）ＲＡ５はＭＣＬＲピンとしてリセット入力に使用できますが、リセット機能を内蔵として、このピンを入力ピンとして使用できます。

ＰＩＣのピン呼称説明
ＶＤＤ | ５Ｖ電源
ＶＳＳ OSC1 OSC2 | ０Ｖ（ＧＮＤ）電源 ４ＭＨｚ（内蔵も可）
各ピンが入力になるか、出力になるかは回路上の設定番号をＸで始めるか、Ｙで始めるかで任意に選択できます。

最大定格
全ピン吸い込み電流合計 | ２５０ｍＡ
全ピン吐き出し電流合計 | ３００ｍＡ
各Ｉ／Ｏピン吸込み電流 | ２５ｍＡ
各Ｉ／Ｏピン吹き出し電流 | ２５ｍＡ

註データ用ＥＥＰＲＯＭ内蔵のため、保持リレーの内容の電源断後の保持が可能になります。

    （Ｐ版のみ可能）

註）正確な値いはマイクロチップ社のマニュアルを優先としますのでそちらを参照して下さい。

実行速度

実行速度は内蔵、外付けともに４ＭＨＺの発振を前提にしています、ＬＤ命令で、４マイクロ、ＯＲ、ＡＮＤ命令で２マイクロ、それぞれ正確に実行時間がかかります。

  チャッタリング防止

「連枝」上の《ＣＰＵ設定》でチャッタリング防止を選択すると、入力取込みに一定間隔を置くようになり、チャッタリングをある程度防止できます。

チャッタリング防止

「連枝」上の《ＣＰＵ設定》でチャッタリング防止を選択すると、高速タイマＴ２０１を使用し、１０ｍｓごとに入力の取り込みを行います。この入力の取り込み間隔はD8009で固定値として設定変更可能です。

また、入力ピンごとでチャッタリング防止の有効無効を指定できます。D8010:PORTA,D8011:PORTB ビットＯＮでチャッタ防止対象となります。

チャッタ防止対象とチャッタ防止非対象それぞれで信号の論理を反転させることができます。M8010のコイルを配置すると、チャッタ非対象の論理反転。M8011のコイルでチャッタ対象を論理反転できます。

入力ピン

各ピンを入力として使用するとき、内部に弱いプルアップをもっているポートＢ（１０　～１７）以外は、４．７Ｋ～２０Ｋオームの抵抗で、プルアップする必要が有ります。

出力ピン

各ピンを出力として使用するとき、１ピン当り２５ｍＡ（吹込み、吐出し共）を出力できますが、ＣＰＵトータルでは、３００ｍＡが最大出力になるため、６２００４等のトランジスタ・アレーにより、リレー等を駆動することをおすすめします。

００４（ＲＡ４）はオープン・ドレインの為、トランジスタ・アレーによるリレー駆動のための出力には使用不適です。

特長

  1. ＶＳＳ電流が各ピン合計電流より小さいため、出力増幅用のトランジスタ・アレーを使用した方が無難です。

  2. ＥＥＰＲＯＭのため、上書きでプログラムの変更が可能にため、紫外線によるイレーザーで消去する必要がありません。

  3. データ用ＥＥＰＲＯＭを内蔵のため、保持リレーの内容保存には外付けのＥＥＰＲＯＭは必要ありません。

  4. 基本的に必要な外付け部品は、す４ＭＨＺの水晶発振子と、２つの２０ピコ・コンデンサーのみです。一般的には少し精度は落ちますが、１０Ｍｈｚのセラロック１個で充分です。また＜ＣＰＵ設定＞で＜ＸＴＬ外部＞にチェックをいれなければ、内蔵の４ＭＨＺ発振を利用することになり、外付けの発振子は不要になります。

  5. ＜ＣＰＵ設定＞で[リセット外部]にチェックをいれなければ、内蔵のリセット回路を使用することになり、外付けリセット回路は不要になります（外付けの場合はは４番ピンになりますがくわしくはマニュアルを参照して下さい）。

対応版

  連枝の１６Ｆ６２８変換ライブラリーによるＨＥＸ変換は、対照がＰＩＣのワンチップ・マイコンである為、次に述べるようにそのハードから来る制約を受ける事になります。

   ＣＰＵ中のＲＡＭ容量が比較的に小さい為、使用可能なリレーやタイマの数が、制約されます。

又、ＣＰＵの持つＩ／Ｏ（入出力）のピン数により、入出力リレーの数が制約されます。

    使用可能リレー番号　　　　Ｍ０～Ｍ２５５　（ＰＩＣ１６Ｆ６２８）

                                     Ｍ０～Ｍ４３１　（ＰＩＣ１６Ｆ６４８Ａ）

    入出力リレー　 ビット番号　　　　対応ピックＰＩＮ名

          ？００　～？０７　（　ＲＡ０　～ＲＡ７　）

          ？１０　～？１７　（　ＲＢ０　～ＲＢ７　）

              合計　　　　１４ ピン

    註）？にはＸか、Ｙが入ります。

    註）ＲＡ５（？０５）は入力のみに使用できます。

  主ＣＰＵ（ＰＩＣ）側では、どのピンを入力に使用するか、出力に使用するかピン毎に任意です。

＊　PIC１６Ｆ６２８、６４８には、拡張は有りません。

シーケンス命令

名称 | 命令記号
接点命令 | ＬＤ、ＬＤＩ、ＡＮＤ、ＡＮＩ、ＯＲ、ＯＲＩ
結合命令 | ＡＮＢ、ＯＲＢ
演算結果 | ＭＰＳ、ＭＲＤ、ＭＰＰ
出力命令 | ＯＵＴ（Ｍ、Ｙ）、Ｔ、Ｃ
デバイスのセット、リセット | ＳＥＴ（Ｍ、Ｙ）、ＲＳＴ（Ｍ、Ｙ、Ｃ、Ｔ、Ｄ）
立ち上がり微分、立ち下がり微分 | ＰＬＳ、ＰＬＦ
シフト命令 | ＳＦＴ
終了命令 | ＥＮＤ
継続命令 | －－＞＞、＞＞－－
註）継続命令は－＞＞は、次ぎの＞＞－－のみに継続動作します。

    註）回路中にＭ９０３５を使用すると、ＲＡ１，ＲＡ２がアナログ入力となり、その入力を比較するモードになります。ＲＡ２＞ＲＡ１の時、下記中の特殊補助リレーのＭ９０３５を　＝１にします。

特殊補助リレー

名称 | デバイス
0.1 秒クロックパルス | Ｍ９０３０
0.2 秒クロックパルス | Ｍ９０３１
1 秒クロックパルス | Ｍ９０３２
比較出力 | Ｍ９０３５
常時ＯＮ リレー | Ｍ９０３６
常時ＯＦＦリレー | Ｍ９０３７
立上り後1スキャンのみONリレー | Ｍ９０３８

    ＣＰＵ中のＲＯＭ容量により、ラダー（シーケンス回路）のステップ数が制約されます。

    １６Ｆ６２８の容量は２Ｋバイトですが、システムに役３００バイト取られます。

    ＡＮＤ、ＯＲの論理命令は２バイト、ＬＤ命令は４バイト、ＯＵＴ命令は５バイト、Ｔ、Ｃ命令には大体１０バイトが必要です。

注意

システムとの合計がＣＰＵのＲＯＭ容量を越えると、アセンブル（機械語変換）時に、エラーになります。

タイマの数等によっても大きな違いがでますが、

目安で１６Ｆ６２８の場合、３５０ステップぐらいのラダーが、

１６Ｆ６４８の場合、８５０ステップぐらいのラダーが構成できるはずです。

  ◎システム初期設定デバイス

  プログラムではなく、初期設定として取り込むための特殊デバイスです。

  設定値は、システム設定として利用され、実行時には変更できません。

  また、ＨＥＸファイル変換時には、ラダー部は設定部分を除いて読み飛ばします。

M8000:システム初期設定ブロックの開始を表す接点です。

M8010:チャッタ非対象を論理反転させるリレーです。配置で反転します。

M8011:チャッタ対象を論理反転させるリレーです。配置で反転します。

D8009:チャッタサンプリング間隔を指定するデータレジスタです。10ms単位で指定します。

D8010:ポートＡのチャッタ防止の対象を指定します。ビットＯＮでチャッタ対象指定となります。

D8011:ポートＢのチャッタ防止の対象を指定します。ビットＯＮでチャッタ対象指定となります。


デバイス範囲7

[   １６Ｆ６２８　　１６Ｆ６４８Ａ

デバイス範囲

Ｍリレ－（補助リレー）

    Ｍ０００　～Ｍ２２３　　　　合計　２２４　　　ＰＩＣ１６Ｆ６２８

    Ｍ０００　～Ｍ４３１　　　　合計　４３２　　　ＰＩＣ１６Ｆ６４８Ａ

注意

  1. ラッチリレ－、タイマ接点、カウンタ接点等、別種リレ－が使用されるとその分、上の数が減少します。　（コンパイル中に、最大Ｍリレ－番号が表示されます。）

  2. ラダー上では同一接点を何回でも使用できます（当然！！）。

  保持リレー（Ｌリレー）　（Ｐ版のみ扱えます）

    Ｌ００　～００１５

    合計　１６

  これを使用すると、Ｍ（補助）リレーの使用可能番号が減少します。

変化があると、保持リレーはＣＰＵ内部のＥＥＰＲＯＭデ－タメモリ－に書き込まれます。

電源断後にもそのＯＮ／ＯＦＦ結果をキープし、電源再立上げ時にキープした結果を読み込みます。

書き込みに２０ｍＳ以上かかることがあります。頻ぱんに変化する入出力は、回路の体内時計が狂いますので避けて下さい。

 〇　回路中にＭ９０３５を使用すると、ＲＡ１，ＲＡ２がアナログ入力となり、その入力を比較するモードになります。ＲＡ２＞ＲＡ１の時、下記中の特殊補助リレーのＭ９０３５を　＝１にします（Ｐ版のみ扱えます）。

タイマ、カウンタ

    タイマ、カウンタは、各々０番から始まり、合計で７４個使用できます。

    タイマ－番号２００、２０１は１０ｍＳ単位の高速タイマ－です。

注意

  1. タイマは、２５．５秒が最大です。カウンタは、２５５が最大です。長時間タイマはタイマとカウンタの組み合わせで構成して下さい。

  2. タイマ、カウンタは最大の番号＋１個が使用数になります。つまり、途中の番号はすべて使用されているとみなされますので、番号を詰めて使用するのが効率的です。

  3.  高速タイマ－の場合最大２．５５秒になります。

微分ポイント数

  ＰＬＳ、ＰＬＦ、Ｔ、Ｃ命令の数の合計は６４を越える事はできません。

  （上記命令は微分動作を含み、微分ポイントを使用します。）

以上は目安です。タイマ、カウンタ、微分ポイント数、補助リレー、保持リレーの使用可能数は、トータルで制限されていて、例えば、タイマ、カウンタ数が多ければリレー数が減少し、逆であれば、使用可能なリレー数が増加します。

使用可能のリレー数を越えると、コンパイル時にエラーになりますのでどれかを減らして、調整して下さい。

データ・メモリー

無し！！

注意

ＨＥＸに変換する場合デバイスの範囲以外やＸ、ＹまたはＴ、Ｃの重なり、使用制限オーバーなどがありますとエラーとなり変換されませんので注意してください。


ＰＩＣ１２Ｆ６８３

  １２Ｆ６８３

概要

ＰＩＣ１２Ｆ６８３ の変換ライブラリーを使用して、基本命令によるシーケンス動作と、アナログ４入力による操作が行えます。

ＲＯＭ容量　　２Ｋワード（１４ｂｉｔ）

ピン数　　　８ピン

    Ｉ／Ｏ　計６ピン（全ＩＮ／ＯＵＴ任意）

            ６（ＧＰポート）

  ＰＩＣ１２Ｆ６８３の基本回路

註）ＧＰ３は入力のみに使用できます。

ＰＩＣのピン呼称説明
ＶＤＤ | ５Ｖ電源
ＶＳＳ | ０Ｖ（ＧＮＤ）電源
ＭＣＬＲ | リセットピン（０でリセット）
ＯＳＣ１ | 水晶発振子（４ＭＨｚ） 内蔵が前提です（４ＭＨｚ）。
ＯＳＣ２
各ピンが入力になるか、出力になるかは回路上の設定番号をＸで始めるか、Ｙで始めるかで任意に選択できます。

最大定格
全ピン吐き出し電流合計 | １００ｍＡ
全ピン吐き出し電流合計 | １５０ｍＡ
各ポート合計 | ５０～１５０ｍＡ
各Ｉ／Ｏピン吸込み電流 | ２５ｍＡ
各Ｉ／Ｏピン吹き出し電流 | ２０ｍＡ
ＲＯＭ容量 | １Ｋバイト

註）ＥＥＰＲＯＭのため、電気的にロム・ライター上で消去＆書き込みができます。

データ用ＥＥＰＲＯＭ内蔵のため、保持リレーの内容の電源断後の保持が可能になります。

註）正確な値いはマイクロチップ社のマニュアルを優先としますのでそちらを参照して下さい。

実行速度

実行速度は内蔵、外付けともに４ＭＨＺの発振を前提にしています、ＬＤ命令で、４マイクロ、ＯＲ、ＡＮＤ命令で２マイクロ、それぞれ正確に実行時間がかかります。

  チャッタリング防止

「連枝」上の《ＣＰＵ設定》でチャッタリング防止を選択すると、入力取込みに一定間隔を置くようになり、チャッタリングをある程度防止できます。

チャッタリング防止

「連枝」上の《ＣＰＵ設定》でチャッタリング防止を選択すると、高速タイマＴ２０１を使用し、１０ｍｓごとに入力の取り込みを行います。この入力の取り込み間隔はD8009で固定値として設定変更可能です。

また、入力ピンごとでチャッタリング防止の有効無効を指定できます。D8010:PORTA ビットＯＮでチャッタ防止対象となります。

チャッタ防止対象とチャッタ防止非対象それぞれで信号の論理を反転させることができます。M8010のコイルを配置すると、チャッタ非対象の論理反転。M8011のコイルでチャッタ対象を論理反転できます。

入力ピン

各ピンを入力として使用するとき、＜ＣＰＵ設定＞で?プルアップ?を設定すると各入力ピンに弱いプルアップがかかります。

（Ｘ０３：ＧＰ０３は例外的にプルアップされません。従って外付けのプルアップ抵抗が必ず必要です）。

それで不十分の場合は．７Ｋ～２０Ｋオームの抵抗で、プルアップする必要が有ります。

出力ピン

各ピンを出力として使用するとき、１ピン当り２５ｍＡ（吹込み、吐出し共）を出力できますが、ＣＰＵトータルでは、３００ｍＡが最大出力になるため、６２００４等のトランジスタ・アレーにより、リレー等を駆動することをおすすめします。

特長

  1. ＶＳＳ電流が各ピン合計電流より小さいため、出力増幅用のトランジスタ・アレーを使用した方が無難です。

  2. ＦＬＡＳＨメモリーのため、上書きでプログラムの変更が可能で、紫外線によるイレーザーで消去する必要がありません。

  3. データ用ＥＥＰＲＯＭを内蔵のため、保持リレーの内容保存には外付けのＥＥＰＲＯＭは必要ありません。

  4. 基本的に必要な外付け部品は、す４ＭＨＺの水晶発振子と、２つの２０ピコ・コンデンサーのみです。一般的には少し精度は落ちますが、１０Ｍｈｚのセラロック１個で充分です。また＜ＣＰＵ設定＞で?ＸＴＬ内部?を選択すれば、内蔵の４ＭＨＺ発振を利用することになり、外付けの発振子は不要になります。

  5. ＜ＣＰＵ設定＞で?リセット内部?を選択すれば、内蔵のリセット回路を使用することになり、外付けリセット回路は不要になります（外付けの場合はは４番ピンになりますがくわしくはマニュアルを参照して下さい）。

対応版

  連枝の１２Ｆ６２９変換ライブラリによるＨＥＸ変換は、対照がＰＩＣのワンチップ・マイコンである為、次に述べるようにそのハードから来る制約を受ける事になります。

   ＣＰＵ中のＲＡＭ容量が比較的に小さい為、使用可能なリレーやタイマの数が、制約されます。

又、ＣＰＵの持つＩ／Ｏ（入出力）のピン数により、入出力リレーの数が制約されます。

入出力リレー　 ビット番号　　　　対応ピックＰＩＮ名

          ？００　～？０５　（　ＧＰ０　～ＧＰ５　）

              合計　　　　６ ピン

    註）？にはＸか、Ｙが入ります。

  主ＣＰＵ（ＰＩＣ）側では、どのピンを入力に使用するか、出力に使用するかピン毎に任意です。

＊　PIC１２Ｆ６２９には、拡張は有りません。

注意

ＨＥＸに変換する場合デバイスの範囲以外やＸ、ＹまたはＴ、Ｃの重なり、使用制限オーバーなどがありますとエラーとなり変換されませんので注意してください。

    CＰＵ中のＲＯＭ容量により、ラダー（シーケンス回路）のステップ数が制約されます。

    １２Ｆ６２９の容量は１Ｋバイトですが、システムに役３００バイト取られます。

    ＡＮＤ、ＯＲの論理命令は２バイト、ＬＤ命令は４バイト、ＯＵＴ命令は５バイト、Ｔ、Ｃ命令には大体１０バイトが必要です。

注意

システムとの合計が１Ｋを越えると、アセンブル（機械語変換）時に、エラーになります。

目安で、１４０ステップぐらいのラダーが構成できるはずです。


ＡＡＡ

  １２Ｆ６８３

デバイス範囲

Ｍリレ－（補助リレー）

    Ｍ０００　～Ｍ３３５

        合計　３３６

注意

  1. ラッチリレ－、タイマ接点、カウンタ接点等、別種リレ－が使用されるとその分、上の数が減少します。　（コンパイル中に、最大Ｍリレ－番号が表示されます。）

  2. ラダー上では同一接点を何回でも使用できます（当然！！）。

特殊補助リレー

機能 | デバイス
0.1 秒クロックパルス | Ｍ９０３０
0.2 秒クロックパルス | Ｍ９０３１
1 秒クロックパルス | Ｍ９０３２
常時ＯＮ リレー | Ｍ９０３６
常時ＯＦＦリレー | Ｍ９０３７
立上り後1スキャンのみONリレー | Ｍ９０３８
立上り１クール後1スキャンのみONリレー | Ｍ９０３９
エラー受信きたフラグ | Ｍ９０４０
正常受信きたフラグ | Ｍ９０４１
０フラッグ | Ｍ９０１３

    註）回路中にＭ９０３５を使用すると、ＧＰ０，ＧＰ１がアナログ入力となり、その入力を比較するモードになります。ＧＰ０＞ＧＰ１の時、下記中の特殊補助リレーのＭ９０３５を　＝１にします（Ｐ版のみ扱えます）。

  保持リレー（Ｌリレー）　（Ｐ版のみ扱えます）

    Ｌ００　～００１５

    合計　１６

  これを使用すると、Ｍ（補助）リレーの使用可能番号が減少します。

変化があると、保持リレーはＣＰＵ内部のＥＥＰＲＯＭデ－タメモリ－に書き込まれます。

電源断後にもそのＯＮ／ＯＦＦ結果をキープし、電源再立上げ時にキープした結果を読み込みます。

書き込みに２０ｍＳ以上かかることがあります。回路の体内時計がくるいますので、頻ぱんに変化する入出力は避けて下さい。

〇　回路中にＭ９０３５を使用すると、ＧＰ０，ＧＰ１がアナログ入力となり、その入力を比較するモードになります。ＧＰ０＞ＧＰ１の時、下記中の特殊補助リレーのＭ９０３５を　＝１にします（Ｐ版のみ扱えます）。

タイマ、カウンタ

    タイマは０番から始まり、合計で２０個使用できます。

    カウンタ、０番から始まり、合計で６個使用できます。

    タイマ－番号２００、２０１は１０ｍＳ単位の高速タイマ－です。

注意

  1. タイマは、２５．５秒が最大です。カウンタは、２５５が最大です。長時間タイマはタイマとカウンタの組み合わせで構成して下さい。

  2. タイマ、カウンタは最大の番号＋１個が使用数になります。つまり、途中の番号はすべて使用されているとみなされますので、番号を詰めて使用するのが効率的です。

  3.  高速タイマ－の場合最大２．５５秒になります。

微分ポイント数

  ＰＬＳ、ＰＬＦ、Ｔ、Ｃ命令の数の合計は６４を越える事はできません。

  （上記命令は微分動作を含み、微分ポイントを使用します。）

以上は目安です。タイマ、カウンタ、微分ポイント数、補助リレー、保持リレーの使用可能数は、トータルで制限されていて、例えば、タイマ、カウンタ数が多ければリレー数が減少し、逆であれば、使用可能なリレー数が増加します。

使用可能のリレー数を越えると、コンパイル時にエラーになりますのでどれかを減らして、調整して下さい。

データ・メモリー

Ｄ０～Ｄ１５

  ◎システム初期設定デバイス

  プログラムではなく、初期設定として取り込むための特殊デバイスです。

  設定値は、システム設定として利用され、実行時には変更できません。

  また、ＨＥＸファイル変換時には、ラダー部は設定部分を除いて読み飛ばします。

M8000:システム初期設定ブロックの開始を表す接点です。

M8010:チャッタ非対象を論理反転させるリレーです。配置で反転します。

M8011:チャッタ対象を論理反転させるリレーです。配置で反転します。

D8009:チャッタサンプリング間隔を指定するデータレジスタです。10ms単位で指定します。

D8010:ポートＡのチャッタ防止の対象を指定します。ビットＯＮでチャッタ対象指定となります。


命令

    ＰＩＣ・１２Ｆ６８３

シーケンス基本命令

名称 | 命令記号
接点命令 | ＬＤ、ＬＤＩ、ＡＮＤ、ＡＮＩ、ＯＲ、ＯＲＩ
結合命令 | ＡＮＢ、ＯＲＢ
演算結果 | ＭＰＳ、ＭＲＤ、ＭＰＰ
出力命令 | ＯＵＴ（Ｍ、Ｙ）、Ｔ、Ｃ
デバイスのセット、リセット | ＳＥＴ（Ｍ、Ｙ）、ＲＳＴ（Ｍ、Ｙ、Ｃ、Ｔ、Ｄ）
立ち上がり微分、立ち下がり微分 | ＰＬＳ、ＰＬＦ
シフト命令 | ＳＦＴ
終了命令 | ＥＮＤ
継続命令 | －－＞＞、＞＞－－
註）継続命令は－＞＞は、次ぎの行の＞＞－－のみに継続動作します。

応用命令

  ＰＩＣの応用命令は１６ビットの範囲内で実行されます。

  ダブルワード命令はサポートしていません。

註）　Ｋ４Ｍ１６　等の桁指定はこのＣＰＵでは不可です。

算術演算命令

名称 | 命令記号
BCD4桁加算（１） | ＋＝、＋＝Ｐ
BCD4桁加算（２） | ＋、＋Ｐ
BCD4桁減算（１） | －＝、－＝Ｐ
BCD4桁減算（２） | －、－Ｐ
BCD4桁乗算 | ＊、＊Ｐ 指定先の２ワードに答えが入ります。 答えにＤ１０を指定した場合、Ｄ１１まで２ワード使用します
BCD4桁除算 | ／、／Ｐ 指定先の１ワードに答えが入ります。 余りはその先の１ワードに入ります。 答えにＤ１０を指定した場合、Ｄ１１まで２ワード使用します。
BIN16ビット加算（１） | B＋＝、B＋＝Ｐ
BIN16ビット加算（２） | B＋、B＋Ｐ
BIN16ビット減算（１） | B－＝、B－＝Ｐ
BIN16ビット減算（２） | B－、B－Ｐ
BIN16ビット乗算 | B＊、B＊Ｐ 指定先の２ワード（例、Ｄ１０、Ｄ１１）に答えが入ります。 答えにＤ１０を指定した場合、Ｄ１１まで２ワード使用します。
BIN16ビット除算 | B／、B／Ｐ 指定先の２ワード（例Ｄ１０）に答えが入ります。 余りは１６ﾋﾞｯﾄのみで、その先の1ワード（D１１）に入ります。 つまり、答えにＤ１０を指定した場合、Ｄ１１で２ワード使用します。
16ビットBCDデータインクリメント | ＩＮＣ、ＩＮＣＰ
16ビットBCDデータデクリメント | ＤＥＣ、ＤＥＣＰ

BCD<－>BIN変換命令

BINデータ－>BCD4桁変換 | ＢＣＤ、ＢＣＤＰ
BCD4桁－>BINデータ変換 | ＢＩＮ、ＢＩＮＰ

データ転送命令

16ビットデータ転送 | ＭＯＶ、ＭＯＶＰ
16ビットデータ否定転送 | ＣＭＬ、ＣＭＬＰ
16ビットデータ交換 | ＸＣＨ、ＸＣＨＰ
16ビット２の補数 | ＮＥＧ、ＮＥＧＰ

理演算命令

16ビットデータ論理積（１） | ＷＡＮＤ＝、ＷＡＮＤ＝Ｐ
16ビットデータ論理積（２） | ＷＡＮＤ、ＷＡＮＤＰ
16ビットデータ論理和（１） | ＷＯＲ＝、ＷＯＲ＝Ｐ
16ビットデータ論理和（２） | ＷＯＲ、ＷＯＲＰ
16ビットデータ排他的論理和（１） | ＷＸＯＲ＝、ＷＸＯＲ＝Ｐ
16ビットデータ排他的論理和（２） | ＷＸＯＲ、ＷＸＯＲＰ
16ビットデータ否定排他的論理和（１） | ＷＸＮＲ＝、ＷＸＮＲ＝Ｐ
16ビットデータ否定排他的論理和（２） | ＷＸＮＲ、ＷＸＮＲＰ
デコード | ＤＥＣＯ、ＤＥＣＯＰ（第３オペランドは必ずＫ８とみなされます）

比較演算命令

16ビットデータ比較

＝、＜＞、＞、＜＝、＜、＞＝

ローテーション命令

16ビットデータの右ローテーション（１） | ＲＯＲ、ＲＯＲＰ
16ビットデータの右ローテーション（２） | ＲＣＲ、ＲＣＲＰ
16ビットデータの左ローテーション（１） | ＲＯＬ、ＲＯＬＰ
16ビットデータの左ローテーション（２） | ＲＣＬ、ＲＣＬＰ

シフト命令

16ビットデータnビット右シフト | ＳＦＲ、ＳＦＲＰ
16ビットデータnビット左シフト | ＳＦＬ、ＳＦＬＰ

ジャンプ命令

サブルーチン・コール命令 | ＳＣＡＬＬ（コールの対象サブルーチンは必ずＦＥＮＤのあとＥＮＤの前 に置き、頭に被コールポイントＰを置いて、コールの対象番号をつける）
リターン命令 | ＲＥＴＲＮ（サブルーチンの最後に置く）

ソフトウエア・タイマ

１μＳタイマ | ＭＣ１
１００μＳタイマ | ＭＣ１００

終了命令

全命令終了命令 | ＥＮＤ
１クール終了点命令 | ＦＥＮＤ（この命令以降にサブルーチンとその被コールポイントＰを置く）

註）各応用命令の動作については関数ヘルプを参照してください。

特殊補助リレー

機能 | デバイス
0.1 秒クロックパルス | Ｍ９０３０
0.2 秒クロックパルス | Ｍ９０３１
1 秒クロックパルス | Ｍ９０３２
常時ＯＮ リレー | Ｍ９０３６
常時ＯＦＦリレー | Ｍ９０３７
立上り後1スキャンのみONリレー | Ｍ９０３８
０フラッグ | Ｍ９０１３

微分ポイント数

    ＰＬＳ、ＰＬＦ、Ｔ、Ｃ命令の数の合計と、微分命令の数の合計は３２０個をえることがきません。（上記命令は微分動作を含み、微分ポイントを使用します。）

ステップ数とメモリ

    ＣＰＵ中のＲＯＭ容量により、ラダー（シーケンス回路）のステップ数が制約されます。

    １２Ｆ６８３の容量は２Ｋワードですが、システムに１Ｋ程度取られます。

    各命令が使用する合計のバイト数が４２を越えると、アセンブル（機械語変換）時に、エラーになります。

    目安で、２００ステップぐらいのラダーが構成できるはずです。


A/D

    ＰＩＣ・１２Ｆ６８３

Ａ／Ｄコンバータ（応用命令に含まれる）

  １２Ｆ６８３は、８ピンのうち４ピンのピンをＡ／Ｄコンバート・モードで使用する事ができます。

「連枝」は、それを利用して、ＡＤＣＯ（Ａ／Ｄコンバータ）命令を使用できます。

ＧＰ０（ＡＮ０）、ＧＰ１（ＡＮ１）、ＧＰ２（ＡＮ２）、ＧＰ４（ＡＮ３）の内の、

１ビットを選び、Ａ／Ｄの結果値の、格納先を書き込みます。

下の命令では各々ＧＰ１とＧＰ４への入力が１０ビットでＡ／Ｄ変換されてＤ０、Ｄ１に入ります。

例　　　ＡＤＣＯ　Ｘ１　Ｄ０

        ＡＤＣＯ　Ｘ４　Ｄ１

注意

  Ａ／Ｄコンバートには１ピン単位で使用できます。ＧＰ０～ＧＰ５のうちＡ／Ｄコンバートに使用しないピンはすべてＩ／Ｏに使用できます。

Ｄ／Ａコンバータ（ＰＷＭ変換）（応用命令に含まれる）

  １２Ｆ６８３は、ＧＰ２のピンをＰＷＭコンバート・モードで使用する事ができます。

「連枝」は、それを利用して、ＤＡＣＯ（Ｄ／Ａコンバータ）命令を使用できます。

Ｄ／Ａ変換のもとの８ビット(バイナリー）の値いの格納先を第１オペランドとし、結果の出力ピンとして、ＧＰ２（Ｙ０２）を第２オペランドとして書き込みます。

下の命令ではＤ０（下位８ビット）の値がＡ／Ｄ変換（ＰＷＭ変換）されて、ＧＰ２（５番ピン）に出力されます。

例　　　ＤＡＣＯ　Ｄ０　Ｙ０２

 註）ＰＷＭの出力は３．９Khzの基本パルス内でのＤｕｔｙサイクルになります。

      Ｄｕｔｙサイクルは８ビット分解能（０～ＦＦ）の指定で決定されます。

 註）Ａ／Ｄ、Ｄ／Ａコンバート命令に関しては、変換内容デバイスとしてＤメモリー等、桁指定以外のデバイスを指定できます。

    直値の入力も可能ですが、その場合バイナリー値のみのため、頭にＨをつけてください。


ＰＩＣ１６Ｆ７８５

    ＰＩＣ・１６Ｆ７８５

概要

ＰＩＣ１６Ｆ７８５の変換ライブラリーを使用して、基本命令によるシーケンス動作が行えます。

ＲＯＭ容量　　　２Ｋワード（１４ｂｉｔ）

ピン数　　　２０ピン

Ｉ／Ｏ　計１６ピン（全ＩＮ／ＯＵＴ任意）

        （６（ＲＡポート）＋４（ＲＢポート）＋８（ＲＣポート））

  ＰＩＣ１６Ｆ７８５の基本仕様

註）ＲＢ６はオープン・ドレインの為、引き込み出力のみです。入力に使用するには、プルアップ抵抗が必要です。

註）ＲＡ４，ＲＡ５は、ＯＳＣ２，ＯＳＣ１として発信器を接続することもできますが、

    発振を内蔵に設定すればＩ／Ｏピンとして使用できます。「連枝」のディフォルトは発信器内蔵になっています。

註）ＲＡ３はＭＣＬＲピンとしてリセット入力に使用できますが、リセット機能を内蔵に設定すれば、このピンを入力ピンとして使用できます。「連枝」のディフォルトはリセット内蔵になっています。

ＰＩＣのピン呼称説明
ＶＤＤ | ５Ｖ電源
ＶＳＳ ＯＳＣ１ ＯＳＣ２ | ０Ｖ（ＧＮＤ）電源 ４ＭＨｚ（内蔵も可）
各ピンが入力になるか、出力になるかは回路上の設定番号をＸで始めるか、Ｙで始めるかで任意に選択できます。

最大定格
全ピン吸い込み電流合計 | ２５０ｍＡ
全ピン吐き出し電流合計 | ３００ｍＡ
各Ｉ／Ｏピン吸込み電流 | ２５ｍＡ
各Ｉ／Ｏピン吹き出し電流 | ２５ｍＡ

註）データ用ＥＥＰＲＯＭ内蔵のため、保持リレーの内容の電源断後の保持が可能になります。

    （Ｐ版のみ可能）

註）正確な値いはマイクロチップ社のマニュアルを優先としますのでそちらを参照して下さい。

実行速度

実行速度は内蔵、外付けともに４ＭＨＺの発振を前提にしています、ＬＤ命令で、４マイクロ、ＯＲ、ＡＮＤ命令で２マイクロ、それぞれ正確に実行時間がかかります。

  チャッタリング防止

「連枝」上の《ＣＰＵ設定》でチャッタリング防止を選択すると、入力取込みに一定間隔を置くようになり、チャッタリングをある程度防止できます。

チャッタリング防止

「連枝」上の《ＣＰＵ設定》でチャッタリング防止を選択すると、高速タイマＴ２０１を使用し、１０ｍｓごとに入力の取り込みを行います。この入力の取り込み間隔はD8009で固定値として設定変更可能です。

また、入力ピンごとでチャッタリング防止の有効無効を指定できます。D8010:PORTA,D8011:PORTB,D8012:PORTC ビットＯＮでチャッタ防止対象となります。

チャッタ防止対象とチャッタ防止非対象それぞれで信号の論理を反転させることができます。M8010のコイルを配置すると、チャッタ非対象の論理反転。M8011のコイルでチャッタ対象を論理反転できます。

入力ピン

各ピンを入力として使用するとき、内部に弱いプルアップをもっているポートＡ（００～０５）以外は、４．７Ｋ～２０Ｋオームの抵抗で、プルアップする必要が有ります。

出力ピン

各ピンを出力として使用するとき、１ピン当り２５ｍＡ（吹込み、吐出し共）を出力できますが、ＣＰＵトータルでは、３００ｍＡが最大出力になるため、６２００４等のトランジスタ・アレーにより、リレー等を駆動することをおすすめします。

特長

  1. ＶＳＳ電流が各ピン合計電流より小さいため、出力増幅用のトランジスタ・アレーを使用した方が無難です。

  2. ＥＥＰＲＯＭのため、上書きでプログラムの変更が可能にため、紫外線によるイレーザーで消去する必要がありません。

  3. データ用ＥＥＰＲＯＭを内蔵のため、保持リレーの内容保存には外付けのＥＥＰＲＯＭは必要ありません。

  4. 基本的に必要な外付け部品は、す４ＭＨＺの水晶発振子と、２つの２０ピコ・コンデンサーのみです。一般的には少し精度は落ちますが、１０Ｍｈｚのセラロック１個で充分です。また＜ＣＰＵ設定＞で＜ＸＴＬ外部＞にチェックをいれなければ、内蔵の４ＭＨＺ発振を利用することになり、外付けの発振子は不要になります。

  5. ＜ＣＰＵ設定＞で[リセット外部]にチェックをいれなければ、内蔵のリセット回路を使用することになり、外付けリセット回路は不要になります（外付けの場合はは４番ピンになりますがくわしくはマニュアルを参照して下さい）。

対応版

  連枝の１６Ｆ７８５変換ライブラリーによるＨＥＸ変換は、対照がＰＩＣのワンチップ・マイコンである為、次に述べるようにそのハードから来る制約を受ける事になります。

   ＣＰＵ中のＲＡＭ容量が比較的に小さい為、使用可能なリレーやタイマの数が、制約されます。

又、ＣＰＵの持つＩ／Ｏ（入出力）のピン数により、入出力リレーの数が制約されます。

    使用可能リレー番号　　　　Ｍ０～Ｍ１４３

    入出力リレー　 ビット番号　　　　対応ピックＰＩＮ名

          ？００　～？０５　（　ＲＡ０　～ＲＡ５　）

          ？１４　～？１７　（　ＲＢ４　～ＲＢ７　）

          ？２０　～？２７　（　ＲＣ０　～ＲＣ７　）

              合計　　　　１４ ピン

    註）？にはＸか、Ｙが入ります。

    註）ＲＡ３（０３）は入力のみに使用できます。

  主ＣＰＵ（ＰＩＣ）側では、どのピンを入力に使用するか、出力に使用するかピン毎に任意です。

＊　PIC１６Ｆ７８５には、拡張は有りません。

シーケンス命令

名称 | 命令記号
接点命令 | ＬＤ、ＬＤＩ、ＡＮＤ、ＡＮＩ、ＯＲ、ＯＲＩ
結合命令 | ＡＮＢ、ＯＲＢ
演算結果 | ＭＰＳ、ＭＲＤ、ＭＰＰ
出力命令 | ＯＵＴ（Ｍ、Ｙ）、Ｔ、Ｃ
デバイスのセット、リセット | ＳＥＴ（Ｍ、Ｙ）、ＲＳＴ（Ｍ、Ｙ、Ｃ、Ｔ、Ｄ）
立ち上がり微分、立ち下がり微分 | ＰＬＳ、ＰＬＦ
シフト命令 | ＳＦＴ
終了命令 | ＥＮＤ
継続命令 | －－＞＞、＞＞－－
註）継続命令は－＞＞は、次ぎの＞＞－－のみに継続動作します。

特殊補助リレー

名称 | デバイス
0.1 秒クロックパルス | Ｍ９０３０
0.2 秒クロックパルス | Ｍ９０３１
1 秒クロックパルス | Ｍ９０３２
比較出力 | Ｍ９０３５
常時ＯＮ リレー | Ｍ９０３６
常時ＯＦＦリレー | Ｍ９０３７
立上り後1スキャンのみONリレー | Ｍ９０３８

    ＣＰＵ中のＲＯＭ容量により、ラダー（シーケンス回路）のステップ数が制約されます。

    １６Ｆ７８５の容量は２Ｋバイトですが、システムに約３００バイト取られます。

    ＡＮＤ、ＯＲの論理命令は２バイト、ＬＤ命令は４バイト、ＯＵＴ命令は５バイト、Ｔ、Ｃ命令には大体１０バイトが必要です。

注意

システムとの合計がＣＰＵのＲＯＭ容量を越えると、アセンブル（機械語変換）時に、エラーになります。

タイマの数等によっても大きな違いがでますが、

目安で１６Ｆ７８５の場合、３５０ステップぐらいのラダーが構成できます。

  ◎システム初期設定デバイス

  プログラムではなく、初期設定として取り込むための特殊デバイスです。

  設定値は、システム設定として利用され、実行時には変更できません。

  また、ＨＥＸファイル変換時には、ラダー部は設定部分を除いて読み飛ばします。

M8000:システム初期設定ブロックの開始を表す接点です。

M8010:チャッタ非対象を論理反転させるリレーです。配置で反転します。

M8011:チャッタ対象を論理反転させるリレーです。配置で反転します。

D8009:チャッタサンプリング間隔を指定するデータレジスタです。10ms単位で指定します。

D8010:ポートＡのチャッタ防止の対象を指定します。ビットＯＮでチャッタ対象指定となります。

D8011:ポートＢのチャッタ防止の対象を指定します。ビットＯＮでチャッタ対象指定となります。

D8012:ポートＣのチャッタ防止の対象を指定します。ビットＯＮでチャッタ対象指定となります。


[   １６Ｆ６２８　　１６Ｆ６４８

デバイス範囲

Ｍリレ－（補助リレー）

    Ｍ０００　～Ｍ１４３

        合計　１４４

注意

  1. ラッチリレ－、タイマ接点、カウンタ接点等、別種リレ－が使用されるとその分、上の数が減少します。　（コンパイル中に、最大Ｍリレ－番号が表示されます。）

  2. ラダー上では同一接点を何回でも使用できます（当然！！）。

  保持リレー（Ｌリレー）　（Ｐ版のみ扱えます）

    Ｌ００　～００１５

    合計　１６

  これを使用すると、Ｍ（補助）リレーの使用可能番号が減少します。

変化があると、保持リレーはＣＰＵ内部のＥＥＰＲＯＭデ－タメモリ－に書き込まれます。

電源断後にもそのＯＮ／ＯＦＦ結果をキープし、電源再立上げ時にキープした結果を読み込みます。

書き込みに２０ｍＳ以上かかることがあります。頻ぱんに変化する入出力は、回路の体内時計が狂いますので避けて下さい。

タイマ、カウンタ

    タイマ、カウンタは各々０番から始まり、合計で２４個使用できます。

    タイマ－番号２００、２０１は１０ｍＳ単位の高速タイマ－です。

注意

  1. タイマは、２５．５秒が最大です。カウンタは、２５５が最大です。長時間タイマはタイマとカウンタの組み合わせで構成して下さい。

  2. タイマ、カウンタは最大の番号＋１個が使用数になります。つまり、途中の番号はすべて使用されているとみなされますので、番号を詰めて使用するのが効率的です。

  3.  高速タイマ－の場合最大２．５５秒になります。

微分ポイント数

  ＰＬＳ、ＰＬＦ、Ｔ、Ｃ命令の数の合計は６４を越える事はできません。

  （上記命令は微分動作を含み、微分ポイントを使用します。）

以上は目安です。タイマ、カウンタ、微分ポイント数、補助リレー、保持リレーの使用可能数は、トータルで制限されていて、例えば、タイマ、カウンタ数が多ければリレー数が減少し、逆であれば、使用可能なリレー数が増加します。

使用可能のリレー数を越えると、コンパイル時にエラーになりますのでどれかを減らして、調整して下さい。

データ・メモリー

無し！！

注意

ＨＥＸに変換する場合デバイスの範囲以外やＸ、ＹまたはＴ、Ｃの重なり、使用制限オーバーなどがありますとエラーとなり変換されませんので注意してください。


ＰＩＣ１２Ｆ６８３

  １２Ｆ１８２２

概要

ＰＩＣ１２Ｆ１８２２ の変換ライブラリーを使用して、基本命令によるシーケンス動作と、アナログ４入力、ＰＷＭ、エンコーダ、アナログコンパレータによる操作が行えます。

ＲＯＭ容量　　２Ｋワード（１４ｂｉｔ）

ピン数　　　８ピン

    Ｉ／Ｏ　計６ピン（ＩＮ／ＯＵＴ任意　ただし、ＲＡ３は入力のみ）

            ６（ＧＰポート）

  ＰＩＣ１２Ｆ１８２２の基本回路

註）ＧＰ３は入力のみに使用できます。

ＰＩＣのピン呼称説明
ＶＤＤ | ５Ｖ電源
ＶＳＳ | ０Ｖ（ＧＮＤ）電源
ＭＣＬＲ | リセットピン（０でリセット）
ＯＳＣ１ | 水晶発振子（８ＭＨｚ） 内蔵が前提です３２ＭＨｚ（８ＭＨｚ×４）
ＯＳＣ２
各ピンが入力になるか、出力になるかは回路上の設定番号をＸで始めるか、Ｙで始めるかで任意に選択できます。

最大定格
全ピン吐き出し電流合計 | １００ｍＡ
全ピン吐き出し電流合計 | １５０ｍＡ
各ポート合計 | ５０～１５０ｍＡ
各Ｉ／Ｏピン吸込み電流 | ２５ｍＡ
各Ｉ／Ｏピン吹き出し電流 | ２０ｍＡ
ＥＥＰＲＯＭ容量 | １Ｋバイト

註）ＥＥＰＲＯＭのため、電気的にロム・ライター上で消去＆書き込みができます。

データ用ＥＥＰＲＯＭ内蔵のため、保持リレーの内容の電源断後の保持が可能になります。

註）正確な値いはマイクロチップ社のマニュアルを優先としますのでそちらを参照して下さい。

実行速度

実行速度は内蔵、外付けともに３２ＭＨｚ（８ＭＨＺ×４）の発振を前提にしています、ＬＤ命令で、４マイクロ、ＯＲ、ＡＮＤ命令で２マイクロ、それぞれ正確に実行時間がかかります。

  チャッタリング防止

「連枝」上の《ＣＰＵ設定》でチャッタリング防止を選択すると、入力取込みに一定間隔を置くようになり、チャッタリングをある程度防止できます。

チャッタリング防止

「連枝」上の《ＣＰＵ設定》でチャッタリング防止を選択すると、高速タイマＴ２０１を使用し、１０ｍｓごとに入力の取り込みを行います。この入力の取り込み間隔はD8009で固定値として設定変更可能です。

また、入力ピンごとでチャッタリング防止の有効無効を指定できます。D8010:PORTA ビットＯＮでチャッタ防止対象となります。

チャッタ防止対象とチャッタ防止非対象それぞれで信号の論理を反転させることができます。M8010のコイルを配置すると、チャッタ非対象の論理反転。M8011のコイルでチャッタ対象を論理反転できます。

入力ピン

各ピンを入力として使用するとき、＜ＣＰＵ設定＞で?プルアップ?を設定すると各入力ピンに弱いプルアップがかかります。

（Ｘ０３：ＧＰ０３は例外的にプルアップされません。従って外付けのプルアップ抵抗が必ず必要です）。

それで不十分の場合は．７Ｋ～２０Ｋオームの抵抗で、プルアップする必要が有ります。

出力ピン

各ピンを出力として使用するとき、１ピン当り２５ｍＡ（吹込み、吐出し共）を出力できますが、ＣＰＵトータルでは、３００ｍＡが最大出力になるため、６２００４等のトランジスタ・アレーにより、リレー等を駆動することをおすすめします。

特長

  1. ＶＳＳ電流が各ピン合計電流より小さいため、出力増幅用のトランジスタ・アレーを使用した方が無難です。

  2. ＦＬＡＳＨメモリーのため、上書きでプログラムの変更が可能で、紫外線によるイレーザーで消去する必要がありません。

  3. データ用ＥＥＰＲＯＭを内蔵のため、保持リレーの内容保存には外付けのＥＥＰＲＯＭは必要ありません。

  4. ＜ＣＰＵ設定＞で?リセット内部?を選択すれば、内蔵のリセット回路を使用することになり、外付けリセット回路は不要になります（外付けの場合は４番ピンになりますがくわしくはマニュアルを参照して下さい）。

対応版

  連枝の１２Ｆ１８２２変換ライブラリによるＨＥＸ変換は、対照がＰＩＣのワンチップ・マイコンである為、次に述べるようにそのハードから来る制約を受ける事になります。

   ＣＰＵ中のＲＡＭ容量が比較的に小さい為、使用可能なリレーやタイマの数が、制約されます。

又、ＣＰＵの持つＩ／Ｏ（入出力）のピン数により、入出力リレーの数が制約されます。

入出力リレー　 ビット番号　　　　対応ピックＰＩＮ名

          ？００　～？０５　（　ＧＰ０　～ＧＰ５　）

              合計　　　　６ ピン

    註）？にはＸか、Ｙが入ります。

  主ＣＰＵ（ＰＩＣ）側では、どのピンを入力に使用するか、出力に使用するかピン毎に任意です。

＊　ＰＩＣ１２Ｆ１８２２には、拡張は有りません。

注意

ＨＥＸに変換する場合デバイスの範囲以外やＸ、ＹまたはＴ、Ｃの重なり、使用制限オーバーなどがありますとエラーとなり変換されませんので注意してください。

    ＣＰＵ中のＲＯＭ容量により、ラダー（シーケンス回路）のステップ数が制約されます。

    １２Ｆ１８２２の容量は２Ｋワードですが、システムに約ＸＸＸバイト取られます。

    ＡＮＤ、ＯＲの論理命令は２ワード、ＬＤ命令は４ワード、ＯＵＴ命令はワード、Ｔ、Ｃ命令には大体１０ワードが必要です。

注意

システムとの合計が２Ｋを越えると、アセンブル（機械語変換）時に、エラーになります。

目安で、ＸＸＸステップぐらいのラダーが構成できるはずです。


  １２Ｆ１８２２

デバイス範囲

Ｍリレ－（補助リレー）

    Ｍ０００　～Ｍ３３５

        合計　３３６

注意

  1. ラッチリレ－、タイマ接点、カウンタ接点等、別種リレ－が使用されるとその分、上の数が減少します。　（コンパイル中に、最大Ｍリレ－番号が表示されます。）

  2. ラダー上では同一接点を何回でも使用できます（当然！！）。

特殊補助リレー

機能 | デバイス
0.1 秒クロックパルス | Ｍ９０３０
0.2 秒クロックパルス | Ｍ９０３１
1 秒クロックパルス | Ｍ９０３２
常時ＯＮ リレー | Ｍ９０３６
常時ＯＦＦリレー | Ｍ９０３７
立上り後1スキャンのみONリレー | Ｍ９０３８

    註）回路中にＭ９０３５を使用すると、ＧＰ０，ＧＰ１がアナログ入力となり、その入力を比較するモードになります。ＧＰ０＞ＧＰ１の時、下記中の特殊補助リレーのＭ９０３５を　＝１にします（Ｐ版のみ扱えます）。

  保持リレー（Ｌリレー）　（Ｐ版のみ扱えます）

    Ｌ００　～００１５

    合計　１６

  これを使用すると、Ｍ（補助）リレーの使用可能番号が減少します。

変化があると、保持リレーはＣＰＵ内部のＥＥＰＲＯＭデ－タメモリ－に書き込まれます。

電源断後にもそのＯＮ／ＯＦＦ結果をキープし、電源再立上げ時にキープした結果を読み込みます。

書き込みに２０ｍＳ以上かかることがあります。回路の体内時計がくるいますので、頻ぱんに変化する入出力は避けて下さい。

〇　回路中にＭ９０３５を使用すると、ＧＰ０，ＧＰ１がアナログ入力となり、その入力を比較するモードになります。ＧＰ０＞ＧＰ１の時、下記中の特殊補助リレーのＭ９０３５を　＝１にします（Ｐ版のみ扱えます）。

タイマ、カウンタ

    タイマは０番から始まり、合計で２０個使用できます。

    カウンタ、０番から始まり、合計で６個使用できます。

    タイマ－番号２００、２０１は１ｍＳ単位の高速タイマ－です。

注意

  1. タイマは、２５．５秒が最大です。カウンタは、２５５が最大です。長時間タイマはタイマとカウンタの組み合わせで構成して下さい。

  2. タイマ、カウンタは最大の番号＋１個が使用数になります。つまり、途中の番号はすべて使用されているとみなされますので、番号を詰めて使用するのが効率的です。

  3.  高速タイマ－の場合最大０．２５５秒になります。

  4.  高速タイマ、タイマはループ内タイマです。ＬＣＤなど時間のかかる処理があると、設定時間ごとの処理が行えないことがあります。

微分ポイント数

  ＰＬＳ、ＰＬＦ、Ｔ、Ｃ命令の数の合計は６４を越える事はできません。

  （上記命令は微分動作を含み、微分ポイントを使用します。）

以上は目安です。タイマ、カウンタ、微分ポイント数、補助リレー、保持リレーの使用可能数は、トータルで制限されていて、例えば、タイマ、カウンタ数が多ければリレー数が減少し、逆であれば、使用可能なリレー数が増加します。

使用可能のリレー数を越えると、コンパイル時にエラーになりますのでどれかを減らして、調整して下さい。

データ・メモリー

Ｄ０～Ｄ１５

  ◎システム初期設定デバイス

  プログラムではなく、初期設定として取り込むための特殊デバイスです。

  設定値は、システム設定として利用され、実行時には変更できません。

  また、ＨＥＸファイル変換時には、ラダー部は設定部分を除いて読み飛ばします。

M8000:システム初期設定ブロックの開始を表す接点です。

M8010:チャッタ非対象を論理反転させるリレーです。配置で反転します。

M8011:チャッタ対象を論理反転させるリレーです。配置で反転します。

D8009:チャッタサンプリング間隔を指定するデータレジスタです。10ms単位で指定します。

D8010:ポートＡのチャッタ防止の対象を指定します。ビットＯＮでチャッタ対象指定となります。


命令

    ＰＩＣ１２Ｆ１８２２

シーケンス基本命令

名称 | 命令記号
接点命令 | ＬＤ、ＬＤＩ、ＡＮＤ、ＡＮＩ、ＯＲ、ＯＲＩ
結合命令 | ＡＮＢ、ＯＲＢ
演算結果 | ＭＰＳ、ＭＲＤ、ＭＰＰ
出力命令 | ＯＵＴ（Ｍ、Ｙ）、Ｔ、Ｃ
デバイスのセット、リセット | ＳＥＴ（Ｍ、Ｙ）、ＲＳＴ（Ｍ、Ｙ、Ｃ、Ｄ）
立ち上がり微分、立ち下がり微分 | ＰＬＳ、ＰＬＦ
シフト命令 | ＳＦＴ
終了命令 | ＥＮＤ
継続命令 | －－＞＞、＞＞－－
註）継続命令は－＞＞は、次ぎの行の＞＞－－のみに継続動作します。

応用命令

  ＰＩＣの応用命令は１６ビットの範囲内で実行されます。

  ダブルワード命令はサポートしていません。

註）　Ｋ４Ｍ１６　等の桁指定はこのＣＰＵでは不可です。

算術演算命令

名称 | 命令記号
BCD4桁加算 | ＋、＋Ｐ
BCD4桁減算 | －、－Ｐ

BCD4桁乗算 | ＊、＊Ｐ 指定先の２ワードに答えが入ります。 答えにＤ１０を指定した場合、Ｄ１１まで２ワード使用します
BCD4桁除算 | ／、／Ｐ 指定先の１ワードに答えが入ります。 余りはその先の１ワードに入ります。 答えにＤ１０を指定した場合、Ｄ１１まで２ワード使用します。

BIN16ビット加算 | B＋、B＋Ｐ
BIN16ビット減算 | B－、B－Ｐ

BIN16ビット乗算 | B＊、B＊Ｐ 指定先の２ワード（例、Ｄ１０、Ｄ１１）に答えが入ります。 答えにＤ１０を指定した場合、Ｄ１１まで２ワード使用します。
BIN16ビット除算 | B／、B／Ｐ 指定先の２ワード（例Ｄ１０）に答えが入ります。 余りは１６ﾋﾞｯﾄのみで、その先の1ワード（D１１）に入ります。 つまり、答えにＤ１０を指定した場合、Ｄ１１で２ワード使用します。

16ビットBCDデータインクリメント | ＩＮＣ、ＩＮＣＰ
16ビットBCDデータデクリメント | ＤＥＣ、ＤＥＣＰ

16ビットBINデータインクリメント | ＩＮＣＢ、ＩＮＣＢＰ
16ビットBINデータデクリメント | ＤＥＣＢ、ＤＥＣＢＰ

BCD<－>BIN変換命令

BINデータ－>BCD4桁変換 | ＢＣＤ、ＢＣＤＰ
BCD4桁－>BINデータ変換 | ＢＩＮ、ＢＩＮＰ

データ転送命令

16ビットデータ転送 | ＭＯＶ、ＭＯＶＰ
16ビットデータ否定転送 | ＣＭＬ、ＣＭＬＰ
16ビットデータ交換 | ＸＣＨ、ＸＣＨＰ
16ビット２の補数 | ＮＥＧ、ＮＥＧＰ

理演算命令

16ビットデータ論理積 | ＷＡＮＤ、ＷＡＮＤＰ
16ビットデータ論理和 | ＷＯＲ、ＷＯＲＰ
16ビットデータ排他的論理和 | ＷＸＯＲ、ＷＸＯＲＰ
16ビットデータ否定排他的論理和 | ＷＸＮＲ、ＷＸＮＲＰ

比較演算命令

16ビットデータ比較

＝、＜＞、＞、＜＝、＜、＞＝

ローテーション命令

16ビットデータの右ローテーション（１） | ＲＯＲ、ＲＯＲＰ
16ビットデータの右ローテーション（２） | ＲＣＲ、ＲＣＲＰ
16ビットデータの左ローテーション（１） | ＲＯＬ、ＲＯＬＰ
16ビットデータの左ローテーション（２） | ＲＣＬ、ＲＣＬＰ

シフト命令

16ビットデータnビット右シフト | ＳＦＲ、ＳＦＲＰ
16ビットデータnビット左シフト | ＳＦＬ、ＳＦＬＰ

終了命令

全命令終了命令

ＥＮＤ

註）各応用命令の動作については関数ヘルプを参照してください。

特殊補助リレー

機能 | デバイス
0.1 秒クロックパルス | Ｍ９０３０
0.2 秒クロックパルス | Ｍ９０３１
1 秒クロックパルス | Ｍ９０３２
常時ＯＮ リレー | Ｍ９０３６
常時ＯＦＦリレー | Ｍ９０３７
立上り後1スキャンのみONリレー | Ｍ９０３８
キャリー | Ｍ９０１２

微分ポイント数

    ＰＬＳ、ＰＬＦ、Ｔ、Ｃ命令の数の合計と、微分命令の数の合計は３２０個をこえることがきません。（上記命令は微分動作を含み、微分ポイントを使用します。）

ステップ数とメモリ

    ＣＰＵ中のＲＯＭ容量により、ラダー（シーケンス回路）のステップ数が制約されます。

    １２Ｆ１８２２の容量は２Ｋワードですが、システムに５００ワード程度取られます。

    ※システムのＲＯＭは、使用する命令により大きく変わります。数値などの命令を使用する場合、システムが膨れ上がります。

    使用する命令が複雑でない場合については、ステップ数が多くなります。一方、ＬＣＤや数値演算などを使用する場合はステップ数が少なくなります。

    目安で、２００ステップぐらいのラダーが構成できるはずです。


別途命令3

ＰＩＣ１２Ｆ１８２２

Ｉ２Ｃ液晶モジュール

  Ｉ２Ｃで動作する液晶モジュールがあります。

  ＳＢ１６０２Ｂ、ＳＢ１６０２Ｅがストロベリーリナックス社、から

AE-AQM1602A(KIT)　Ｉ２Ｃ接続小型キャラクタＬＣＤモジュール（１６×２行・３．３Ｖ／５Ｖ）ピッチ変換キット が秋月電子、から発売されています。

ＬＣＤモジュール　１６×２行　白色バックライト付白文字　黒背景

  上写真下部の端子は左から１番ですが、

  １、－ＲＳＴ　　　　－＞ﾌﾟﾙアップ->ＶＤＤ（ここの５番端子）（マイコンによるリセットはしていません）。

  ２、ＳＣＬ　　　　　 －＞ＰＩＣのＲＡ１　ＳＣＬ端子（ ６番ピン ）

  ３、ＳＤＡ　　　　　 －＞ＰＩＣのＲＡ２　ＳＤＡ端子（ ５番ピン ）

  ４、ＶＳＳ　　　　　 －＞グランド

  ５、ＶＤＤ　　　　　 －＞電源（２．７～３．６Ｖ）

※　Ｉ２ＣピンはRA1[SCL],RA2[SDA]があります。

  命令で指定するときに、K2YCと指定すると使用できます。

    下図はメーカーからのものです。

  ＳＤＡ，ＳＣＬ番ピンは各々２０～３３ＫΩでプルアップします。

  ４．７ｋΩから１０ｋΩでも動作しました。

 (プルアップの電圧はマイコン用の５Vを使用しました。そのまま３V装置に接続しています。

  安定動作のために必要であれば、レベル変換をお願いします）。

  ＶＤＤは５Ｖでも動作しますが、メーカー保証は上記の通りです。

  変換ＬＢはデｨフォルトで５Ｖにあわせていますが、

  初期設定デバイスＤ８１１０にコントラストを書き込むことで初期値の設定変更できます

  ３Vの時の値いも記されていますので、３Ｖの時はそちらを生かしてください。

  （?contrast?は値が大きいほど表示が濃くなります）。

  （値いによっては、全く表示されない場合もあります）。

  上行・表示命令　ＬＣＤＨ

  例　ＬＣＤＨ　Ｋ１６　Ｄ１８　Ｋ２Ｙ２Ｃ

                    |       |         |___ＬＣＤに利用するポートアドレス

                    |       |_____________表示データの先頭Ｄメモリー番号（Ｄ１８～Ｄ２６の１６バイト分）

                    |_____________________上位２桁表示位置、下位２桁表示バイト数（０番目から書き出し）

  下行・表示命令　ＬＣＤＬ

  例　ＬＣＤＬ　Ｋ５１６　Ｄ１８　Ｋ２Ｙ２Ｃ

                      |          |          |___ＬＣＤに利用するポートアドレス

                      |          |_____________表示データの先頭Ｄメモリー番号（Ｄ１８～Ｄ２６の１６バイト分）

                      |_____________________上位２桁表示位置、下位２桁表示バイト数（０開始の５番目から書き出し）

上記最初の２つのオペランドは先頭文字（Ｋ）以外の値いは任意です。

※ＰＩＣ１８Ｆ４６Ｋ２２、ＰＩＣ１８Ｆ４５Ｋ２０より、表示位置の指定ができるようになりました。第１オペランドの上位２桁が表示位置（ＢＣＤ）となります。

 ◎使用命令

  ＬＣＤＨ、ＬＣＤＬ、ＢＣＤＤＡに関しての仕様は全く同じです。

  ただ、　上例の　ＬＣＤＬ　Ｋ１６　Ｄ１８　Ｋ２Ｙ２Ｃ　の第３オペランドのＫ２Ｙ？？を必ず、Ｋ２Ｙ２Ｃ（４６Ｋ２２はＫ２Ｙ３Ｃも可）としてください。これによって「連枝」はＩ２Ｃ通信の液晶モジュールと判断します。

（Ｙ２ＣはＩ２Ｃのもじりです）。

※　ＰＩＣ１８Ｆ４６Ｋ２２は、Ｙ３Ｃを使用できます。（ＳＣＬ２：ＲＤ０、ＳＤＡ２：ＲＤ１）拡張通信を使用するなどＲＣ３，ＲＣ４が使用できない場合にご利用ください。

ＬＣＤを使用するために、＜ＣＰＵ設定＞で［Ｉ２Ｃ］にチェックを入れる必要はありません。拡張Ｉ２Ｃを使用する場合は、その使用方法に従ってください。

  ◎設定

  このＩ２Ｃ液晶モジュールを使用するとき、＜ＣＰＵ設定＞でＩ２Ｃにチェックをいれないでください。Ｉ２Ｃ拡張のチェックです。

  註）このモジュールを使用するとき、同じＩ２Ｃ通信を使用する拡張や、ＣＰＵ間のＩ２Ｃ通信そのものを併用することはできません。

      また、通常のポート接続のＬＣＤ表示も同時にはできませＮ。

  註）ＳＣＬ，ＳＤＡのプルアップ抵抗値はＩ２Ｃ通信等では２ＫΩくらいを考えていましたが、ここでは２０Ｋ～３３ＫΩとなっています。その明確な根拠はわかりません。使用電圧との関係で適当な値いを使用してください（２．７ＫΩでも動作していました）。

◎アイコン表示

  Ｉ２Ｃ液晶モジュールにはアイコン（絵）を表示する機能があります

  が「連枝」ではこれをサポートしていません。

◎特殊リレー　Ｍ９１１０番、Ｍ９１１１番

ＬＣＤの表示が異常となった場合、ＬＣＤ初期化処理の呼び出しをリレーでご用意いたしました。任意のタイミングで初期化することができます。

Ｍ９１１０：ＬＣＤ初期化実行

Ｍ９１１１：ＬＣＤ画面クリア実行

◎特殊デバイス　Ｄ８１１０番

Ｉ２Ｃではコントラストの設定をコマンドで指定します。この設定値をプログラムから指定できるようになりました。

（ただし、現状は実行中には変更できません。ＨＥＸ変換時のみ変更できます）

Ｄ８１１０：ＬＣＤの明るさの設定根拠となる値を指定する。３．３Ｖ　Ｈ２０、５Ｖ　Ｈ０Ｅが目安です。

◎LCDLとLCDHによる表示位置指定

Ｉ２ＣではLCDLとLCDHの文字の表示位置（０　から始まります）を指定することができるようになっています。

コマンドで表示するデータのバイト数を指定しますが、上位バイトはいままでは使用していませんでした。

これを拡張して、上位バイトに表示位置を指定すると指定したデータを指定位置から開始して出力させることができます。

◎特殊リレー　Ｍ９１１０番、Ｍ９１１１番

ＬＣＤの表示が異常となった場合、ＬＣＤ初期化処理の呼び出しをリレーでご用意いたしました。任意のタイミングで初期化することができます。

Ｍ９１１０：ＬＣＤ初期化実行

Ｍ９１１１：ＬＣＤ画面クリア実行

A／Ｄコンバータの結果値等を表示する時は下記命令を使用する必要が有ります。

ＢＣＤＤＡ命令（１６ビット）（ＬＣＤ命令に付属しています）

      ＢＣＤ　→アスキー数字列

BCDDA   Dn     Dm

の意味は以下のようです。

         b15 ----------------------- b0

Dn      　 0000    0000    0000    0000　　　　　　　　0000の0には,0か1が入ります。

        b15-----------b8 b7----------b0

Dm + 0 　　　百の桁　　　　　　　千の桁

Dm + 1 　　　一の桁　　　　　　　十の桁

このことにより、Ｄｎの中の数値は、アスキー値として上位（千の桁）から、Ｄｍの中の下位バイトからの順序で入ります。

これによってＬＣＤＨ（ＬＣＤＬ）命令を使用すれば、自動的に、Ｄｍ+0下位バイトからＤｍ+1の上位バイト向かって、その順で液晶にアスキー値が送られることになります。

註）ＨＥＸ値のＡを入れてもエラーにはならず、アスキーの４１に変換されます。

ニーモニックの場合下記のようになり、Ｍ０がオンすればRA1 のＡ／Ｄ値のＢＣＤ変換された値いがＬＣＤの上側に表示されます。

もし、３，４行目のＢＣＤ変換命令がなければ、ＨＥＸＡ値のまま表示されます。

                                        ; example

        LD M0

        ADCO X01 D8 ; D8 =1EF <- Analogue Value of X01(RA1)PIN

        LD M0

        BCD D8 D9 ; D9 =495

        LD M0

        BCDDA D9 D0 ; D0 =3430 D1 =3539

        LD M0

        LCDH K4 D0 K2Y10 ; Display 0495 on LCD

ＳＵＰ０命令（ＬＣＤ命令に付属しています）

  ＬＣＤ表示のための０サプレス命令で、BCDDA命令とともに使用します。

  ＢＣＤＤＡ命令は、Ｄｍ、Ｄｍ＋１メモリーに以下のようにアスキー値を入れます。

                上位　　　　　　　　　下位

Dm + 0 　　　百の桁　　　　　　　千の桁

Dm + 1 　　　一の桁　　　　　　　十の桁

  このＢＣＤＤＡ命令のあと、このＳＵＰ０命令を使用すると、頭部分の各桁が０(アスキーで３０ｈ）の場合、これをスペース（アスキーで２０ｈ）に置き換えます。

  ＳＵＰ０　Ｄｍ　Ｋ２

  はＤｍから２ワード分の０サプレスをおこないます。

例えば本来Ｄｍ，Ｄｍ＋１に左側の表示がされるような値いが入っている時

          １２３４　－＞１２３４

          ０２３４　－＞　２３４

          ００３４　－＞　　３４

          ０００４　－＞　　　４

          ００００　－＞　　　０　　のように表示が変わります。

  ＳＵＰ０　Ｄｍ　Ｋ１　　　　の時は、

          １２　－＞１２

          ０２　－＞　２

          ００　－＞　０　　のように表示が変わります。

  Ｋ？の数値は０～１６までの値がとれ、その範囲での０サプレスを行います。


ENCO

１２Ｆ１８２２

  ｴﾝｺｰド（別売り）

ＥＮＣＯＤ（エンコーダ）命令

２相のエンコーダ（インクリメンタル方式）のカウント値を計測します。

モータの回転数（速度）や回転量を測定したり、モータのフィードバック制御などに用いることができます。

※ENCOD命令はラダー内で１か所のみ配置できます。条件は接点の並列直列等で決定してください。

概要

４逓倍のエンコードを行います。測定した結果は、指定したＥＮＣＯＤ命令で指定したデバイスに格納されます。(0000H～FFFFH)

現在値を変更する場合は、データレジスタを変更してください。これにより変更が可能です。

※指定したデバイスは、エンコードで使用するカウント値を直接使用しています。ＭＯＶ命令で変更可能です。

※信号が変化中にカウント値を変更した場合、値の信頼性は崩れます。信号が無変化の時に変更するようにしてください。

※命令の条件がＯＦＦ→ＯＮの立ち上がりでカウント値は０になります。

ＥＮＣＯＤ命令配置でＲＡ３（Ａ相）とＲＡ４（Ｂ相）のエンコードを行います。

以下の商品で動作を確認いたしました。

ロータリーエンコーダ（２４クリックタイプ）


A/D

    ＰＩＣ１２Ｆ１８２２

Ａ／Ｄコンバータ（応用命令に含まれる）

  １２Ｆ１８２２は、８ピンのうち４ピンのピンをＡ／Ｄコンバート・モードで使用する事ができます。

「連枝」は、それを利用して、ＡＤＣＯ（Ａ／Ｄコンバータ）命令を使用できます。

ＧＰ０（ＡＮ０）、ＧＰ１（ＡＮ１）、ＧＰ２（ＡＮ２）、ＧＰ４（ＡＮ３）の内の、

１ビットを選び、Ａ／Ｄの結果値の、格納先を書き込みます。

下の命令では各々ＧＰ１とＧＰ４への入力が１０ビットでＡ／Ｄ変換されてＤ０、Ｄ１に入ります。

例　　　ＡＤＣＯ　Ｘ１　Ｄ０

        ＡＤＣＯ　Ｘ４　Ｄ１

注意

  Ａ／Ｄコンバートには１ピン単位で使用できます。ＧＰ０～ＧＰ５のうちＡ／Ｄコンバートに使用しないピンはすべてＩ／Ｏに使用できます。

Ｄ／Ａコンバータ（ＰＷＭ変換）（応用命令に含まれる）

  １２Ｆ１８２２は、ＧＰ２またはＧＰ５のピンをＰＷＭコンバート・モードで使用する事ができます。

「連枝」は、それを利用して、ＤＡＣＯ（Ｄ／Ａコンバータ）命令を使用できます。

Ｄ／Ａ変換のもとの１０ビット(バイナリー）の値いの格納先を第１オペランドとし、結果の出力ピンとして、ＧＰ２（Ｙ０２）またはＧＰ５（Ｙ０５）を第２オペランドとして書き込みます。

下の命令ではＤ０（下位１０ビット　０～１０２３）の値がＡ／Ｄ変換（ＰＷＭ変換）されて、ＧＰ２（５番ピン）またはＧＰ５（２番ピン）に出力されます。

例　　　ＤＡＣＯ　Ｄ０　Ｙ０２

 註）ＰＷＭの出力は３．９Khzの基本パルス内でのＤｕｔｙサイクルになります。

      Ｄｕｔｙサイクルは１０ビット分解能（０～３ＦＦ）の指定で決定されます。

 註）Ａ／Ｄ、Ｄ／Ａコンバート命令に関しては、変換内容デバイスとしてＤメモリーや定値といった桁指定以外のデバイスを指定できます。

    直値の入力も可能ですが、その場合バイナリー値のみのため、頭にＨをつけてください。


ArduinoStudio概要

ArduinoStudioについて

開発環境

使用する場合は、事前にArduinoStudioのインストールが必要となります。
Download the Arduino IDE [ サイトアドレス　https://www.arduino.cc/en/main/software# ]

また、WROOM32のライブラリがコンパイルできるようにライブラリ・設定が必要となります。

「ツールーボード」から、「ボードマネージャ」を選択します。

CPUに対応するボード情報をインストールします。一覧から選ぶと項目が多いため、CPU名を入力して、フィルタをかけてください。項目を選び、インストールボタンを押す。

ボードマネージャでボードをインストール後使用するボードを選びます。 今回は、「ESP32 Dev Module」を選びます。

使用したい機能があれば、該当するライブラリをインストールします。

※ここから先は、使用する機能により選択する内容が異なります。

TFTおよびタッチパネルを使用する場合は以下のライブラリをインストールします。

「TFT_eSPI」を入力して、検索します。ESP32で使用できるTFTライブラリをインストールします。こちらをインストールすることで、ILI9341で制御するTFTのプログラムがインストールできます。

M5StackのCPUのプログラム開発の場合は、M5StackCPUのライブラリが必要となります。

TFTで日本語フォントを使用する場合

  TFTで日本語を表示する場合、文字コードから描画用のドットデータを生成するライブラリが必要になります。Githubで公開されているライブラリの場合、圧縮ファイル（ZIP）をダウンロードし、ZIP形式のライブラリインストールを行います。

日本語フォントをＥＳＰ３２で使用する場合のライブラリ

efont Font Data for Arduino　　https://github.com/tanakamasayuki/efont

Arduinoで使用するライブラリをインクルードします。このライブラリは、M5StickCの日本語フォントを描画できます。

このままだと、ＥＳＰ３２では使用できませんので、ライブラリ内の宣言を修正するか、または、ヘッダファイルを別途作成します。

efontM5StickC.hがライブラリに用意されているファイルです。これをefontEsp32.hのようにオブジェクトの名前をすべて修正する必要があります。

使用ＣＰＵ

WROOM32のボードについては、以下のもので検証しております。

ＥＳＰ３２－ＤｅｖＫｉｔＣ　ＥＳＰ－ＷＲＯＯＭ－３２開発ボード

DevKitCは、ＵＳＢ経由でプログラムを書き込むことができます。
別途ライタなどは不要となります。
また、ＥＳＰ３２は電源電圧となる３．３Ｖを生成することができるＩＣが搭載されています。
使用するボードが異なる場合は、別途、ＵＳＢシリアル変換器などが必要となります。
以下は参考のボードです。

Ｗｉ－Ｆｉモジュール　ＥＳＰ－ＷＲＯＯＭ－３２　ＤＩＰ化キット

新Wi-Fiアルデュイーノ「IoT Express MkII」 [MK2]

※いずれの場合でも、Windowsのバージョンによりシリアル通信のドライバが必要な場合があります

連枝でできること

連枝では、ArduinoStudioでコンパイルできるC++のプログラム(.iso,.hなど)を生成いたします。
ＨＥＸ変換で実行できるのは、ラダーの作成からＣ＋＋等のプログラム生成までとなっています。
ご注意ください。

（手順）

  1. ラダーを新規で作成
  2. ＣＰＵ設定をArduinoに設定
  3. ラダーを作成
  4. ラダーを保存
  5. 回路をコンパイル
  6. SEQ・HEX変換

ラダーを新規で作成

CPU設定を「Arduino」に設定

設定されたＣＰＵの種類は画面の右上に表示されます。

ラダーを作成

ラダーを名前を付けて保存

ビルドー回路のコンパイル

ビルドーＳＥＱ・ＨＥＸ変換

ラダーを変更した場合は、以下の手順を実行してください。

ラダーを上書き保存ー＞回路のコンパイルー＞ＳＥＱ・ＨＥＸ変換

「SEQ・HEX変換」が実行されると、mbsファイルの存在するフォルダ内に新たなフォルダを作成し、以下のファイルを生成又はコピーします。

mbsファイル名.ino・・・setupおよびloopに関するプログラムが記述されています。ラダーのプログラムもこちらに記載しています。
mbsファイル名.h・・・ラダーで使用されるデバイス名やプログラムのソースを記載しています。システムなどのプログラムもこちらに記載しています。
その他、機能によりファイルを生成

生成したプログラムは、お客様でArduinoStudioで開き、コンパイルし、チップに書き込む必要がございます。

連枝で作成したプログラムを随時更新して取り込む場合は、以下のチェックを必ず入れてください。
これにより、ファイルが更新されると自動的に内容が変更されます。
一方、チェックを入れないと、開いた後の連枝からの変更は反映されません。ご注意ください。

生成したプログラムは、お客様側でカスタマイズが可能なように、命令名をコメントで記載しております。
また、ラダーで使用されるデバイス名で、プログラムが記述できるように工夫をしております。
そのため、連枝において、フレームワークを作成し、新しい機能や未対応機能は
お客様で実装可能としております。

その場合は、連枝でソース生成後、「外部のエディタを使用する」のチェックを外してください。
これ以降は、ユーザー様でのプログラムの編集となります。

※この場合、連枝でＨＥＸ変換するとユーザー様のプログラムが上書きされますので、
inoのファイルが入っているフォルダごと別のフォルダにコピーしてご使用ください。

IoT機能の実装について

Wifi機能を追加すると、ブラウザでの通信に必要となるHTTPの処理およびHTML文書（ＷＥＢページ）を自動生成いたします。

自動生成されたＷＥＢページ例

作成したプログラムの動作確認やページのコントロールとしてご利用いただけます。 Wifiの機能は、ステーションモード・SoftAPモード・ＤＮＳサーバモードを搭載できます。

また、ステーションモードでご使用いただく場合、無線ＬＡＮのＡＰのＳＳＩＤとパスワードの 設定をする必要があります。この設定は、シリアル通信のコマンドにより設定変更することができます。 変更した内容はＥＥＰＲＯＭに保存し、次回以降の起動時に読込通信処理を行います。

その他詳しくは、ＷＩＦＩについてをご覧ください。

※従来との大きな違い
  メモリが多いため、ご使用いただいたデバイス分メモリを確保いたします。
そのため、デバイス数の制限はRAMメモリの制限数となります。
（ただし、今後、IoTを考慮して、お客様側で各デバイスの範囲を設定できるようにすることも
検討中です。ご希望などございましたら、お知らせください。)
  EEPROM（電源OFFの記憶領域）については、使用数の制限がございます。
停電時保持リレーL0-L63,停電時保持デバイスR0-R9
事前に宣言が必要なため、その点はご理解ください。


WROOM32概要

概要

連枝のバージョン8.70以降では、WROOM32を想定したＣソースを生成できます。
一部、修正するとArduinoでも利用できますので、ご活用ください。

Standard版

基本命令をサポートしております。
タイマーは100msのタイマーを提供しています。
1msタイマーはループタイマーとして用意しています。ただし、Wifiや使用する機能により
タイマーの精度は確保できません（スキャンタイムの影響を大きく受けます）。
Wifiなどの機能が入ると、スキャンタイムの増加および不安定さが発生いたします。
カウンターについては、通常のカウンターのみ対応しております。

(使用できるデバイス)
X,Y,M,T,C

(対応している基本命令)
LD,LDI,OR,ORI,AND,ANI,ORB,ANB,OUT,OUT T,OUT C,PLS,PLF,SET,RST,MPP,MRD,MPS

(対応しているステップ数)
４０ステップ 程度

(応用機能)
Wifi機能(ステーションモード,Softアクセスポイント,簡易DNS,HTML生成,ユーザー定義HTMLの取込)

シリアル通信により、Wifiの機能の設定が行えます。設定したSSIDおよびパスワードはEEPROMに保存します。
次回以降、保存されたSSIDおよびパスワードで通信を行います。
シリアル通信のプロトコル
通信速度：115200bps,データ長8bit,ストップビット1bit,パリティなし，終端 \n (LF 0x0a)

(コマンド)
入力コマンド | 内容 | 使用例
ssid= | ＳＳＩＤの設定値をＲＡＭに格納します | ssid=myapssid
ssid? | ＲＡＭに格納されたＳＳＩＤ名を確認します | ssid?
passwd= | パスワードの設定値をＲＡＭに格納します | passwd=myappass
wifisave | ＲＡＭに格納されたＳＳＩＤ及びパスワードをＥＥＰＲＯＭに保存します | wifisave
restart | WROOM32を再起動します | restart
subnet? | サブネットマスクを確認します | subnet?
gateway? | ゲートウェイを確認します | gateway?
scannetworks | wifiのネットワークの一覧を確認します | scannetworks
macaddress? | macアドレスを確認します | macaddress?
ipaddress? | マイコンのＩＰアドレスを確認します | ipaddress?

Professional版

基本命令をサポートしております。
タイマーは100msのタイマーを提供しています。
1msタイマーはループタイマーとして用意しています。ただし、Wifiや使用する機能により
タイマーの精度は確保できません（スキャンタイムの影響を大きく受けます）。
Wifiなどの機能が入ると、スキャンタイムの増加および不安定さが発生いたします。
カウンターについては、通常のカウンターのみ対応しております。

割込みタイマーをサポートしています。
1ms単位で設定できます。ループタイマーとは異なり、タイマー割込みによりきっかけを作っています。
また、タスクを分けて呼び出していますので、ループタイマーに比べ精度は高くなります。
ただし、Wifiや使用する機能により、タイマーの精度が確保できなくなります。

基本命令＋一部の応用命令

(使用できるデバイス)

X,Y,M,T,C,D,L

(対応している基本命令)

LD,LDI,OR,ORI,AND,ANI,ORB,ANB,OUT,OUT T,OUT C,PLS,PLF,
SET,RST,MPP,MRD,MPS,MC,MCR

(応用機能)

Wifi機能(ステーションモード,Softアクセスポイント,簡易DNS,HTML生成,ユーザー定義HTMLの取込)

シリアル通信により、Wifiの機能の設定が行えます。設定したSSIDおよびパスワードはEEPROMに保存します。
次回以降、保存されたSSIDおよびパスワードで通信を行います。
シリアル通信のプロトコル
通信速度：115200bps,データ長8bit,ストップビット1bit,パリティなし，終端 \n (LF 0x0a)

(コマンド)
入力コマンド | 内容 | 使用例
ssid= | ＳＳＩＤの設定値をＲＡＭに格納します | ssid=myapssid
ssid? | ＲＡＭに格納されたＳＳＩＤ名を確認します | ssid?
passwd= | パスワードの設定値をＲＡＭに格納します | passwd=myappass
wifisave | ＲＡＭに格納されたＳＳＩＤ及びパスワードをＥＥＰＲＯＭに保存します | wifisave
restart | WROOM32を再起動します | restart
subnet? | サブネットマスクを確認します | subnet?
gateway? | ゲートウェイを確認します | gateway?
scannetworks | wifiのネットワークの一覧を確認します | scannetworks
macaddress? | macアドレスを確認します | macaddress?
ipaddress? | マイコンのＩＰアドレスを確認します | ipaddress?

(応用命令）

対応命令を参照 ※応用命令はDデバイスが基本です。MOV,MOVP命令のみ、ビットデバイスMの桁指定をサポートしています。
XやYは桁指定できません。

現在サポートしている特殊な機能
ADCO アナログ値（電圧）をデジタル値に変換する機能（ＤＩＯ３２，３３，３４，３５）
分解能は１２ビット（０－４０９５）
測定データの下限、上限設定（遊びを設定可能）
測定データのスケーリング（測定範囲を要求する値に変換）
DACO 指定デジタル値で電圧を出力する機能（ＤＩＯ２５、２６が対応、範囲０－２５５）
出力データの下限、上限設定（指定値のリミットを指定可能）
出力データのスケーリング（指定値から０－２５５への変換を対応）
PULSE 指定周波数で指定デューティでパルスを出力する機能、指定パルス数で止めるなど。
  • 　（無限パルスの制御）
    周波数可変、デューティ可変、
    ＲＣサーボモード（ 20msの設定で、0.15ms-2.5msの範囲で 1us毎の設定が可能 ）
  • 　（指定パルス数で停止する制御)未対応
    指定周波数、指定デューティの波形を指定数出力する機能です。
    現在は未対応ですが、今後のバージョンアップでサポート予定です。
ENCO
  • (4相)
    ロータリエンコーダのカウントを行います。A相、B相を指定して使用できます
  • (高速カウンタ)
    カウンタ入力の立上り回数だけ信号をＯＮにできます
  • (パルス幅測定)
    入力信号のＨＩＧＨ期間の長さを計測します
  • (パルス幅及びデューティ測定)
    入力信号のＨＩＧＨ期間および周期を測定します。


WROOM32CPUについて

WROOM32CPU

CPU概要

EspressifSystems社のESP32-WROOM-32を使用しています。
Arduinoではありませんが、ArduinoStudioで開発コンパイルすることができます。
サイトでは以下の仕様となっています。
電源電圧：2.2V～3.6V
SRAM:520kB
Flash:4MB
デュアルコア
GPIO:21個
UART:3個
SPI:2個
I2C:2個
ADC:16個
DAC:2個
Wifi:802.11 b/g/n
Bluetooth v4.2

使用ＣＰＵ

WROOM32のボードについては、以下のもので検証しております。

ＥＳＰ３２－ＤｅｖＫｉｔＣ　ＥＳＰ－ＷＲＯＯＭ－３２開発ボード

この開発ボードでは、５Ｖから３．３Ｖを生成する電源ＩＣが搭載されています。
また、プログラムの書き込みをシリアル通信で行うために、ＵＳＢシリアル変換器が搭載されおります。
様々な機能が搭載されているため、ＧＰＩＯやＵＡＲＴ、ＡＤＣなど使用できる数が少なくなっております。
ご注意ください。

(Ｃソースの修正）
ＡｒｕｉｎｏＳｔｕｄｉｏで、生成されたプログラムを修正します。 修正する場合、環境設定の「外部のエディタを使用する」のチェックを外して、編集します。連枝でプログラムを修正して出力した場合、変更した内容は消えてしまいます。 （現状の連枝の仕様です。） また、最新のプログラムを表示する場合は、「外部のエディタを使用する」のチェックを行い、プログラムを読み込みます。チェックが外れていると、古いプログラムのままとなります。（連枝からファイルを変更しても、表示されているプログラムは古いままです）

詳細の情報につきましては、インターネットの検索サイトで「WROOM32」で検索していただくと調べることができます。


特殊リレー

以下の特殊リレーを用意しています。
ただし、未サポートの機能（将来用）およびWifi等が入った場合に正常動作しない場合もございますので、ご注意ください。

（未）:将来用のデバイス
（不）：Wifi機能を使用した場合、スキャンタイムが伸びるため、安定動作しなくなる恐れのあるデバイス

デバイス名 | 説明
M9010 | Errorフラグ
M9012 | Carryフラグ
M9013 | 0(ゼロ)フラグ
M9030 | ０．１秒クロックパルス
M9031 | ０．２秒クロックパルス
M9032 | １．０秒クロックパルス
M9033 | ２．０秒クロックパルス
M9034 | ３０．０秒クロックパルス
M9035(不) | 0.01秒 クロックパルス
M9036 | 常時 On リレー
M9037 | 常時 ＯＦＦ リレー
M9038 | １－Ｓｃａｎ On
M9039(不) | 0.005秒 クロックパルス


WROOM32命令

応用命令

シーケンス基本命令

名称

命令記号

接点命令

ＬＤ、ＬＤＩ、ＡＮＤ、ＡＮＩ、ＯＲ、ＯＲＩ

結合命令

ＡＮＢ、ＯＲＢ

演算結果

ＭＰＳ、ＭＲＤ、ＭＰＰ

出力命令

ＯＵＴ（Ｍ、Ｙ）、Ｔ、Ｃ

デバイスのセット、リセット

ＳＥＴ（Ｍ、Ｙ）、ＲＳＴ（Ｍ、Ｙ、Ｃ、Ｔ、Ｄ）
ＳＥＴＰ、ＲＳＴＰもあります。

立ち上がり微分、立ち下がり微分

ＰＬＳ、ＰＬＦ

シフト命令

ＳＦＴ

終了命令

ＥＮＤ

継続命令

－－＞＞、＞＞－－

註）継続命令は－＞＞は、次ぎの行の＞＞－－のみに継続動作します。

応用命令

  応用命令は１６ビットの範囲および３２ビットの範囲があります。

  ３２ビットの範囲の場合命令にＤ（ダブルワード）がつきます。

  Ｋ４Ｍ１６　等の桁指定は１桁当たり４ビット指定となります。（Ｍ以下の数値は８の倍数としてください）。

マスタコントロール命令

ＭＣ、ＭＣＲ

算術演算命令

名称

命令記号

BCD4桁加算（２）

＋、＋Ｐ

BCD4桁減算（２）

－、－Ｐ

BCD4桁乗算

＊、＊Ｐ      指定先の２ワードに答えが入ります。
答えにＤ１０を指定した場合、Ｄ１１まで２ワード使用します。

BCD4桁除算
（被除数16ビット、除数16ﾋﾞｯﾄ、答え16ビット）

／、／Ｐ　　　指定先の１ワードに答えが入ります。
    余りはその先の１ワードに入ります。
答えにＤ１０を指定した場合、Ｄ１１まで２ワード使用します。

BCD8桁加算（２）

Ｄ＋、Ｄ＋Ｐ

BCD8桁減算（２）

Ｄ－、Ｄ－Ｐ

BCD8桁乗算

Ｄ＊、Ｄ＊Ｐ      指定先の４ワードに答えが入ります。
答えにＤ１０を指定した場合、Ｄ１３まで４ワード使用します。

BCD8桁除算

（被除数32ビット、除数32ﾋﾞｯﾄ、答え32ビット）

Ｄ／、Ｄ／Ｐ　　　指定先の２ワードに答え（商）が入ります。
    余りはその先の２ワードに入ります。
答えにＤ１０を指定した場合、Ｄ１０～Ｄ１１までが商、Ｄ１２～Ｄ１３までが余りで、４ワード使用します。

BIN16ビット加算（２）

B＋、B＋Ｐ

BIN16ビット減算（２）

B－、B－Ｐ

BIN16ビット乗算(答え32ビット）

B＊、B＊Ｐ 　指定先の２ワード（例、Ｄ１０、Ｄ１１）に答えが入ります。
答えにＤ１０を指定した場合、Ｄ１１まで２ワード使用します。

BIN16ビット除算
（被除数16ビット、除数16ﾋﾞｯﾄ、答え16ビット、余り16ビット）

B／、B／Ｐ　　（例、Ｂ／　Ｄ１０　Ｄ１１ Ｄ１２）
被除数は１ワード（例Ｄ１０）　除数は１ワード（例Ｄ１１）です。 商は１ワード（Ｄ１２）、　余りは１６ﾋﾞｯﾄのみで、その先の1ワード（D１３）に入ります。

BIN32ビット除算
（被除数32ビット、除数32ﾋﾞｯﾄ、答え32ビット）

DB／、DB／Ｐ　（例　ＤＢ／　Ｄ０　Ｄ１０　Ｄ２０）
被除数は２ワード（例Ｄ０，Ｄ１）　除数は２ワード（例Ｄ１０，Ｄ１１）
答え（商）は指定先の２ワード（例Ｄ２０、Ｄ２１）に入ります。余りは３２ﾋﾞｯﾄで、その先の２ワード（Ｄ２２，Ｄ２３）に入ります。
つまり、答えにＤ１０を指定した場合、Ｄ１３まで４ワード使用します。

16ビットBCDデータインクリメント

16ビットBCDデータデクリメント

ＩＮＣ、ＩＮＣＰ

ＤＥＣ、ＤＥＣＰ

32ビットBCDデータインクリメント

32ビットBCDデータデクリメント

ＤＩＮＣ、ＤＩＮＣＰ

ＤＤＥＣ、ＤＤＥＣＰ

16ビットBＩＮデータインクリメント

ＩＮＣＢ、ＩＮＣＢＰ

16ビットBＩＮデータデクリメント

ＤＥＣＢ、ＤＥＣＢＰ

32ビットBＩＮデータインクリメント

ＤＩＮＣＢ、ＤＩＮＣＢＰ

32ビットBＩＮデータデクリメント

ＤＤＥＣＢ、ＤＤＥＣＢＰ

16ビットデータゾーンクリア

ＺＣＬＲ、ＺＣＬＲＰ

BCD<－>BIN変換命令

16ビットBINデータ－>BCD4桁変換

ＢＣＤ、ＢＣＤＰ    ９９９９の範囲内の変換が可能です。
 指定先の１ワード（Ｄ？）に答えが入ります。１００００を超える値は変換できません。

32ビットBINデータ－>BCD8桁変換

ＤＢＣＤ、ＤＢＣＤＰ    ９９９９９９９９の範囲内の変換が可能です。
 指定先の２ワード（Ｄ？、Ｄ？＋１）に答えが入ります。１００００００００を超える値は変換できません。

16ビットBCD4桁－>BINデータ変換

ＢＩＮ、ＢＩＮＰ　　　９９９９の範囲内の変換です。指定先の１ワード（Ｄ？）にその変換値が入ります。

32ビットBCD8桁－>BINデータ変換

ＤＢＩＮ、ＤＢＩＮＰ　　　９９９９９９９９の範囲内の変換です。指定先の２ワード（Ｄ？、Ｄ？＋１）にその変換値が入ります。

データ転送命令

16ビットデータ転送 | ＭＯＶ、ＭＯＶＰ
32ビットデータ転送 | ＤＭＯＶ、ＤＭＯＶＰ
16ビットデータ否定転送 | ＣＭＬ、ＣＭＬＰ
32ビットデータ否定転送 | ＤＣＭＬ、ＤＣＭＬＰ
16ビットデータ交換 | ＸＣＨ、ＸＣＨＰ
32ビットデータ交換 | ＤＸＣＨ、ＤＸＣＨＰ
16ビットデータブロック転送（１） | ＢＭＯＶ、ＢＭＶ
16ビットデータブロック転送（２） | ＦＭＯＶ、ＦＭＶ
テーブルデータ読出し | ＲＤＴＢＬ、ＲＤＴＢＬＰ
16ビット２の補数 | ＮＥＧ、ＮＥＧＰ

  データ転送命令の桁指定オペランドの説明

  ①    ＭＯＶ　Ｄ０　Ｋ４Ｍ８

②　　ＭＯＶ　Ｄ０　Ｋ２Ｍ１６

とした時、下図の上の転送前Ｓの値は転送後Ｄの各々の下段の①②の表示ビットに入ります。

図中の１／０の値はサンプルです。

  ①　　　　 M23 M22 M21M20M19M18M17M16M15M14M13M12M11M10M9 M8

  ②　　　           　　　　　　　　　　　　              M23　　　～                       M16

この命令が　ＭＯＶ　Ｋ４Ｍ８　Ｄ０　のように逆に第１オペランド側が桁指定の場合、転送前Ｓの側が同じくＭ８～Ｍ２３の間の各ビットに割り当てられます。

Ｋ４は４桁の意味で４ビットが１桁ですからＫ４は１６ビットを表わします。

註）Ｋ４Ｍ８のようにＫ４のあとのデバイス（Ｍ）の数値は０または８の倍数にしてください。

論理演算命令

16ビットデータ論理積 | ＷＡＮＤ、ＷＡＮＤＰ
32ビットデータ論理積 | ＤＡＮＤ、ＤＡＮＤＰ
16ビットデータ論理和（２） | ＷＯＲ、ＷＯＲＰ
32ビットデータ論理和（２） | ＤＯＲ、ＤＯＲＰ
16ビットデータ排他的論理和（２） | ＷＸＯＲ、ＷＸＯＲＰ
32ビットデータ排他的論理和（２） | ＤＸＯＲ、ＤＸＯＲＰ
16ビットデータ否定排他的論理和（２） | ＷＸＮＲ、ＷＸＮＲＰ
32ビットデータ否定排他的論理和（２） | ＤＸＮＲ、ＤＸＮＲＰ

比較演算命令

16ビットデータ比較 | ＝、＜＞、＞、＜＝、＜、＞＝
32ビットデータ比較 | Ｄ＝、Ｄ＜＞、Ｄ＞、Ｄ＜＝、Ｄ＜、Ｄ＞＝

ローテーション命令

16ビットデータの右ローテーション（１） | ＲＯＲ、ＲＯＲＰ
32ビットデータの右ローテーション（１） | ＤＲＯＲ、ＤＲＯＲＰ
16ビットデータの右ローテーション（２） | ＲＣＲ、ＲＣＲＰ
32ビットデータの右ローテーション（２） | ＤＲＣＲ、ＤＲＣＲＰ
16ビットデータの左ローテーション（１） | ＲＯＬ、ＲＯＬＰ
32ビットデータの左ローテーション（１） | ＤＲＯＬ、ＤＲＯＬＰ
16ビットデータの左ローテーション（２） | ＲＣＬ、ＲＣＬＰ
32ビットデータの左ローテーション（２） | ＤＲＣＬ、ＤＲＣＬＰ

キャリーセット・リセット命令

ＳＴＣ・・・キャリーをＯＮします。キャリーを含めたローテーションを使用する場合にキャリーセット時使用します。

ＣＴＣ・・・キャリーをＯＦＦします。キャリーを含めたローテーションを使用する場合にキャリーセット時使用します。

シフト命令

16ビットデータnビット右シフト | ＳＦＲ、ＳＦＲＰ
16ビットデータnビット左シフト | ＳＦＬ、ＳＦＬＰ

ソフトウエア・タイマ

１μＳタイマ | ＭＣ１
１００μＳタイマ | ＭＣ１００

終了命令

全命令終了命令 | ＥＮＤ
１クール終了点命令 | ＦＥＮＤ（この命令以降にサブルーチンとその被コールポイントＰを置く）

ジャンプ命令

サブルーチン・コール命令

ＳＣＡＬＬ（コールの対象サブルーチンは必ずＦＥＮＤのあとＥＮＤの前に置き、頭に被コールポイントＰを置き、Ｐにコールの対象番号をつける）

サブルーチン中のＸ、Ｙ接点は通常の接点でダイレクト接点にはなりません。そのオン/オフはループの論理に影響を与えます。

リターン命令

ＲＥＴＲＮ（サブルーチンの最後に置く）

ＳＣＡＬＬ、ＩＮＴ命令ともに対象サブルーチンからＲＥＴＲＮ命令で戻ります。

ＲＥＴＲＮ命令の頭には常時オンの接点をおきます。

註）各応用命令の動作については関数ヘルプを参照してください。

特殊補助リレー

機能 | デバイス
0.1 秒クロックパルス | Ｍ９０３０
0.2 秒クロックパルス | Ｍ９０３１
1 秒クロックパルス | Ｍ９０３２
常時ＯＮ リレー | Ｍ９０３６
常時ＯＦＦリレー | Ｍ９０３７
立上り後1スキャンのみONリレー | Ｍ９０３８
立上り１クール後1スキャンのみONリレー | Ｍ９０３９
エラー受信きたフラグ(未対応) | Ｍ９０４０
正常受信きたフラグ(未対応) | Ｍ９０４１
０フラッグ | Ｍ９０１３
演算エラーフラグ | Ｍ９０１０

○ダイレクト命令

   特に周辺ＬＳＩのモードセットの時に通常ループ中にダイレクト出力する命令が必要になります。

  ＯＵＴＤ、ＳＥＴＤ、ＲＳＴＤ命令があり、各々ＯＵＴ、ＳＥＴ、ＲＳＴのダイレクト版になっています。


オンチップデバッグについて

連枝では、回路の動作をモニタすることができます。ＩＯ１６（ＴｘＤ）、ＩＯ１７（ＲｘＤ）として、 連枝（パソコン）とＥＳＰ３２を通信するプログラムを追加できます。ＸやＹ、Ｍ、Ｄ、Ｔ、Ｃといったデバイスをラダーに記載すると、その動作状態や値の表示が行えます。

※モニタできるデバイスの範囲は限定されています。今後、拡大する予定です。

モニタ出来るデバイス一覧

X00-X39,Y00-Y39,M0-M99

D0-D127,T0-T127,C0-C127(TとCは重複可)

デバッグ用の通信プログラムを含めたソースは、「ビルドーＳＥＱ・ＤＢＸ変換」を使用してソースを生成します。この時、生成されるinoファイル名およびフォルダ名は、ＭＢＳファイル名にxが付加されたものとなります。

inoファイルをコンパイルし、ＥＳＰ３２に書き込みを行うと、通信できる状態となります。

  連枝からＥＳＰ３２と通信する場合、以下の設定を行う必要があります。

  1. 「ビルドーＣＰＵ設定」で使用する「デバッグ用ＣＯＭポート」の番号を指定します。

  2. 「動作―動作画面に行く」を選びます。（※　事前にＳＥＱファイルを生成する必要があります。回路コンパイルで生成できます）

  3. 「動作モニタ」をクリックして、へこませます。（※指定したＣＯＭポートに通信を仕掛けます。配線ができていない場合や間違っている場合、通信ができずエラーがでます。）

（モニタ中の表示について）

  動作モニタ中、デバイスの状態が表示されます。ビットデバイス（ＯＮ／ＯＦＦ）信号は、導通していると黄色の表示で繋がり、デバイスＯＮで赤い四角が表示されます。

（ＣＯＭポート番号を確認する場合）
  ＣＯＭポートの番号は、「デバイスマネージャ」を使用することで確認できます。「Windows」メニューを右クリックし、「デバイスマネージャ」を選択します。デバイスマネージャの中の「ポート（ＣＯＭとＬＰＴ）」をダブルクリックし、表示されているデバイス名を確認します。


I/O･拡張

エクスパンダー素子による拡張

  Ｉ２Ｃ通信によるため、ＲＣ３（ＳＣＬ）、ＲＣ４（ＳＤＡ）の２ピンのみを拡張用に使用します。

  マイクロチップ社のＥＸＰＡＮＤＥＲ用素子ＭＣＰ２３００８（８ﾋﾞｯﾄ）とＭＣＰ２３０１７（１６ﾋﾞｯﾄ）の各ピンを

  拡張側の入出力として使用できます。全部で１２８ピン（MCP23017×8個）をＩ／Ｏピンとして使用可能です。

  ８ビットと１６ビットの拡張用素子を同時に使用することができます。

  どのピンを入力に使用するか、出力に使用するかピン毎に任意で、メインＣＰＵ側ソフトで決定します。

ラダー上で、X100（Y100)以上X17F(Y17F)以下のデバイスを使用すると、I2Cに接続されたExpanderICをXやYのデバイスとして使用することができます。

連枝では、使用するデバイスの番号を確認し、番号が８番以降ならMCP23017と考え通信します。

連枝では、使用するデバイスの番号を確認し、番号が７番以下ならMCP23008と考え通信します。

この番号とICが違うと通信できません。

また、Ｉ２Ｃのバス上に同一アドレスは指定できません。MCP23008とMCP23017は同じアドレスは設定できません。

？100～？107：MCP２３００８のアドレス０：GP0-GP7(100-107)

？110～？117：MCP２３００８のアドレス１：GP0-GP7(110-117)

？120～？127：MCP２３００８のアドレス２：GP0-GP7(120-127)

？130～？137：MCP２３００８のアドレス３：GP0-GP7(130-137)

？140～？147：MCP２３００８のアドレス４：GP0-GP7(140-147)

？150～？157：MCP２３００８のアドレス５：GP0-GP7(150-157)

？160～？167：MCP２３００８のアドレス６：GP0-GP7(160-167)

？170～？177：MCP２３００８のアドレス７：GP0-GP7(170-177)

？100～？10F：MCP２３０１７のアドレス０：GPA0-GPA7(100-107),GPB0-GPB7(108-10F)

？110～？11F：MCP２３０１７のアドレス１：GPA0-GPA7(110-117),GPB0-GPB7(118-11F)

？120～？12F：MCP２３０１７のアドレス２：GPA0-GPA7(120-127),GPB0-GPB7(128-12F)

？130～？13F：MCP２３０１７のアドレス３：GPA0-GPA7(130-137),GPB0-GPB7(138-13F)

？140～？14F：MCP２３０１７のアドレス４：GPA0-GPA7(140-147),GPB0-GPB7(148-14F)

？150～？15F：MCP２３０１７のアドレス５：GPA0-GPA7(150-157),GPB0-GPB7(158-15F)

？160～？16F：MCP２３０１７のアドレス６：GPA0-GPA7(160-167),GPB0-GPB7(168-16F)

？170～？17F：MCP２３０１７のアドレス７：GPA0-GPA7(170-177),GPB0-GPB7(178-17F)

      アドレス設定は正論理です。

（例）MCP23008をアドレス０番、MCP23017をアドレス３番として配線しています。

この場合、ラダー内では*100～*107までと*130～*13Fまで使用できます。


3

 コメント機能

ラダーには説明書きとして、コメントを記載することができます。

コメントの記載は、空行を追加してから、コメント入力を行います。

※現状は、ＰＩＣ１８Ｆ４５２５シリーズや４６Ｋ２２、４５Ｋ２０のみ対応しています。

コメントの記述の仕方により、以下の機能を使用することが可能となります。

  1. 行に対するコメント

    2.

  2. データテーブルの定義

    3.

  3. プログラムの範囲コメント設定

１．行に対するコメント

２．データテーブルの定義

コメント部に特殊な書き出しをすると、ＲＯＭ（プログラムメモリ）にデータを定義することができます。記述する場所は、どの位置に記載しても構いません。先頭や後方にまとめて配置しても、使用する前に記載しても構いません。（コンパイル時に最初にデータとして取り込みます。） このデータは、応用命令「ＲＤＴＢＬ」を利用することで読み出すことができます。

ＬＣＤへの表示文字の定義やシリアル通信で使用する文字列、数値のデータ配列などをわかりやすく、効率的に定義することができます。

  ＬＣＤやシリアルなどはコマンド前に記載するとメンテナンスがしやすくなります。

書き出し文字 (小文字も可能ですが、統一必要) | 意味 | 記載例
STR または str | 文字列でデータを指定し、テーブルを作成する。文字列は半角カタカナが使用できます。特殊文字は使用できませんのでご注意ください。 |
DEC または dec (Decimalの略です) | １０進数でデータを指定しテーブルを作成する（16ビット単位） |
HEX または hex (HexaDecimalの略です) | １６進数でデータを指定しテーブルを作成する。記載した文字は１６進数として変換します。0xで始まる場合は、xを無視します。（16ビット単位） |
BDE または bde (Byte Decimalの略です) | １０進数でデータを指定しテーブルを作成する（8ビット単位） |
BHE または bhe (Byte HexaDecimalの略です) | １６進数でデータを指定しテーブルを作成する。記載した文字は１６進数として変換します。0xで始まる場合は、xを無視します。（8ビット単位） |

  テーブルには、必ずテーブル番号を指定してください。この番号は０～２９の３０個使用できます。テーブル番号は欠番を設けることができます。ただし、ＲＤＴＢＬコマンドを使用して読み出す場合には、欠番のテーブルはすべて一番小さな番号のデータを使用することになります。（ただし、欠番を設けた場合は、使用しているテーブル番号の最大値までのテーブル管理ＲＯＭメモリを占有することになります。１番あたり２ワード分2命令分を使用します。）

テーブルからのデータ読出し命令

RDTBL

コメントに記載したデータテーブルからデータを読み出します。
テーブル番号は０～２９で定義できます。テーブルからデータを読み出し、データ格納先に１ワード分格納します。

テーブル番号：０～２９で指定できます。指定は固定値またはＤで行えます。

データ位置：０～２５５で指定できます。テーブル番号のデータの内、先頭（０番目）から何番目かを指定します。 指定は、固定値またはＤで行えます。

データ格納先：データを格納する先を指定できます。ＤやＶ、Ｍなどが指定できます。

（注意）固定値で指定するテーブル番号は存在する番号のみ指定してください。

（注意）ワードデバイスの指定時は、存在しない番号は、存在する番号のうち最小値が使用されます。

（注意）固定値で指定する値はＨ，ＫのいずれもＢＣＤ値となり同一値となります。

テーブルを活用した使用方法

テーブルを活用することでＬＣＤに表示する文字列を定義することができます。

数値などを表示する場合は、変更したい部分のデータのみ変更します。

３．プログラムの範囲コメント設定

コメント部に「/*」や「*/」を記述することで当該記述に囲われた範囲をコメント部として扱うことができます。

一時的にＨＥＸファイルに含めたくないプログラムなどをこのコメントで囲ってください。

プログラムとしては出力されなくなります。


SCALL88

SCALL命令とサブルーチン

ＳＣＡＬＬ命令によりサブルーチンをコールできます。

［ＳＣＡＬＬ　Ｐ０］　とか　［ＳＣＡＬＬ　Ｐ１］とか書きます。

サブルーチンはＦＥＮＤ命令のあとに置かれます。

｜------------------------------------［ＦＥＮＤ］｜

のようにこの命令の左側は直線のみになります。

サブルーチンの最後には［ＲＥＴＲＮ］命令が置かれ、これによってメインのラダーに戻ります。

［ＲＥＴＲＮ］の左には通常、常時オン接点Ｍ９０３６を置きます。

 Ｐ？を置くにはツールバーの [image] をクリックし、Ｐを置いた後に [image] をクリックして、Ｐのあとに数字を置いてセットします。

  サブルーチンの考え方は以下のようです。

  ①　Ｘ、Ｙの入出力は通常の接点でダイレクトではない。

  ②　微分（前変化）記録はキープされます。

      複数回呼ぶことによって、微分記録は不正確なものなりますので、微分命令の使用は推奨されません。

  ③　ラダーは１回のみループして抜けますが、通常のラダーの無限回のループの中の一環として実行されます。

  ④　入出力の変化は、通常ループの論理に直接影響をあたえます。

註）原則として、サブルーチン中の微分動作の正常動作は保証されません（タイマ、カウンタを含む）。


割りこみ

割り込みの使い方

      ＜ＣＰＵ設定＞中の[ □割込タイマ ]にチェックを入れると、右端のツールバー [image] が活色化します、それをクリックすると

以下左のダイアログボックスが出ます。

    （１）タイマ割り込み設定

  この場合、タイマ割り込みのみになります。

  [新規ラダー］釦のクリックで生成されるテンプレートのラダーは以下のようになります。

  左上の接点や、出力Ｙ００については、適当なＩ／Ｏ（又はＭリレー）値を入れてください。

  左上の接点（又はリレー番号）はタイマ割り込みをオンとします。

  （リレー入力の時は接点形状を変更した方がベターです）。

  接点９０５３以降、［ＩＲＥＴ］までの回路を任意に製作します（下部参照）。

  （タイマ、カウンタ等の微分命令は使用できません。）

  設定した回数だけ、９０５３のオン/オフ命令による動作を繰り返します（回数無制限の時は＝０を設定します。）

現状は、設定回数は０のみ対応しております。０以外の設定値は意味がありません（回数無制限となります）。

割り込みの実際の使い方

  Ｙの出力はすべてダイレクト(SET,RST,OUT)になります。

  その他の接点やＤメモリーについては、通常ループ中の扱いと同じで、ループ中の回路に影響を与えます。

    （１）タイマ割り込み設定

  タイマ割り込みのみの回路です。

  Ｘ２４をオンすると、［ＩＥＮＤ］以降の回路のタイマ割り込みが発生し、Ｙ３６に図１のパルスが無限数、設定に従った、オン・オフ幅で発生します。

  （ＯＵＴＦ命令は出力接点のオフ命令です）。

     図１


Wifi関連の機能

Wifi関連について

使用できる機能

現在使用できるWifiの機能は以下の通りです。
連枝の本体がStandard8.70以降でもProfessional8.70以降でもご利用いただけます。
使用できる機能
機能名 | 内容
ステーションモード | マイコンをすでに存在するＡＰに接続させ通信する方法です。 マイコンがＷｉｆｉのスレーブとなり、ＩＰアドレスを借りて通信します。
Softアクセスポイント | マイコンをＡＰとして設定し、他の機器が接続してくるのを待ちます。 ＡＰが不要なため、簡易的な制御などに重宝します。
簡易DNS | マイコンにＤＮＳサーバー機能を持たせます。 この機能は、Ｓｏｆｔアクセスポイントのみ有効です。 これにより、ＩＰアドレスを指定しなくてもアクセスできます。
HTML生成 | Ｗｉｆｉを有効にするとデフォルトでＨＴＭＬデータを生成します。 これにより、タブレット端末やパソコンからマイコンにアクセスできます。
ユーザー定義HTMLの取込 | ユーザーが作成したHTMLファイルをマイコンで表示する画面としてプログラムを生成します。 Webページを独自にカスタマイズしたい場合にご利用いただけます。 基本構造はできていますが、バージョンアップ時に対応としたいと思います。

初期設定用のデバイス

Wifiの機能を使用する場合、表に示すリレーのコイルを初期設定のラダーに追記します。
このリレーの存在をチェックし、プログラムをWifi対応で生成いたします。

ビットデバイス | 説明 | ワードデバイス | 説明
M8500 | WiFi使用リレー | D8500 | なし
M8501 | HTML_DefPage_Make
M8510 | GET_Disable (リモート制御不可）
M8520 | SoftAPモード
M8521 | DNSモード
M9020 | NTPサーバに時間要求（ＯＮ中要求） | D9020 | 取得した年
 |  | D9021 | 取得した月+1
 |  | D9022 | 取得した日
 |  | D9023 | 取得した時間
 |  | D9024 | 取得した分
 |  | D9025 | 取得した秒

Wifiの使い方

  Wifiの機能を使用する場合、初期設定となるデバイスM8500の配置が必要です。
このデバイスは、M8000の接点の後ろに配置します。
M8000で始まる回路はすべて初期設定回路となります。
リレーやワードデバイスの値を読み取り、データの初期値やプログラム機能の
設定として利用されます。実際のラダーには組み込まれません。ご注意ください。

ステーションモード

マイコンをすでに存在するAPに接続させるモードとなります。

Wifiを使用するM8500のリレーを配置したあと、プログラムをマイコンに書き込みます。
マイコンを起動後、EEPROM内のSSID・パスワードでAPを探しますが、２０回失敗すると、
ラダーのループが始まります。

初期起動時のエラー画面例

ループ開始後、シリアルコマンドにより、SSIDとパスワードを設定し、書込みを行ってください。
書込み完了後、再起動すると、設定が有効になりHTTP通信ができます。

(コマンド)
入力コマンド | 内容 | 使用例
ssid= | ＳＳＩＤの設定値をＲＡＭに格納します | ssid=myapssid
ssid? | ＲＡＭに格納されたＳＳＩＤ名を確認します | ssid?
passwd= | パスワードの設定値をＲＡＭに格納します | passwd=myappass
wifisave | ＲＡＭに格納されたＳＳＩＤ及びパスワードをＥＥＰＲＯＭに保存します | wifisave
restart | WROOM32を再起動します | restart
subnet? | サブネットマスクを確認します | subnet?
gateway? | ゲートウェイを確認します | gateway?
scannetworks | wifiのネットワークの一覧を確認します | scannetworks
macaddress? | macアドレスを確認します | macaddress?
ipaddress? | マイコンのＩＰアドレスを確認します | ipaddress?

以下の例は、ssid：test パスワード（パスキー）：test　を前提にしています。
お客様の環境に合わせて設定を変更してください。
また、WROOM32は2.4GHz帯のみ対応ですので、APのSSIDは2.4GHzを設定してください。

通信が成功すると、割り振られたIPアドレスがシリアルポートに出力されます。
このIPアドレスを利用して、マイコンにアクセスしてください。

以下のように表示されると成功です。

表示されたページの概略です。
デバイスの制御盤は、ボタンをクリックするとデバイスを強制ON/OFFできます。
※プログラム内にコイルで配置しているMやYは１スキャンのみ変更されます。
  ２スキャン目以降は、ラダーの状態となりますのでご注意ください。

Softアクセスポイント

SoftAPを使用する場合、初期設定の回路にM8520番のリレーのコイルを配置します。
これにより、ステーションモードからSoftAPモードに変わります。
ラダーを保存し、「ビルドーコンパイル」、「ビルド―SEQ-HEX変換」をクリックしてください。
完了後、ArduinoStudioを用いて、プログラムを書き込んでください。

書込み後、Wifiのアクセスポイントに以下のポイントが追加されます。
このアクセスポイントに、接続します。

SSID:ESP32_AP
password:12345678
IPaddress:192.168.0.25

アクセスポイントに接続が完了すれば、当該端末より
ブラウザを用いて、「192.168.0.25」のページを表示してください。
先ほどと同じページが表示されます。

※プログラムの以下の部分をArduinoStudioで変更していただくと、
AP名およびパスワード、IPアドレスを変更できます。

const char *ssid = "ESP32_AP";
const char *password = "12345678";
const IPAddress local_ip(192, 168, 0, 25);
const IPAddress gateway(192, 168, 0, 1);
const IPAddress subnet(255, 255, 255, 0);

簡易DNS

 SoftAPモードを設定した場合、簡易DNSを有効にすることができます。
このモードを有効にするとブラウザに入力する名前をIPでなくてもアクセスできます。
すべての名前をマイコンのIPとして返します。

NTPサーバへ時刻問合せ

  右のNTPサーバ 「ntp.nict.jp」 「time.google.com」「ntp.jst.mfeed.ad.jp」に
時間を問合せ取得した結果をD9020～D9025に格納します。

さらにいろいろな通信が可能なようです。
ご希望により、さらに機能は追加が可能と考えております。


I2C通信

Ｉ２Ｃ通信

  Ｉ２Ｃ通信はフィリップス社提唱の通信方法で、筐体内通信を前提にしています。

  「連枝」（れんり）のＩ２Ｃ通信はArduinoに用意されたWireオブジェクトを使用して行います。

  ハード回路は、マイコンのＳＣＬピン（IO22）どうし、ＳＤＡ（IO21）ピンどうしを接続するだけで、他の外付け素子は不要です。

  ◎拡張用素子との併用

  Ｉ２Ｃ通信をしながら、同時に拡張用素子を接続することができます。

  独自で通信することもできます。また、連枝側で通信プログラムを作る方法（詳細は拡張ＩＯをご確認ください。）もあります。

汎用Ｉ２Ｃ命令

    Ｉ／Ｏのうち２ピンを使用して、

  殆どのＩ２Ｃを入出力とするＩＣを動作させることができます。

  （８ビット単位のデータを前提にしたＩ２Ｃ素子）。

  ＩＣ２素子のそれぞれのプロトコルを、次の命令によって構成します。

  １）Ｗ２ＣＯ　　　書き込みを前提にデバイスのアドレスを送ります。　Ｄ７～Ｄ１にアドレスが入り　Ｄ０＝０　となります。

                    このアドレスは、デバイスの外部ＡＤＲＥＳＳ－ピンで決まるものです。

                    例えばアドレスが５の時は、?@?@?@１０１を左回転し、@?@?@１０１０になります。

                    Ｄ７～Ｄ１は@?@?@１０１　となり、Ｄ０＝０として８ビットを送ります（Ｄ７から６～０の順に送る）。

                    @?@?@の部分もすべてアドレスとみなされて、アドレスと一緒に左１ﾋﾞｯﾄ回転され、

                    Ｄ６～Ｄ０がＤ７～Ｄ１になります。

      例　Ｗ２Ｃ０　Ｈ２５　Ｋ２Ｙ２C　　アドレスが５の時の書き方で、ルーチン中で左回転しＨ２５－＞Ｈ４Ａとします。

          （Ｄ０　＝０とします。Ｈ２５の２はデバイスによって違います）。

  ２）Ｗ２ＣＤＯ　　　データを送ります。　送るデータの８ビットがそのまま　Ｄ７～Ｄ０に入ります。

                    Ｄ０はデータに従って、０か１の任意値になります。

                    「連枝」では、直値、データ、桁指定付き接点データを第１オペランドにできます。

                    １）Ｗ２ＣＯや、３）Ｒ２ＣＯと区別する方法は、４）ＳＴＡ２Ｃとの組み合わせによります。

  ３）Ｒ２ＣＯ　　　読み込みを前提にデバイスのアドレスを送ります。　Ｄ７～Ｄ１にアドレスが入り　Ｄ０＝１　となります。

                    このアドレスは、デバイスの外部ＡＤＲＥＳＳ－ピンで決まるものです。

                    例えばアドレスが５の時は、?@?@?@１０１を左回転し、@?@?@１０１１になります。

                    Ｄ７～Ｄ１は@?@?@１０１　となり、Ｄ０＝１として８ビットを送ります。

                    @?@?@の部分もすべてアドレスとみなされて、アドレスと一緒に左１ﾋﾞｯﾄ回転され、

                    Ｄ６～Ｄ０がＤ７～Ｄ１になります（Ｄ７から６～０の順に送る）。

      例　Ｒ２Ｃ０　Ｈ２５　Ｋ２Ｙ２C　　アドレスが５の時の書き方で、ルーチン中で左回転しＨ２５－＞Ｈ４Ｂとします。

          （Ｄ０　＝１とします。Ｈ２５の２はデバイスによって違います）。

  ４）ＡＣ２ＣＩ（ACK応答は未サポート　受信は可能）　　　データを読み込みをし、最後にアックを送ります。

                    第２オペランドにデータが入ります。

                    １データのみ受け取って、次にすぐストップ命令（ＳＴＰ２Ｃ）を出す時に多く使用されます。

                       （逆にデータを連続的に受け取る時に使用する素子もあります）。

  ５）ＮＡ２ＣＩ（NAK応答は未サポート　受信は可能）　　　データを読み込みをし、最後にナックを送ります。

                    第２オペランドにデータが入ります。

                    データを連続的に受け取る時に多く使用されます。

                       （逆に１データのみ受け取る時に使用する素子もあります）。

  ６）ＳＴＡ２Ｃ　　　スタート信号を出します。

  ７）ＳＴＰ２Ｃ　　　ストップ信号を出します。


Ｉ２Ｃ液晶モジュール

  Ｉ２Ｃで動作する液晶モジュールがあります。

  ＳＢ１６０２Ｂ、ＳＢ１６０２Ｅがストロベリーリナックス社、から

  ＡＱＭ０８０２ＡーＲＭ－ＧＢＷが秋月電子、から発売されています。

  （ＡＣＭ１６０２Ｎ１－ＦＬＷ－ＦＢＷは不可です）

  １、－ＲＳＴ　　　　－＞ﾌﾟﾙアップ->ＶＤＤ（ここの５番端子）（マイコンによるリセットはしていません）。

  ２、ＳＣＬ　　　　　 －＞ＳＣＬ端子（ IO22 番ピン）

  ３、ＳＤＡ　　　　　 －＞ＳＤＡ端子（　IO21 番ピン）

  ４、ＶＳＳ　　　　　 －＞グランド

  ５、ＶＤＤ　　　　　 －＞電源（２．７～３．６Ｖ）

  21,22のピンはプルアップなしで動作しました。

 ◎使用命令

  ＬＣＤＨ、ＬＣＤＬ、ＢＣＤＤＡに関しての仕様は全く同じです。

  ただ、　上例の　ＬＣＤＬ　Ｋ１６　Ｄ１８　Ｋ２Ｙ１０　の第３オペランドのＫ２Ｙ？？を必ず、Ｋ２Ｙ２Ｃとしてください。
これによって「連枝」はＩ２Ｃ通信の液晶モジュールと判断します。

（Ｙ２ＣはＩ２Ｃのもじりです）。

＜ＣＰＵ設定＞で［Ｉ２Ｃ］にチェックを入れる必要はありません。

  ◎設定

  このＩ２Ｃ液晶モジュールを使用するとき、＜ＣＰＵ設定＞でＩ２Ｃにチェックをいれないでください。

  上行・表示命令　ＬＣＤＨ

  例　ＬＣＤＨ　Ｋ１６　Ｄ１８　Ｋ２Ｙ２C

                    |       |         |___ＬＣＤに利用するポートアドレス

                    |       |_____________表示データの先頭Ｄメモリー番号

                    |_____________________表示バイト数

  下行・表示命令　ＬＣＤＬ

  例　ＬＣＤＬ　Ｋ１６　Ｄ１８　Ｋ２Ｙ２C

                    |       |         |___ＬＣＤに利用するポートアドレス

                    |       |_____________表示データの先頭Ｄメモリー番号

                    |_____________________表示バイト数

上記最初の２つのオペランドは先頭文字（Ｋ）以外の値いは任意です。

ＬＣＤ？命令の常時オンは避けて下さい。１００ｍＳ以上に一回くらいの表示をお薦めします。

Ａ／Ｄコンバータの結果値(BCDデータやバイナリデータ)等を表示する時は下記命令を使用する必要が有ります。

ＢＣＤＤＡ命令（１６ビット）（ＬＣＤ命令に付属しています）

      ＢＣＤ　→アスキー数字列

BCDDA   Dn     Dm

の意味は以下のようです。

         b15 ----------------------- b0

Dn      　 0000    0000    0000    0000　　　　　　　　0000の0には,0か1が入ります。

        b15-----------b8 b7----------b0

Dm + 0 　　　百の桁　　　　　　　千の桁

Dm + 1 　　　一の桁　　　　　　　十の桁

このことにより、Ｄｎの中の数値は、アスキー値として上位（千の桁）から、Ｄｍの中の下位バイトからの順序で入ります。

これによってＬＣＤＨ（ＬＣＤＬ）命令を使用すれば、自動的に、Ｄｍ+0下位バイトからＤｍ+1の上位バイト向かって、その順で液晶にアスキー値が送られることになります。

註）ＨＥＸ値のＡを入れてもエラーにはならず、アスキーの４１に変換されます。

ニーモニックの場合下記のようになり、Ｍ０がオンすればRA1 のＡ／Ｄ値のＢＣＤ変換された値いがＬＣＤの上側に表示されます。

もし、３，４行目のＢＣＤ変換命令がなければ、ＨＥＸＡ値のまま表示されます。

                                        ; example

        LD M0

        ADCO X01 D8 ; D8 =1EF <- Analogue Value of X01(RA1)PIN

        LD M0

        BCD D8 D9 ; D9 =495

        LD M0

        BCDDA D9 D0 ; D0 =3430 D1 =3539

        LD M0

        LCDH K4 D0 K2Y10 ; Display 0495 on LCD

ＳＵＰ０命令（ＬＣＤ命令に付属しています）

  ＬＣＤ表示のための０サプレス命令で、BCDDA命令とともに使用します。

  ＢＣＤＤＡ命令は、Ｄｍ、Ｄｍ＋１メモリーに以下のようにアスキー値を入れます。

                上位　　　　　　　　　下位

Dm + 0 　　　百の桁　　　　　　　千の桁

Dm + 1 　　　一の桁　　　　　　　十の桁

  このＢＣＤＤＡA命令のあと、時、このＳＵＰ０命令を使用すると、頭部分の各桁が０(アスキーで３０ｈ）の場合、これをスペース（アスキーで２０ｈ）に置き換えます。

  ＳＵＰ０　Ｄｍ　Ｋ２

  はＤｍから２ワード分の０サプレスをおこないます。

例えば本来Ｄｍ，Ｄｍ＋１に左側の表示がされるような値いが入っている時

          １２３４　－＞１２３４

          ０２３４　－＞　２３４

          ００３４　－＞　　３４

          ０００４　－＞　　　４

          ００００　－＞　　　０　　のように表示が変わります。

  ＳＵＰ０　Ｄｍ　Ｋ１　　　　の時は、

          １２　－＞１２

          ０２　－＞　２

          ００　－＞　０　　のように表示が変わります。

  Ｋ？の数値は０～１６までの値がとれ、その範囲での０サプレスを行います。


I2C_RTC8564コマンド

RTC８５６４で時間の管理(Ｉ２Ｃモジュール)

  Ｉ２Ｃで動作するＲＴＣとの通信を行うことができます。

  秋月電子　RTC-8564から発売されています。

  ６番ピン　ＳＣＬ　　　　　 －＞ＳＣＬ端子（ IO22 番ピン）

  ５番ピン　ＳＤＡ　　　　　 －＞ＳＤＡ端子（　IO21 番ピン）

  ４番ピン　ＶＳＳ　　　　　 －＞グランド

  ８番ピン　ＶＤＤ　　　　　 －＞電源（１．８～５．５Ｖ）

  21,22のピンはプルアップなしで動作しました。

  このＩ２Ｃモジュールを使用するとき、＜ＣＰＵ設定＞でＩ２Ｃにチェックをいれないでください。(無関係です)

  Ｉ２Ｃとの通信については、内部リレーをＯＮにすることで行います。

  通信のプログラムについては、連枝側で用意します。M9021又はM9022を配置することで、プログラムが準備されます。

ビットデバイス | 説明 | ワードデバイス | 説明
M9021 | RTC読出 | D9030 | 取得した年(BCD２桁 (00-99))
M9022 | RTC書込 | D9031 | 取得した月+1(BCD２桁 （1-12）)
 |  | D9032 | 取得した日(BCD２桁 （1-31）)
 |  | D9033 | 取得した時間(BCD２桁 （0-23）)
 |  | D9034 | 取得した分(BCD２桁 （0-59）)
 |  | D9035 | 取得した秒(BCD２桁 （0-59）)

  M9021をＯＮにすると、ＩＣからデータを読み出し、Ｄ９０３０～Ｄ９０３５にデータをセットします。

  Ｄ９０３０～Ｄ９０３５にデータをセット後、M9022をＯＮにすると、ＩＣにデータを書き込みます。


SPI通信

汎用ＳＰＩ命令　(現状、送信のみとなります)

  SPIで使用するピンは、MO（IO23）、MI（IO19）、SCK（IO18）、CC（任意）です。

  ＳＰＩを入出力とするＩＣを動作させることができます。

  ＳＰＩ素子のそれぞれのプロトコルを、次の命令によって構成します。

  送るビット数は８か１６のいずれかです。

  CCの任意部は第３オペランドで指定したＩＯが使用されます。

  １）ＷＳＰＤＯ　　データを送ります。

                  第１オペランドは、Ｋで始まるビット数です。、

                  指定したビット数だけ第２オペランドで示す数値やＤメモリーの内容を頭から送ります。

                   第３オペランドはＫ２Ｙ？？（CCのピン番号）になります。K2に意味はありません。

    例　ＷＳＰＤＯ　Ｋ８　Ｈ２３　Ｋ２Ｙ２０　　　　IO20をCCとして、16進数（２３）の８ビット（００１０００１１）を左から順にＳＰＩ素子に送ります。

    例　ＷＳＰＤＯ　Ｋ１６　Ｄ０　Ｋ２Ｙ２０

                            Ｄ０にＨ２３が入っている場合、左から順（最上位ビット）に送ります。

  ２）ＲＳＰＤＩ　　　　データを受け取ります。

                   第１オペランドは、Ｋで始まるビット数です。

                  指定したビット数のデータが第２オペランドの指定Ｄメモリーにbit１５～bit０に右詰めで入ります。

                  第３オペランドはＫ２Ｙ？？（CCのピン番号）になります。K2に意味はありません。

    例　ＲＳＰＤＩ　Ｋ１２　Ｄ８　Ｋ２Ｙ２０　　　　これはＳＰＩ素子からの１２ビットの値をＤ８に右詰で入れます。

                                                    Ｄ８のＤ１５～Ｄ１２は００００になります。

  ３）ＳＴＡＴＳ　　　SPIのバスを確保します。

  ４）ＳＴＯＰＳ　　　SPIバスを解放します。

  ◎使用ピン

  SPIで使用するピンは、MO（IO23）、MI（IO19）、SCK（IO18）、CC（任意）です。


ESP32TFTの画面切替

ＥＳＰ３２　ＴＦＴ画面作成

  ＥＳＰ３２では、ＳＰＩ通信を使用することでＴＦＴを使用することができます。

  Ｃ言語のプログラムを変更することで画面を変更することが可能です。

ワード デバイス | 説明
D9002 | ページ番号を管理するデバイスです。切り替えるページ番号を書き込みます。（将来の拡張用）
D9004 | カーソルを変更するデバイスです。カーソルの表示位置を表します。（将来の拡張用）
ビット デバイス | 説明
M8004 | TFTeSPIのプログラムをコメントとして出力します。使用する場合は、Ｃのプログラムを変更します。
M8002 | 画面作成機能を用いて作成した画面を利用するプログラムを出力します。（将来の拡張用）

  将来的には、画面開発ツールをご提供したいと考えておりますが、今しばらくお待ちください。

  また、日本語のフォントライブラリをＡｒｄｕｉｎｏＳｔｕｄｉｏにインストールすることで日本語も表示可能です。

  その場合、ＲＯＭ領域を使用しますので、ビルド結果を確認することをお勧めします。


WROOM32 AD/DA変換

ＡＤ／ＤＡ変換について

AD/DA変換については、応用命令を使用します。
Professional版で使用できます。

ＡＤＣＯコマンド

ＡＤ変換は、０－３．３Ｖの電圧を測定することができます
分解能は１２ビット（０－４０９５）です。

Ｗｉｆｉを使用する機器では、IO32-IO35(4pin)が使用できます。
連枝では、この４ピンを対象としてＡＤ変換が可能です。

33番ピンに接続された信号をＡＤ変換する場合は、以下のようなプログラムを作成します。
DIO33で入力として使用するため、Ｘ３３を指定します。変換した結果は２番目のデバイスＤ０に格納します。

事前にＷｉｆｉの設定をＥＥＰＲＯＭに書き込んでいただければ、以下のラダーのように
Ｗｉｆｉ対応としてください。測定結果をＷｅｂページで確認することができます。

特殊設定について

初期設定において以下のビットおよびワードデバイス値を設定することで、
測定結果に対して、上限下限、スケーリングを行うことができます。

データを直接ＤＡへ出力したり、加工プログラムを省略することができます。
特殊設定を使用する場合は、必ず、初期設定回路を用意しその中で、ＡＤ変換のピンごとに
ＭａｐｐｉｎｇリレーをＯＮにします。

ビットデバイス | 説明 | ワードデバイス | 説明
M8050 | AD32Mapping | D8050 | AD32の入力値の下限値（初期値０）
M8051 | AD32_入力LOWER_LIMITチェック | D8051 | AD32の入力値の上限値（初期値４０９５）
M8052 | AD32_入力UPPER_LIMITチェック | D8052 | AD32の出力値の下限値（初期値０）
 |  | D8053 | AD32の出力値の上限値（初期値３２７６７）
M8055 | AD33Mapping | D8055 | AD33の入力値の下限値（初期値０）
M8056 | AD33_入力LOWER_LIMITチェック | D8056 | AD32の入力値の上限値（初期値４０９５）
M8057 | AD33_入力UPPER_LIMITチェック | D8057 | AD33の出力値の下限値（初期値０）
 |  | D8058 | AD33の出力値の上限値（初期値３２７６７）
M8060 | AD34Mapping | D8060 | AD34の入力値の下限値（初期値０）
M8061 | AD34_入力LOWER_LIMITチェック | D8061 | AD34の入力値の上限値（初期値４０９５）
M8062 | AD34_入力UPPER_LIMITチェック | D8062 | AD34の出力値の下限値（初期値０）
 |  | D8063 | AD34の出力値の上限値（初期値３２７６７）
M8065 | AD35Mapping | D8065 | AD35の入力値の下限値（初期値０）
M8066 | AD35_入力LOWER_LIMITチェック | D8066 | AD35の入力値の上限値（初期値４０９５）
M8067 | AD35_入力UPPER_LIMITチェック | D8067 | AD35の出力値の下限値（初期値０）
 |  | D8068 | AD35の出力値の上限値（初期値３２７６７）

使用例１．
AD変換の結果をスケーリング（マッピング）します。
変換値０を０、変換値４０９５を３２７６７としてデバイスに格納します。

使用例２．
AD変換の結果をスケーリング（マッピング）します。
変換値０を１０００、変換値４０９５を３００００としてデバイスに格納します。

使用例３．
AD変換の結果をスケーリング（マッピング）します。
変換値１００を１０００、変換値３０００を３００００としてデバイスに格納します。
ただし、変換値が１００以下の場合は１００、３０００以上の場合は３０００の値にします。

ＤＡＣＯコマンド

ＤＡ変換は、０－３．３Ｖの電圧を出力することができます。
分解能は８ビット（０－２５５）です。
電圧出力に使用できるピンは、IO25とIO26です。
以下のプログラムは、Ｄ０に格納された値をIO25に出力するプログラムです。

ＤＡ変換についても、スケーリング（マッピング）が行えます。
出力指示値が範囲外の場合、挙動が安定しません。また、ＡＤ変換した値を
そのまま、ＤＡ変換値として使用する場合演算が必要となります。
これを変換せずに使用することができるのがスケーリング（マッピング）です。

特殊設定
ビットデバイス | 説明 | ワードデバイス | 説明
M8020 | DA25Mapping | D8020 |
M8021 | DA25_入力LOWER_LIMITチェック | D8021 | DIO25デバイスの入力値の下限値（初期値０）
M8022 | DA25_入力UPPER_LIMITチェック | D8022 | DIO25デバイスの入力値の上限値（初期値２５５）
 |  | D8023 | DIO25デバイスの出力値の下限値（初期値０）
 |  | D8024 | DIO25デバイスの出力値の上限値（初期値２５５）
M8025 | DA26Mapping | D8025 |
M8026 | DA26_入力LOWER_LIMITチェック | D8026 | DIO26デバイスの入力値の下限値（初期値０）
M8027 | DA26_入力UPPER_LIMITチェック | D8027 | DIO26デバイスの入力値の上限値（初期値２５５）
 |  | D8028 | DIO26デバイスの出力値の下限値（初期値０）
 |  | D8029 | DIO26デバイスの出力値の上限値（初期値２５５）

使用例１．
X21のスイッチを押すたびに出力となるデータレジスタの値を１０増やします。
X23のスイッチを押すたびに出力となるデータレジスタの値を１０減らします。
電圧の出力はＤＡＣＯがＯＮとなっている間出力されます。

使用例２．
X21のスイッチを押すたびに出力となるデータレジスタの値を１０増やします。
X23のスイッチを押すたびに出力となるデータレジスタの値を１０減らします。
M8020を置くことでスケーリングを有効にします。
M8021およびM8022を置き、D8021入力下限値とD8022上限の設定を行い、
下限値以下の値なら下限値とし、上限値以上なら上限値に制限をかけます。
電圧の出力はＤＡＣＯがＯＮとなっている間出力されます。

使用例３．
ADコンバータで取り込んだ値をDAコンバータの出力値に設定します。
ADコンバータでは０－４０９５の値が取り込まれますが、スケーリングの設定を行うことで
DAコンバータで使用される値０－２５５の範囲に変換することができます。
演算機能を使用せずに、比例して出力を変化させることができます。
また、出力の最低値を設定することで、出力電圧の最低値を０Ｖから変更することができます。
M8020を置くことでスケーリングを有効にします。
M8021およびM8022を置き、D8021入力下限値とD8022上限の設定を行い、
D8023出力下限値とD8024出力上限値の設定を行います。
下限値以下の値なら下限値とし、上限値以上なら上限値に制限をかけます。
電圧の出力はＤＡＣＯがＯＮとなっている間出力されます。

12bitＡ／Ｄコンバータ

ＳＰＩの外部１２ビットのＡ／ＤコンバータＭＣＰ３２０４、ＭＣＰ３２０８からデータを読み取ることができます。

  ＭＣＰ３２０４は４チャンネル、

  ＭＣＰ３２０８は８チャンネルのＡ／Ｄコンパートができます。

  ＡＤＣＯ２　命令を使用します。

  ＡＤＣＯ２　Ｘ１？　Ｄ０

  のように書き、？のところに０～７（又は０～３）のチャンネルの数字をいれてください。Ｄのアドレスは任意です。

  接続は　　ＥＳＰ３２？（ピン番号）　　ＭＣＰ３２０８（ピン番号）　　３２０４（ピン番号）

                    ＩＯ５（５）　　-------　　ＣＳ　　　　（１０）　　　　　（８）

                  ＳＣＫ　　　　　（１８）　　-------　　ＣＬＫ　　　（１３）　　　　　（１１）

                  ＭＩ（１９）           （１７)   　-------    Ｄｏｕｔ　　　（１２）　　　　　（１０）

                  ＭＯ　　　　　（２３）　　-------　　Ｄｉｎ　　　　（１１）　　　　　（９）

  となります。


ＥＮＣＯ命令

カウンタ機能

WROOM32では、０～７つのユニットがあり、カウント機能があります。
各ユニットにはチャンネルが２つあり、組み合わせることで、４相のエンコーダーの
回転数測定が行えます。単体で使用した場合も、カウンタ機能やパルス幅の計測なども
行えます

ENCODコマンド

ENCODコマンドでは以下の内容の測定が行えます。

  • ４相エンコーダー（Ａ相、Ｂ相のロータリエンコーダ）モード：０
  • パルス数カウント（指定カウント間の出力ＨＩＧＨ）モード：１
  • パルスＯＮ幅及び周期測定　モード：２

ENCODコマンドは、コマンドと共に特殊設定のレジスタD8300以降を必ず
使用します。初期設定等を忘れないようにしてください。
また、ENCOD命令はパルス命令です。再起動は、一度指令をOFFにしてから行ってください。

コマンドの基本的な使い方は、以下の通りです。
ENCODコマンドの指定デバイスの１０の位がユニット番号です。
このユニット番号と特殊設定のレジスタを確認し、動作内容が決定します。

これに加えて、D83x0番台のレジスタを使用します。
xはユニット番号です。
ユニットのモード設定レジスタの値が動作を決定します。
モード設定レジスタが０なら、４相エンコーダーモードです。
１なら、高速カウンタモード。２ならパルスON幅および周期測定モードです。

4相エンコーダー

A相およびB相を持つロータリエンコーダ（チャッタがない）を対象として
回転数を測定するモードです。
使用するA相のIO番号、B相のIO番号を必ず指定します。
Unitのモードは初期値が０のため、設定しなくても使用できます。
従来の連枝では、エンコーダー命令をOFFにするとカウント値がリセットされましたが、
カウントを停止するだけです。カウント値のリセットについては、現在検討中です。

（参考）各相の周波数が５MHｚでも問題なくカウントできていました。
10MHzになるとカウント値が正しくカウントされていませんでした。

使用例１．ロータリエンコーダのパルスカウント

A相をDIO４、B相をDIO５として、Y19がONの間パルスをカウントするラダー回路です。
カウント値はD8304に入ります。これを使用するために、MOV命令でD0に読み出しています。

以下の表内のHは、将来のための予備です。現在は使用していません。
ご注意ください。
特殊設定
ワードデバイス | 説明
D8300 | Unit0 モード[ENCO,HSAM,DSAM]
D8301 | A相のＩＯ番号
D8302 | B相のＩＯ番号
D8303 | 出力のＩＯ番号
D8304 | 設定パルスＬ[高速カウンタ測定値]
D8305 | 設定パルスＨ[高速カウンタ測定値]
D8306 | 現在カウント数Ｌ[周期値Ｌ]
D8307 | 現在カウント数Ｈ[周期値Ｈ]
D8308 | デューティ値Ｌ
D8309 | デューティ値Ｈ
D8310 | Unit1 モード[ENCO,HSAM,DSAM]
D8311 | A相のＩＯ番号
D8312 | B相のＩＯ番号
D8313 | 出力のＩＯ番号
D8314 | 設定パルスＬ[高速カウンタ測定値]
D8315 | 設定パルスＨ[高速カウンタ測定値]
D8316 | 現在カウント数Ｌ[周期値Ｌ]
D8317 | 現在カウント数Ｈ[周期値Ｈ]
D8318 | デューティ値Ｌ
D8319 | デューティ値Ｈ
途中省略
D8370 | Unit7 モード[ENCO,HSAM,DSAM]
D8371 | A相のＩＯ番号
D8372 | B相のＩＯ番号
D8373 | 出力のＩＯ番号
D8374 | 設定パルスＬ[高速カウンタ測定値]
D8375 | 設定パルスＨ[高速カウンタ測定値]
D8376 | 現在カウント数Ｌ[周期値Ｌ]
D8377 | 現在カウント数Ｈ[周期値Ｈ]
D8378 | デューティ値Ｌ
D8379 | デューティ値Ｈ

パルス数カウント（高速カウンタ）

指定したパルス数が発生するまで、指定したデバイスをONにします。
D83x0を１に設定します。これにより、パルス数カウント動作となります。
D83x1に入力を監視するデバイスを指定します。D83x3に監視中にONするデバイスを指定します。
D83x4にパルス数を指定します。この回数のパルスが入力されると、D83x3のデバイスをOFFにします。
D83x4を読み出すと、現在のカウント値が格納されます。
D83x6を読み出すと、監視開始からカウント終了までの時間がusで格納されます。
指定した出力デバイスのリレーは内部のプログラムではリレーとしては使用できません。
あくまで、出力ピンのHIGH、LOWの変更だけです。

パルスＯＮ幅及び周期測定

D83x0を２に設定します。これにより、パルスON幅及び周期測定となります。
D83x4を読み出すと、現在のカウント値が格納されます。
D83x6を読み出すと、監視開始後の立ち上がりから次の立ち上がりまでの時間がusで格納されます。
D83x8を読み出すと、監視開始後の立ち上がりから次の立下りまでの時間がusで格納されます。
※監視開始後の立ち上がりから計測します。立下りが最初に来た場合は、正しく測定できません。
今後、この現象につきましては、解決したいと思っております。
※内部のタイマーの経過時間で測定しているため、HIGH時間および周期がus以下の場合
正しく測定できません。ご了承ください。

現在までの測定可能内容です。ただし、高速カウンタの動作を見る限り
さらにいろいろな測定が可能なようです。
ご希望により、さらに機能は追加が可能と考えております。


パルス生成関連の機能（ＰＵＬＳＥ命令）

パルス生成関連の機能（ＰＵＬＳＥ命令）について

パルス生成関連の機能はワードデバイスを使用するため、連枝のProfessinal版が必要です。

連枝では、用意された命令のledcを用いて、指定周波数の指定デューティ比のパルスを出力することができます。
WROOM32では、０～１２チャンネル用意されていますが、連枝の本体の関係で、本バージョンでは０と１のみ使用できます。
今後、チャンネル数を増やす予定です。
また、指定パルス数で停止する制御は、タイマー割込みを使用して実現できるようですので、こちらも今後機能の提供する予定です。

  • 無限パルスの制御・・・周波数可変、デューティ可変
  • ＲＣサーボ制御・・・20ms周期[50Hz] 設定により0.15ms-2.5msの範囲で 制御が可能
  • 指定パルス数で停止する制御（未対応）・・・指定周波数、指定デューティの波形を指定個数のパルス出力する機能です。

PULSE命令について

PULSE命令を以下に示します。
指定パルス数で停止する制御は本来の連枝でのＰＵＬＳＥ命令です。
しかし、現在は未対応です。今後のバージョンアップでサポート予定です。
ですので、使用する場合、必ずパルス数は０を指定してください。０以外は未対応となります。
１番目：Ｓチャンネル番号（１桁）デューティ比（２桁）
２番目：周波数[Hz]
３番目：パルス数[回]　０回と指定

固定周波数、固定デューティ比制御

また、チャンネル番号に対して、ＩＯ番号を指定することになります。
この番号指定は、初期設定にて行います。０チャンネルのデバイス番号はＤ８４００となります。
そのため、DIO25に50Hz60%デューティの波形を出力すると考えると
以下のようなプログラムを作成します。

特殊設定
ビットデバイス | 説明 | ワードデバイス | 説明
M8400 | PWM0_連続出力 | D8400 | PWM0 DeviceNo
M8401 | PWM0_入力LOWER_LIMITチェック | D8401 | PWM0 Frequency(Run中変更可)(初期値５０)
M8402 | PWM0_入力UPPER_LIMITチェック | D8402 | PWM0 Duty(Run中変更可)(初期値５０)
M8403 | PWM0_OUT_LOWER使用 | D8403 | PWM0 カウント数(初期値０)
M8404 | PWM0_OUT_UPPER使用 | D8404 | PWM0 分解能(初期値８)
 |  | D8405 | PWM0入力の最小値(初期値０)
 |  | D8406 | PWM0入力の最大値(初期値２５５)
 |  | D8407 | PWM0出力の最小値(初期値０)
 |  | D8408 | PWM0出力の最大値(初期値２５５)
 |  | D8409 | PWM0 予備
M8410 | PWM1_連続出力 | D8410 | PWM1 DeviceNo
M8411 | PWM1_入力LOWER_LIMITチェック | D8411 | PWM1 Frequency(Run中変更可)(初期値５０)
M8412 | PWM1_入力UPPER_LIMITチェック | D8412 | PWM1 Duty(Run中変更可)(初期値５０)
M8413 | PWM1_OUT_LOWER使用 | D8413 | PWM1 カウント数(初期値０)
M8414 | PWM1_OUT_UPPER使用 | D8414 | PWM1 分解能(初期値８)
 |  | D8415 | PWM1入力の最小値(初期値０)
 |  | D8416 | PWM1入力の最大値(初期値２５５)
 |  | D8417 | PWM1 出力の最小値(初期値０)
 |  | D8418 | PWM1 出力の最大値(初期値２５５)
 |  | D8419 | PWM1 予備

使用例１．２軸の制御（チャンネル０：２５ピン、チャンネル１：２６ピン）

0チャンネル：DIO25のピンに５０Ｈｚのパルスを出力
X21:ONでデューティ比２０％、X23:ONでデューティ比６０％
1チャンネル：DIO26のピンに５０Ｈｚのパルスを出力
X34:ONでデューティ比３０％、X35:ONでデューティ比４０％

※ＬＥＤＣ命令で使用する、周波数および分解能の設定は、すべてのチャンネルで
共通となります。異なる周波数・分解能の波形を同時に出力することはできません。

固定周波数、可変デューティ比制御

周波数を固定し、デューティ比を可変する制御が行えます。
この場合、デューティ比の指定を０としてください。
特殊設定となるデバイスD8402またはD8412で設定された値をデューティ比の
指令値として扱います。
また、指令値の範囲は、分解能により異なります。(初期値は８ビット０－２５５)

使用例２．デューティ比動作中可変制御

AD変換で取り込んだ変換値をデューティ比として使用します。
ポイントとして、AD変換で取り込んだ値(D0)をD8402とD8412に書き込んでいるところです。
これにより、波形出力中にPULSEのデューティ比を変えることができます。
今回、分解能の初期値は８となっているので、０－２５５の指定です。
この場合、２５５を超えると、波形が正しく出力されなくなります。

可変周波数、可変デューティ比制御

ＰＵＬＳＥ命令の周波数設定を０と指定してください。
周波数およびデューティ比とも実行時に変更することができます。
ただし、波形出力中に周波数は変更できません。
デューティ比のみ変えることができます。
また、チャンネルごとで異なる周波数を設定し同時に出力することはできません。
(これは、CPUの仕様です)
変更する場合、周波数に対する分解能についてご注意ください。
周波数が高くなると指定できる分解能が少なくなります。当方で調べた
設定できる周波数に対する分解能の表を記載いたします。

ＬＥＤＣ命令で使用できる周波数に対する分解能が異なります。
そのため、使用する場合には、注意する必要がございます。

周波数に対する使用できる分解能
周波数 | 分解能 | 周期ms | 最低値 | 最高値 | 1デジタル値の時間us
50 | 20 | 20 | 0 | 1048575 | 0.019073486
50 | 18 | 20 | 0 | 262143 | 0.076293945
50 | 16 | 20 | 0 | 65535 | 0.305175781
50 | 15 | 20 | 0 | 32767 | 0.610332937
50 | 14 | 20 | 0 | 16383 | 1.220628624
50 | 13 | 20 | 0 | 8192 | 2.441108263
50 | 12 | 20 | 0 | 4095 | 4.881620698
50 | 11 | 20 | 0 | 2048 | 9.760858956
2500 | 15 | 0.4 | 0 | 32767 | 0.012207031
5000 | 14 | 0.2 | 0 | 16383 | 0.012207031
10000 | 13 | 0.1 | 0 | 8191 | 0.012207031
20000 | 12 | 0.05 | 0 | 4095 | 0.012207031
75000 | 10 | 1.33333E-02 | 0 | 1023 | 0.013020833
150000 | 9 | 6.66667E-03 | 0 | 511 | 0.013020833
200000 | 8 | 0.005 | 0 | 255 | 0.01953125
300000 | 8 | 3.33333E-03 | 0 | 255 | 0.013020833

使用例３．可変周波数、可変デューティ比制御

使用例２に変更を加えて、周波数を変更できるようにしています。
ポイントは、ＰＵＬＳＥの周波数設定を０としたこと。
INCP命令およびDECP命令で、D8401の値を変更できるようにしたことです。
これにより、チャンネル０を実行したときは、D8401で設定した値の周波数で
パルスを生成いたします。一方、チャンネル１を実行したときは、D8411なのですが、
初期値から変更していないため、50Hzの出力となります。

RCサーボを制御する場合

RCサーボの制御では、一般的に、５０Ｈｚのパルスを使用します。
また、回転角の制御については、ＨＩＧＨの幅を可変することで、角度を変更します。
可変デューティおよびスケーリング（マッピング）を使用することで、
パルス幅を1us程度で可変できることが確認できました。

以下の例がサンプルとなります。
スケーリング（マッピング）の考え方は、ＡＤやＤＡと同じです。
今回、制御対象のパルスの周期は２０ｍｓで、ＨＩＧＨの幅は５ｍｓ～２．５ｍｓで
制御するプログラムです。
サンプル(pwm_pulse1.mbs)に入れていますのでご確認ください。


M5Stackについて

M5Stackとは

M5Stackは、WROOM32CPUを使いやすくパッケージ化されたモジュールです。 このモジュールには、以下のものが含まれています。

  • 入力 押し釦スイッチ　３個
  • 出力　１Wのスピーカ　１個
  • 　　 TFT　３２０×２４０　１個
          （色　１６ビット（赤５ビット、緑６ビット、青５ビット）

ピンの並びと考え方

WROOM32のCPUについては、WROOM32の項目をご確認ください。

ピンマップ
ピン名 | マーク | 信号名 | 説明
5V | 5V | 5V | 電源５Ｖ
3.3V | 3V3 | 3V3 | 電源３．３Ｖ
GND | G | G | ＧＮＤ（グランド）
IO21 | 21 | SDA | I2C通信
IO22 | 22 | SCL
IO23 | 23 | MO | ＳＰＩ通信
IO19 | 19 | MI
IO18 | 18 | SCK
IO3 | 3 | R0 | SCI 0通信
IO1 | 1 | T0
IO16 | 16 | R2 | SCI 2通信
IO17 | 17 | T2
IO2 | 2 | G2 | 汎用入出力 ＩＯ２（書込みで使用）
IO5 | 5 | G5 | 汎用入出力 ＩＯ５
IO25 | 25 | DA | ＤＡ２５ スピーカ出力
IO26 | 26 | DA | ＤＡ２６ アナログ出力（汎用入出力）
IO35 | 35 | AD | ＡＤ３５ アナログ入力（汎用入出力）
IO36 | 36 | AD | ＡＤ３６ アナログ入力（汎用入出力）
RST | RST | RST | リセット信号
BAT | BAT | BAT | バッテリ

その他の詳細の情報につきましては、インターネットの検索サイトで「WROOM32」または「ESP32」で検索していただくと調べることができます。

(Ｃソースの修正）
ＡｒｄｕｉｎｏＳｔｕｄｉｏで、生成されたプログラムを修正できます。
修正する場合、環境設定の「外部のエディタを使用する」のチェックを外して、編集します。
連枝でプログラムを修正して出力した場合、変更した内容は消えてしまいます。
（現状の連枝の仕様です。）

また、最新のプログラムを表示する場合は、「外部のエディタを使用する」の
チェックを行い、プログラムを読み込みます。チェックが外れていると、
古いプログラムのままとなります。
（連枝からファイルを変更しても、表示されているプログラムは古いままです）


ArduinoStudio概要

ArduinoStudioについて

前提条件

M5Stackを使用する場合、開発環境の整備とともに、連枝のプログラムで必ず初期設定プログラムを記載する必要があります。

  1. 作成ラダーで初期設定プログラムの記載(M8005のコイル)
  2. 開発環境のインストールと設定

初期設定プログラムの記載

M5Stackのヘッダファイルおよびbeginメソッドの呼び出しプログラムを記載するために初期設定プログラムを記載する必要があります。 これを記載することで、ヘッダファイルの記載とbeginメソッドの呼び出しが行われます。

開発環境

使用する場合は、事前にArduinoStudioのインストールが必要となります。
Download the Arduino IDE [ サイトアドレス　https://www.arduino.cc/en/main/software# ]

また、M5Stack(WROOM32)のライブラリがコンパイルできるようにライブラリ・設定が必要となります。
M5StackのCPUはWROOM32のうち、特定のハードウェア構成となるのがM5Stackとなります。

「ツールーボード」から、「ボードマネージャ」を選択します。

CPUに対応するボード情報をインストールします。一覧から選ぶと項目が多いため、CPU名を入力して、フィルタをかけてください。項目を選び、インストールボタンを押す。

ボードマネージャでボードをインストール後使用するボードを選びます。 今回は、「ESP32 Dev Module」を選びます。

M5Stackを使用する場合、必ずM5Stackをインストールします。

※ここから先は、使用する機能により選択する内容が異なります。

M5StackのCPUのプログラム開発の場合は、M5StackCPUのライブラリが必要となります。

日本語フォントを使用する場合

  TFTで日本語を表示する場合、文字コードから描画用のドットデータを生成するライブラリが必要になります。Githubで公開されているライブラリの場合、圧縮ファイル（ZIP）をダウンロードし、ZIP形式のライブラリインストールを行います。

日本語フォントをM5Stack（ＥＳＰ３２）で使用する場合のライブラリ

efont Font Data for Arduino　　https://github.com/tanakamasayuki/efont

Arduinoで使用するライブラリをインクルードします。このライブラリは、M5StickCの日本語フォントを描画できます。

このままだと、ＥＳＰ３２では使用できませんので、ライブラリ内の宣言を修正するか、または、ヘッダファイルを別途作成します。

efontM5StickC.hがライブラリに用意されているファイルです。これをefontM5Stack.hのようにオブジェクトの名前をすべて修正する必要があります。

連枝でできること

連枝では、ArduinoStudioでコンパイルできるC++のプログラム(.iso,.hなど)を生成いたします。
ＨＥＸ変換で実行できるのは、ラダーの作成からＣ＋＋等のプログラム生成までとなっています。
ご注意ください。

（手順）

  1. ラダーを新規で作成
  2. ＣＰＵ設定をArduinoに設定
  3. ラダーを作成
  4. ラダーを保存
  5. 回路をコンパイル
  6. SEQ・HEX変換

ラダーを新規で作成

CPU設定を「Arduino」に設定

設定されたＣＰＵの種類は画面の右上に表示されます。

ラダーを作成

ラダーを名前を付けて保存

ビルドー回路のコンパイル

ビルドーＳＥＱ・ＨＥＸ変換またはビルドーSEQ・DBX変換

ラダーを変更した場合は、以下の手順を実行してください。

ラダーを上書き保存ー＞回路のコンパイルー＞ＳＥＱ・ＨＥＸ変換

「SEQ・HEX変換」が実行されると、mbsファイルの存在するフォルダ内に新たなフォルダを作成し、以下のファイルを生成又はコピーします。

mbsファイル名.ino・・・setupおよびloopに関するプログラムが記述されています。ラダーのプログラムもこちらに記載しています。
mbsファイル名.h・・・ラダーで使用されるデバイス名やプログラムのソースを記載しています。システムなどのプログラムもこちらに記載しています。
その他、機能によりファイルを生成

ラダーを上書き保存ー＞回路のコンパイルー＞ＳＥＱ・ＤＢＸ変換

「SEQ・DBX変換」が実行されると、mbsファイルの存在するフォルダ内に新たなフォルダを作成し、以下のファイルを生成又はコピーします。

mbsファイル名x.ino・・・setupおよびloopに関するプログラムが記述されています。ラダーのデバッグ通信のプログラムを含めたプログラムがこちらに記載しています。
mbsファイル名x.h・・・ラダーで使用されるデバイス名やプログラムのソースを記載しています。システムなどのプログラムもこちらに記載しています。
その他、機能によりファイルを生成
※ＤＢＸ変換したプログラムは、ＷＥＢ通信が正常動作しません。ご注意ください。

生成したプログラムは、お客様でArduinoStudioで開き、コンパイルし、チップに書き込む必要がございます。

書込みがエラーとなる場合、シリアルポートの設定が間違っていることが考えられます。 また、シリアルポートモニタを行っている場合も書込みエラーとなることがありますので ご注意ください。

シリアルポートの設定メニュー

エラー画面例

シリアルポートの設定を行っていない。

シリアルポートがＭ５Ｓｔａｃｋではない場合

IO2（Ｇ２）に電圧がかかっている。書き込み時は、ＩＯ２はオープンとしておいてください。

連枝で作成したプログラムを随時更新して取り込む場合は、以下のチェックを必ず入れてください。
これにより、ファイルが更新されると自動的に内容が変更されます。
一方、チェックを入れないと、開いた後の連枝からの変更は反映されません。ご注意ください。

生成したプログラムは、お客様側でカスタマイズが可能なように、命令名をコメントで記載しております。
また、ラダーで使用されるデバイス名で、プログラムが記述できるように工夫をしております。
そのため、連枝において、フレームワークを作成し、新しい機能や未対応機能は
お客様で実装可能としております。

その場合は、連枝でソース生成後、「外部のエディタを使用する」のチェックを外してください。
これ以降は、ユーザー様でのプログラムの編集となります。

※この場合、連枝でＨＥＸ変換するとユーザー様のプログラムが上書きされますので、
inoのファイルが入っているフォルダごと別のフォルダにコピーしてご使用ください。

IoT機能の実装について

Wifi機能を追加すると、ブラウザでの通信に必要となるHTTPの処理およびHTML文書（ＷＥＢページ）を自動生成いたします。

自動生成されたＷＥＢページ例

作成したプログラムの動作確認やページのコントロールとしてご利用いただけます。 Wifiの機能は、ステーションモード・SoftAPモード・ＤＮＳサーバモードを搭載できます。

また、ステーションモードでご使用いただく場合、無線ＬＡＮのＡＰのＳＳＩＤとパスワードの 設定をする必要があります。この設定は、シリアル通信のコマンドにより設定変更することができます。 変更した内容はＥＥＰＲＯＭに保存し、次回以降の起動時に読込通信処理を行います。

その他詳しくは、ＷＩＦＩについてをご覧ください。

※従来との大きな違い
  メモリが多いため、ご使用いただいたデバイス分メモリを確保いたします。
そのため、デバイス数の制限はRAMメモリの制限数となります。
（ただし、今後、IoTを考慮して、お客様側で各デバイスの範囲を設定できるようにすることも
検討中です。ご希望などございましたら、お知らせください。)
  EEPROM（電源OFFの記憶領域）については、使用数の制限がございます。
停電時保持リレーL0-L63,停電時保持デバイスR0-R9
事前に宣言が必要なため、その点はご理解ください。


WROOM32 AD/DA変換

ＡＤ／ＤＡ変換について

AD/DA変換については、応用命令を使用します。
Professional版で使用できます。

ＡＤＣＯコマンド

ＡＤ変換は、０－３．３Ｖの電圧を測定することができます
分解能は１２ビット（０－４０９５）です。

Ｗｉｆｉを使用する機器では、IO35-IO36(2pin)が使用できます。
連枝では、この２ピンを対象としてＡＤ変換が可能です。


I/O･拡張

エクスパンダー素子による拡張

  Ｉ２Ｃ通信によるため、ＩＯ２２（ＳＣＬ）、ＩＯ２１（ＳＤＡ）の２ピンのみを拡張用に使用します。信号の基準のためＧＮＤはつなぎます。

  マイクロチップ社のＥＸＰＡＮＤＥＲ用素子ＭＣＰ２３００８（８ﾋﾞｯﾄ）とＭＣＰ２３０１７（１６ﾋﾞｯﾄ）の各ピンを

  拡張側の入出力として使用できます。全部で１２８ピン（MCP23017×8個）をＩ／Ｏピンとして使用可能です。

  ８ビットと１６ビットの拡張用素子を同時に使用することができます。

  どのピンを入力に使用するか、出力に使用するかピン毎に任意で、メインＣＰＵ側ソフトで決定します。

ラダー上で、X100（Y100)以上X17F(Y17F)以下のデバイスを使用すると、I2Cに接続されたExpanderICをXやYのデバイスとして使用することができます。

連枝では、使用するデバイスの番号を確認し、番号が８番以降ならMCP23017と考え通信します。

連枝では、使用するデバイスの番号を確認し、番号が７番以下ならMCP23008と考え通信します。

この番号とICが違うと通信できません。

また、Ｉ２Ｃのバス上に同一アドレスは指定できません。MCP23008とMCP23017は同じアドレスは設定できません。

？100～？107：MCP２３００８のアドレス０：GP0-GP7(100-107)

？110～？117：MCP２３００８のアドレス１：GP0-GP7(110-117)

？120～？127：MCP２３００８のアドレス２：GP0-GP7(120-127)

？130～？137：MCP２３００８のアドレス３：GP0-GP7(130-137)

？140～？147：MCP２３００８のアドレス４：GP0-GP7(140-147)

？150～？157：MCP２３００８のアドレス５：GP0-GP7(150-157)

？160～？167：MCP２３００８のアドレス６：GP0-GP7(160-167)

？170～？177：MCP２３００８のアドレス７：GP0-GP7(170-177)

？100～？10F：MCP２３０１７のアドレス０：GPA0-GPA7(100-107),GPB0-GPB7(108-10F)

？110～？11F：MCP２３０１７のアドレス１：GPA0-GPA7(110-117),GPB0-GPB7(118-11F)

？120～？12F：MCP２３０１７のアドレス２：GPA0-GPA7(120-127),GPB0-GPB7(128-12F)

？130～？13F：MCP２３０１７のアドレス３：GPA0-GPA7(130-137),GPB0-GPB7(138-13F)

？140～？14F：MCP２３０１７のアドレス４：GPA0-GPA7(140-147),GPB0-GPB7(148-14F)

？150～？15F：MCP２３０１７のアドレス５：GPA0-GPA7(150-157),GPB0-GPB7(158-15F)

？160～？16F：MCP２３０１７のアドレス６：GPA0-GPA7(160-167),GPB0-GPB7(168-16F)

？170～？17F：MCP２３０１７のアドレス７：GPA0-GPA7(170-177),GPB0-GPB7(178-17F)

      アドレス設定は正論理です。

（例）MCP23008をアドレス０番、MCP23017をアドレス３番として配線しています。

この場合、ラダー内では*100～*107までと*130～*13Fまで使用できます。


各種機能（I2C、SPI、LCDなど）

各種機能についてのコマンドは、WROOM32と同様です。
WROOM32のマニュアルをご確認ください。


TFTの画面切替

ＴＦＴ画面作成

  Ｍ５では、ＴＦＴが標準で実装されています。

  Ｍ５のソースを生成するとＴＦＴページ処理関数と切り替えデバイスが用意されます。

  Ｃ言語のプログラムを変更することで画面を変更することが可能です。

  将来的には、画面開発ツールをご提供したいと考えておりますが、今しばらくお待ちください。

  また、日本語のフォントライブラリをＡｒｄｕｉｎｏＳｔｕｄｉｏにインストールすることで日本語も表示可能です。

  その場合、ＲＯＭ領域を使用しますので、ビルド結果を確認することをお勧めします。

ワードデバイス | 説明
D9002 | ページ番号を管理するデバイスです。０～５までページ番号を書き込むことでページが変わります。
D9005 | カーソル位置を管理するデバイスです。０～５までカーソル位置を設定できます。
ビットデバイス | 説明
M8004 | ページ１のみにデバイスの状態を出力します。Ｘ、Ｙは最大６点、Ｍは１６点（Ｍ０～Ｍ１５）表示します。 また、Ｄ（Ｄ０～Ｄ２）、Ｔ（Ｔ０～Ｔ２）、Ｃ（Ｃ０～Ｃ２）は現在値を３点分表示できます。 ただし、表示されるのはラダー上に配置されているデバイスのみとなります。

（例１）ラダーからの画面切替

  ラダーからＤ９００２の値を変更することで画面の切り替えを行えます。
X37をＯＮすると、ページを「Page3」に切り替えます。
X38をＯＮすると、ページを「Page2」に切り替えます。
X39をＯＮすると、ページを「Page1」に切り替えます。
画面のプログラムが作成できると、表示できる内容が多くなります。

（例２）画面のカーソル（ボタンの移動）によるページの切り替え

  ラダーからＤ９００５の値を変更することで選択している項目を切り替えます。
以下のラダーでは、Ｘ３７を押すとＰ０から増加方向に移動します。
Ｘ３９を押すとＰ５から減少方向に移動します。
Ｘ３８を押すと現在のカーソル位置の番号をページ番号に代入します。
ページ番号を書き換えることで、ページを切り替えます。

（例３）移動、選択ボタンによるページ切換

  ラダーからＤ９００５の値を変更することで選択している項目を切り替えます。
以下のラダーでは、Ｘ３７を押すとＰ０から増加方向に移動します。
Ｐ５の次はＰ０に戻ります。
Ｘ３８を押すと現在のカーソル位置によってページを切り替えます。

（例４）選択ボタンによる出力制御

  ラダーからＤ９００５の値を変更することで選択している項目を切り替えます。
以下のラダーでは、Ｘ３７を押すとＰ０から増加方向に移動します。
Ｘ３９を押すとＰ５から減少方向に移動します。
Ｘ３８を押すと現在のカーソル位置によって、出力するデバイス（Ｙ２５またはＹ２６）をＯＮに切り替えます

（例５）制御装置の画面表示

ラダー内で使用されているデバイスをＰ１に表示します。

表示されるデータは、ラダー内で出現するデータでかつ、
Ｘが最大５個、Ｙが最大５個、 Ｍ０～Ｍ１５、Ｄ０～Ｄ２、Ｔ０～Ｔ２、Ｃ０～Ｃ２となります。

デバッグなどにご利用ください。

書き出し要素が増加すると、画面描画に時間がかかりスキャンタイムが伸びます。

この場合、１ｍｓタイマーや割込みタイマーの安定性に影響します。


AsciiCode表

ＡＳＣＩＩコード表


デバイス範囲

    ＰＩＣ１６Ｆ８７７　　　ＰＩＣ１６Ｆ８８７

  ＰＩＣ１６Ｆ８７６　　ＰＩＣ１６Ｆ８８６

についてはピン数のみ違うので、類推をしてください。

概要

ＰＩＣ１６Ｆ８７７の変換ライブラリーまたは、ＰＩＣ１６Ｆ８８７の変換ライブラリーを使用して、基本命令によるシーケンス動作（Ｓ版）と、１６ビットの応用命令（Ｐ版）をＣＰＵに実行させることが出来ます。

ＰＩＣ１６Ｆ８７７の基本仕様

ＲＯＭ容量　　８Ｋワード（１４ｂｉｔ／１ワード）

  ピン数　　 ４０ピン

      Ｉ／Ｏ数　　計３３ピン（全ピンＩＮ／ＯＵＴ任意に設定可能）

註）ＲＡ４は例外的にオープンコレクターピンになっており、それによる吸い込み出力となり、入力に使用する場合はプルアップ抵抗が必要になります。

ＰＩＣ１６Ｆ８８７の基本仕様

ＲＯＭ容量　　８Ｋワード（１４ｂｉｔ／１ワード）

  ピン数　　４０ピン

      Ｉ／Ｏ数　　計３６ピン（３５ピンはＩＮ／ＯＵＴ任意に設定可能　ＰＩＮ１は入力のみ）

      ＭＣＬＲ、と外付け発振子をつなぐＯＳＣ１，ＯＳＣ２ピンをＩ／Ｏピンに使用できます。

      下図はそのすべてをＩ／Ｏに使用した場合です。

ＰＩＣのピン呼称説明
ＶＤＤ | ５Ｖ電源
ＶＳＳ | ０Ｖ（ＧＮＤ）電源
ＭＣＬＲ | リセットピン（０でリセットのため、常時プルアップ）
ＯＳＣ１ ＯＳＣ２ | 水晶発振子（２０ＭＨｚ）接続（１６Ｆ８７７，８７６） （８MHｚ）内蔵可（１６Ｆ８８７，８８６） ２～１８ＭＨｚでも動作します（特長参照）
各ピンが入力になるか、出力になるかは回路上の設定番号をＸで始めるか、Ｙで始めるかで任意に選択できます。

最大定格
全ピン吐き出し電流合計 | ２５０ｍＡ
全ピン吐き出し電流合計 | ３００ｍＡ
各ポート合計 | ２００ｍＡ
各Ｉ／Ｏピン吸込み電流 | ２５ｍＡ
各Ｉ／Ｏピン吹き出し電流 | ２５ｍＡ
ＲＯＭ容量 | ８Ｋワード

註）ＥＥＰＲＯＭのため、電気的にロム・ライター上で消去＆書き込みができます。

データ用ＥＥＰＲＯＭ内蔵のため、保持リレーの内容の電源断後の保持が可能になります。

註）正確な値いはマイクロチップ社のマニュアルを優先としますのでそちらを参照して下さい。

特長

  1. ＶＳＳ電流が各ピン合計電流より小さいため、出力増幅用のトランジスタ・アレーを使用した方が無難です。

  2. ＦＬＡＳＨメモリーのため、上書きでプログラムの変更が可能で、紫外線によるイレーザーで消去する必要がありません。

  3. データ用ＥＥＰＲＯＭを内蔵のため、保持リレーの内容保存には外付けのＥＥＰＲＯＭは必要ありません。

  4. ＰＩＣ１６Ｆ８７７に基本的に必要な外付け部品は、２０ＭＨＺの水晶発信子と、２つの２０ピコ・コンデンサーのみです。２～２０ＭＨｚの設定が可能ですが、２０MHｚ以外では。シリアル通信は動作しません。Ｄ／Ａコンバータの出力周波数も変わってきます。少し精度は落ちますが、セラロックはＭａｘ１６Ｍｈｚまでが使用できます。

  5. ＰＩＣ１６Ｆ８８７は水晶を外付けする場合８ＭＨｚを使用します（内蔵発振周波数は８ＭＨｚです）。以下同じです。

実行速度

実行速度は相当に早いはずですが、正確には測定していません。２０ＭＨＺの発信の場合、ＬＤ命令で、０．８マイクロ、ＯＲ、ＡＮＤ命令で０．４マイクロ、それぞれ正確に実行時間がかかります。命令により実行速度に大きな差があります。

チャッタリング防止

「連枝」上の《ＣＰＵ設定》でチャッタリング防止を選択すると、入力取込みに一定間隔（１０ｍＳ以上）を置くようになり、チャッタリングをある程度防止できます。

入力ピン

各ピンを入力として使用するとき、内部に弱いプルアップをもっているポートＢ（１００　～１１５）以外は、４．７Ｋ～２０Ｋオームの抵抗で、プルアップする必要が有ります。

ＲＡ４はオープン・ドレインの為、入力に使用するには、プルアップ抵抗が必要です。

出力ピン

各ピンを出力として使用するとき、１ピン当り２５ｍＡ（吹込み、吐出し共）を出力できますが、ＣＰＵトータルでは、３００ｍＡが最大出力になるため、６２００４等のトランジスタ・アレーにより、リレー等を駆動することをおすすめします。

ＲＡ４はオープン・ドレインの為、引き込み出力のみです。

対応版

ワンチップ・マイコンあるため、次に述べるようにハードから来る制約を受けることになります。

  1. ＣＰＵのＲＡＭ容量が比較的小さいため使用可能なリレーやタイマ、カウンタの数が制約されます。

  2. ＣＰＵの持つＩ／Ｏ（入出力）のピン数により、入出力のリレー数に制約があります。

  3. 拡張Ｉ／ＯはＰＩＣ・１６Ｆ８７７を２個使用出来ます。拡張用ＰＩＣを接続すると、本体のＰＩＣと、拡張用PICとの通信のために、使用できるピン番号が違ってきます。

入出力番号

  使用可能リレー番号

          Ｘ、Ｙリレ－番号

  拡張を使用しない場合

        入出力リレー　 ビット番号　　　　対応ピックＰＩＮ名

          ？００　～　？０５　（　ＲＡ０　～　ＲＡ５　）

          ？１０　～　？１７　（　ＲＢ０　～　ＲＢ７　）

          ？２０　～　？２７　（　ＲＣ０　～　ＲＣ５　）

          ？３０　～　？３７　（　ＲＤ０　～　ＲＤ７　）

          ？４０　～　？４２　（　ＲＥ０　～　ＲＥ２　）

                        合計　　　　３３ ピン

                        註）？にはＸか、Ｙが入ります。

回路上のアドバイス

  ＶＤＤ、ＶＳＳピンの直近のパスコン（１０４）は必須です。

  ＰＩＣ１６Ｆ８７７の場合、両側にＶＤＤ、ＶＳＳピンがありますが、両側にパスコン（１０４）を付けるのがベターです。

拡張

エクスパンダー素子による拡張（別売りソフト）

  Ｉ２Ｃ通信によるため、ＲＣ３（ＳCＬ）、ＲＣ４（ＳＤＡ）の２ピンのみを拡張用に使用します。

  マイクロチップ社のＥＸＰＡＮＤＥＲ用素子ＭＣＰ２３００８（８ビット拡張）の８ピンを拡張側の入出力として使用できます。

  あるいは、ＭＣＰ２３０１７（１６ビット拡張）の１６ピンを拡張側の入出力として使用できます。

  ８ビットと１６ビットの拡張用素子を同時に使用することはできません。

  どのピンを入力に使用するか、出力に使用するかピン毎に任意で、メインＣＰＵ側ソフトで決定します。

  入出力リレー　 ビット番号　　　　対応ピックＰＩＮ名

      ？００　～　？０５　　　　　　　（　１－ＲＡ０　～　ＲＡ５（ＲＡ７）　）

      ？１０　～　？１７　　　　　　　（　１－ＲＢ０　～　ＲＢ７　）

      ？２０、２１、２２　～　？２５、２６、２７　（　１－ＲＣ０、１、２　～　ＲＣ５、６、７　）

      ？３０　～　？３７　　　　　　　（　１－ＲＤ０　～　ＲＤ７　）

      ？４０　～　？４２　　　　　　　（　１－ＲＥ０　～　ＲＥ２　）

      ？２３、２４（ＲＣ３、ＲＣ４）は拡張用接続に使用でＩ／Ｏには不可

      （ＭＣＰ２３００８による拡張側のピン番号）

      ？０８　～　？０Ｆ　　　　　　　（　２・１－ＧＰ０　～　ＧＰ７　）　：ＭＣＰ２３００８×１

      ？１８　～　？１Ｆ　　　　　　　（　２・２－ＧＰ０　～　ＧＰ７　）　：ＭＣＰ２３００８×１

      ？２８　～　？２Ｆ　　　　　　　（　２・３－ＧＰ０　～　ＧＰ７　）　：ＭＣＰ２３００８×１

      ？３８　～　？３Ｆ　　　　　　　（　２・４－ＧＰ０　～　ＧＰ７　）　：ＭＣＰ２３００８×１

      ？４８　～　？４Ｆ　　　　　　　（　２・５－ＧＰ０　～　ＧＰ７　）　：ＭＣＰ２３００８×１

        合計　　ＭＣＰ２３００８を５つ使用した場合、メインＣＰＵと合わせて７１ ピン

                  ＭＣＰ２３００８の使用数は任意です。

      （ＭＣＰ２３０１７による拡張側のピン番号）

      ？５０　～　？５７　　　　　　　（　３・１－ＧＰＡ０　～　ＧＰＡ７　）　：ＭＣＰ２３０１７×１

      ？５８　～　？５Ｆ　　　　　　　（　３・１－ＧＰＢ０　～　ＧＰＢ７　）

      ？６０　～　？６７　　　　　　　（　３・２－ＧＰＡ０　～　ＧＰＡ７　）　：ＭＣＰ２３０１７×１

      ？６８　～　？６Ｆ　　　　　　　（　３・２－ＧＰＢ０　～　ＧＰＢ７　）

      ？７０　～　？７７　　　　　　　（　３・３－ＧＰＡ０　～　ＧＰＡ７　）　：ＭＣＰ２３０１７×１

      ？７８　～　？７Ｆ　　　　　　　（　３・３－ＧＰＢ０　～　ＧＰＢ７　）

        合計　　ＭＣＰ２３０１７を３つ使用した場合、４８ピンのＩ／Ｏピンがが加わります

                  ＭＣＰ２３０１７の使用数は任意です。メインＣＰＵと合わせて合計７９ピンになります。

註１）？にはＸか、Ｙが入ります。

註２）１－はメイン、２・?、３・？－は拡張側のＩ／Ｏ番号

註３）ＰＩＣ１６Ｆ８８７（６）はＲＡ７まで使用できます。

  エクスパンダ使用のＭＣＰ２３００８ＭＣＰ２３０１７拡張回路例

      アドレス設定は正論理です。

  拡張用素子のアドレス設定用ＤＩＰ－ＳＷを除いて、他のＤＩＰ-ＳＷやＬＥＤはＩ／Ｏのテストのためですので無視して下さい。


概要1

    ＰＩＣ１８Ｆ２５２（２５８）　　　ＰＩＣ１８Ｆ２５２5　　　ＰＩＣ１８Ｆ２５２０　　　ＰＩＣ１８Ｆ２５５０

概要

これらのＣＰＵには４０ピン用のＰＩＣ１８Ｆ４５２の変換ライブラリーまたは、ＰＩＣ１８Ｆ４５２５の変換ライブラリーをそのまま使用します。

註）ＰＩＣ１８Ｆ２５２５、ＰＩＣ１８Ｆ２５２０とＰＩＣ１８Ｆ２５２と殆ど仕様が一致しますが、以下の点が違います。

    １）、ＰＩＣ１８Ｆ２５２５とＰＩＣ１８Ｆ２５２０は

          発振子（３２ＭＨｚ）の内蔵可、及びＭＣＬＲ（リセット）機能の内蔵可でその分Ｉ／Ｏに使用できます。

    ２）、ＰＩＣ１８Ｆ２５２５とＰＩＣ１８Ｆ２５２０は

          Ａ／Ｄコンバートに使用できるピンが６ピン増加し、全部で１４チャンネル可能です。

    ３）、ＲＯＭ容量　　３２Ｋバイト（ＰＩＣ１８Ｆ２５２、２５２０）

                        ４８Ｋバイト（ＰＩＣ１８Ｆ２５２５）

註）ＰＩＣ１８Ｆ２５８はＰＩＣ１８Ｆ２５２の上位コンパチ品で、ＣＡＮ通信機能を有します

註）ＰＩＣ１８Ｆ２５２は１０ＭＨｚの水晶を外付けします。

    ２５２５（２５２０）は外付けの場合、８ＭＨｚを一般的に使用します。

    いずれの場合も内部で周波数が４倍されます。

ＰＩＣ１８Ｆ２５２（２５２０）（１８Ｆ２５８）の基本仕様

    Ｉ／Ｏ数　　計２２ピン（全ピンＩＮ／ＯＵＴ任意に設定可能）

  ＰＩＣ１８Ｆ２５２の基本回路、ピン数　　２８ピン

ＰＩＣ１８Ｆ２５２５の基本仕様

  ピン数　　２８ピン

      Ｉ／Ｏ数　　計２５ピン（ＩＮ／ＯＵＴ任意に設定可能　ＰＩＮ１は入力のみ）

      ＭＣＬＲ、と外付け発振子をつなぐＯＳＣ１，ＯＳＣ２ピンをＩ／Ｏピンに使用できます。

      下図はそのすべてをＩ／Ｏに使用した場合です。

註）ＲＡ４は例外的にオープンコレクターピンになっており、それによる吸い込み出力となり、入力に使用する場合はプルアップ抵抗が必要になります。

ＰＩＣのピン呼称説明

ＶＤＤ

５Ｖ電源

ＶＳＳ

０Ｖ（ＧＮＤ）電源

ＭＣＬＲ

リセットピン（０でリセットのため、常時プルアップ）

ＯＳＣ１
ＯＳＣ２

ＰＩＣ１８Ｆ２５２　水晶発振子（１０ＭＨｚ）接続（内部で×４されます）

ＰＩＣ１８Ｆ２５２５（２５２０）　８ＭＨｚ発振内蔵可（内部で×４されます）

２～８ＭＨｚでも動作します（特長参照）。

各ピンが入力になるか、出力になるかは回路上の設定番号をＸで始めるか、Ｙで始めるかで任意に選択できます。

最大定格
全ピン吐き出し電流合計 | ３００ｍＡ
全ピン吸い込み電流合計 | ２５０ｍＡ
各ポート合計 | ２００ｍＡ
各Ｉ／Ｏピン吸込み電流 | ２５ｍＡ
各Ｉ／Ｏピン吹き出し電流 | ２５ｍＡ
ＲＯＭ容量 | ＰＩＣ１８Ｆ２５２（２５２０） ３２Ｋバイト ＰＩＣ１８Ｆ２５２５ ４８Ｋバイト

註）ＥＥＰＲＯＭのため、電気的にロム・ライター上で消去＆書き込みができます。

データ用ＥＥＰＲＯＭ内蔵のため、保持リレーの内容の電源断後の保持が可能になります。

註）正確な値いはマイクロチップ社のマニュアルを優先としますのでそちらを参照して下さい。

特長

  １）ＦＬＡＳＨメモリーのため、上書きでプログラムの変更が可能で、紫外線によるイレーザーの必要がありません。

  ２）データ用ＥＥＰＲＯＭを内蔵のため、保持リレーの内容保存には外付けのＥＥＰＲＯＭは必要ありません。

  ３）ＰＩＣに基本的に必要な外付け部品は、１０ＭＨＺの水晶発信子と、２つの２０ピコ・コンデンサーのみです。

      一般的には少し精度は落ちますが、１０Ｍｈｚのセラロック１個で充分です。２～８ＭＨｚでも動作しますが、シリアル通信は動作しません。Ｄ／Ａコンバータの出力周波数も変わってきます。

実行速度

実行速度は相当に早いはずですが、正確には測定していません。１０ＭＨＺの発信の場合、ＬＤ命令で、０．４マイクロ、ＯＲ、ＡＮＤ命令で０．２マイクロ、それぞれ実行時間がかかります。命令により実行速度に大きな差があります。

チャッタリング防止

「連枝」上の《ＣＰＵ設定》でチャッタリング防止を選択すると、入力取込みに一定間隔（５０ｍＳ以上）を置くようになり、チャッタリングをある程度防止できます。

入力ピン

各ピンを入力として使用するとき、内部に弱いプルアップをもっているポートＢ（１０～１７）以外は、４．７Ｋ～２０Ｋオームの抵抗で、プルアップする必要が有ります。

ＲＡ４はオープン・ドレインの為、入力に使用するには、プルアップ抵抗が必要です。

出力ピン

各ピンを出力として使用するとき、１ピン当り２５ｍＡ（吹込み、吐出し共）を出力できますが、ＣＰＵトータルでは、３００ｍＡが最大出力になるため、６２００４等のトランジスタ・アレーにより、リレー等を駆動することをおすすめします。

ＲＡ４はオープン・ドレインの為、引き込み出力のみです。

対応版

ワンチップ・マイコンのＰＩＣ１８Ｆ４５２であるため、次に述べるようにハードから来る制約を受けることになります。

  1. ＣＰＵのＲＡＭ容量のため使用可能なリレーやタイマ、カウンタの数が制約されます。

  2. ＣＰＵの持つＩ／Ｏ（入出力）のピン数により、入出力の接点数に制約があります。

  3. 拡張Ｉ／ＯはＰＩＣ１８Ｆ４５２を２個使用出来ます。拡張用ＰＩＣを接続すると、本体のＰＩＣと、拡張用PICとの通信のために、使用できるピン番号が違ってきます。

  使用可能リレー番号

          Ｘ、Ｙリレ－番号

  拡張を使用しない場合

        入出力リレー　 ビット番号　　　　対応ピックＰＩＮ名

          ？００　～　？０５　（　ＲＡ０　～　ＲＡ５　）

          ？１０　～　？１７　（　ＲＢ０　～　ＲＢ７　）

          ？２０　～　？２７　（　ＲＣ０　～　ＲＣ５　）

          ？３０　～　？３７　（　ＲＤ０　～　ＲＤ７　）

          ？４０　～　？４２　（　ＲＥ０　～　ＲＥ２　）

                        合計　　　　３３ ピン

                        註）？にはＸか、Ｙが入ります。

回路上のアドバイス

  ＶＤＤ、ＶＳＳピンの直近のパスコン（１０４）は必須です。

  ＰＩＣ１８Ｆ４５２の場合、両側にＶＤＤ、ＶＳＳピンがありますが、両側にパスコン（１０４）を付けるのがベターです。

◎拡張

  同一ＰＩＣ素子を使用する場合（応用命令に含まれる）

  ＰＩＣ１８Ｆ４５２のところを参照してください。

エクスパンダー素子による拡張（別売りソフト）

  Ｉ２Ｃ通信によるため、ＲＣ３（ＳCＬ）、ＲＣ４（ＳＤＡ）の２ピンのみを拡張用に使用します。

  マイクロチップ社のＥＸＰＡＮＤＥＲ用素子ＭＣＰ２３００８（８ﾋﾞｯﾄ）とＭＣＰ２３０１７（１６ﾋﾞｯﾄ）の各ピンを

  拡張側の入出力として使用できます。全部で１１９ピンをＩ／Ｏピンとして使用可能です。

  ８ビットと１６ビットの拡張用素子を同時に使用することができます。

  どのピンを入力に使用するか、出力に使用するかピン毎に任意で、メインＣＰＵ側ソフトで決定します。

  入出力リレー　 ビット番号　　　　対応ピックＰＩＮ名

      ？００　～　？０５　　　　　　　（　１－ＲＡ０　～　ＲＡ５　）

      ？１０　～　？１７　　　　　　　（　１－ＲＢ０　～　ＲＢ７　）

      ？２０、２１、２２　～　？２５、２６、２７　（　１－ＲＣ０、１、２　～　ＲＣ５、６、７　）

      ？３０　～　？３６　　　　　　　（　１－ＲＤ０　～　ＲＤ７　）

      ？４０　～　？４２　　　　　　　（　１－ＲＥ０　～　ＲＥ２　）

      ？２３、２３（ＲＣ３、ＲＣ４）は拡張用接続に使用でＩ／Ｏには不可

      （ＭＣＰ２３００８による拡張側のピン番号）

      ？０８　～　？０Ｆ　　　　　　　（　２・１－ＧＰ０　～　ＧＰ７　）　：ＭＣＰ２３００８×１

      ？１８　～　？１Ｆ　　　　　　　（　２・２－ＧＰ０　～　ＧＰ７　）　：ＭＣＰ２３００８×１

      ？２８　～　？２Ｆ　　　　　　　（　２・３－ＧＰ０　～　ＧＰ７　）　：ＭＣＰ２３００８×１

      ？３８　～　？３Ｆ　　　　　　　（　２・４－ＧＰ０　～　ＧＰ７　）　：ＭＣＰ２３００８×１

      ？４８　～　？４Ｆ　　　　　　　（　２・５－ＧＰ０　～　ＧＰ７　）　：ＭＣＰ２３００８×１

        合計　　ＭＣＰ２３００８を５つ使用した場合、７１ ピン

                  ＭＣＰ２３００８の使用数は任意です。

      （ＭＣＰ２３０１７による拡張側のピン番号）

      ？５０　～　？５７　　　　　　　（　３・１－ＧＰＡ０　～　ＧＰＡ７　）　：ＭＣＰ２３０１７×１

      ？５８　～　？５Ｆ　　　　　　　（　３・１－ＧＰＢ０　～　ＧＰＢ７　）

      ？６０　～　？６７　　　　　　　（　３・２－ＧＰＡ０　～　ＧＰＡ７　）　：ＭＣＰ２３０１７×１

      ？６８　～　？６Ｆ　　　　　　　（　３・２－ＧＰＢ０　～　ＧＰＢ７　）

      ？７０　～　？７７　　　　　　　（　３・３－ＧＰＡ０　～　ＧＰＡ７　）　：ＭＣＰ２３０１７×１

      ？７８　～　？７Ｆ　　　　　　　（　３・３－ＧＰＢ０　～　ＧＰＢ７　）

        合計　　ＭＣＰ２３０１７を３つ使用した場合、さらに４８ピンのＩ／Ｏピンがが加わります

                  ＭＣＰ２３０１７の使用数は任意です。

註１）？にはＸか、Ｙが入ります。

註２）１－はメイン、２・?、３・？－は拡張側のＩ／Ｏ番号

  回路例としてはＰＩＣ１６Ｆ８７７の場合のものになっていますが、ピン的にはコンパチです。

  エクスパンダ使用のＭＣＰ２３００８ＭＣＰ２３０１７拡張回路例

    アドレス設定は正論理です。

    拡張用素子のアドレス設定用ＤＩＰ－ＳＷを除いて、他のＤＩＰ-ＳＷやＬＥＤはＩ／Ｏのテストのためですので無視して下さい。


１６Ｆ８７６、８８６

    ＰＩＣ・１６Ｆ８７６、８８６

概要

  ＰＩＣ１６Ｆ８７６（８８６）は４０ピンのＰＩＣ１６Ｆ８７７（８８６）の変換ライブラリーを使用して、基本命令によるシーケンス動作（Ｓ版）と、１６ビットの応用命令（Ｐ版）をＣＰＵに実行させることが出来ます。

（Ｉ／Ｏ数がすくない（ＲＤ、ＲＥポートがない）以外は、ＲＯＭ，ＲＡＭ数等ソフト的には全く等しいものです。）

ＲＯＭ容量　　８Ｋワード（１４ｂｉｔ／１ワード）

ＰＩＣ１６Ｆ８７６の基本仕様

    Ｉ／Ｏ数　　計２２ピン（全ピンＩＮ／ＯＵＴ任意に設定可能）

  ＰＩＣ１６Ｆ８７６の基本回路、ピン数　　２８ピン

註）ＲＡ４は例外的にオープンコレクターピンになっており、それによる吸い込み出力となり、入力に使用する場合はプルアップ抵抗が必要になります。

ＰＩＣのピン呼称説明
ＶＤＤ | ５Ｖ電源
ＶＳＳ | ０Ｖ（ＧＮＤ）電源
ＭＣＬＲ | リセットピン（０でリセットのため、常時プルアップ）
ＯＳＣ１ | 水晶発振子（２０ＭＨｚ）接続
ＯＳＣ２
各ピンが入力になるか、出力になるかは回路上の設定番号をＸで始めるか、Ｙで始めるかで任意に選択できます。

最大定格
全ピン吐き出し電流合計 | ２５０ｍＡ
全ピン吐き出し電流合計 | ３００ｍＡ
各ポート合計 | ２００ｍＡ
各Ｉ／Ｏピン吸込み電流 | ２５ｍＡ
各Ｉ／Ｏピン吹き出し電流 | ２５ｍＡ
ＲＯＭ容量 | ８Ｋワード

註）ＥＥＰＲＯＭのため、電気的にロム・ライター上で消去＆書き込みができます。

データ用ＥＥＰＲＯＭ内蔵のため、保持リレーの内容の電源断後の保持が可能になります。

註）正確な値いはマイクロチップ社のマニュアルを優先としますのでそちらを参照して下さい。

特長

  1. ＶＳＳ電流が各ピン合計電流より小さいため、出力増幅用のトランジスタ・アレーを使用した方が無難です。

  2. ＦＬＡＳＨメモリーのため、上書きでプログラムの変更が可能で、紫外線によるイレーザーで消去する必要がありません。

  3. データ用ＥＥＰＲＯＭを内蔵のため、保持リレーの内容保存には外付けのＥＥＰＲＯＭは必要ありません。

  4. ＰＩＣ１６Ｆ８７６は基本的に必要な外付け部品は、２０ＭＨＺの水晶発信子と、1つの２０ピコ・コンデンサーのみです。一般的には少し精度は落ちますが、２０Ｍｈｚのセラロック１個で充分です。

  5. ＰＩＣ１６Ｆ８８６は水晶を外付けする場合８ＭＨｚを使用します。内蔵発振周波数は８ＭＨｚです。

実行速度

実行速度は相当に早いはずですが、正確には測定していません。２０ＭＨＺの発振の場合、ＬＤ命令で、０．８マイクロ、ＯＲ、ＡＮＤ命令で０．４マイクロ、それぞれ正確に実行時間がかかります。

  チャッタリング防止

「連枝」上の《ＣＰＵ設定》でチャッタリング防止を選択すると、入力取込みに一定間隔を置くようになり、チャッタリングをある程度防止できます。

チャッタリング防止

「連枝」上の《ＣＰＵ設定》でチャッタリング防止を選択すると、入力取込みに一定間隔（１０ｍＳ以上）を置くようになり、チャッタリングをある程度防止できます。

入力ピン

各ピンを入力として使用するとき、内部に弱いプルアップをもっているポートＢ（１０～１７）以外は、４．７Ｋ～２０Ｋオームの抵抗で、プルアップする必要が有ります。

ＲＡ４はオープン・ドレインの為、入力に使用するには、プルアップ抵抗が必要です。

出力ピン

各ピンを出力として使用するとき、１ピン当り２５ｍＡ（吹込み、吐出し共）を出力できますが、ＣＰＵトータルでは、３００ｍＡが最大出力になるため、６２００４等のトランジスタ・アレーにより、リレー等を駆動することをおすすめします。

ＲＡ４はオープン・ドレインの為、引き込み出力のみです。

対応版

ワンチップ・マイコンのＰＩＣ・１６Ｆ８７６（８８６）であるため、次に述べるようにハードから来る制約を受けることになります。

  1. ＣＰＵのＲＡＭ容量が比較的小さいため使用可能なリレーやタイマ、カウンタの数が制約されます。

  2. ＣＰＵの持つＩ／Ｏ（入出力）のピン数により、入出力のリレー数に制約があります。

  3. 拡張Ｉ／ＯはＰＩＣ・１６Ｆ８７６を２個使用出来ます。拡張用ＰＩＣを接続すると、本体のＰＩＣと、拡張用PICとの通信のために、使用できるピン番号が違ってきます。

  使用可能リレー番号

            Ｘ、Ｙリレ－番号

入出力リレー　 ビット番号　　　　対応ピックＰＩＮ名

            ？００　～　？０５　（　ＲＡ０　～　ＲＡ５　）

            ？１０　～　？１７　（　ＲＢ０　～　ＲＢ７　）

            ？２０　～　？２７　（　ＲＣ０　～　ＲＣ５　）

              合計　　　　２２ ピン

              註）？にはＸか、Ｙが入ります。

ダイレクト入出力

  入出力番号を、ｘ、ｙ　の小文字にしますと、ダイレクト入出力となり、命令実行時点で、入出力が行われます。

  入力番号を、ｘ とできる命令は　ＬＤ、ＬＤＩ、ＡＮＤ、ＡＮＩ、ＯＲ、ＯＲＩ命令のみです。

  出力番号を、y とできる命令は　ＯＵＴ、ＳＥＴ、ＲＳＴ、ＭＯＶ（第2オペランド）命令のみです。

エクスパンダー素子（ＭＣＰ２３００８）による拡張（別売りソフト）

  Ｉ２Ｃ通信によるため、ＲＣ３（ＳＤＬ）、ＲＣ４（ＳＤＡ）の２ピンのみを拡張用に使用します。

  マイクロチップ社のＥＸＰＡＮＤＥＲ用素子ＭＣＰ２３００８の１０番ピン～１７番ピンを拡張側の入出力として使用できます。

主ＣＰＵ（ＰＩＣ）側では、どのピンを入力に使用するか、出力に使用するかピン毎に任意です。

  入出力リレー　 ビット番号　　　　対応ピックＰＩＮ名

      ？００　～　？０４　　　　　　　（　１－ＲＡ０　～　ＲＡ４　）

      ？１０　～　？１７　　　　　　　（　１－ＲＢ０　～　ＲＢ７　）

      ？２０、２１、２２　～　？２５、２６、２７　（　１－ＲＣ０、１、２　～　ＲＣ５、６、７　）

      ？３０　～　？３６　　　　　　　（　１－ＲＤ０　～　ＲＤ６　）

      （拡張側のピン番号）

      ？０８　～　？０Ｆ　　　　　　　（　２・１－ＧＰ０　～　ＧＰ７　）　：ＭＣＰ２３００８×１

      ？１８　～　？１Ｆ　　　　　　　（　２・２－ＧＰ０　～　ＧＰ７　）　：ＭＣＰ２３００８×１

      ？２８　～　？２Ｆ　　　　　　　（　２・３－ＧＰ０　～　ＧＰ７　）　：ＭＣＰ２３００８×１

      ？３８　～　？３Ｆ　　　　　　　（　２・４－ＧＰ０　～　ＧＰ７　）　：ＭＣＰ２３００８×１

      ？４８　～　？４Ｆ　　　　　　　（　２・５－ＧＰ０　～　ＧＰ７　）　：ＭＣＰ２３００８×１

        合計　　ＭＣＰ２３００８を５つ使用した場合、８０ ピン

                  ＭＣＰ２３００８の使用数は任意です。

註１）？にはＸか、Ｙが入ります。

註２）１－はメイン、２・？－は拡張側のＩ／Ｏ番号

  回路例としてはＰＩＣ１６Ｆ８７７の場合のものになっていますが、使用ピンはコンパチです。

    エクスパンダ使用の拡張回路例

デバイスの範囲

  Ｍリレ－（補助リレー）

    Ｍ０　～Ｍ４３１

    合計　４３２

  1. 補助リレーとしての出力は一個当り、箇所のみに限定されます。

  2. ラッチリレ－等、種リレ－が使用されるとその分、の数が減少します。

  3. ラダー上では同一接点を何回でも使用できます。

  保持リレー

    Ｌ０　～Ｌ４７

    合計　４８

  これを使用すると、Ｍ（補助）リレーの使用可能番号が減少します。

変化があると、保持リレーは１６Ｆ８７７内部のＥＥＰＲＯＭデ－タメモリ－に書き込まれ、電源立ち上がり時に読み込まれます。

書き込みに２０ｍＳ以上かかることがありますので、回路の体内時計がくるいますので、頻ぱんに変化する入出力は避けて下さい。（保持リレーのメモリは電源立ち上げ時に読込まれます。）

  ステップリレー

      Ｊ００００　～Ｊ０７９９

① ３，４桁目がチャンネルを表わし、１，２桁目がステップ番号を表わします。

② 同一のチャンネル内で一つのステップリレーのみがオンになっていす。

つまりあるステップリレーが最後にオンになれば、他の同一チャンネル内のリレーは自動的にオフになります。

③ チャンネルが違うステップリレーは同時にオンが可能です。

このことはチャンネルを替えれば、各々のチャンネルで個別のステップ動作による並列動作が可能になることを意味しています。

註）ステップリレーは電源断後に前値は失われ、キープされません

  タイマ、ウンター

  両方とも０番から始まり、計で８０個使用できます。タイマとカウンタは別のメモリーを使用するためタイマとカウンタ番号は重複してもかまいません。タイマとカウンタ番号はそれぞれ詰めて使用するのが効率的です。

 タイマ－番号２００、２０１は１０ｍＳ単位の高速タイマ（最大値２．５５ｍＳ、直値指定のみ）です（他のタイマ－の個数とは無関係です）。

  注意

  1. タイマは、単位が１００ｍＳで、２５．５秒（Ｋ２５５）が最大です。カウンタは、２５５（Ｋ２５５）が最大です。

  2. 長時間タイマはタイマとカウンタで構成して下さい。

  3. ステッピングモ－タ駆動ソフト（別売り）を使用すると、タイマ－、カウンタ－の合計数が７４個になります。

  4. タイマ、カウンタの入力は直値か、Ｄメモリー値によります。

  データ・メモリー

    Ｄ０　～Ｄ４０

  注意

  1. シリアル通信を使用するか、デバッグ・モ－ドで使用すると、Ｄ３０までとなります。

  2. ＨＥＸに変換する場合デバイスの範囲以外やＸ、ＹまたはＴ、Ｃの重なり、使用制限オーバーなどがありますとエラーとなり変換されませんので注意してください。

シーケンス基本命令

名称 | 命令記号
接点命令 | ＬＤ、ＬＤＩ、ＡＮＤ、ＡＮＩ、ＯＲ、ＯＲＩ
結合命令 | ＡＮＢ、ＯＲＢ
演算結果 | ＭＰＳ、ＭＲＤ、ＭＰＰ
出力命令 | ＯＵＴ（Ｍ、Ｙ）、Ｔ、Ｃ
デバイスのセット、リセット | ＳＥＴ（Ｍ、Ｙ）、ＲＳＴ（Ｍ、Ｙ、Ｃ、Ｔ、Ｄ）
立ち上がり微分、立ち下がり微分 | ＰＬＳ、ＰＬＦ
シフト命令 | ＳＦＴ
終了命令 | ＥＮＤ
継続命令 | －－＞＞、＞＞－－
註）継続命令は－＞＞は、次ぎの行の＞＞－－のみに継続動作します。

応用命令

  ＰＩＣの応用命令は１６ビットの範囲内で実行されます。

  ダブルワード命令はサポートしていません。

  Ｋ４Ｍ１６　等の桁指定はＫの値いにかかわらず必ずＫ４即ち１６ビットと見なされます（Ｍ以下の数値は８の倍数としてください）。

マスタコントロール命令

ＭＣ、ＭＣＲ

算術演算命令

名称 | 命令記号
BCD4桁加算（１） | ＋＝、＋＝Ｐ
BCD4桁加算（２） | ＋、＋Ｐ
BCD4桁減算（１） | －＝、－＝Ｐ
BCD4桁減算（２） | －、－Ｐ
BCD4桁乗算 | ＊、＊Ｐ
BCD4桁除算 | ／、／Ｐ
BIN16ビット加算（１） | B＋＝、B＋＝Ｐ
BIN16ビット加算（２） | B＋、B＋Ｐ
BIN16ビット減算（１） | B－＝、B－＝Ｐ
BIN16ビット減算（２） | B－、B－Ｐ
BIN16ビット乗算 | B＊、B＊Ｐ
BIN16ビット除算 | B／、B／Ｐ
16ビットBCDデータインクリメント | ＩＮＣ、ＩＮＣＰ
16ビットBCDデータデクリメント | ＤＥＣ、ＤＥＣＰ

BCD<－>BIN変換命令

BINデータ－>BCD4桁変換 | ＢＣＤ、ＢＣＤＰ
BCD4桁－>BINデータ変換 | ＢＩＮ、ＢＩＮＰ

データ転送命令

16ビットデータ転送 | ＭＯＶ、ＭＯＶＰ
16ビットデータ否定転送 | ＣＭＬ、ＣＭＬＰ
16ビットデータ交換 | ＸＣＨ、ＸＣＨＰ
16ビット２の補数 | ＮＥＧ、ＮＥＧＰ

論理演算命令

16ビットデータ論理積（１） | ＷＡＮＤ＝、ＷＡＮＤ＝Ｐ
16ビットデータ論理積（２） | ＷＡＮＤ、ＷＡＮＤＰ
16ビットデータ論理和（１） | ＷＯＲ＝、ＷＯＲ＝Ｐ
16ビットデータ論理和（２） | ＷＯＲ、ＷＯＲＰ
16ビットデータ排他的論理和（１） | ＷＸＯＲ＝、ＷＸＯＲ＝Ｐ
16ビットデータ排他的論理和（２） | ＷＸＯＲ、ＷＸＯＲＰ
16ビットデータ否定排他的論理和（１） | ＷＸＮＲ＝、ＷＸＮＲ＝Ｐ
16ビットデータ否定排他的論理和（２） | ＷＸＮＲ、ＷＸＮＲＰ
デコード | ＤＥＣＯ、ＤＥＣＯＰ（第３オペランドは必ずＫ８とみなされます）

比較演算命令

16ビットデータ比較

＝、＜＞、＞、＜＝、＜、＞＝

ローテーション命令

16ビットデータの右ローテーション（１） | ＲＯＲ、ＲＯＲＰ
16ビットデータの右ローテーション（２） | ＲＣＲ、ＲＣＲＰ
16ビットデータの左ローテーション（１） | ＲＯＬ、ＲＯＬＰ
16ビットデータの左ローテーション（２） | ＲＣＬ、ＲＣＬＰ

シフト命令

16ビットデータnビット右シフト | ＳＦＲ、ＳＦＲＰ
16ビットデータnビット左シフト | ＳＦＬ、ＳＦＬＰ

ジャンプ命令

サブルーチン・コール命令 | ＳＣＡＬＬ（コールの対象サブルーチンは必ずＦＥＮＤのあとＥＮＤの前 に置き、頭に被コールポイントＰを置いて、コールの対象番号をつける）
リターン命令 | ＲＥＴＲＮ（サブルーチンの最後に置く）

ソフトウエア・タイマ

１μＳタイマ | ＭＣ１
１００μＳタイマ | ＭＣ１００

終了命令

全命令終了命令 | ＥＮＤ
１クール終了点命令 | ＦＥＮＤ（この命令以降にサブルーチンとその被コールポイントＰを置く）

註）各応用命令の動作については関数ヘルプを参照してください。

特殊補助リレー

機能 | デバイス
0.1 秒クロックパルス | Ｍ９０３０
0.2 秒クロックパルス | Ｍ９０３１
1 秒クロックパルス | Ｍ９０３２
常時ＯＮ リレー | Ｍ９０３６
常時ＯＦＦリレー | Ｍ９０３７
立上り後1スキャンのみONリレー | Ｍ９０３８
エラーフラグ | Ｍ９０１０
キャリーフラグ | Ｍ９０１２
０フラッグ | Ｍ９０１３

微分ポイント数

    ＰＬＳ、ＰＬＦ、Ｔ、Ｃ命令の数の合計と、微分命令の数の合計は３２０個をえることがきません。（上記命令は微分動作を含み、微分ポイントを使用します。）

ステップ数とメモリ

    ＣＰＵ中のＲＯＭ容量により、ラダー（シーケンス回路）のステップ数が制約されます。

    １６Ｆ８７６の容量は８Ｋワードですが、システムに２Ｋ～３Ｋ取られます。

    各命令が使用する合計のバイト数が８Ｋを越えると、アセンブル（機械語変換）時に、エラーになります。

    目安で、１５００ステップぐらいのラダーが構成できるはずです。

ソフトウエア割込み（Ｐ版以上のみ）

割込みの対象サブルーチンは、割込み用のツールバー [image] により作ります。

＜ＣＰＵ設定＞で[割込み]にチェックを入れると上のツールバーが活色します。

クリックすると、割込み用ダイアログボックスが現われ、最下段のＳＩＮＴにチェックを入れ、割込み番号を設定して、右端の設計釦を押しますと、ラダーの下段に特殊リレーのＭ９０７０（＋割込み番号）で始まる割り込みルーチンの枠組みが置かれます。

（必ずその前にＳＥＮＤ命令が置かれ、割込みルーチンはＳＥＮＤのあとＥＮＤの前になります）。

メイン側では、割込みルーチンを?ＩＮＴ　Ｋ？?とＫのうしろに割込み番号をつけて呼び出します。

割込みルーチン内部では、Ｘ、Ｙ接点はすべてダイレクト入出力になり、ここに使用されたＸ、Ｙ接点の結果はメインのループの論理に影響を与えません。

微分命令（タイマ、カウンタを含む）については、ＲＥＴＲＮ時に全状態がクリアされ、毎回、前の状態をオフとして始まります（カウンタであれば必ずカウントアップして＋１されます）

一つ注意しなくていけないことは、タイマ用の汎用割込みを始めとして、割込みは、２クール目から動作するということです。通常全体の割込み許可は１クール目の最後で置かれるため、１クール目では割込みに入ることはありません。

従って、最初からＩＮＴ命令を使用し、割り込みルーチン内でタイミングをとるため等にタイマ命令を使用したとしても、そのタイマは全く動作しません。

そのため、今回２クール目、ワンショット・オンのＭ９０３９を新しく設けました（周辺機器のモード設定などに使用します）。

（ｘ、ｙ　の小文字によって、入出力をダイレクト入出力を表わす方法は廃止されました）。

特殊命令

ＳＥＧ命令（応用命令に含まれる）

    ＳＥＧ命令は2桁の７セグメント表示をします。

  ＲＣ０－＞ＲＣ１に、各５ｍＳのスキャン出力を出し、

  ＲＢ０～ＲＢ６に1桁目－＞2桁目の７セグメント出力を出します。

        ＳＥＧ　Ｋ１２　Ｋ２Ｙ１０

    ＤＳＥＧ命令は４桁の７セグメント表示をします。

  ＲＣ０－＞ＲＣ１－＞ＲＣ２－＞ＲＣ３に、各５ｍＳのスキャン出力を出し、

  ＲＢ０～ＲＢ６に1桁目－＞2桁目－＞３桁目－＞４桁目の７セグメント出力を出します。

        ＤＳＥＧ　Ｋ１２３４　Ｋ２Ｙ１０

  ２命令ともに、第一オペランドは、Ｄメモリー等の直値以外も指定できます。

  第２オペランドは無視されますが、結果としてどちらもＲＢポートを使用するので、Ｋ２Ｙ１０と指定しておいてください。

  ＲＢ７や、スキャンに使用されないＲＣポートのピンは他の用途に使用できます。

  7セグメント表示データは下記の表になります。

    ＤＳＥＧＰ命令はゼロサプレスをした結果の４桁の７セグメント表示をします。

  例えば、１２３４は１２３４と表示し、０２３４は２３４と右詰で表示します。

  同じく、００３４Ｈは３４と、０００４は４と右詰で表示します。

    ＳＥＧＰ命令はゼロサプレスをした結果の２桁の７セグメント表示をします。

  例えば、１２は１２と表示し、０２は　２と右詰で表示します。

Ａ／Ｄコンバータ（応用命令に含まれる）

  １６Ｆ８７６は、ＲＡポートのピンをＡ／Ｄコンバート・モードで使用する事ができます。

「連枝」は、それを利用して、合計５チャンネルのＡＤＣＯ（Ａ／Ｄコンバータ）命令を使用できます。

０００～００５（００４を除く）の内の、１ビットを選び、Ａ／Ｄの結果値の、格納先を書き込みます。

下の命令ではＲＡ１への入力が１０ビットでＡ／Ｄ変換されてＤ０に入ります。

例　　　ＡＤＣＯ　Ｘ１　Ｄ０

注意

ＡＤコンバートに１ピンでも使用すればＲＡ０，ＲＡ１，ＲＡ３がＡ／Ｄピン・モードになり、Ｉ／Ｏには使用できなくなります。

  ＲＡ２，ＲＡ５の一方又は両方をＡ／Ｄコンバートとして使用すれば、ＲＡ０，１，２，３，５すべてがＡ／Ｄピン･モードになりますので注意が必要です。

  ＰＩＣ１６Ｆ８７６ではステッピングモータ・コントローラ（別売り）をサポートしています。

１６Ｆ８８６は、ＲＡポートほかにＲＢポートのＲＢ０，１，２，３，４，５が使用できます。

１６Ｆ８７６と違って全ピンがＡ／ＤにもＩ／Ｏにも使用できます。つまりＡ／Ｄに使用しなければＩ／Ｏピンになります。

Ｄ／Ａコンバータ（ＰＷＭ変換）（応用命令に含まれる）

  １６Ｆ８７６（８８６）は、ＲＣポートのピンをＰＷＭコンバート・モードで使用する事ができます。

「連枝」は、それを利用して、ＤＡＣＯ（Ｄ／Ａコンバータ）命令を使用できます。

Ｄ／Ａ変換のもとの８ビット(バイナリー）の値いの格納先を第１オペランドとし、結果の出力ピンとして、ＲＣ１、ＲＣ２（Ｙ２１、Ｙ２２）の内の１ビットを選び第２オペランドとして書き込みます。

下の命令ではＤ０（下位８ビット）の値がＡ／Ｄ変換（ＰＷＭ変換）されて、ＲＣ１に出力されます。

例　　　ＤＡＣＯ　Ｄ０　Ｙ２１

註）ＰＷＭの出力は１９．５３Khzの基本パルス内でのＤｕｔｙサイクルになります。Ｄｕｔｙサイクルは8ビット分解能（０～ＦＦ）の指定で決定されます。

註）Ａ／Ｄ、Ｄ／Ａコンバート命令に関しては、変換内容デバイスとしてＤメモリー以外（例、Ｋ４Ｍ０、Ｔ１０ｅｔｃ．）も使用可能です。

    直値の入力も可能ですが、その場合バイナリー値のみのため、頭にＨをつけてください。

 シリアル通信命令（応用命令に含まれる）

  ＴＸはＲＣ７、ＲＸはＲＣ６を使用します。

  シリアル通信に関する設定はメニュー中のＣＰＵ設定で行います。

  送信バイト数、受信バイト数、ボーレートが設定できます。

  送信バイト数は設定数が必ず送信されます。

  受信バイト数に関しては、設定数を最大値として指定レングス分を受信します。

  送受信バイトが各々数バイト程度でＭＡＸです。

  送受信がお互いに相手の領域を食う関係にあり、

  ３２　＞＝（受信バイト＋４）＊２　＋（送信バイト＋４）　の範囲を限度とします。

  ボーレートは９６００ｂｐｓと１９２００ｂｐｓの2種類が選択できます。

シリアル通信のフォーマットは以下の通りです。

０２－８？－＊＊－＊＊－　　　　－＊＊－＊＊－０３

  ｜　　｜　｜＿＿＿データ　＿＿＿＿｜　　｜　　　｜＿＿　エンド

  ｜　　｜　　　　　　　　　　　　　　　　　　　　　｜＿＿＿＿＿　データのＸＯＲ

  ｜　　｜

  ｜　　｜＿＿＿＿＿＿＿＿＿＿＿＿＿＿レングス（下位７ﾋﾞｯﾄ）　Ｄ７は常に＝１

   |                                 この次から０３の前の前までのバイト数（つまりデータ数）

  ｜＿＿＿＿＿＿＿＿＿＿＿＿＿＿＿＿　スタート

シリアル通信に関する命令は、ＳＥＲＩ、ＳＥＲＯ、ＳＲＧＯです。

８ビットを１単位として送ります。

ＳＥＲＩ命令

      通信入力があった場合、

      第１オペランドは受信データの何番目を示す（Ｋを頭につけたＢＣＤ値）。

      第2オペランドは第1オペランドの示すデータの格納先を示す。

    例　ＳＥＲＩ　　Ｋ２　　Ｄ０　（2番目のデータをＤ０に入れる）

ＳＥＲＯ命令

      第１オペランドは送信するデータの取り込み先を示す。

      第２オペランドは送信データの何番目に置くかを示す（Ｋを頭につけたＢＣＤ値）。

    例　ＳＥＲＯ　Ｋ２　　Ｋ４Ｍ０（Ｍ０からの8ビットを2番目のデータとして送る）

ＳＲＧＯ命令

    送信を開始します。

    微分命令（ＳＲＧＯＰ）があります。

  ステッピングモータ・コントローラ（別売り）

  連枝は１６Ｆ８７６（８８６）中に、２軸のステッピングモータ・コントローラを内蔵する事ができます。トランジスタ・アレーで１回増幅すれば、直接ステッピングモータ・ドライバを駆動することができます。

１． 動作は１軸あたり１８種類を指定する事ができます。

２． ＳＴＥＰ命令は１軸当たりの動作ピンを任意に選ぶことができ、スピードは３００p/s～５０００p/sまで、選択することができます。

３． 動作ステップ数は、最大８、３００、０００までです。

４． スピードの立上り、立下りは最大ステップ数に応じた台形波で変化します。

５．　動作ステップ数を０にすると、リミットによるオフまで無限走行になります。

０軸と１軸で合計２軸の動作が可能ですが、同時動作はできません。

０軸　　ＰＩＣのＲＣ０ピンから出力します。

         動作番号はＳ００～Ｓ１７までで、

         対応するＳ０接点、動作中はオン、それ以外はオフです。

１軸　　ＰＩＣのＲＣ１ピンから出力します。

         動作番号はＳ１００～Ｓ１１７までで、

         対応するＳ１接点、動作中はオン、それ以外はオフです。

註）動作番号は３桁目（１００の位）が０軸か１軸を決定するだけで、あとは動作の目安にすぎません。

    （出来るだけ小さい番号にしないと、その間の不使用番号分のＲＯＭメモリーを食うことになります）。

命令は　　ＳＴＥＰ　　動作番号　　最大スピード　　総動作パルス数　　　の順で書きます。

最大スピードは１００単位で直値のみの入力になります。、下２桁は無視されます。

総動作パルス数は直値の時はＢＣＤで入力しますが、メモリ値とする場合、Ｄメモリーのみが使用できます。（実際のＣＰＵ動作時、Ｄメモリーにはバイナリー値を入れるようにして下さい。

直値は変換時にバイナリー値に変えてＰＩＣに入れられますが、Ｄメモリーの場合はＰＩＣ内部でバイナリーにしている余裕がないからです。Ｄメモリーを使用する場合は、指定のＤとＤ＋１の３２ビットが総パルス数（バイナリー値）を表わします。

Ｄ８の場合　Ｄ８の１６ﾋﾞｯﾄとＤ９の下位８ﾋﾞｯﾄがその値いとなります。）

   例　　ＳＴＥＰ　　Ｓ１０２　Ｋ３００　Ｋ８００００

          ＳＴＥＰ　　Ｓ０４　　K５００　　Ｄ１０

 画面上の動作確認はできますが（タイマのように考えれば良い）、モニターはＳ０、Ｓ１の接点のみ表示され、ステップ数等は表示されません。

  パルス命令セット（別売り）

以下の４つの命令を含みます。

ＳＴＥＰ、ＥＮＣＯＤ、ＨＣＴＲ、ＰＵＬＳＥの４つの命令の内、２つ同時に使用することはできません。

  ①ＥＮＣＯＤ（エンコーダ）命令

    RA2　を　ロータリーエンコーダのＡ相に接続します。

    RA3　を　ロータリーエンコーダのＢ相に接続します。

    第一ｵﾍﾟﾗﾝﾄﾞに、Ｄﾒﾓﾘｰや桁指定（例Ｋ４Ｍ１６）等を設定値として指定できます。

    エンコード･カウンタ値がそこに入ります。

            例　ＥＮＣＯＤ　Ｄ１０

    エンコーダ用のカウンタ（最大ＦＦＦＦ）のリセットは、頭の接点をオフにすることにより行います。

    （ＲＳＴ　Ｄ１０　とすることは余り大きな意味をもちません）。

  ②ＨＣＴＲ（高速カウンタ）命令

    Ｃ１０００（カウンタ１０００）は

    ＲＡ４を入力として、第一ｵﾍﾟﾗﾝﾄﾞのＢＣＤ値をカウントします。

    ハード的な割込みでカウントするので、どんな高速でもカウントし、カウントアップ時はＣ１０００接点をオンにします。。

    第一ｵﾍﾟﾗﾝﾄﾞに、Ｄﾒﾓﾘｰや桁指定（例Ｋ４Ｍ１６）等を設定値として指定できます。

    Ｃ１０００への頭の入力をオンすると、ＲＣ０（ＲＤ０）ピンは=1になります。

    カウント・アップﾟすると、ＲＣ０（ＲＤ０）ピンは =0になります。またはＣ１０００への頭の入力をオフすると、ＲＣ０（ＲＤ０）ピンは=０になります。

    つまりHCTR命令オフはカウンタ・リセットﾀに相当します （RST C1000命令 は意味が有りません）。

    ＰＩＣ１６Ｆ８７６の時、出力ピンがＲＣ０、ＰＩＣ１６Ｆ８７７の時、出力ピンがＲＤ０になります。

    途中のカウント値を知ることはできません。

  ③ＰＵＬＳＥ （パルス）命令

   第1オペランドﾞ Ｓ???  の３桁目が

                         ０の場合、ＲＤ０(452,458) or ＲＣ０(252,258）　にパルスを出力し、

                           例　PULSE S025 K500 K3000

                           １の場合、ＲＤ１(452,458) or ＲＣ１(252,258)　にパルスを出力します。

                           例　PULSE S110 K8000 D20

     パルスを出力する。

                   １、２桁目　×１００uＳ = パルス幅

     パルス幅が、Ｐ／Ｓ（第2ｵﾍﾟﾗﾝﾄﾞ）による周期幅Ｔより大の場合、パルス幅は、Ｔ／２になる。

      第３オペランドはパルス数を設定します。

      Ｄﾒﾓﾘｰ中、の値いを設定する時は１６進数を入れます。

      第３オペランドにＫ０を設定すると無限（走行）パルスになります。

   ④ＴＴＭＲ（ティーチングタイマ）命令

    設計画面中でタイマ番号をT1000と書くと、T1000はティーチング･タイマになり、

    １０ｍＳ単位で、時間をカウントし、第２ｵﾍﾟﾗﾝﾄﾞで指定される場所にその値いを

    入れていきます。

    第２ｵﾍﾟﾗﾝﾄﾞはＤメモリーに限られます。

    第２ｵﾍﾟﾗﾝﾄﾞは本来のタイマの場合、設定値ですが、

    TTMRの場合、Ｄメモリーに限定され、この第２ｵﾍﾟﾗﾝﾄﾞのＤメモリー（&+1Ｄメモリー）に

    TIMER1の割込(10mS毎)回数のカウント値が入ります。

    T1000ﾆﾊ 他のﾀｲﾏと同じようなリセットするRST命令はありません。

    リセットはT1000の頭のオフからオンへの変化時のみによります。

    シミュレーションの動作画面中ﾆ表示される値いは、

    T1000の頭のオフ時のみに値いが変化した形ちで表示されます。


１６Ｆ８７７、８８７

    ＰＩＣ・１６Ｆ８７７、１６Ｆ８８７

概要

ＰＩＣ１６Ｆ８７７の変換ライブラリーを使用して、基本命令によるシーケンス動作（Ｓ版）と、１６ビットの応用命令（Ｐ版）をＣＰＵに実行させることが出来ます。

ＲＯＭ容量　　８Ｋワード（１４ｂｉｔ／１ワード）

ＰＩＣ１６Ｆ８７７の基本仕様

  ピン数　　４０ピン

      Ｉ／Ｏ数　　計３３ピン（全ピンＩＮ／ＯＵＴ任意に設定可能）

ＰＩＣ１６Ｆ８８７の基本仕様

  ピン数　　４０ピン

      Ｉ／Ｏ数　　計３６ピン（３５ピンはＩＮ／ＯＵＴ任意に設定可能　ＰＩＮ１は入力のみ）

      ＭＣＬＲ、と外付け発振子をつなぐＯＳＣ１，ＯＳＣ２ピンをＩ／Ｏピンに使用できます。

      下図はそのすべてをＩ／Ｏに使用した場合です。

註）ＲＡ４は例外的にオープンコレクターピンになっており、それによる吸い込み出力となり、入力に使用する場合はプルアップ抵抗が必要になります。

ＰＩＣのピン呼称説明
ＶＤＤ | ５Ｖ電源
ＶＳＳ | ０Ｖ（ＧＮＤ）電源
ＭＣＬＲ | リセットピン（０でリセットのため、常時プルアップ）
ＯＳＣ１ | 水晶発振子（２０ＭＨｚ）接続 ２～１８ＭＨｚでも動作します（特長参照）
ＯＳＣ２
各ピンが入力になるか、出力になるかは回路上の設定番号をＸで始めるか、Ｙで始めるかで任意に選択できます。

最大定格
全ピン吐き出し電流合計 | ２５０ｍＡ
全ピン吐き出し電流合計 | ３００ｍＡ
各ポート合計 | ２００ｍＡ
各Ｉ／Ｏピン吸込み電流 | ２５ｍＡ
各Ｉ／Ｏピン吹き出し電流 | ２５ｍＡ
ＲＯＭ容量 | ８Ｋワード

註）ＥＥＰＲＯＭのため、電気的にロム・ライター上で消去＆書き込みができます。

データ用ＥＥＰＲＯＭ内蔵のため、保持リレーの内容の電源断後の保持が可能になります。

註）正確な値いはマイクロチップ社のマニュアルを優先としますのでそちらを参照して下さい。

特長

  1. ＶＳＳ電流が各ピン合計電流より小さいため、出力増幅用のトランジスタ・アレーを使用した方が無難です。

  2. ＦＬＡＳＨメモリーのため、上書きでプログラムの変更が可能で、紫外線によるイレーザーで消去する必要がありません。

  3. データ用ＥＥＰＲＯＭを内蔵のため、保持リレーの内容保存には外付けのＥＥＰＲＯＭは必要ありません。

  4. ＰＩＣ１６Ｆ８７７に基本的に必要な外付け部品は、２０ＭＨＺの水晶発信子と、２つの２０ピコ・コンデンサーのみです。一般的には少し精度は落ちますが、２０Ｍｈｚのセラロック１個で充分です。Ｐ版のみ、２～１８ＭＨｚの設定が可能です。シリアル通信は動作しません。Ｄ／Ａコンバータの出力周波数も変わってきます（Ｓ版では、設定を変えることはできませんが、唯単にタイマの時間がその分長くなるという変化のみが出ます

  5. ＰＩＣ１６Ｆ８８７は水晶を外付けする場合８ＭＨｚを使用します（内蔵発振周波数は８ＭＨｚです）。以下同じです。

実行速度

実行速度は相当に早いはずですが、正確には測定していません。２０ＭＨＺの発信の場合、ＬＤ命令で、０．８マイクロ、ＯＲ、ＡＮＤ命令で０．４マイクロ、それぞれ正確に実行時間がかかります。命令により実行速度に大きな差があります。

チャッタリング防止

「連枝」上の《ＣＰＵ設定》でチャッタリング防止を選択すると、入力取込みに一定間隔（１０ｍＳ以上）を置くようになり、チャッタリングをある程度防止できます。

入力ピン

各ピンを入力として使用するとき、内部に弱いプルアップをもっているポートＢ（１０～１７）以外は、４．７Ｋ～２０Ｋオームの抵抗で、プルアップする必要が有ります。

ＲＡ４はオープン・ドレインの為、入力に使用するには、プルアップ抵抗が必要です。

出力ピン

各ピンを出力として使用するとき、１ピン当り２５ｍＡ（吹込み、吐出し共）を出力できますが、ＣＰＵトータルでは、３００ｍＡが最大出力になるため、６２００４等のトランジスタ・アレーにより、リレー等を駆動することをおすすめします。

ＲＡ４はオープン・ドレインの為、引き込み出力のみです。

対応版

ワンチップ・マイコンあるため、次に述べるようにハードから来る制約を受けることになります。

  1. ＣＰＵのＲＡＭ容量が比較的小さいため使用可能なリレーやタイマ、カウンタの数が制約されます。

  2. ＣＰＵの持つＩ／Ｏ（入出力）のピン数により、入出力のリレー数に制約があります。

  3. 拡張Ｉ／ＯはＰＩＣ・１６Ｆ８７７を２個使用出来ます。拡張用ＰＩＣを接続すると、本体のＰＩＣと、拡張用PICとの通信のために、使用できるピン番号が違ってきます。

入出力番号

  使用可能リレー番号

          Ｘ、Ｙリレ－番号

  拡張を使用しない場合

        入出力リレー　 ビット番号　　　　対応ピックＰＩＮ名

          ？００　～　？０５　（　ＲＡ０　～　ＲＡ５　）

          ？１０　～　？１７　（　ＲＢ０　～　ＲＢ７　）

          ？２０　～　？２７　（　ＲＣ０　～　ＲＣ５　）

          ？３０　～　？３７　（　ＲＤ０　～　ＲＤ７　）

          ？４０　～　？４２　（　ＲＥ０　～　ＲＥ２　）

                        合計　　　　３３ ピン

                        註）？にはＸか、Ｙが入ります。

回路上のアドバイス

  ＶＤＤ、ＶＳＳピンの直近のパスコン（１０４）は必須です。

  ＰＩＣ１６Ｆ８７７の場合、両側にＶＤＤ、ＶＳＳピンがありますが、両側にパスコン（１０４）を付けるのがベターです。

ダイレクト入出力

  入出力番号を、ｘ、ｙ　の小文字にしますと、ダイレクト入出力となり、命令実行時点で、入出力が行われます。

  入力番号を、ｘ とできる命令は　ＬＤ、ＬＤＩ、ＡＮＤ、ＡＮＩ、ＯＲ、ＯＲＩ命令のみです。

  出力番号を、y とできる命令は　ＯＵＴ、ＳＥＴ、ＲＳＴ、ＭＯＶ（第2オペランド）命令のみです。

拡張

エクスパンダー素子（ＭＣＰ２３００８）による拡張（別売りソフト）

  Ｉ２Ｃ通信によるため、ＲＣ３（ＳＤＬ）、ＲＣ４（ＳＤＡ）の２ピンのみを拡張用に使用します。

  マイクロチップ社のＥＸＰＡＮＤＥＲ用素子ＭＣＰ２３００８の１０番ピン～１７番ピンを拡張側の入出力として使用できます。

主ＣＰＵ（ＰＩＣ）側では、どのピンを入力に使用するか、出力に使用するかピン毎に任意です。

  入出力リレー　 ビット番号　　　　対応ピックＰＩＮ名

      ？００　～　？０５　　　　　　　（　１－ＲＡ０　～　ＲＡ５　）

      ？１０　～　？１７　　　　　　　（　１－ＲＢ０　～　ＲＢ７　）

      ？２０、２１、２２　～　？２５、２６、２７　（　１－ＲＣ０、１、２　～　ＲＣ５、６、７　）

      ？３０　～　？３７　　　　　　　（　１－ＲＤ０　～　ＲＤ７　）

      ？４０　～　？４２　　　　　　　（　１－ＲＥ０　～　ＲＥ２　）

      ？２３、２３（ＲＣ３、ＲＣ４）は拡張用接続に使用でＩ／Ｏには不可

      （拡張側のピン番号）

      ？０８　～　？０Ｆ　　　　　　　（　２・１－ＧＰ０　～　ＧＰ７　）　：ＭＣＰ２３００８×１

      ？１８　～　？１Ｆ　　　　　　　（　２・２－ＧＰ０　～　ＧＰ７　）　：ＭＣＰ２３００８×１

      ？２８　～　？２Ｆ　　　　　　　（　２・３－ＧＰ０　～　ＧＰ７　）　：ＭＣＰ２３００８×１

      ？３８　～　？３Ｆ　　　　　　　（　２・４－ＧＰ０　～　ＧＰ７　）　：ＭＣＰ２３００８×１

      ？４８　～　？４Ｆ　　　　　　　（　２・５－ＧＰ０　～　ＧＰ７　）　：ＭＣＰ２３００８×１

        合計　　ＭＣＰ２３００８を５つ使用した場合、７１ ピン

                  ＭＣＰ２３００８の使用数は１～５まで任意です。

註１）？にはＸか、Ｙが入ります。

註２）１－はメイン、２・？－は拡張側のＩ／Ｏ番号

註３）＜ＣＰＵ設定＞で［拡張］にチェックを入れ、？０Ｄ～？０ＦをＩ／０に使用すれば、ＭＣＰ２３００８の使用による拡張と見なされます。

      ？０Ｄ～？０Ｆを使用しないと、以前のサポートを中止している２つのＰＩＣ１６Ｆ８７７の接続による拡張と見なされます。

    エクスパンダ使用の拡張回路

デバイス範囲

  Ｘ入力接点　　　入出力番号のところを参照してください。

  Ｙリレー　　　　　入出力番号のところを参照してください。

  註）小文字の ｘ、ｙ  にしますとダイレクト入出力になります（Ｐ版のみ）

  Ｍリレ－（補助リレー）

    Ｍ０　～Ｍ４３１

    合計　４３２

  1. 補助リレーとしての出力は一個当り、箇所のみに限定されます。

  2. ラッチリレ－等、種リレ－が使用されるとその分、の数が減少します。

  3. ラダー上では同一接点を何回でも使用できます。

  保持リレー

    Ｌ０　～Ｌ４７

    合計　４８

   これを使用すると、Ｍ（補助）リレーの使用可能番号が減少します。

変化があると、保持リレーは１６Ｆ８７７内部のＥＥＰＲＯＭデ－タメモリ－に書き込まれ、電源立ち上がり時に読み込まれます。

書き込みに２０ｍＳ以上かかることがありますので、回路の体内時計がくるいますので、頻ぱんに変化する入出力は避けて下さい。（保持リレーのメモリは電源立ち上げ時に読込まれます。）

  ステップリレー

      Ｊ００００　～Ｊ０７９９

① ３，４桁目がチャンネルを表わし、１，２桁目がステップ番号を表わします。

② 同一のチャンネル内で一つのステップリレーのみがオンになっていす。

つまりあるステップリレーが最後にオンになれば、他の同一チャンネル内のリレーは自動的にオフになります。

③ チャンネルが違うステップリレーは同時にオンが可能です。

このことはチャンネルを替えれば、各々のチャンネルで個別のステップ動作による並列動作が可能になることを意味しています。

註）ステップリレーは電源断後に前値は失われ、キープされません

  タイマ、ウンター

  両方とも０番から始まり、計で８０個使用できます。タイマとカウンタは別のメモリーを使用するためタイマとカウンタ番号は重複してもかまいません。タイマとカウンタ番号はそれぞれ詰めて使用するのが効率的です。

 タイマ－番号２００、２０１は１０ｍＳ単位の高速タイマ（最大値２．５５ｍＳ、直値指定のみ）です（他のタイマ－の個数とは無関係です）。

  注意

  1. タイマは、単位が１００ｍＳで、２５．５秒（Ｋ２５５）が最大です。カウンタは、２５５（Ｋ２５５）が最大です。

  2. 長時間タイマはタイマとカウンタで構成して下さい。

  3. ステッピングモ－タ駆動ソフト（別売り）を使用すると、タイマ－、カウンタ－の合計数が７４個になります。

  4. タイマ、カウンタの入力は直値か、Ｄメモリー値によります。

  データ・メモリー

    Ｄ０　～Ｄ４０

◎間接アドレス

  ＰＩＣ１６Ｆ８７７では、間接アドレスによる間接アクセスは不可です。

注意

  1. シリアル通信を使用するか、デバッグ・モ－ドで使用すると、Ｄ３０までとなります。

  2. ＨＥＸに変換する場合デバイスの範囲以外やＸ、ＹまたはＴ、Ｃの重なり、使用制限オーバーなどがありますとエラーとなり変換されませんので注意してください。

シーケンス基本命令

名称 | 命令記号
接点命令 | ＬＤ、ＬＤＩ、ＡＮＤ、ＡＮＩ、ＯＲ、ＯＲＩ
結合命令 | ＡＮＢ、ＯＲＢ
演算結果 | ＭＰＳ、ＭＲＤ、ＭＰＰ
出力命令 | ＯＵＴ（Ｍ、Ｙ）、Ｔ、Ｃ
デバイスのセット、リセット | ＳＥＴ（Ｍ、Ｙ）、ＲＳＴ（Ｍ、Ｙ、Ｃ、Ｔ、Ｄ）
立ち上がり微分、立ち下がり微分 | ＰＬＳ、ＰＬＦ
シフト命令 | ＳＦＴ
終了命令 | ＥＮＤ
継続命令 | －－＞＞、＞＞－－
註）継続命令は－＞＞は、次ぎの行の ＞＞－－のみに継続動作します。

応用命令

  ＰＩＣの応用命令は１６ビットの範囲内で実行されます。

  ダブルワード命令はサポートしていません。

  Ｋ４Ｍ１６　等の桁指定はＫの値いにかかわらず必ずＫ４即ち１６ビットと見なされます（Ｍ以下の数値は８の倍数としてください）。

マスタコントロール命令

ＭＣ、ＭＣＲ

算術演算命令

名称 | 命令記号
BCD4桁加算（１） | ＋＝、＋＝Ｐ
BCD4桁加算（２） | ＋、＋Ｐ
BCD4桁減算（１） | －＝、－＝Ｐ
BCD4桁減算（２） | －、－Ｐ
BCD4桁乗算 | ＊、＊Ｐ
BCD4桁除算 | ／、／Ｐ
BIN16ビット加算（１） | B＋＝、B＋＝Ｐ
BIN16ビット加算（２） | B＋、B＋Ｐ
BIN16ビット減算（１） | B－＝、B－＝Ｐ
BIN16ビット減算（２） | B－、B－Ｐ
BIN16ビット乗算 | B＊、B＊Ｐ
BIN16ビット除算 | B／、B／Ｐ
16ビットBCDデータインクリメント | ＩＮＣ、ＩＮＣＰ
16ビットBCDデータデクリメント | ＤＥＣ、ＤＥＣＰ

BCD<－>BIN変換命令

BINデータ－>BCD4桁変換 | ＢＣＤ、ＢＣＤＰ
BCD4桁－>BINデータ変換 | ＢＩＮ、ＢＩＮＰ

データ転送命令

16ビットデータ転送 | ＭＯＶ、ＭＯＶＰ
16ビットデータ否定転送 | ＣＭＬ、ＣＭＬＰ
16ビットデータ交換 | ＸＣＨ、ＸＣＨＰ
16ビット２の補数 | ＮＥＧ、ＮＥＧＰ

論理演算命令

16ビットデータ論理積（１） | ＷＡＮＤ＝、ＷＡＮＤ＝Ｐ
16ビットデータ論理積（２） | ＷＡＮＤ、ＷＡＮＤＰ
16ビットデータ論理和（１） | ＷＯＲ＝、ＷＯＲ＝Ｐ
16ビットデータ論理和（２） | ＷＯＲ、ＷＯＲＰ
16ビットデータ排他的論理和（１） | ＷＸＯＲ＝、ＷＸＯＲ＝Ｐ
16ビットデータ排他的論理和（２） | ＷＸＯＲ、ＷＸＯＲＰ
16ビットデータ否定排他的論理和（１） | ＷＸＮＲ＝、ＷＸＮＲ＝Ｐ
16ビットデータ否定排他的論理和（２） | ＷＸＮＲ、ＷＸＮＲＰ
デコード | ＤＥＣＯ、ＤＥＣＯＰ（第３オペランドは必ずＫ８とみなされます）

比較演算命令

16ビットデータ比較

＝、＜＞、＞、＜＝、＜、＞＝

ローテーション命令

16ビットデータの右ローテーション（１） | ＲＯＲ、ＲＯＲＰ
16ビットデータの右ローテーション（２） | ＲＣＲ、ＲＣＲＰ
16ビットデータの左ローテーション（１） | ＲＯＬ、ＲＯＬＰ
16ビットデータの左ローテーション（２） | ＲＣＬ、ＲＣＬＰ

シフト命令

16ビットデータnビット右シフト | ＳＦＲ、ＳＦＲＰ
16ビットデータnビット左シフト | ＳＦＬ、ＳＦＬＰ

ジャンプ命令

サブルーチン・コール命令 | ＳＣＡＬＬ（コールの対象サブルーチンは必ずＦＥＮＤのあとＥＮＤの前 に置き、頭に被コールポイントＰを置いて、コールの対象番号をつける）
リターン命令 | ＲＥＴＲＮ（サブルーチンの最後に置く）

ソフトウエア・タイマ

１μＳタイマ | ＭＣ１
１００μＳタイマ | ＭＣ１００

終了命令

全命令終了命令 | ＥＮＤ
１クール終了点命令 | ＦＥＮＤ（この命令以降にサブルーチンとその被コールポイントＰを置く）

註）各応用命令の動作については関数ヘルプを参照してください。

特殊補助リレー

機能 | デバイス
0.1 秒クロックパルス | Ｍ９０３０
0.2 秒クロックパルス | Ｍ９０３１
1 秒クロックパルス | Ｍ９０３２
常時ＯＮ リレー | Ｍ９０３６
常時ＯＦＦリレー | Ｍ９０３７
立上り後1スキャンのみONリレー | Ｍ９０３８
エラーフラグ | Ｍ９０１０
キャリーフラグ | Ｍ９０１２
０フラッグ | Ｍ９０１３

微分ポイント数

    ＰＬＳ、ＰＬＦ、Ｔ、Ｃ命令の数の合計と、微分命令の数の合計は３２０個をえることがきません。（上記命令は微分動作を含み、微分ポイントを使用します。）

ステップ数とメモリ

    ＣＰＵ中のＲＯＭ容量により、ラダー（シーケンス回路）のステップ数が制約されます。

    １６Ｆ８７７の容量は８Ｋワードですが、システムに２Ｋ～３Ｋ取られます。

    各命令が使用する合計のバイト数が８Ｋを越えると、アセンブル（機械語変換）時に、エラーになります。

    目安で、１７００ステップぐらいのラダーが構成できるはずです。

ソフトウエア割込み（Ｐ版以上のみ）

割込みの対象サブルーチンは、割込み用のツールバー [image] により作ります。

＜ＣＰＵ設定＞で[割込み]にチェックを入れると上のツールバーが活色します。

クリックすると、割込み用ダイアログボックスが現われ、最下段のＳＩＮＴにチェックを入れ、割込み番号を設定して、右端の設計釦を押しますと、ラダーの下段に特殊リレーのＭ９０７０（＋割込み番号）で始まる割り込みルーチンの枠組みが置かれます。

（必ずその前にＳＥＮＤ命令が置かれ、割込みルーチンはＳＥＮＤのあとＥＮＤの前になります）。

メイン側では、割込みルーチンを?ＩＮＴ　Ｋ？?とＫのうしろに割込み番号をつけて呼び出します。

割込みルーチン内部では、Ｘ、Ｙ接点はすべてダイレクト入出力になり、ここに使用されたＸ、Ｙ接点の結果はメインのループの論理に影響を与えません。

微分命令（タイマ、カウンタを含む）については、ＲＥＴＲＮ時に全状態がクリアされ、毎回、前の状態をオフとして始まります（カウンタであれば必ずカウントアップして＋１されます）

一つ注意しなくていけないことは、タイマ用の汎用割込みを始めとして、割込みは、２クール目から動作するということです。通常全体の割込み許可は１クール目の最後で置かれるため、１クール目では割込みに入ることはありません。

従って、最初からＩＮＴ命令を使用し、割り込みルーチン内でタイミングをとるため等にタイマ命令を使用したとしても、そのタイマは全く動作しません。

そのため、今回２クール目、ワンショット・オンのＭ９０３９を新しく設けました（周辺機器のモード設定などに使用します）。

（ｘ、ｙ　の小文字によって、入出力をダイレクト入出力を表わす方法は廃止されました）。

特殊命令

ＳＥＧ命令（応用命令に含まれる）

    ＳＥＧ命令は2桁の７セグメント表示をします。

  ＲＣ０－＞ＲＣ１に、各５ｍＳのスキャン出力を出し、

  ＲＢ０～ＲＢ６に1桁目－＞2桁目の７セグメント出力を出します。

          ＳＥＧ　Ｋ１２　Ｋ２Ｙ１０

    ＤＳＥＧ命令は４桁の７セグメント表示をします。　回路ハード図

  ＲＣ０－＞ＲＣ１－＞ＲＣ２－＞ＲＣ３に、各５ｍＳのスキャン出力を出し、

  ＲＢ０～ＲＢ６に1桁目－＞2桁目－＞３桁目－＞４桁目の７セグメント出力を出します。

          ＤＳＥＧ　Ｋ１２３４　Ｋ２Ｙ１０

  ２命令ともに、第一オペランドは、Ｄメモリー等の直値以外も指定できます。

  第２オペランドは無視されますが、結果としてどちらもＲＢポートを使用するので、Ｋ２Ｙ１０と指定しておいてください。

  ＲＢ７や、スキャンに使用しないＲＣポートのピンは他の用途に使用できます。

  7セグメント表示データは下記の表になります。

     ＤＳＥＧＰ命令はゼロサプレスをした結果の４桁の７セグメント表示をします。

  例えば、１２３４は１２３４と表示し、０２３４は２３４と右詰で表示します。

  同じく、００３４Ｈは３４と、０００４は４と右詰で表示します。

    ＳＥＧＰ命令はゼロサプレスをした結果の２桁の７セグメント表示をします。

  例えば、１２は１２と表示し、０２は　２と右詰で表示します。

Ａ／Ｄコンバータ（応用命令に含まれる）

  １６Ｆ８７７は、ＲＡポート、ＲＥポートのピンをＡ／Ｄコンバート・モードで使用する事ができます。

「連枝」は、それを利用して、合計８チャンネルのＡＤＣＯ（Ａ／Ｄコンバータ）命令を使用できます。

ＲＡ０～ＲＡ５（Ｘ００～Ｘ０５（Ｘ０４を除く）と、

ＲＥ０～ＲＥ２（Ｘ４０～Ｘ４２）の内の、１ビットを選び、Ａ／Ｄの結果値の、格納先を書き込みます。

下の命令ではＲＡ１への入力が１０ビットでＡ／Ｄ変換されてＤ０に入ります。

例　　　ＡＤＣＯ　Ｘ１　Ｄ０

註）ＡＤコンバートに１ピンでも使用すればＲＡ０，ＲＡ１，ＲＡ３がＡ／Ｄピン・モードになり、Ｉ／Ｏには使用できなくなります。

  ＲＡ２，ＲＡ５の一方又は両方をＡ／Ｄコンバートとして使用すれば、ＲＡ０，１，２，３，５すべてがＡ／Ｄピン･モードになり、Ｉ／Ｏには使用できなくなりますので注意が必要です。

  また、ＲＥ０～ＲＥ２のうちの１ピンでもＡ／Ｄコンバートに使用すると、以上Ａ／Ｄに使用できる全８ピンがＡ／Ｄにのみ使用可能になり、Ｉ／Ｏ出力には使用出来なくなります。

１６Ｆ８８７は、ＲＡポート、ＲＥポートのピンのほかにＲＢポートのＲＢ０，１，２，３，４，５が使用できます。

１６Ｆ８７７と違って全ピンがＡ／ＤにもＩ／Ｏにも使用できます。つまりＡ／Ｄに使用しなければＩ／Ｏピンになります。

Ｄ／Ａコンバータ（ＰＷＭ変換）（応用命令に含まれる）

  １６Ｆ８７７（８８７）は、ＲＣポートのピンをＰＷＭコンバート・モードで使用する事ができます。

「連枝」は、それを利用して、ＤＡＣＯ（Ｄ／Ａコンバータ）命令を使用できます。

Ｄ／Ａ変換のもとの８ビットの値い（バイナリー値）の格納先を第１オペランドとし、結果の出力ピンとして、ＲＣ１、ＲＣ２（Ｙ２１、Ｙ２２）の内の１ビットを選び第２オペランドとして書き込みます。

下の命令ではＤ０（下位８ビット）の値がＡ／Ｄ変換（ＰＷＭ変換）されて、ＲＣ１に出力されます。

例　　　ＤＡＣＯ　Ｄ０　Ｙ２１

註）ＰＷＭの出力は１９．５３Khzの基本パルス内でのＤｕｔｙサイクルになります。Ｄｕｔｙサイクルは8ビット分解能（０～ＦＦ）の指定で決定されます。

註）Ａ／Ｄ、Ｄ／Ａコンバート命令に関しては、変換内容デバイスとしてＤメモリー以外（例、Ｋ４Ｍ０、Ｔ１０ｅｔｃ．）も使用可能です。

    直値の入力も可能ですが、その場合バイナリー値のみのため、頭にＨをつけてください。

 シリアル通信命令（応用命令に含まれる）

  ＲＸはＲＣ７、ＴＸはＲＣ６を使用します。

  シリアル通信に関する設定はメニュー中のＣＰＵ設定で行います。

  送信バイト数、受信バイト数、ボーレートが設定できます。

  送信バイト数は設定数が必ず送信されます。

  受信バイト数に関しては、設定数を最大値として指定レングス分を受信します。

  送受信バイトが各々数バイト程度でＭＡＸです。

  送受信がお互いに相手の領域を食う関係にあり、

  ３２　＞＝（受信バイト＋４）＊２　＋（送信バイト＋４）　の範囲を限度とします。

  ボーレートは９６００ｂｐｓと１９２００ｂｐｓの2種類が選択できます。

シリアル通信のフォーマットは以下の通りです。

０２－８？－＊＊－＊＊－　　　　－＊＊－＊＊－０３

  ｜　　｜　｜＿＿＿データ　＿＿＿＿｜　　｜　　　｜＿＿　エンド

  ｜　　｜　　　　　　　　　　　　　　　　　　　　　｜＿＿＿＿＿　データのＸＯＲ

  ｜　　｜

  ｜　　｜＿＿＿＿＿＿＿＿＿＿＿＿＿＿レングス（下位７ﾋﾞｯﾄ）　Ｄ７は常に＝１

   |                                 この次から０３の前の前までのバイト数（つまりデータ数）

  ｜＿＿＿＿＿＿＿＿＿＿＿＿＿＿＿＿　スタート

データ以外（レングス以前、ＸＯＲ以降）はすべて自動生成されます。

シリアル通信に関する命令は、ＳＥＲＩ、ＳＥＲＯ、ＳＲＧＯです。

８ビットを１単位として送ります。

桁指定はＫ？の？にかかわらず２桁＝８ビットとみなされます。

ＳＥＲＩ命令

      通信入力があった場合、

      第１オペランドは受信データの何番目を示す（Ｋを頭につけたＢＣＤ値。１番目はＫ１でＫ０ではない）。

      第2オペランドは第1オペランドの示すデータの格納先を示す。

    例　ＳＥＲＩ　　Ｋ２　　Ｄ０　（2番目のデータをＤ０に入れる）

ＳＥＲＯ命令

      第１オペランドは送信するデータの取り込み先を示す。

      第２オペランドは送信データの何番目に置くかを示す（Ｋを頭につけたＢＣＤ値）。

    例　ＳＥＲＯ　Ｋ２　　Ｋ４Ｍ０（Ｍ０からの8ビットを2番目のデータとして送る）

ＳＲＧＯ命令

    送信を開始します。

    微分命令（ＳＲＧＯＰ）があります。

  ステッピングモータ・コントローラ（別売り）

  連枝は１６Ｆ８７７（８８７）中に、２軸のステッピングモータ・コントローラを内蔵する事ができます。トランジスタ・アレーで１回増幅すれば、直接ステッピングモータ・ドライバを駆動することができます。

１． 動作は１軸あたり１８種類を指定する事ができます。

２． ＳＴＥＰ命令は１軸当たりの動作ピンを任意に選ぶことができ、スピードは３００p/s～５０００p/sまで、選択することができます。

３． 動作ステップ数は、最大８、３００、０００までです。

４． スピードの立上り、立下りは最大ステップ数に応じた台形波で変化します。

５．　動作ステップ数を０にすると、リミットによるオフまで無限走行になります。

０軸と１軸で合計２軸の動作が可能ですが、同時動作はできません。

０軸　　ＰＩＣのＲＤ０ピンから出力します。

         動作番号はＳ００～Ｓ１７までで、

         対応するＳ０接点、動作中はオン、それ以外はオフです。

１軸　　ＰＩＣのＲＤ１ピンから出力します。

         動作番号はＳ１００～Ｓ１１７までで、

         対応するＳ１接点、動作中はオン、それ以外はオフです。

註）動作番号は３桁目（１００の位）が０軸か１軸を決定するだけで、あとは動作の目安にすぎません。

    （出来るだけ小さい番号にしないと、その間の不使用番号分のＲＯＭメモリーを食うことになります）。

命令は　　ＳＴＥＰ　　動作番号　　最大スピード　　総動作パルス数　　　の順で書きます。

最大スピードは１００単位で直値のみの入力になります。下２桁は無視されます。

総動作パルス数は直値の時はＢＣＤで入力しますが、メモリ値とする場合、Ｄメモリーのみが使用できます。（実際のＣＰＵ動作時、Ｄメモリーにはバイナリー値を入れるようにして下さい。

直値は変換時にバイナリー値に変えてＰＩＣに入れられますが、Ｄメモリーの場合はＰＩＣ内部でバイナリーにしている余裕がないからです。Ｄメモリーを使用する場合は、指定のＤとＤ＋１の３２ビットが総パルス数（バイナリー値）を表わします。

Ｄ８の場合　Ｄ８の１６ﾋﾞｯﾄとＤ９の下位８ﾋﾞｯﾄがその値いとなります。）

   例　　ＳＴＥＰ　　Ｓ１０２　Ｋ３００　Ｋ８００００

          ＳＴＥＰ　　Ｓ０４　　K５００　　Ｄ１０

 画面上の動作確認はできますが（タイマのように考えれば良い）、モニターはＳ０、Ｓ１の接点のみ表示され、ステップ数等は表示されません。

  ◇停止時に、残パルス数が、Ｄ２８（16ビット）とＤ２９（下位8ビットに上位値）に入れられます。

  パルス命令（別売り）

以下の４つの命令を含みます。

ＳＴＥＰ、ＥＮＣＯＤ、ＨＣＴＲ、ＰＵＬＳＥの４つの命令の内、２つ同時に使用することはできません。

  ①ＥＮＣＯＤ（エンコーダ）命令

    RA2　を　ロータリーエンコーダのＡ相に接続します。

    RA3　を　ロータリーエンコーダのＢ相に接続します。

    第一ｵﾍﾟﾗﾝﾄﾞに、Ｄﾒﾓﾘｰや桁指定（例Ｋ４Ｍ１６）等を設定値として指定できます。

    エンコード･カウンタ値がそこに入ります。

            例　ＥＮＣＯＤ　Ｄ１０

    エンコーダ用のカウンタ（最大ＦＦＦＦ）のリセットは、頭の接点をオフにすることにより行います。

    （この場合、ＲＳＴ　Ｄ１０　はあまり意味を持ちません）。

    １ｍＳ程度の割込みによるカウントのため、指でまわす程度の速度にしか、正確な対応はできません。

  ②ＨＣＴＲ（高速カウンタ）命令

    Ｃ１０００（カウンタ１０００）は

    ＲＡ４を入力として、第一ｵﾍﾟﾗﾝﾄﾞのＢＣＤ値をカウントします。

    ハード的な割込みでカウントするので、どんな高速でもカウントし、カウントアップ時はＣ１０００接点をオンにします。。

    第一ｵﾍﾟﾗﾝﾄﾞに、Ｄﾒﾓﾘｰや桁指定（例Ｋ４Ｍ１６）等を設定値として指定できます。

    Ｃ１０００への頭の入力をオンすると、ＲＤ０（ＲＣ０）ピンは=1になります。

    カウント・アップﾟすると、ＲＤ０（ＲＣ０）ピンは =0になります。またはＣ１０００への頭の入力をオフすると、ＲＤ０（ＲＣ０）ピンは=０になります。

    つまりHCTR命令オフはカウンタ・リセットﾀに相当します （RST C1000命令 は意味が有りません）。

    ＰＩＣ１６Ｆ８７７の時、出力ピンがＲＤ０、ＰＩＣ１６Ｆ８７６の時、出力ピンがＲＣ０になります。

    途中のカウント値を知ることはできません。

  ③ＰＵＬＳＥ （パルス）命令

   第1オペランドﾞ Ｓ???  の３桁目が

                         ０の場合、ＲＤ０(452,458) or ＲＣ０(252,258）　にパルスを出力し、

                           例　PULSE S025 K500 K3000

                           １の場合、ＲＤ１(452,458) or ＲＣ１(252,258)　にパルスを出力します。

                           例　PULSE S110 K8000 D20

     パルスを出力する。

                   １、２桁目　×１００uＳ = パルス幅

     パルス幅が、Ｐ／Ｓ（第2ｵﾍﾟﾗﾝﾄﾞ）による周期幅Ｔより大の場合、パルス幅は、Ｔ／２になる。

      第３オペランドはパルス数を設定します。

      Ｄﾒﾓﾘｰ中、の値いを設定する時は１６進数を入れます。

      第３オペランドにＫ０を設定すると無限（走行）パルスになります。

   ④ＴＴＭＲ（ティーチング）タイマ命令

    設計画面中でタイマ番号をT1000と書くと、T1000はティーチング･タイマになり、

    １０ｍＳ単位で、時間をカウントし、第２ｵﾍﾟﾗﾝﾄﾞで指定される場所にその値いを

    入れていきます。

    第２ｵﾍﾟﾗﾝﾄﾞはＤメモリーに限られます。

    第２ｵﾍﾟﾗﾝﾄﾞは本来のタイマの場合、設定値ですが、

    TTMRの場合、Ｄメモリーに限定され、この第２ｵﾍﾟﾗﾝﾄﾞのＤメモリー（&+1Ｄメモリー）に

    TIMER1の割込(10mS毎)回数のカウント値が入ります。

    T1000ﾆﾊ 他のﾀｲﾏと同じようなリセットするRST命令はありません。

    リセットはT1000の頭のオフからオンへの変化時のみによります。

    シミュレーションの動作画面中ﾆ表示される値いは、

    T1000の頭のオフ時のみに値いが変化した形ちで表示されます。


１６Ｆ８８

    ＰＩＣ・１６Ｆ８８

概要

  ＰＩＣ１６Ｆ８８は１８ピンのＰＩＣ１６Ｆ８８の変換ライブラリーを使用して、基本命令によるシーケンス動作（Ｓ版）と、１６ビットの応用命令（Ｐ版）をＣＰＵに実行させることが出来ます（ＰＩＣ１６Ｆ８８ではＰ１Ｃ１６Ｆ８７７と殆ど同等に応用命令が使用できます）。

ＲＯＭ容量　　４Ｋワード（１４ｂｉｔ／１ワード）

ＰＩＣ１６Ｆ８８の基本仕様

    Ｉ／Ｏ数　　計１６ピン（全ピンＩＮ／ＯＵＴ任意に設定可能）

  ＰＩＣ１６Ｆ８８の基本回路、ピン数　　１６ピン

註）ＲＡ５は入力のみに使用できます

ＰＩＣのピン呼称説明
ＶＤＤ | ５Ｖ電源
ＶＳＳ | ０Ｖ（ＧＮＤ）電源
ＭＣＬＲ | リセットピン（０でリセットのため、常時プルアップ）（内蔵可）
ＯＳＣ１ | 水晶発振子（４ＭＨｚ）接続（内蔵可） 外部に８ＭＨｚ発振子も接続可
ＯＳＣ２
各ピンが入力になるか、出力になるかは回路上の設定番号をＸで始めるか、Ｙで始めるかで任意に選択できます。

最大定格
全ピン吸い込み電流合計 | ２００ｍＡ
全ピン吐き出し電流合計 | ２００ｍＡ
各Ｉ／Ｏピン吸込み電流 | ２５ｍＡ
各Ｉ／Ｏピン吹き出し電流 | ２５ｍＡ
ＲＯＭ容量 | ４Ｋワード

註）ＥＥＰＲＯＭのため、電気的にロム・ライター上で消去＆書き込みができます。

データ用ＥＥＰＲＯＭ内蔵のため、保持リレーの内容の電源断後の保持が可能になります。

註）正確な値いはマイクロチップ社のマニュアルを優先としますのでそちらを参照して下さい。

特長

  1. ＶＳＳ電流が各ピン合計電流より小さいため、出力増幅用のトランジスタ・アレーを使用した方が無難です。

  2. ＥＥＰＲＯＭのため、上書きでプログラムの変更が可能にため、紫外線によるイレーザーで消去する必要がありません。

  3. データ用ＥＥＰＲＯＭを内蔵のため、保持リレーの内容保存には外付けのＥＥＰＲＯＭは必要ありません。

実行速度

実行速度は相当に早いはずですが、正確には測定していません。４ＭＨＺの発振の場合、ＬＤ命令で、４マイクロ、ＯＲ、ＡＮＤ命令で２マイクロ、それぞれ正確に実行時間がかかります。

  チャッタリング防止

「連枝」上の《ＣＰＵ設定》でチャッタリング防止を選択すると、入力取込みに一定間隔を置くようになり、チャッタリングをある程度防止できます。

入力ピン

各ピンを入力として使用するとき、内部に弱いプルアップをもっているポートＢ（１０　～１７）以外は、４．７Ｋ～２０Ｋオームの抵抗で、プルアップする必要が有ります。

出力ピン

各ピンを出力として使用するとき、１ピン当り２５ｍＡ（吹込み、吐出し共）を出力できますが、ＣＰＵトータルでは、３００ｍＡが最大出力になるため、６２００４等のトランジスタ・アレーにより、リレー等を駆動することをおすすめします。

対応版

ワンチップ・マイコンであるため、次に述べるようにハードから来る制約を受けることになります。

  1. ＣＰＵのＲＡＭ容量が比較的小さいため使用可能なリレーやタイマ、カウンタの数が制約されます。

  2. ＣＰＵの持つＩ／Ｏ（入出力）のピン数により、入出力のリレー数に制約があります。

  3. 拡張Ｉ／Ｏはできません。Ｉ／Ｏに使用できるピン数は、最大１６ピンです。

  使用可能リレー番号　　　　Ｍ０～Ｍ５１１

入出力リレー　 ビット番号　　　　対応ピックＰＩＮ名

            ？００　～　？０７　（　ＲＡ０　～　ＲＡ５　）

            ？１０　～　？１７　（　ＲＢ０　～　ＲＢ７　）

              合計　　　　１６ ピン

          註）？にはＸか、Ｙが入ります。

          註）ＲＡ５（？０５）は入力のみに使用できます。

ダイレクト入出力

  ＰＩＣ１６Ｆ８８にはダイレクト入出力のサポートは有りません。

エクスパンダー素子（ＭＣＰ２３００８）による拡張（別売りソフト）

  Ｉ２Ｃ通信によるため、ＲＣ３（ＳＤＬ）、ＲＣ４（ＳＤＡ）の２ピンのみを拡張用に使用します。

  マイクロチップ社のＥＸＰＡＮＤＥＲ用素子ＭＣＰ２３００８の１０番ピン～１７番ピンを拡張側の入出力として使用できます。

主ＣＰＵ（ＰＩＣ）側では、どのピンを入力に使用するか、出力に使用するかピン毎に任意です。

  入出力リレー　 ビット番号　　　　対応ピックＰＩＮ名

      ？００　～　？０７　　　　　　　（　１－ＲＡ０　～　ＲＡ７　）

      ？１０、１２～１３、１５～１７　（　１－ＲＢ０、ＲＢ２～ＲＢ３、ＲＢ５～ＲＢ７　）

      ？１１、１４（ＲＢ１、ＲＢ４）は拡張用接続に使用でＩ／Ｏには不可

      （拡張側のピン番号）

      ？０８　～　？０Ｆ　　　　　　　（　２・１－ＧＰ０　～　ＧＰ７　）　：ＭＣＰ２３００８×１

      ？１８　～　？１Ｆ　　　　　　　（　２・２－ＧＰ０　～　ＧＰ７　）　：ＭＣＰ２３００８×１

      ？２８　～　？２Ｆ　　　　　　　（　２・３－ＧＰ０　～　ＧＰ７　）　：ＭＣＰ２３００８×１

      ？３８　～　？３Ｆ　　　　　　　（　２・４－ＧＰ０　～　ＧＰ７　）　：ＭＣＰ２３００８×１

      ？４８　～　？４Ｆ　　　　　　　（　２・５－ＧＰ０　～　ＧＰ７　）　：ＭＣＰ２３００８×１

        合計　　ＭＣＰ２３００８を５つ使用した場合、５４ ピン

                  ＭＣＰ２３００８の使用数は１～５まで任意です。

註１）？にはＸか、Ｙが入ります。

註２）１－はメイン、２・？－は拡張側のＩ／Ｏ番号

    エクスパンダ使用の拡張回路

デバイスの範囲

  Ｍリレ－（補助リレー）

    Ｍ０　～Ｍ４３１

    合計　４３２

  1. 補助リレーとしての出力は一個当り、箇所のみに限定されます。

  2. ラッチリレ－等、種リレ－が使用されるとその分、の数が減少します。

  3. ラダー上では同一接点を何回でも使用できます。

  保持リレー

    Ｌ０　～Ｌ４７

    合計　４８

  これを使用すると、Ｍ（補助）リレーの使用可能番号が減少します。

変化があると、保持リレーは１６Ｆ８８内部のＥＥＰＲＯＭデ－タメモリ－に書き込まれ、電源立ち上がり時に読み込まれます。

書き込みに２０ｍＳ以上かかることがありますので、回路の体内時計がくるいますので、頻ぱんに変化する入出力は避けて下さい。（保持リレーのメモリは電源立ち上げ時に読込まれます。）

  ステップリレー

      Ｊ００００　～Ｊ０７９９

① ３，４桁目がチャンネルを表わし、１，２桁目がステップ番号を表わします。

② 同一のチャンネル内で一つのステップリレーのみがオンになっていす。

つまりあるステップリレーが最後にオンになれば、他の同一チャンネル内のリレーは自動的にオフになります。

③ チャンネルが違うステップリレーは同時にオンが可能です。

このことはチャンネルを替えれば、各々のチャンネルで個別のステップ動作による並列動作が可能になることを意味しています。

註）ステップリレーは電源断後に前値は失われ、キープされません

  タイマ、ウンター

  両方とも０番から始まり、計で８０個使用できます。タイマとカウンタは別のメモリーを使用するためタイマとカウンタ番号は重複してもかまいません。タイマとカウンタ番号はそれぞれ詰めて使用するのが効率的です。

 タイマ－番号２００、２０１は１０ｍＳ単位の高速タイマ（最大値２．５５ｍＳ、直値指定のみ）です（他のタイマ－の個数とは無関係です）。

  注意

  1. タイマは、単位が１００ｍＳで、２５．５秒（Ｋ２５５）が最大です。カウンタは、２５５（Ｋ２５５）が最大です。

  2. 長時間タイマはタイマとカウンタで構成して下さい。

  3. ステッピングモ－タ駆動ソフト（別売り）を使用すると、タイマ－、カウンタ－の合計数が７４個になります。

  4. タイマ、カウンタの入力は直値か、Ｄメモリー値によります。

  データ・メモリー

        Ｄ０　～Ｄ４０

◎間接アドレス

  ＰＩＣ１６Ｆ８８では、間接アドレスによる間接アクセスは不可です。

  注意

  1. シリアル通信を使用するか、デバッグ・モ－ドで使用すると、Ｄ３０までとなります。

  2. ＨＥＸに変換する場合デバイスの範囲以外やＸ、ＹまたはＴ、Ｃの重なり、使用制限オーバーなどがありますとエラーとなり変換されませんので注意してください。

シーケンス基本命令

名称 | 命令記号
接点命令 | ＬＤ、ＬＤＩ、ＡＮＤ、ＡＮＩ、ＯＲ、ＯＲＩ
結合命令 | ＡＮＢ、ＯＲＢ
演算結果 | ＭＰＳ、ＭＲＤ、ＭＰＰ
出力命令 | ＯＵＴ（Ｍ、Ｙ）、Ｔ、Ｃ
デバイスのセット、リセット | ＳＥＴ（Ｍ、Ｙ）、ＲＳＴ（Ｍ、Ｙ、Ｃ、Ｔ、Ｄ）
立ち上がり微分、立ち下がり微分 | ＰＬＳ、ＰＬＦ
シフト命令 | ＳＦＴ
終了命令 | ＥＮＤ
継続命令 | －－＞＞、＞＞－－
註）継続命令は－＞＞は、次ぎの行の＞＞－－のみに継続動作します。

応用命令

  ＰＩＣの応用命令は１６ビットの範囲内で実行されます。

  ダブルワード命令はサポートしていません。

  Ｋ４Ｍ１６　等の桁指定はＫの値いにかかわらず必ずＫ４即ち１６ビットと見なされます（Ｍ以下の数値は８の倍数としてください）。

マスタコントロール命令

ＭＣ、ＭＣＲ

算術演算命令

名称 | 命令記号
BCD4桁加算（１） | ＋＝、＋＝Ｐ
BCD4桁加算（２） | ＋、＋Ｐ
BCD4桁減算（１） | －＝、－＝Ｐ
BCD4桁減算（２） | －、－Ｐ
BCD4桁乗算 | ＊、＊Ｐ
BCD4桁除算 | ／、／Ｐ
BIN16ビット加算（１） | B＋＝、B＋＝Ｐ
BIN16ビット加算（２） | B＋、B＋Ｐ
BIN16ビット減算（１） | B－＝、B－＝Ｐ
BIN16ビット減算（２） | B－、B－Ｐ
BIN16ビット乗算 | B＊、B＊Ｐ
BIN16ビット除算 | B／、B／Ｐ
16ビットBCDデータインクリメント | ＩＮＣ、ＩＮＣＰ
16ビットBCDデータデクリメント | ＤＥＣ、ＤＥＣＰ

BCD<－>BIN変換命令

BINデータ－>BCD4桁変換 | ＢＣＤ、ＢＣＤＰ
BCD4桁－>BINデータ変換 | ＢＩＮ、ＢＩＮＰ

データ転送命令

16ビットデータ転送 | ＭＯＶ、ＭＯＶＰ
16ビットデータ否定転送 | ＣＭＬ、ＣＭＬＰ
16ビットデータ交換 | ＸＣＨ、ＸＣＨＰ
16ビット２の補数 | ＮＥＧ、ＮＥＧＰ

論理演算命令

16ビットデータ論理積（１） | ＷＡＮＤ＝、ＷＡＮＤ＝Ｐ
16ビットデータ論理積（２） | ＷＡＮＤ、ＷＡＮＤＰ
16ビットデータ論理和（１） | ＷＯＲ＝、ＷＯＲ＝Ｐ
16ビットデータ論理和（２） | ＷＯＲ、ＷＯＲＰ
16ビットデータ排他的論理和（１） | ＷＸＯＲ＝、ＷＸＯＲ＝Ｐ
16ビットデータ排他的論理和（２） | ＷＸＯＲ、ＷＸＯＲＰ
16ビットデータ否定排他的論理和（１） | ＷＸＮＲ＝、ＷＸＮＲ＝Ｐ
16ビットデータ否定排他的論理和（２） | ＷＸＮＲ、ＷＸＮＲＰ
デコード | ＤＥＣＯ、ＤＥＣＯＰ（第３オペランドは必ずＫ８とみなされます）

比較演算命令

16ビットデータ比較

＝、＜＞、＞、＜＝、＜、＞＝

ローテーション命令

16ビットデータの右ローテーション（１） | ＲＯＲ、ＲＯＲＰ
16ビットデータの右ローテーション（２） | ＲＣＲ、ＲＣＲＰ
16ビットデータの左ローテーション（１） | ＲＯＬ、ＲＯＬＰ
16ビットデータの左ローテーション（２） | ＲＣＬ、ＲＣＬＰ

シフト命令

16ビットデータnビット右シフト | ＳＦＲ、ＳＦＲＰ
16ビットデータnビット左シフト | ＳＦＬ、ＳＦＬＰ

ジャンプ命令

サブルーチン・コール命令 | ＳＣＡＬＬ（コールの対象サブルーチンは必ずＦＥＮＤのあとＥＮＤの前 に置き、頭に被コールポイントＰを置いて、コールの対象番号をつける）
リターン命令 | ＲＥＴＲＮ（サブルーチンの最後に置く）

ソフトウエア・タイマ

１μＳタイマ | ＭＣ１
１００μＳタイマ | ＭＣ１００

終了命令

全命令終了命令 | ＥＮＤ
１クール終了点命令 | ＦＥＮＤ（この命令以降にサブルーチンとその被コールポイントＰを置く）

註）各応用命令の動作については関数ヘルプを参照してください。

特殊補助リレー

機能 | デバイス
0.1 秒クロックパルス | Ｍ９０３０
0.2 秒クロックパルス | Ｍ９０３１
1 秒クロックパルス | Ｍ９０３２
常時ＯＮ リレー | Ｍ９０３６
常時ＯＦＦリレー | Ｍ９０３７
立上り後1スキャンのみONリレー | Ｍ９０３８
エラーフラグ | Ｍ９０１０
キャリーフラグ | Ｍ９０１２
０フラッグ | Ｍ９０１３

微分ポイント数

    ＰＬＳ、ＰＬＦ、Ｔ、Ｃ命令の数の合計と、微分命令の数の合計は３２０個をえることがきません。（上記命令は微分動作を含み、微分ポイントを使用します。）

ステップ数とメモリ

    ＣＰＵ中のＲＯＭ容量により、ラダー（シーケンス回路）のステップ数が制約されます。

    １６Ｆ８８の容量は４Ｋワードですが、システムに１Ｋ～２Ｋ取られます。

    各命令が使用する合計のバイト数が４Ｋを越えると、アセンブル（機械語変換）時に、エラーになります。

    目安で、８００ステップぐらいのラダーが構成できるはずです。

ソフトウエア割込み（Ｐ版以上のみ）

割込みの対象サブルーチンは、割込み用のツールバー [image] により作ります。

＜ＣＰＵ設定＞で[割込み]にチェックを入れると上のツールバーが活色します。

クリックすると、割込み用ダイアログボックスが現われ、最下段のＳＩＮＴにチェックを入れ、割込み番号を設定して、右端の設計釦を押しますと、ラダーの下段に特殊リレーのＭ９０７０（＋割込み番号）で始まる割り込みルーチンの枠組みが置かれます。

（必ずその前にＳＥＮＤ命令が置かれ、割込みルーチンはＳＥＮＤのあとＥＮＤの前になります）。

メイン側では、割込みルーチンを?ＩＮＴ　Ｋ？?とＫのうしろに割込み番号をつけて呼び出します。

割込みルーチン内部では、Ｘ、Ｙ接点はすべてダイレクト入出力になり、ここに使用されたＸ、Ｙ接点の結果はメインのループの論理に影響を与えません。

微分命令（タイマ、カウンタを含む）については、ＲＥＴＲＮ時に全状態がクリアされ、毎回、前の状態をオフとして始まります（カウンタであれば必ずカウントアップして＋１されます）

一つ注意しなくていけないことは、タイマ用の汎用割込みを始めとして、割込みは、２クール目から動作するということです。通常全体の割込み許可は１クール目の最後で置かれるため、１クール目では割込みに入ることはありません。

従って、最初からＩＮＴ命令を使用し、割り込みルーチン内でタイミングをとるため等にタイマ命令を使用したとしても、そのタイマは全く動作しません。

そのため、今回２クール目、ワンショット・オンのＭ９０３９を新しく設けました（周辺機器のモード設定などに使用します）。

（ｘ、ｙ　の小文字によって、入出力をダイレクト入出力を表わす方法は廃止されました）。

特殊命令

ＳＥＧ命令（応用命令に含まれる）

    ＳＥＧ命令は2桁の７セグメント表示をします。

  ＲＡ０－＞ＲＡ１に、各５ｍＳのスキャン出力を出し、

  ＲＢ０～ＲＢ６に1桁目－＞2桁目の７セグメント出力を出します。

        ＳＥＧ　Ｋ１２　Ｋ２Ｙ１０

   ＤＳＥＧ命令は４桁の７セグメント表示をします。　　　　回路ハード図

  ＲＡ０－＞ＲＡ１－＞ＲＡ２－＞ＲＡ３に、各５ｍＳのスキャン出力を出し、

  ＲＢ０～ＲＢ６に1桁目－＞2桁目－＞３桁目－＞４桁目の７セグメント出力を出します。

        ＤＳＥＧ　Ｋ１２３４　Ｋ２Ｙ１０

  ２命令ともに、第一オペランドは、Ｄメモリー等の直値以外も指定できます。

  第２オペランドは無視されますが、結果としてどちらもＲＢポートを使用するので、Ｋ２Ｙ１０と指定しておいてください。

  ＲＢ７や、スキャンに使用されないＲＣポートのピンは他の用途に使用できます。

  7セグメント表示データは下記の表になります。

    ＤＳＥＧＰ命令はゼロサプレスをした結果の４桁の７セグメント表示をします。

  例えば、１２３４は１２３４と表示し、０２３４は２３４と右詰で表示します。

  同じく、００３４Ｈは３４と、０００４は４と右詰で表示します。

    ＳＥＧＰ命令はゼロサプレスをした結果の２桁の７セグメント表示をします。

  例えば、１２は１２と表示し、０２は　２と右詰で表示します。

Ａ／Ｄコンバータ（応用命令に含まれる）

  １６Ｆ８８は、ＲＡポートのピンをＡ／Ｄコンバート・モードで使用する事ができます。

「連枝」は、それを利用して、ＡＤＣＯ（Ａ／Ｄコンバータ）命令を使用できます。

ＲＡ０～ＲＡ４（Ｘ００～Ｘ０４）の内の、１ビットを選び、Ａ／Ｄの結果値の、格納先を書き込みます。

下の命令ではＲＡ１への入力が１０ビットでＡ／Ｄ変換されてＤ０に入ります。

例　　　ＡＤＣＯ　Ｘ１　Ｄ０

注意

  Ａ／Ｄコンバートには１ピン単位で使用できます。ＲＡ０～ＲＡ４のうちＡ／Ｄコンバートに使用しないピンはすべてＩ／Ｏに使用できます。

  ＰＩＣ１６Ｆ８８はＲＢ６、ＲＢ７もＡ／Ｄコンバートとの兼用ピンになっていますが、「連枝」ではこれを使用せず、Ｉ／Ｏピンのみに使用します

Ｄ／Ａコンバータ（ＰＷＭ変換）（応用命令に含まれる）

  １６Ｆ８８は、ＲＢ３ピンをＰＷＭコンバート・モードで使用する事ができます。

「連枝」は、それを利用して、ＤＡＣＯ（Ｄ／Ａコンバータ）命令を使用できます。

Ｄ／Ａ変換のもとの６ビットの値い（バイナリー）の格納先を第１オペランドとし、結果の出力ピンとして、ＲＢ３（Ｙ１３）を選び第２オペランドとして書き込みます。

下の命令ではＤ０（下位６ビット）の値がＡ／Ｄ変換（ＰＷＭ変換）されて、ＲＢ３に出力されます。

例　　　ＤＡＣＯ　Ｄ０　Ｙ１３

註）ＰＷＭの出力は１５．６Khzの基本パルス内でのＤｕｔｙサイクルになります。Ｄｕｔｙサイクルは６ビット分解能（０～３Ｆ）の指定で決定されます。

註）Ａ／Ｄ、Ｄ／Ａコンバート命令に関しては、変換内容デバイスとしてＤメモリー以外（例、Ｋ４Ｍ０、Ｔ１０ｅｔｃ．）も使用可能です。

    直値の入力も可能ですが、その場合バイナリー値のみのため、頭にＨをつけてください。

 シリアル通信命令

  ＰＩＣ１６Ｆ８８では、シリアル通信関連の命令はサポートされていません。

  ステッピングモータ・コントローラ（別売り）

  連枝は１６Ｆ８８中に、２軸のステッピングモータ・コントローラを内蔵する事ができます。トランジスタ・アレーで１回増幅すれば、直接ステッピングモータ・ドライバを駆動することができます。

１． 動作は１軸あたり１８種類を指定する事ができます。

２． ＳＴＥＰ命令は１軸当たりの動作ピンを任意に選ぶことができ、スピードは３００p/s～５０００p/sまで、選択することができます。

３． 動作ステップ数は、最大８、３００、０００までです。

４． スピードの立上り、立下りは最大ステップ数に応じた台形波で変化します。

５．　動作ステップ数を０にすると、リミットによるオフまで無限走行になります。

０軸と１軸で合計２軸の動作が可能ですが、同時動作はできません。

０軸　　ＰＩＣのＲＢ０ピンから出力します。

         動作番号はＳ００～Ｓ１７までで、

         対応するＳ０接点、動作中はオン、それ以外はオフです。

１軸　　ＰＩＣのＲＢ１ピンから出力します。

         動作番号はＳ１００～Ｓ１１７までで、

         対応するＳ１接点、動作中はオン、それ以外はオフです。

註）動作番号は３桁目（１００の位）が０軸か１軸を決定するだけで、あとは動作の目安にすぎません。

  （出来るだけ小さい番号にしないと、その間の不使用番号分のＲＯＭメモリーを食うことになります）。

命令は　　ＳＴＥＰ　　動作番号　　最大スピード　　総動作パルス数　　　の順で書きます。

最大スピードは１００単位で直値のみの入力になります。、下２桁は無視されます。

総動作パルス数は直値の時はＢＣＤで入力しますが、メモリ値とする場合、Ｄメモリーのみが使用できます。（実際のＣＰＵ動作時、Ｄメモリーにはバイナリー値を入れるようにして下さい。

直値は変換時にバイナリー値に変えてＰＩＣに入れられますが、Ｄメモリーの場合はＰＩＣ内部でバイナリーにしている余裕がないからです。Ｄメモリーを使用する場合は、指定のＤとＤ＋１の３２ビットが総パルス数（バイナリー値）を表わします。

Ｄ８の場合　Ｄ８の１６ﾋﾞｯﾄとＤ９の下位８ﾋﾞｯﾄがその値いとなります。）

   例　　ＳＴＥＰ　　Ｓ１０２　Ｋ３００　Ｋ８００００

          ＳＴＥＰ　　Ｓ０４　　K５００　　Ｄ１０

 画面上の動作確認はできますが（タイマのように考えれば良い）、モニターはＳ０、Ｓ１の接点のみ表示され、ステップ数等は表示されません。

  ◇停止時に、残パルス数が、Ｄ２８（16ビット）とＤ２９（下位8ビット）に入れられます。

  パルス命令（別売り）

以下の４つの命令を含みます。

ＳＴＥＰ、ＥＮＣＯＤ、ＨＣＴＲ、ＰＵＬＳＥの４つの命令の内、２つ同時に使用することはできません。

  ①ＥＮＣＯＤ（エンコーダ）命令

    RA2　を　ロータリーエンコーダのＡ相に接続します。

    RA3　を　ロータリーエンコーダのＢ相に接続します。

    第一ｵﾍﾟﾗﾝﾄﾞに、Ｄﾒﾓﾘｰや桁指定（例Ｋ４Ｍ１６）等を設定値として指定できます。

    エンコード･カウンタ値がそこに入ります。

            例　ＥＮＣＯＤ　Ｄ１０

    エンコーダ用のカウンタ（最大ＦＦＦＦ）のリセットは、頭の接点をオフにすることにより行います。

    （ＲＳＴ　Ｄ１０　とすることは余り大きな意味をもちません）。

  ②ＨＣＴＲ（高速カウンタ）命令

    Ｃ１０００（カウンタ１０００）は

    ＲＡ４を入力として、第一ｵﾍﾟﾗﾝﾄﾞのＢＣＤ値をカウントする。

    ハード的な割込みでカウントするので、どんな高速でもカウントし、カウントアップ時はＣ１０００接点をオンにします。。

    第一ｵﾍﾟﾗﾝﾄﾞに、Ｄﾒﾓﾘｰや桁指定（例Ｋ４Ｍ１６）等を設定値として指定できます。

    Ｃ１０００への頭の入力をオンすると、ＰＢ０ﾋﾟﾝは=1になります。

    ｶｳﾝﾄ･ｱｯﾌﾟすると、ＲＢ０ﾋﾟﾝは =0になります。またはＣ１０００への頭の入力をオフすると、ＰＢ０ﾋﾟﾝは=０になります。

    つまりHCTR命令ｵﾌはｶｳﾝﾀ･ﾘｾｯﾄに相当します (RST C1000命令 ﾊ意味がｱﾘﾏｾﾝ)。

    途中のカウント値を知ることはできません。

  ③ＰＵＬＳＥ （パルス）命令

    第１オペランド Ｓ??? 　の３桁目が

                        ０の場合、ＲＢ０ピンににパルスを出力し、

                           例　PULSE S025 K500 K3000

                           １の場合、ＲＢ１ピンにパルスを出力します。

                           例　PULSE S110 K8000 D20

        第１オペランド Ｓ??? 　の１、２桁目　×１００uＳ = パルス幅

        パルス幅が、Ｐ／Ｓ（第２オペランド）による周期幅Ｔより大の場合、パルス幅は、Ｔ／２になります。

    第２オペランドでは最大スピードを１００単位で直値（ＢＣＤ）のみの入力によって設定します。、下２桁は無視されます。

        １００Ｐ／Ｓ～５０００Ｐ／Ｓの範囲で設定できます。

    第３オペランドﾞはパルス数を設定する。

    Ｄメモリー中の値いを設定する時は１６進数を入れます。

    総動作パルス数は直値の時はＢＣＤで入力しますが、メモリ値とする場合、Ｄメモリーのみが使用できます。

    （Ｄメモリーにはバイナリー値を入れるようにして下さい）。

    第３オペランドﾞにＫ０（ゼロ）を設定すると無限パルス（走行）になります。

   ④ＴＴＭＲ（ティーチングタイマ）命令

    設計画面中でタイマ番号をT1000と書くと、T1000はティーチング･タイマになり、

    １０ｍＳ単位で、時間をカウントし、第２ｵﾍﾟﾗﾝﾄﾞで指定される場所にその値いを

    入れていきます。

    第２ｵﾍﾟﾗﾝﾄﾞはＤメモリーに限られます。

    第２ｵﾍﾟﾗﾝﾄﾞは本来のタイマの場合、設定値ですが、

    TTMRの場合、Ｄメモリーに限定され、この第２ｵﾍﾟﾗﾝﾄﾞのＤメモリー（&+1Ｄメモリー）に

    TIMER1の割込(10mS毎)回数のカウント値が入ります。

    T1000ﾆﾊ 他のﾀｲﾏと同じようなリセットするRST命令はありません。

    リセットはT1000の頭のオフからオンへの変化時のみによります。

    シミュレーションの動作画面中ﾆ表示される値いは、

    T1000の頭のオフ時のみに値いが変化した形ちで表示されます。


ＳＣＡＮ７７

    トランジスタ×４または、トランジスタアレーによってスキャンをします。トランジスタはＮＰＮである必要があります。

    ７－ＳＥＧＭＥＮＴはカソードコモンを使用する必要があります。　　　　 　　　　　　　　　　　　戻る


ＳＣＡＮ８８

    トランジスタ×４または、トランジスタアレーによってスキャンをします。トランジスタはＮＰＮである必要があります。

    ７－ＳＥＧＭＥＮＴはカソードコモンを使用する必要があります。　　　　 　　　　　　　　　　　　戻る