見出し画像

町工場の日常(260514)

6:00 起床
  猫に起こされる
  寝ているベットに
  にゃぁ〜ん(エサくれ〜)と
  襲いかかってくる

  無視すると、寝室の机の上に乗り、
  大切なモノを一つずつ落としていく
  (悪役の尋問のようです‥)

  うぉー!やめてくれぇーと、
  あわてて起きてエサの準備に入る

  台所で、エサの準備してる間も、
  ずっと足元をスリスリしてきて
  めっちゃ足に毛がつく
  (作業着が紺色なので目立つ)

〜7:00 自由時間
   至福の時
7:00 妻と5歳の息子が起きる
  木曜日は、もえるゴミの日か‥

8:00 家を出る🚙
8:15 会社着
〜9:00 ゴミ捨てやらメールチェック
9:00〜17:15まで業務

そして、いつもの町工場の日常が始まる

昨日(5/13)の作業

昨日は朝の9:30から、共同研究している
お客様が来社した。

僕は今、ロボットを動かすプログラムを
Pythonという言語を使って設計している。

パワポで20枚くらいの発表資料で、
現時点での検証結果を共有する。

発表が終わったら、実際に製作した
プログラムで実験機を動かしてみる。

じゃあ、さそっく動かしてみましょうか‥

たのむ‥動いてくれよー

まあ、こういう時にかぎって、
いろんなトラブルがあるので、
昨日のうちにしっかり確認してある‥
(ハズ)

なんとか、エラーもなく
しゃかしゃかとロボットが動く

「あ、いいですよー」
明るいお客様の声

ほっと、胸をなでおろす。

でも、ほんと昨日は、あせった
お客様が見にくるぞーという時に限って、
急にロボットが動かなくなり、

ひぇー!となって、
メーカーのエンジニアに電話して、
こんな状況だけどどうしたらいい?

問い合わせしたけど、
「わかったら連絡します」と
いったん電話が切れ、音沙汰なし

うわーどうしよう、お客様くるのにー
と、バタバタして、AI(Claude)に泣きつき
対処法を教えてもらう。

もはや、忙しすぎてまわってない、
メーカーのエンジニアに電話するより、
AIに聞いたほうが、速い。

現象をAIに伝えて、Enterを押すと、
2、3秒で答えがズラズラ出てくる.

プログラム書いたりしてもらうと、2、3分くらい、考えてる時あるけど、本当にすごい時代になったもんだ、あっけにとられます。

少なくとも、忙しいすぎるエンジニアより、
いつでも、応えてくれるAIは頼もしい。

作業の終わりに、
「今日の作業をテキストにまとめて」と
お願いすると‥

下記のような内容を
スラスラと書いてくれます。

ほんとSFの世界です。

===============================
作業ログ 2026-05-13
テーマ:FANUC CRX-20iA/L 
    ROS2実機接続に向けた通信確認
===============================
■ 環境情報
▼ 開発機
- ThinkPad(Ubuntu 22.04)
- ホームディレクトリ:/home/firstsystem
- ROS2ワークスペース:~/ros2_ws

▼ ネットワーク構成
- ThinkPad(USB-LAN)  :192.168.2.48/24
- コントローラ PORT2   :192.168.2.98/24
- コントローラ PORT1   :192.168.1.120/24
- PLC(EtherNet/IP)   :192.168.1.100/24
- タッチパネル         :192.168.1.110/24
- iHMIタブレット       :192.168.2.100/24
- Cambrian(3Dビジョン):192.168.2.50/24

▼ コントローラ
- 型式:FANUC R-30iB Mini Plus
- ファームウェア:LR V9.40P/86
- 対象ロボット:CRX-20iA/L

▼ 追加済み主要オプション
- S570  ROS2インタフェース
- R603  ROS Ethernet Packets(RIPE)
- R681  GigE Interface
- R641  PC Interface
- R648  User Socket Messaging
- R636  Socket Messaging
- R626  Web Server Enhancements
- R553  HMI Device(SNPX)
- R784  Ethernet/IP Adapter
- R538  Ethernet/IP I/O Adapter
- R912  Remote Motion Interface
- R843  Remote iPendant
===============================
■ 作業内容と結果
===============================

▼ 【作業1】iHMIタブレット通信障害の解決
症状:「通信完了を待っています」メッセージが出てiHMI操作不可
原因:EtherNet/IP通信周期を32ms→8msに短縮したことで
ネットワーク負荷が増大
対処:通信周期を8ms→16msに変更
結果:✅ iHMIタブレット復旧

===============================

▼ 【作業2】EtherNet/IP疎通確認(ステップ1)
目的:ROS2不使用でPythonからコントローラに疎通確認
方法:EtherNet/IP List Identityコマンド(TCP:44818)
使用プログラム:enip_ping.py

実行結果:
接続先         :192.168.2.98:44818
TCP接続        :✅ 成功(5.4ms)
List Identity  :✅ 成功(82バイト受信)
ベンダーID     :0x0001(Rockwell)
デバイスタイプ :0x0200
プロダクトコード:0x12AF
ステータス     :0x6202(正常動作中)

備考:
- シリアル番号はFANUCの仕様で0x00000000を返す
- リビジョン表示は192.168(パースのズレ、通信は正常)

===============================

▼ 【作業3】pycomm3によるR[]読み書き試行
目的:EtherNet/IP Explicit MessagingでR[61]~R[66]へアクセス
方法:pycomm3 CIPDriver + generic_message()
使用プログラム:fanuc_pr_read.py

接続確認結果:
ベンダー   :FANUC Robotics America ✅
製品名     :FANUC Robot R30iB+ ✅
リビジョン :3.1 ✅

