16F84の高速タイマがマニュアルではT200、T201の二つあります。
しかし、実機において、動作させるとT200しか動作しておりませんでした。
T201の不良動作につきましては、ライブラリのバグが原因でした。
修正したライブラリをダウンロードサイトにアップいたしました。
お手数ではございますが、差し替えをお願い申し上げます。
16F84の高速タイマがマニュアルではT200、T201の二つあります。
しかし、実機において、動作させるとT200しか動作しておりませんでした。
T201の不良動作につきましては、ライブラリのバグが原因でした。
修正したライブラリをダウンロードサイトにアップいたしました。
お手数ではございますが、差し替えをお願い申し上げます。
禁止回路を作成する場合、条件が多くなるとb接点の直列回路が長くなります。
この場合、b接点の直列回路をa接点並列の回路でリレーに出力し、出力したリレーをb接点に置き換えると同じ動作となります。
このように回路を見やすくわかりやすく変換することもあります。
センサやスイッチのいずれかが成立した場合に動作する回路がOR回路です。
接点を並列に接続することで、OR回路を作成できます。
センサやスイッチなどの信号がすべて成立しているときにだけ動作させるときに用いる回路をAND回路といいます。
信号の接点を直列に接続すると、AND回路となります。
電流の流れる回路を考えていただくと、スイッチの通路が直列につながっているということは、いずれかの通路がつながっていないと電流が流れなくなるため、動作しません。
制御回路で定番の回路の自己保持回路です。制御するリレーの接点を保持開始条件に並列に接点を入れます。
この接点により、通常は、動作していないリレーですが、一度、接点が閉じリレーが動き出すと自分自身の接点で
自分自身のリレーのコイルに電気を供給することになります。
これにより、停電時やプログラムから制御動作を動かしたり停止させたりすることができるようになります。
制御動作の柔軟性が高くなります。
定番の自己保持回路では、停止の条件により以下のものがあります。
自己保持の開始接点と自己保持停止接点両方を入れた時に動作するか停止するかを回路で変えることができます。
(自己保持回路 復帰優先・停止優先)
(自己保持回路 動作優先・保持優先)
制御において同時に動作してはいけない回路に採用するのがインターロック回路です。
ある動作が行われているときには、別の動作を行わせない。そのために、動作させたくないリレーのコイルの前にb接点を配置します。
これを双方置くことによりどちらか一方が動いているときには、別の処理を行わせないことができます。
モータの回転方向の制御を行うとき、どちらか一方の回転方向の指示しかしてはいけません。
DCモータやACモータなどの制御は両方の回転方向の指示を与えると、制御回路が短絡してしまいます。
そのため、両方の指示を与えないようにするために、インターロック回路を用います。
無手順でのシリアル通信のラダーについてご紹介いたします。
通信プロトコルが自由に変えることができるものなので、多くの機器との通信が可能です。
18F452シリーズのマイコンでライブラリを使用することで行えます。
一般的な機器では、コマンドの終端文字としてCR(0D)LF(0A)がついていることが多いです。
このような機器と接続したり、CRLFを出力してパソコンと接続したりする場合に用います。
回路としては、以下の通りです。
送信するデータを事前にデータレジスタに格納しておき送信コマンド(SROT)を実行します。
K9は送信バイト数、D0は先頭のレジスタ、M11は送信終了フラグです。
送信指令となるM11をONし、SROTコマンドが処理を終了するとM11をOFFにしてくれます。
そのため、M11が送信中には別の送信を行わないように注意が必要です。
次に、連続してシリアルのコマンドを送る方法を紹介します。
連続して、データを送る場合、送信コマンド終了の信号の立下りを利用します。
送信コマンドのリレーがON->OFFになると、次の送信に移ればよいので、その立下り信号をPLF信号で取得します。
その出力信号を次の送信動作の開始接点とします。
以前お問い合わせいただいた内容について記載いたします。
連枝では、作成したHEXファイル名およびmbs作成日時をhexファイルの最後に出力する機能がございます。
HEXファイルを生成したデータの末尾にアスキーコードで文字を書き出しております。
ファイルのバージョン管理等にご利用ください。
以下がその例です。
(例)以下は、ファイル名「test.HEX」で、生成日時は
「2018/04/16 14:06」の末尾の情報です。
5 2 ー t e s t . /
:107FC000350032002D0074006500730074002E002F
. . . . . . . . 1
:107FD0002E002E002E002E002E002E002E002E0031
. . . 1 8 0 4 ー cr
:107FE0002E002E002E0031003800300034002D000D
1 6 - 1 4 0 6 $
:0E7FF000310036002D00310034003000360024
:020000040030CA
:04000000FFFEF6F811
:08000600FAFFFFFFFFFFFFFFFF
:00000001FF
定周期処理でワンショットの回路を以前紹介いたしました。
ワンショットでは、プログラムが1スキャン(1巡実行する)時間しかHIGHの出力は出ません。ラダーのリレーのONするだけであればもんだいありませんが、機器に信号を渡すなら時間を指定する必要があります。
100msの周期はT0(100ms)に任せ、HIGH時間をT200(10msタイマー)に任せる方法です。
タイムチャートは以下の通りです。
これを実現しているラダーは以下の通りです。
一定時間ごとに1回何か処理をしたいという場合の回路例を紹介いたします。
タイマーを利用して、10msごとに1回とか100msごとに1回、500msごとに1回といったものを作る方法です。
タイマーがカウントアップしてONとなる信号を使用してパルス回路をと思うことが多いと思いますが、カウントアップしたタイマーの接点をそのまま利用してください。この接点が1回処理する信号となります。
一方で、タイマーの接点のb接点をタイマーのコイルの前に入れていただくとタイマーをリセットしますので、再度時間のカウントが始まります。
動作中のリレーがON中、設定時間ごとにパルスを出力する回路が出来上がります。
以下の回路を参考にしてください。