PLC制御を学び始めた初心者です。
BCD出力とBIN出力について勉強している中で、たとえばヒーターの温度設定を行うことを想定して、BCD出力をするタッチパネルを用いて行った温度設定を場合について疑問があります。
たとえば、表示パネル上で63℃と設定したとします。
BCDなので、各桁それぞれを2進数で表して
6→0110
3→0011
つまり 63 = 0110 0011
ということになりますよね。
さらに、データをCPUやPLCに取り込むときにBINデータに変換する必要があると思うのですが、これをBINデータに変換する場合、上記のBCDデータを通常の2進数と見て、一度10進数に戻し、それを再度2進数に戻す作業になると思います。
具体的には、
01100011 =1+2^1+2^5+2^6=102
したがって、10進数の102という数値になりますよね?
これを再度2進数化したものがBIN変換した数値ということになると思いますので、
102 = 01100110 (2進数)
という風になるかと思います。
つまりPLCの内部ではこの2進数をデータとして取り扱うことになるかと思いますが、
さて、ここでよくわからないのですが、
タッチパネル上では63℃として入力していたのに、内部に入ったら102(℃?単位はわかりませんが・・・)として扱われています。
ここがよくわかりません。63℃のはずが102に変換されてしまっています。
だったら最初から変換などせずにそのままでいいのではないかとも思うのですが??
どなたがご教授いただけませんでしょうか。
なぜBINとBCDが扱われるのかについても教えていただけると幸いです。
A 回答 (9件)
- 最新から表示
- 回答順に表示
No.9
- 回答日時:
回答No.7の追加説明です。
BCDの2桁をBINの16bitに変換するには次の2通りの方法があります。
加算法
10進数の場合を想定すると次のようになります。
6+6+6+6+6+6+6+6+6+6+3=63
2進数の場合(元の値は4bitとしましたがレジスターは8bitとします)
0110+0110+0110+0110+0110+0110+0110+0110+0110+0110+0011=00111111
シフト法と加算法の併用
2進数の場合
00000110 を左へ3回シフト 00110000 (10進数の48)
00000110 を左へ1回シフト 00001100 (10進数の12)
00000011 はそのまま 00000011 (10進数の3)
00110000+00001100+00000011=00111111
これらの演算はPLCの内部で実行されるようになっているはずですから一般的には気にしなくて良い範囲です。
質問の 0110 と 0011 を直接繋げた 01100011 とは異なる処理であることを理解してください。
No.8
- 回答日時:
回答(5)です
よくよく読み返したら回答(1)さんが正解してるじゃないですか
ただ、貴殿がその意図を理解せず否定してるだけ
キーエンスKVシリーズリファレンスマニュアル
368/894ページ
TBIN BCD-BIN変換命令
回答(1)さんはこの変換命令がやってる中身を解説してます
その逆がBCD-BIN変換命令 TBCD
366/894ページ
それをを更に懇切丁寧に解説してるのが回答(6)、(7)さん
>学習ページなどを見てるとさも当たり前のように使われていたので今でも現役なのかと思っていました・・・。
学習ページではちゃんとBCD-BIN変換命令使ってるでしょ?
>単軸ロボで使うときにはどんな構成で使われるのでしょうか?
良くあるのは、単軸ロボ1台のみで移動座標も固定位置で数点だけとか
所謂、ピックアンドプレースユニット
http://jp.misumi-ec.com/maker/machine-engineerin …
http://www.ea-thk.com/?q=node/1289
移動座標は固定値なので座標データはロボット側に記憶しておくだけ
座標1番はワーク取出位置
座標2番はワーク排出位置1
座標3番はワーク排出位置2
座標4番はワーク排出位置3
所謂、多品種対応で品種によって座標が変わる
このような事例は少なく無い
座標数点しかないならBCD1桁で十分ではある
このタイプが標準装備してるのはBCD入力ポートだけと言う事例は多い
PLCだって通信ユニットは標準装備してない(プログラミングポート以外で)
安くなったとは言え通信ユニットは高価
http://www.mitsubishielectric.co.jp/fa/products/ …
http://www.fa.omron.co.jp/products/family/1651/l …
蛇足
正式な理解ではなくて、簡略的理解する方法
「BCDとは16進数からA~Fを取り除いたもの」
このように書くとマイコン屋さんから怒られるけど
PLC屋にはこれで十分である
最近のPLCにはBCD以外に浮動小数点やら余計な物が増えたし
浮動小数点を人に解説するのは難しい
マイナスデータ2の補数表現の解説も困難
No.7
- 回答日時:
>結局のところ、BCDで入力するタッチパネルで63℃と入力したらPLCの中ではどのように処理されて温度制御を行ってくれるのでしょうか?
私は設計者じゃないので設定値と測定値の差をどのような処理で出力値を算出するかは分かりません。
BCDは人間に対するインターフェースと考えれば良いでしょう。
人間は2進数で装置に指示を与えることが困難のためBCDを仲立ちにして装置との意思疎通を図ります。
>質問文の中にも書いたように63℃を6と3に分けてそれぞれを2進表現して書いたつもりですが、この理解でよろしいでしょうか?
その部分は良いのですが、装置内から読み取った2進数が 0110 0011 であれば4桁と4桁の間の空白は何を意味しているでしょうか?
「4桁毎に区切って10進数に置き換えてください」と言う意味のように受け取れます。
8桁の2進数として 01100011 のように連結したら全く異なる値になって10進数の 99 になります。
01100011 =1+2^1+2^5+2^6=102(再計算すると99です)
102 = 01100110 (2進数) → 99 = 01100011
>BCDをBINに変換するんですよね?63をBINにしたら結局のところCPU内ではどう扱われるのですか?
CPUの種類によってレジスターのbit数が異なりますので一概に言えません。
BCDの入力値は人間の目で10進数に読めて、メモリー上には2進数の4桁区切りで格納されていると思います。
測定値もモニターへ表示されている値に相当する2進数がメモリーに格納されているはずです。
CPUの中では全て2進数の演算を行っていることは理解して頂いていると思います。
モニターに表示されている値は人間が理解できるようにBCDの数値(10進数)やグラフでアナログ表示する方法がとられているでしょう。
>すみません、ちょっとよく理解できないのですが、どういうことでしょうか?
上記のようにあなたの計算違いで値が変化したかのように見えています。
しかし、計算違いを訂正して2進数の4桁ずつを10進数に復元して2桁の10進数に戻せは元の63になります。
0110 → 6 (10の位が6)
0011 → 3 (1の位が3)
No.6
- 回答日時:
>たとえば、表示パネル上で63℃と設定したとします。
>BCDなので、各桁それぞれを2進数で表して
>6→0110
>3→0011
>つまり 63 = 0110 0011
>ということになりますよね。
2進数を4桁ずつで連結しても10進数の63と同じと言えません。
2進数の4桁で表せる10進数の値は0~15なので連結して8桁にしたものを10進数に戻せば大きな誤差が生じます。
正しい値を2進数の8桁で表すには63を2進数に変換しなければ辻褄が合いません。
従って、「ここがよくわかりません。63℃のはずが102に変換されてしまっています。」と言う結果になります。
あなたがタッチパネルの内部データを正しく読んでいないことになるのではないでしょうか。
BCDの値は2進数を4桁ずつ読んで10進数に変換した値を連結するのが基本です。
誤りの原因は2進数を8桁読んで、それを10進数に変換したことによるものです。
>だったら最初から変換などせずにそのままでいいのではないかとも思うのですが??
10進数と2進数について基本的な知識を積んでください。
機器間のデータ通信でアセンブリ言語(ニーモニック)等を使う場合は特に注意が必要でしょう。
この回答への補足
>2進数を4桁ずつで連結しても10進数の63と同じと言えません。
>2進数の4桁で表せる10進数の値は0~15なので連結して8桁にしたものを10進数に戻せば大きな誤差が生じます。
>正しい値を2進数の8桁で表すには63を2進数に変換しなければ辻褄が合いません。
→おっしゃる通りで、これについては理解しているつもりです。
>従って、「ここがよくわかりません。63℃のはずが102に変換されてしまっています。」と言う結果になります。
→結局のところ、BCDで入力するタッチパネルで63℃と入力したらPLCの中ではどのように処理されて温度制御を行ってくれるのでしょうか?
「63℃にしてほしい」とパネルから打ち込んで、その通りにCPUが考えて温度を制御する仕組みを知りたいです。
BCDをBINに変換するんですよね?63をBINにしたら結局のところCPU内ではどう扱われるのですか?
63はBINにしても63として扱われますか?
>BCDの値は2進数を4桁ずつ読んで10進数に変換した値を連結するのが基本です。
→質問文の中にも書いたように63℃を6と3に分けてそれぞれを2進表現して書いたつもりですが、この理解でよろしいでしょうか?
>誤りの原因は2進数を8桁読んで、それを10進数に変換したことによるものです。
→すみません、ちょっとよく理解できないのですが、どういうことでしょうか?
No.5
- 回答日時:
>なぜBINとBCDが扱われるのかについても教えていただけると幸いです。
タッチパネルのデータ表示、データ入力は基本的にバイナリのままです
何故なら、タッチパネルはバイナリデータを使えるから
所謂、デジスイッチ
http://www.fa.omron.co.jp/products/family/356/
7SEG表示器
http://www.fa.omron.co.jp/products/family/1143/
それらを使うときにBCDを使います
尚、BCDを使うのは上記のような操作表示器だけでなく
所謂、単軸ロボット
http://www.iai-robot.co.jp/product/single/index. …
http://www.yamaha-motor.co.jp/robot/lineup/flipx/
計量器や距離、流量等のアナログ系センサ
http://www.aandd.co.jp/adhome/products/index_wei …
http://www.fa.omron.co.jp/products/family/1432/
http://www.keyence.co.jp/appli/#1
http://www.onosokki.co.jp/HP-WK/products/keisoku …
それらのデータをPLCへ入力する為にBCDを使う場合があります
現代では所謂ネット通信等でのIFが増えたので
BCDでIFする事例は減りましたが
昔は通信系オプションが高価だったからと言うのが最大の理由
タッチパネルも昔は大変高価だったので、
デジSWや7SEGを多数並べた方が安かったが
現代では人件費の方が高くなったので、
デジSWを多数並べると配線工数が高くなって、タッチパネルの方が安価になる
とどのつまり、現代ではBCDを使わなければならない事例は減った
この回答への補足
デジSWなどは各桁ごとに分かれていて、0~9までしか表現できない
つまり、BCDデータにするしかPLCに読ませる方法がないってことなんですかね?
デジタルのタッチパネルなんかだと、そのまま63をBINデータでCPUに転送できるけど、
デジスイッチは63をそのまま表現できないので、しかたなく6と3に分けなければならないということなんですかねぇ??
最近は使わなくなったんですね!?
知らなかった・・・学習ページなどを見てるとさも当たり前のように使われていたので今でも現役なのかと思っていました・・・。
デジSWでの使用理由はわかりますが、単軸ロボなどで使われるのはなんかメリットあるんでしょうか?
単軸ロボで使うときにはどんな構成で使われるのでしょうか?
No.4
- 回答日時:
>なぜBINとBCDが扱われるのかについても教えていただけると幸いです。
それは、人間と表示パネルの都合ですね。
表示パネルが、1桁ずつ4ビットで0~9の値にしてデータをやり取する仕様(つまりBCD値)なのですね。
その方が計算しなくても回路やロジックが簡単になったりします。
変換や計算など難しい事は賢い方(CPUとプログラム)で対応して下さいと言う事ですね。
他にBCD値が使われるのは整数値なら問題ないのですが、少数の値を扱う時に誤差が問題になります。
2進数の少数では0.1でさえ割り切れない値になり、0.1を10回加算しても0.99999…という結果になる事もあります。
それを防ぐ方法の1つに面倒で計算速度が落ちてもBCD値を使って計算する事もあります。
http://itpro.nikkeibp.co.jp/members/ITPro/ITBASI …
プログラム言語では金融計算によく使われていたCOBOLはBCDが扱えますし、もっと身近な物では電卓も内部ではBCD値で計算している物が多いそうです。
No.3
- 回答日時:
BCDは2進数的な10進数でしかないので16進数的な発想は忘れてください
63→0110 0011とするか63→00111111とするかによって
戻すときのロジックも変わってきます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
【大喜利】【投稿~11/1】 存在しそうで存在しないモノマネ芸人の名前を教えてください
【お題】 ・存在しそうで存在しないモノマネ芸人の名前を教えてください
-
これ何て呼びますか
あなたのお住いの地域で、これ、何て呼びますか?
-
【お題】引っかけ問題(締め切り10月27日(日)23時)
【大喜利】 「日本で一番高い山は富士山……ですが!」から始まった、それは当てられるわけ無いだろ!と思ったクイズの問題
-
自分のセンスや笑いの好みに影響を受けた作品を教えて
子どもの頃に読んだ漫画などが その後の笑いの好みや自分自身のユーモアのセンスに影響することがあると思いますが、 「この作品に影響受けてるな~!」というものがあれば教えてください。
-
ハマっている「お菓子」を教えて!
この世には、おいしいお菓子がありすぎて……。 次何を食べたらいいか迷っています。 みなさんが今、ハマっている「お菓子」を教えてください!
-
10進数をBCDに変換する方法
その他(プログラミング・Web制作)
-
BCDについて
C言語・C++・C#
-
シーケンサー入力で装置でよくBCDコード1248と言いますが。
その他(自然科学)
-
-
4
バイナリとBCDコード
その他(プログラミング・Web制作)
-
5
BCD・HEX・BINについて
その他(プログラミング・Web制作)
-
6
ストローブ信号について。
その他(パソコン・周辺機器)
-
7
三菱GOTの画面切り替えについて
その他(プログラミング・Web制作)
-
8
KEYENCEのシーケンスプログラムのデバイス記号についての質問です。 自分はシーケンスプログラム初
その他(プログラミング・Web制作)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・チョコミントアイス
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・あなたの習慣について教えてください!!
- ・ハマっている「お菓子」を教えて!
- ・高校三年生の合唱祭で何を歌いましたか?
- ・【大喜利】【投稿~11/1】 存在しそうで存在しないモノマネ芸人の名前を教えてください
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・家の中でのこだわりスペースはどこですか?
- ・つい集めてしまうものはなんですか?
- ・自分のセンスや笑いの好みに影響を受けた作品を教えて
- ・【お題】引っかけ問題(締め切り10月27日(日)23時)
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・架空の映画のネタバレレビュー
- ・「お昼の放送」の思い出
- ・昨日見た夢を教えて下さい
- ・ちょっと先の未来クイズ第4問
- ・【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・10秒目をつむったら…
- ・人生のプチ美学を教えてください!!
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
首吊りどこ締めるの
-
彼女のことが好きすぎて彼女の...
-
精液の落とし方を教えてください
-
白血球が多いとどんな心配があ...
-
検便についてです。 便は取れた...
-
エクセル指定した範囲からラン...
-
勃起する時って痛いんですか? ...
-
これって喉仏ですか? 私は女性...
-
イタリアから帰国する際、肉製...
-
EXCELで式からグラフを描くには?
-
エクセルで数式の答えを数値と...
-
精子に血が・・・
-
Excel 0目標に対して数字があ...
-
リンク先のファイルを開かなく...
-
小数点以下を繰り上げたものを...
-
一番多く表示のある値(文字列...
-
健否~書類の書き方~
-
化合物のモル吸光係数データベ...
-
精子が黄色?
-
ある範囲のセルから任意の値を...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
首吊りどこ締めるの
-
彼女のことが好きすぎて彼女の...
-
白血球が多いとどんな心配があ...
-
検便についてです。 便は取れた...
-
精液の落とし方を教えてください
-
勃起する時って痛いんですか? ...
-
2つの数値のうち、数値が小さい...
-
エクセル指定した範囲からラン...
-
エクセルで数式の答えを数値と...
-
これって喉仏ですか? 私は女性...
-
小数点以下を繰り上げたものを...
-
EXCELで条件付き書式で空白セル...
-
EXCELで式からグラフを描くには?
-
イタリアから帰国する際、肉製...
-
エクセルのラベルの値(文字列...
-
Excel 0目標に対して数字があ...
-
ある範囲のセルから任意の値を...
-
風俗店へ行く前のご飯
-
リンク先のファイルを開かなく...
-
甲状腺が腫れているが血液検査...
おすすめ情報