RPi + CODESYSでログインできなくなった時

手持ちの（かなり使い古した）RPiにCODESYSを入れて開発していると、時々CODESYS IDEとの接続時にユーザーとパスワードを入れても、ログインできない（何度もきいてくる）時があります。

私のRPi 3+、発売が2018年3月だから、5年くらい前のものかな。

RPiの基盤やACアダプタの電源出力が弱っている可能性もあるのですが、時々起動しないことがあって、それが発生すると、その後、こういう事象が発生しています。

CODESYS FORGEを見ると、時々この手のトラブルがあるようなのですが、だれもまとめておらず、現在のランタイムではフォルダ構成が違うようで混乱をきたしているようです。

https://forge.codesys.com/forge/talk/Runtime/thread/c75cd203e2/#74ea


日本語の情報では皆無なのですが、ま、それは仕方ないか、という感じです。
CODESYSをやっていると、英語が得意になります（笑

# CODESYSのバージョン

本記事では、CODESYS V3.5 SP19,  RPiのランタイムパッケージは、4.11.0.0を使っています。

Raspberry Pi OSのバージョンは12.1 (2024/07/04)です

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/408008/d950d364-f225-64c4-fb79-f2c7f0d67425.png)



# RPi+CODESYSのユーザー管理システムについて

A）RPiのインストールの時点で、管理者ユーザー＋パスワードを作っています。
B）その後、CODESYSのランタイムをCODESYSのメニューからインストールした後、最初の接続時に、CODESYS操作用のユーザー＋パスワードを作ります。

なので、A),B)の２つの異なるユーザーを管理しているはずです。混乱しないようにしましょう。

# RPiにSSHでログインする

CODESYSの利用を念頭においたRPiのインストールでは、SSHでパスワードでのログインを有効にしてください。セキュリティを高めたいシステムで、開発が終わったなら、鍵によるログインで作り直してもいいかもしれません。

当然、Windowsのコマンドプロンプトでも、SSHで、A）のユーザーでログインできるようになっているはずです。

固定IPを付けるのが楽ですが、もしDHCPでアドレスを取っていたら、SSHできません。

CODESYSがインストールしてあるPCからだと、（メニュー）ツール>Raspberry Piを更新　から、Raspberry Piパネルが出てきます。ここで、ターゲットの選択の[ブラウズ]ボタンを押すと、ネットワーク上のRaspberry Piのスキャンして、IPを出すことができます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/408008/e2cfe1bb-635b-5765-695a-b7bbbf8ce893.png)

このIPアドレスをつかって、コマンドプロンプトから、

SSH (Aのユーザー名)@(IPアドレス）

で、RPiを直接Linuxコマンドで操作できます。

# CODESYSのPLCファイルシステムはどこにマウントされているか？

デバイスパネルの、Deviceを選択して、ファイルタブを開くと、RPi内のファイルが見えますが、この / というのは、SSHでログインしてみえる / ではありません。

CODESYS

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/408008/8c434c36-265b-bfa1-4f64-21ffe3cf1dfb.png)

SSH

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/408008/da64d4f2-a3d0-5704-40e0-342cf6d8e86a.png)


/var/opt/codesys　が、 CODESYSから見えるRPi PLCの / になっています。
また、一部は隠しファイルになっていて、ログインできなくなる原因のユーザーファイルは、隠しファイルになっています。

SSHから、CODESYSのルートのファイルの全てのファイルを表示させるときは、

cd /var/opt/codesys
ls -a

とします。

# ログインできなくなったらユーザー管理ファイルを消せばOk

.GroupDatabase.csv_
.GroupDatabase.csv
.UserDatabase.csv_
.UserDatabase.csv
.UserMgmtRightsDB.csv

これらのファイルを消せばユーザーがリセットされます。
ただ、rm で消そうとしたときに権限がない、と言われるのではないかと思います。

sudo rm 

として消してください。

# RPiのランタイムのアップデートやアンインストールでエラーが出る

PRi、CODESYSのランタイムをアップグレードしたり、アンインストールと、エラー表示される時があります。

これは、CODESYSで、Deviceのファイルタブから何かファイルを B)のユーザーでアップロードすると、SSHでA)のユーザーで/var/opt/codesys フォルダをCODESYSが消せなくなることが原因のようです。

CODESYSのIDEは、ランタイムに関する操作は、A)のユーザーを使います。

その場合、SSHでログインして

cd /var/opt
sudo rm -rf codesys

これで消せなかった codesysフォルダが丸ごと消えます。
その後、CODESYSからRPiのランタイムを削除したり更新してみてください。



# RPi＋CODESYSによるシステムの欠点と利点

安定性は、(CODESYS+)PLCのほうが勝るのですが、RPiなので、（ヒマがあるときに）予備のSDカードを作っておけば、回復・再構築は速いです。

あと、開発においては、プログラムやデータのアップロードがめちゃめちゃ速い。
PLCに比べ、メモリが死ぬほどあって嬉しい、
安い、予備とか交換用のものを準備してもまだ安い、いろんなことに使える。

などなど。

開発終わってから有名日本企業とかのCODESYS-PLCに移植すればいいのでは？と思いますよね。
でもPLC側のCODESYSのバージョンが古く、新しい機能がなくて、がっかりすることも。
CODESYSを採用しているPLCメーカーさんには、ぜひ頑張ってもらいたいです。

せめて２年に１度キャッチアップしてほしいです。

新しい技術をみんなでアピールできるチャンスなのに、日本のCODESYS-PLCメーカーさん、なんでこんなにほっとくのかな、知らんけど。


# 最後に

高度ではないけど、トラブルで手がでなくなったとき、どう回復したら一番効率的か、速いか、というノウハウがとても大事だと思うんですよね。

「CODESYS、トラブルがあると誰もわからない、手も足もでない」、ということになりがちですが、そうなると、誰も使わなくなってしまいます。


私のノウハウでよかったら、蓄積していますので、ちょこちょこ共有していきます！

このような技術的なご相談も、私でよければ、お気軽にどうぞ。（Xから）
技術を継承できる会社さんに、大事なところを伝えたり、教えていきたいと思っています。（大事）


## お願い

守秘が必要なものは、守秘契約をしてからにしてください。

守秘のファイルを知らない人からドーンと送ってくるって、中抜き業者さんとか、技術者が辞めた管理職の人が、中身知らなかったりしますし、安くできるとこ探しているだけなのですかね。

技術を継承できる会社さんに、大事なところを伝えたり、教えていきたいと思っています。（大事なので２回目）