2013年3月25日月曜日

p2vをしてみた

タイトルままですが、古いLinuxサーバを吸い上げて仮想環境に移しました。
やったことを忘れないうちにまとめておきます。

  1. VMware vCenter Converter Standalone Clientのインストール
  2. VMWare Player上にてESXi5[VMware-VMvisor-Installer-5.1.0-799733.x86_64]をインストール
  3. 吸い上げ 実環境からESXiへ
  4. ESXiからVMPlayer形式へ
といった流れで実施しました。
最後の2工程が1つになるんじゃないかと思いますが、調べていません。
工程2が少し躓いたポイント。工程3も注意点ありますので、以下に記載しておきます。

工程2
VMware-VMvisor-Installer-5.1.0-799733.x86_64をダウンロードしてきて、Vmware Player環境にインストールします。
実施した環境はThinkpad L430でしたが、標準ではIntel VT-xまわりの設定がVMware側で気に入らない模様。
リブートしてBIOS設定を変更する必要があります。
変更後、インストールが可能となりました。

工程3
実環境からESXiへデータを移すタイミングでかならず失敗するのです。
どうやら、vCenterの実行の仕方が悪いらしい。
vCenterのアイコンを右クリック「プロパティ」「互換性」タブをクリック。
特権レベルの「管理者としてこのプログラムを実行する」をクリックしてやるとOKでした。


2013年3月24日日曜日

i2cのモータドライバを使う

やっとこさ、年度末のバタバタも終わりです。
raspberrypiでi2cのモータドライバを動かします。

i2cモータドライバ
http://akizukidenshi.com/catalog/g/gK-06273/

i2cのやり方は以下を参考にしました。
http://www.pwv.co.jp/~take/TakeWiki/index.php?raspberrypi%2FRaspberry%20Pi%E3%81%A7IO%E5%88%B6%E5%BE%A1#g133bee3

/etc/modulesに以下を追加します。
i2c-dev

/etc/modprobe.d/raspi-blacklist.conf を編集します。
コメントアウト
#blacklist i2c-bcm2708

設定したら、リブートした後に以下でi2cのツールを入れておきます。
sudo apt-get install i2c-tools

配線については、
DRV8830(4pin)-Rasp 5V
DRV8830(5pin)-Rasp Gnd
DRV8830(9pin)-
DRV8830(10pin)-

DRV8830の4pinと5pinの間にセラコンを入れておきます。

これで事前準備完了です。


動作確認として、以下を実行します。


 $ sudo i2cdetect 0
WARNING! This program can confuse your I2C bus, cause data loss and worse!
I will probe file /dev/i2c-0.
I will probe address range 0x03-0x77.
Continue? [Y/n] Y
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- 64 -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --

正しく認識されています。

とりあえず、今日はここまで。

2013年2月13日水曜日

予告?i2cのモータドライバを使う

少し、更新間隔が空いてしまいました。。。
週末もバタバタとしてしまい、時間がありません。年度末は忙しいです。

忙しいのに秋月に行って以下を買ってしまいました。
http://akizukidenshi.com/catalog/g/gK-06273/
i2cのモータドライバです。

こちらをRaspberry Piで動かしてみようかと考えています。
接続すればほぼ動くのでは、と思っているので、あまり面白みがないかもしれませんが。
とりあえず、RaspberryPiでモータを回して、台車を動かすといったことをやりたいと思っています。
台車は既製品になる予定。
とりあえず、材料は揃っているので、後は手を動かすだけです。
時間が欲しい!!

2013年1月7日月曜日

libmodbusのブロードキャストについて

libmodbusのブロードキャストの方法について、暫定的に行った方法についてまとめておきます。

バージョン:
libmodbus-3.0.3

現状:
ブロードキャストでmodbus_write_registers()を使った場合、関数からの戻りが大変遅い。
ブロードキャストの設定は、modbus_set_slave()で指示通り、MODBUS_BROADCAST_ADDRESSを使った。

対応:
src/modbus.c:1253行目あたりに以下を追加した。


rc = send_msg(ctx, req, req_length);

if(ctx->slave == 0){
//printf("slave ID:0 -> return:%d\n",rc);
return rc;
}

if (rc > 0) {
uint8_t rsp[MAX_MESSAGE_LENGTH];


slaveIDが0の場合、ブロードキャストであると判断して、receiveの処理を行わないように変更しています。

上記変更後、
 make
 make install
を実行し、反映させます。


ただ、実環境では動かない場合がありました。(原因調査は時間切れです。。。)

2013年1月3日木曜日

明けましておめでとうございます

明けましておめでとうございます。
今年の目標は、、、うーん、まだ決まっていません。

2013年始まってからの流れ。
1/1 実家でノンビリ
1/2 家でノンビリ
1/3 働くか! <-今ここ

~~~
早い年明けとなりまして、libmodbusで詰まっています。
broadcastの使い方が分かっていません。
broadcastでメッセージを発行した場合、関数からの戻りが遅くなってしまう!
slaveIDの設定は、MODBUS_BROADCAST_ADDRESSという定義でやれ、との指示があるのですが、ライブラリ内をみても、あんまり使われてはいない模様?
うーん、もう少し調べてみます。

2012年12月20日木曜日

libmodbusのコマンドとファンクションコードの対応

とりあえず、必要そうなところだけまとめてみる。

Read data
code func
0x01 modbus_read_bits()
0x02 modbus_read_input_bits()
0x03 modbus_read_registers()
0x04 modbus_read_input_registers()
- modbus_report_slave_id()
Write data
code func
0x05 modbus_write_bit()
0x06 modbus_write_register()
0x0F modbus_write_bits()
0x10 modbus_write_registers()
Write and read data
code func
0x17 modbus_write_and_read_registers()


2012年12月12日水曜日

libmodbusを使う

VoyageLinuxでlibmodbusを使う。

ソースをダウンロードする。
http://libmodbus.org/

解凍する。
tar xvfz libmodbus-3.0.3.tar.gz


解凍されたディレクトリに入り、
./configure
make
make install
でOKのよう。

/tests のサンプルを実行する。
こちらも
make
だけで、コンパイルされた。


逆にtests/READMEに書いてある方法だとコンパイルできない??
gcc ./random-test-server.c -o random-test-server `pkg-config --libs --cflags libmodbus`
この場合、ソース内の
#include <modbus.h>

#include <modbus/modbus.h>
とする。

後は、ソース内のttyUSB0とかをttyS1などに変更した。

とりあえず、modbus接続された機器になんらかの指令は出せている模様。