R[]読み書き結果:
エラー内容:class unsupported(0x05)
原因:PORT2ではExplicit Messagingが無効
CIP Class 0x6B(数値レジスタ)が非対応

結論:pycomm3でのR[]直接アクセスは不可

===============================

▼ 【作業4】Webサーバー経由でのR[]アクセス確認
目的:HTTPでR[]の読み書きを試みる

ポート9000(デフォルト):❌ アクセス不可
ポート80               :✅ アクセス可能(iHMI iPendantが開いた)

R[]読み取りURL:
http://192.168.2.98/MD/NUMREG.VA → ✅ 成功
R[61]~R[66]の値を確認(全て0、空き状態)
Access: RW(読み書き可能)

R[]書き込みURL:
http://192.168.2.98/KAREL/SetReg → ❌ 失敗
原因:SetRegというKARELプログラムが存在しない

FTPアクセス確認:
接続:✅(ユーザー名:****)
既存KARELファイル確認:
recvreg.va / recvpreg.va / sendreg.va / sendpreg.va
→ いずれも変数定義ファイル(.va)のみ
→ 実行ファイル(.pc)は dmp_cambrianapi_basic.pc のみ
結論:KARELコンパイラがないため.pcファイル作成不可

===============================

▼ 【作業5】ROS2正規ドライバ(S570)での実機接続試行
使用launchファイル:fanuc_physical_control.launch.py
実行コマンド:
ros2 launch fanuc_hardware_interface fanuc_physical_control.launch.py  
robot_model:=crx20ia_l  
robot_series:=crx  
robot_ip:=192.168.2.98  
launch_rviz:=false

通信方式:RMI(Remote Motion Interface)UDP:16001
URDFファイル:crx20ia_l.urdf.xacro
- rmi_port          : 16001(デフォルト)
- stream_motion_port: 60015(デフォルト)

RIPE設定(コントローラ側):
ポート#         :2(PORT2)
マスタIPアドレス:192.168.2.48 ← 本日設定
メンバ数        :2
更新周期        :400ms

実行結果:❌ 接続失敗
エラー:Failed to connect to the robot(attempt 0~4)
原因  :コントローラ側でRMI(ポート16001)が有効化されていない
備考  :RMI設定メニューがTPに見当たらない
コントローラバージョンアップ作業中のため未有効化の可能性

===============================

■ 作業後の重要な気づき(FANUCマニュアル B-84184JA/03 より)

▼ RMI接続フローは2段階だった
FANUCの公式マニュアル(位置データ行単位通信機能)を入手・確認した結果、
RMIの接続手順が2段階であることが判明。

ステップ1: TCP ポート16001 に FRC_Connect パケットを送信
→ コントローラが新しいポート番号を返す
ステップ2: 返ってきた新しいポートで以降の通信を継続

ポート16001はセッション確立用のみで、実際の通信は別ポートを使う仕様。
ROS2ドライバがこの2段階手順に対応できていなかった可能性あり。

▼ RMI起動の前提条件
以下の状態でないとRMIは接続を受け付けない:
・TPが無効(TP disable)
・コントローラがAUTOモード
・サーボエラーなし
・RMI_MOVEプログラムが選択されていない
→ 昨日の接続失敗はコントローラがT1モード(TP有効)だった可能性あり

▼ RMI経由でPR[]に直接書き込み可能
マニュアル 2.3.19節 FRC_WritePositionRegister コマンドで、
EtherNet/IPを使わずにPR[]へ直接書き込みができる。

送信パケット例:
{“Command” : “FRC_WritePositionRegister”,
“RegisterNumber” : 1,
“Position” : {
“X” : 100.0, “Y” : 0.0, “Z” : 500.0,
“W” : 180.0, “P” : 0.0, “R” : 0.0}
}\r\n

===============================

■ 未解決事項・次回の課題

▼ 【最終成果】EtherNet/IP経由でROS2実機接続に成功!!
使用launchファイル:robot_bringup.launch.py(ros2_fanuc_interface)
実行コマンド:
ros2 launch fanuc_control robot_bringup.launch.py  
robot_type:=crx20ia_l  
robot_ip:=192.168.2.98  
use_rmi:=false

確認済み項目:
✅ EtherNet/IP接続(192.168.2.98:44818)
✅ ハードウェアインターフェース アクティブ化
✅ MoveIt2 起動
✅ RViz2にCRX-20iA/L表示

===============================

▼ 【課題1】RMI(R912)の有効化

- TPメニューにRMI設定項目が見当たらない
- FANUCサービスエンジニアへの確認が必要
- コントローラバージョンアップ完了後に再確認

▼ 【課題2】ROS2実機接続

- RMI有効化後に再度launchコマンドを試行
- 成功後はMoveIt2との連携へ進む

▼ 【課題3】R[]書き込み手段の確立

- KARELコンパイラの入手(FANUCへ確認)
 または
- R648 User Socket Messagingを活用

===============================

■ 使用ファイル一覧

~/ros2_scripts/enip_ping.py          EtherNet/IP疎通確認
~/ros2_scripts/fanuc_pr_read.py      R[]読み書き確認(pycomm3)

===============================
■ 参考:主要URLまとめ

http://192.168.2.98/              iHMI iPendant
http://192.168.2.98/MD/NUMREG.VA  数値レジスタR[]一覧
http://192.168.2.98/md/errall.ls  エラーログ

===============================

最後まで読んで頂き、
ありがとうございました!

みなさんにとって、今日一日が
実りある一日でありますように〜♪

以上、すみひろでした。

(つづく)

いいなと思ったら応援しよう!