2021 年 07 月 26 日 Linux 技術ネタ
三菱電機社製 MELSEC IQ-R C 言語インテリジェント機能ユニット (RD55UP06-V/RD55UP12-V)で Linux を動かしてみました。その際に必要となった、技術情報をまとめてみました。
本記事は全 3 部構成になっており、今回は「Python でのプログラムの開発」についてご紹介します。
前回の記事はこちら
三菱電機社製 MELSEC IQ-R C 言語インテリジェント機能ユニット (RD55UP06-V/RD55UP12-V)
MELSEC IQ-R C 言語インテリジェント機能ユニット のハードウェアについての詳細や、専用関数については、三菱電機様にお問い合わせください。
Linux に関するお問い合わせは、リネオソリューションズまでご連絡ください。
開発環境は Linux イメージにセットアップ済みです。以下のコマンドでセットアップ済みの Python バージョンを確認できます。
(1) Windows PC 上のテキストエディタで以下のプログラムを作成し、"Helloworld.py" で保存してください。
(2) SFTP クライアントを起動して、"Helloworld.py" を C 言語インテリジェント機能ユニットの "/root" にコピーします。
(3) 以下のコマンドでプログラムを実行します。
【実行結果】
(1) デバッグを行う場合は set_trace() をコメントアウトします。Pdb モジュールをインポートし、ステップ実行を開始したい場所に pdb.set_trace() を追加することで、ステップ実行が可能となります。
(2) Python プログラムを実行すると、set_trace() を追加した箇所で停止します。
(3) "n" コマンドで次の行を実行できます。
(4) "c" コマンドで次のブレークポイントまで実行できます。
CPU ユニットと連携する手段として、"C 言語インテリジェント機能ユニット専用関数(以降、CITL 関数)" と "MELSEC iQ-R シリーズ通信関数(以降、MDR関数)" の 2 つの専用関数が用意されています。
仕様は C 言語と同じです。
(1) プログラムの作成
① CITL 関数及び MDR 関数を使用するプログラムの先頭には、ライブラリ関数のモジュールをインポートしてください。
プログラム | インポートの必要なモジュール |
---|---|
CITL 関数を使用するプログラム | from CITL_LinuxPy import * |
MDR 関数を使用するプログラム |
② CITL 関数及び MDR 関数の実行前には、必ず一度だけ以下の初期化関数を実行してください。関数実行によりシーケンサ CPU 連携に必要なモジュールがメモリ上にロードされます。関数未実行の場合、専用関数を実行することはできません。
プログラム | 実行の必要な関数 |
---|---|
CITL 関数を使用するプログラム | CITLAppInit() |
MDR 関数を使用するプログラム | mdrAppInit() |
シーケンサ CPU と連携するためのプログラム例を示します。
各機能の詳細は「MELSEC iQ-R C 言語インテリジェント機能ユニットユーザーズマニュアル(応用編)[SH-081564]」の「1.1.プログラム関連機能」を参照願います。
CITL_ToBuf/CITL_FromBuf 関数を使用して C 言語インテリジェント機能ユニットのバッファメモリにアクセスできます。
【プログラム例】
以下の例では、C 言語インテリジェント機能ユニットのバッファメモリアドレス "16384" への値書込みと読出しを行います。
MDR 関数を使用してシーケンサ CPU のデバイスメモリにアクセスできます。
【プログラム例】
以下の例では、シーケンサ CPU の D0 デバイスへの値書込みと読出しを行います。
専用命令 (G(P).CEXECUTE) を使用して、CITL_EntryDedicatedInstFunc 関数で登録したルーチン(ユーザプログラム)をシーケンサ CPU から実行することができます。
【シーケンサ側のプログラム例】
MELSEC iQ-R プログラミングマニュアル (ユニット専用命令編) [SH-081975]の「13 C 言語インテリジェント機能ユニット用命令」を参照願います。
【プログラム例】
以下の例では、シーケンサ CPU の専用命令 (G(P).CEXECUTE) 実行時に C 言語インテリジェント機能ユニットのバッファメモリアドレス "16384" の値を加算する関数 "func" を呼び出します。バッファメモリ値が 5 を超えた場合にはプログラムを終了します。
C 言語インテリジェント機能ユニット (RD55UP06-V/RD55UP12-V) にて Linux を起動した場合に使用できる機能を以下に示します。
各機能の詳細は「MELSEC iQ-R C 言語インテリジェント機能ユニットユーザーズマニュアル(応用編)[SH-081564]」を参照してください。
機能 | 対応 | 補足 | |
---|---|---|---|
プログラム関連機能 |
デバイスアクセス機能 |
○ |
|
ラベル交信機能 |
× |
||
CPU ユニットからのユーザプログラム実行機能 |
○ |
||
CPU ユニットへの割込み機能 |
× |
||
データ解析機能 |
◎ |
Python で対応 |
|
CPU ユニットからのデータ解析・統計解析実行機能 |
× |
CPU ユニットから FB・専用命令を実行すると 2802 エラーとなります。 |
|
Ethernet 通信機能 |
FTP 機能 |
◎ |
SFTP で対応 |
Telnet 機能 |
◎ |
SSH で対応 |
|
RAS 機能 |
プログラム監視 (WDT) 機能 |
× |
|
エラー履歴機能 |
○ |
||
イベント履歴機能 |
○ |
||
自己診断機能 |
× |
VxWorks を起動して対応 |
|
初期化機能 |
◎ |
SD メモリカードイメージの再書込みで対応 |
|
セキュリティ機能 |
個体情報読出し機能 |
◎ |
MAC アドレスで対応 |
ファイルアクセス制限機能 |
◎ |
Linux の標準機能で対応 |
|
サービス・アカウント設定機能 |
◎ |
Linux の標準機能で対応 |
|
IP フィルタ機能 |
◎ |
iptables で対応 |
|
時刻同期機能 |
○ |
||
収集機能 |
× |
||
オンラインユニット交換機能 |
× |
Linux は SD メモリカード装着必須のため、オンライン交換は未対応。 |
|
ファームウェアアップデート機能 |
◎ |
SD メモリカードイメージの更新で対応 |
◎:Linux や OSS の優れた機能で対応可能 ○:VxWorks 同等の機能あり ×:機能なし
C 言語インテリジェント機能ユニット (RD55UP06-V/RD55UP12-V) にて Linux を起動した場合に使用できる関数を以下に示します。
各関数の仕様は「MELSEC iQ-R C 言語インテリジェント機能ユニット プログラミングマニュアル [SH-081565] 」を参照願います。
関数名 | 対応 | 関数名 | 対応 |
---|---|---|---|
CITLAppInit |
● |
CITL_SetCollectData |
× |
CITL_ChangeFileSecurity |
× |
CITL_SetLEDStatus |
○ |
CITL_ClearError |
○ |
CITL_SetSyncTimeStatus |
× |
CITL_DisableYInt |
× |
CITL_ShutdownRom |
× |
CITL_EnableYInt |
× |
CITL_StartCollectData |
× |
CITL_EntryDedicatedInstFunc |
○ |
CITL_StartWDT |
× |
CITL_EntryTimerEvent |
× |
CITL_StopCollectData |
× |
CITL_EntryWDTInt |
× |
CITL_StopWDT |
× |
CITL_EntryYInt |
× |
CITL_SyncTime |
× |
CITL_FromBuf |
○ |
CITL_SysClkRateGet |
× |
CITL_GetCollectData |
× |
CITL_SysClkRateSet |
× |
CITL_GetCounterMicros |
× |
CITL_ToBuf |
○ |
CITL_GetCounterMillis |
× |
CITL_UnmountMemoryCard |
× |
CITL_GetErrInfo |
○ |
CITL_WaitCollectDataRecvEvent |
× |
CITL_GetFileSecurity |
× |
CITL_WaitSwitchEvent |
× |
CITL_GetIDInfo |
○ |
CITL_WaitTimerEvent |
× |
CITL_GetLEDStatus |
○ |
CITL_WaitYEvent |
× |
CITL_GetSerialNo |
○ |
CITL_X_In_Bit |
○ |
CITL_GetSwitchStatus |
× |
CITL_X_In_Word |
○ |
CITL_GetTime |
× |
CITL_X_Out_Bit |
○ |
CITL_GetUnitStatus |
× |
CITL_X_Out_Word |
○ |
CITL_MountMemoryCard |
× |
CITL_Y_In_Bit |
○ |
CITL_RegistEventLog |
○ |
CITL_Y_In_Word |
○ |
CITL_ResetWDT |
× |
- |
- |
Linux では使用できません。
関数名 | 対応 | 関数名 | 対応 |
---|---|---|---|
mdrAppInit |
● |
mdrRandR |
○ |
mdrClose |
○ |
mdrRandRLabel |
× |
mdrControl |
× |
mdrRandW |
○ |
mdrDevRst |
○ |
mdrRandWLabel |
× |
mdrDevSet |
○ |
mdrReceive |
○ |
mdrGetLabelInfo |
× |
mdrSend |
○ |
mdrInit |
○ |
mdrTypeRead |
○ |
mdrOpen |
○ |
- |
- |
Linux では使用できません。
Linux では使用できません。
CITL 関数の実行に必要なモジュールのロードと初期化を行います。
■形式
short CITLAppInit(void)
■引数
なし
■説明
■戻り値
戻り値 | 内容 |
---|---|
0(0000H) |
正常終了 |
0(0000H)以外 |
異常終了 |
MDR 関数の実行に必要なモジュールのロードと初期化を行います。
■形式
short mdrAppInit(void)
■引数
なし
■説明
■戻り値
戻り値 | 内容 |
---|---|
0(0000H) |
正常終了 |
0(0000H)以外 |
異常終了 |
C 言語インテリジェント機能ユニット (RD55UP06-V/RD55UP12-V) の管理 CPU にアクセスできます。
詳細は「MELSEC iQ-R C 言語インテリジェント機能ユニットプログラミングマニュアル [SH-081565] 」の「1.3章アクセス範囲」を参照してください。
C 言語インテリジェント機能ユニット (RD55UP06-V/RD55UP12-V) にて Linux を起動した場合に使用可能な XY 信号を以下に示します。
各入出力信号の詳細は「MELSEC iQ-R C 言語インテリジェント機能ユニットユーザーズマニュアル(応用編)[SH-081564]」を参照ください。
デバイスNo. | 信号名称 | 対応 |
---|---|---|
X0 |
ユニット READY※ |
○ |
X1 |
SD メモリカード装着状態 |
○ |
X2 |
標準 ROM シャットダウン状態 |
× |
X3 |
ユーザスクリプト実行状態 |
× |
XF |
ERR LED 状態 |
○ |
X10 |
ユーザ使用可能エリア0 |
○ |
X11 |
ユーザ使用可能エリア1 |
○ |
X12 |
ユーザ使用可能エリア2 |
○ |
X13 |
ユーザ使用可能エリア3 |
○ |
X14 |
ユーザ使用可能エリア4 |
○ |
X15 |
ユーザ使用可能エリア5 |
○ |
X16 |
ユーザ使用可能エリア6 |
○ |
X17 |
ユーザ使用可能エリア7 |
○ |
X18 |
ユーザ使用可能エリア8 |
○ |
X19 |
ユーザ使用可能エリア9 |
○ |
X1A |
ユーザ使用可能エリア10 |
○ |
X1B |
ユーザ使用可能エリア11 |
○ |
X1C |
ユーザ使用可能エリア12 |
○ |
X1D |
ユーザ使用可能エリア13 |
○ |
X1E |
ユーザ使用可能エリア14 |
○ |
X1F |
ユーザ使用可能エリア15 |
○ |
○:使用可能 ×:使用不可
※Linuxをシャットダウンした場合にもOFFとなります。
デバイスNo. | 信号名称 | 対応 |
---|---|---|
YF |
エラークリア要求 |
○ |
Y10 |
ユーザ使用可能エリア0 |
○ |
Y11 |
ユーザ使用可能エリア1 |
○ |
Y12 |
ユーザ使用可能エリア2 |
○ |
Y13 |
ユーザ使用可能エリア3 |
○ |
Y14 |
ユーザ使用可能エリア4 |
○ |
Y15 |
ユーザ使用可能エリア5 |
○ |
Y16 |
ユーザ使用可能エリア6 |
○ |
Y17 |
ユーザ使用可能エリア7 |
○ |
Y18 |
ユーザ使用可能エリア8 |
○ |
Y19 |
ユーザ使用可能エリア9 |
○ |
Y1A |
ユーザ使用可能エリア10 |
○ |
Y1B |
ユーザ使用可能エリア11 |
○ |
Y1C |
ユーザ使用可能エリア12 |
○ |
Y1D |
ユーザ使用可能エリア13 |
○ |
Y1E |
ユーザ使用可能エリア14 |
○ |
Y1F |
ユーザ使用可能エリア15 |
○ |
○:使用可能 ×:使用不可
C 言語インテリジェント機能ユニットにて Linux を起動した場合に使用可能なバッファメモリを以下に示します。
各バッファメモリの詳細は「MELSEC iQ-R C 言語インテリジェント機能ユニットユーザーズマニュアル(応用編)[SH-081564]」を参照ください。
アドレス10進(16進) | 用途 | 名称 | 対応 |
---|---|---|---|
0 (0H) |
ユニット状態エリア |
RUN LED状態 |
○ |
1 (1H) |
ERR LED状態 |
○ |
|
2 (2H) |
CARD RDY LED状態 |
○ |
|
3 (3H) |
USER LED状態 |
○ |
|
4~19 (4H~13H) |
システムエリア |
○ |
|
20 (14H) |
ユニット動作状態 |
○ |
|
21~46 (15H~2EH) |
システムエリア |
○ |
|
47~54 (2FH~36H) |
CH1用ネットワーク接続状態エリア |
IPアドレス(文字列表記) |
○ |
55~56 (37H~38H) |
IPアドレス |
○ |
|
57~58 (39H~3AH) |
サブネットマスク |
○ |
|
59~60 (3BH~3CH) |
デフォルトゲートウェイ |
○ |
|
61~69(3DH~45H) |
システムエリア |
○ |
|
70 |
CH1用共通設定状態エリア |
CH1の使用有無 |
× |
71~72 (47H~48H) |
IPアドレス |
× |
|
73~74 (49H~4AH) |
サブネットマスク |
× |
|
75~76 (4BH~4CH) |
デフォルトゲートウェイ |
× |
|
77~80(4DH~50H) |
システムエリア |
○ |
|
81~88(51H~58H) |
CH2用ネットワーク接続状態エリア |
IPアドレス(文字列表記) |
× |
89~90(59H~5AH) |
IPアドレス |
× |
|
91~92(5BH~5CH) |
サブネットマスク |
× |
|
93~94(5DH~5EH) |
デフォルトゲートウェイ |
× |
|
95~103(5FH~67H) |
システムエリア |
○ |
|
104(68H) |
CH2用共通設定状態エリア |
CH2の使用有無 |
× |
105~106(69H~6AH) |
IPアドレス |
× |
|
107~108(6BH~6CH) |
サブネットマスク |
× |
|
109~110(6DH~6EH) |
デフォルトゲートウェイ |
× |
|
111~139(6FH~8BH) |
システムエリア |
○ |
|
140 (8CH) |
現在エラーエリア |
エラーコード |
○ |
141 (8DH) |
システムエリア |
○ |
|
142~147 (8EH~93H) |
時刻 |
○ |
|
148~149 (94H~95H) |
システムエリア |
○ |
|
150 (96H) |
エラーログエリア |
エラー発生回数 |
○ |
151 (97H) |
エラーログ書込みポインタ |
○ |
|
152 (98H) |
エラーログエリア1 |
○ |
|
153 (99H) |
○ |
||
154~159 (9AH~9FH) |
○ |
||
160~161 (A0H~A1H) |
○ |
||
162~311 (A2H~137H) |
エラーログ2~16 |
○ |
|
312~799 (138H~31FH) |
システムエリア |
○ |
|
600 |
起動中のOS (0:VxWorks, 1:RD55UP06-V用Debian Linux, 2:RD55UP12-V用Debian Linux) |
● |
|
601 |
Linuxイメージ メジャーバージョン 例:Ver.1.11.01の場合1 |
● |
|
602 |
Linuxイメージ マイナーバージョン(1) 例:Ver.1.11.01の場合11 |
● |
|
603 |
Linuxイメージ マイナーバージョン(2) 例:Ver.1.11.01の場合1 |
● |
|
800 (320H) |
データ収集状態エリア |
データ欠測状態 |
× |
801 (321H) |
データ収集状態 |
× |
|
802~803 (322H~323H) |
システムエリア |
○ |
|
900 (384H) |
ファームウェアアップデート履歴格納エリア |
ファームウェアアップデート異常終了発生有無 |
× |
901~909 (385H~38DH) |
システムエリア |
× |
|
910 (38EH) |
最新のファームウェアアップデート情報 |
× |
|
911 (38FH) |
× |
||
912 (390H) |
× |
||
913 (391H) |
× |
||
914 (392H) |
× |
||
915 (393H) |
× |
||
916 (394H) |
× |
||
917 (395H) |
× |
||
918 (396H) |
× |
||
919 (397H) |
最新のファームウェアアップデート結果 |
× |
|
920 (398H) |
× |
||
921 (399H) |
ファームウェアアップデート履歴格納エリア |
前回のファームウェアアップデート情報 |
× |
922 (39AH) |
× |
||
923 (39BH) |
× |
||
924 (39CH) |
× |
||
925 (39DH) |
× |
||
926 (39EH) |
× |
||
927 (39FH) |
× |
||
928 (3A0H) |
× |
||
929 (3A1H) |
× |
||
930 (3A2H) |
前回のファームウェアアップデート結果 |
× |
|
931 (3A3H) |
× |
||
932~16383 (3A4H~3FFFH) |
システムエリア |
○ |
|
16384~2097151 (4000H~1FFFFFH) |
ユーザエリア |
○ |
○:使用可能 ●:新規追加 ×:使用不可
アドレス10進(16進) | 用途 | 名称 | 対応 |
---|---|---|---|
0 (0H) |
ユニット状態エリア |
RUN LED状態 |
○ |
1 (1H) |
ERR LED状態 |
○ |
|
2 (2H) |
CARD RDY LED状態 |
○ |
|
3 (3H) |
USER LED状態 |
○ |
|
4~19 (4H~13H) |
システムエリア |
○ |
|
20 (14H) |
ユニット動作状態 |
○ |
|
21~46 (15H~2EH) |
システムエリア |
○ |
|
47~54 (2FH~36H) |
CH1用ネットワーク接続状態エリア |
IPアドレス(文字列表記) |
○ |
55~56 (37H~38H) |
IPアドレス |
○ |
|
57~58 (39H~3AH) |
サブネットマスク |
○ |
|
59~60 (3BH~3CH) |
デフォルトゲートウェイ |
○ |
|
61~69 (3DH~45H) |
システムエリア |
○ |
|
70 (46H) |
CH1用共通設定状態エリア |
CH1の使用有無 |
× |
71~72 (47H~48H) |
IPアドレス |
× |
|
73~74 (49H~4AH) |
サブネットマスク |
× |
|
75~76 (4BH~4CH) |
デフォルトゲートウェイ |
× |
|
77~80 (4DH~50H) |
システムエリア |
○ |
|
81~88 (51H~58H) |
CH2用ネットワーク接続状態エリア |
IPアドレス(文字列表記) |
○ |
89~90 (59H~5AH) |
IPアドレス |
○ |
|
91~92 (5BH~5CH) |
サブネットマスク |
○ |
|
93~94 (5DH~5EH) |
デフォルトゲートウェイ |
○ |
|
104 (68H) |
CH2用共通設定状態エリア |
CH2の使用有無 |
× |
105~106 (69H~6AH) |
IPアドレス |
× |
|
107~108 (6BH~6CH) |
サブネットマスク |
× |
|
109~110 (6DH~6EH) |
デフォルトゲートウェイ |
× |
|
111~139 (6FH~8BH) |
システムエリア |
○ |
|
140 (8CH) |
現在エラーエリア |
エラーコード |
○ |
141 (8DH) |
システムエリア |
○ |
|
142~147 (8EH~93H) |
時刻 |
○ |
|
148~149 (94H~95H) |
システムエリア |
○ |
|
150 (96H) |
エラーログエリア |
エラー発生回数 |
○ |
151 (97H) |
エラーログ書込みポインタ |
○ |
|
152 (98H) |
エラーログエリア1 |
○ |
|
153 (99H) |
○ |
||
154~159 (9AH~9FH) |
○ |
||
160~161 (A0H~A1H) |
○ |
||
162~311 (A2H~137H) |
エラーログ2~16 |
○ |
|
312~799 (138H~31FH) |
システムエリア |
○ |
|
600 |
起動中のOS (0:VxWorks, 1:RD55UP06-V用Debian Linux, 2:RD55UP12-V用Debian Linux) |
● |
|
601 |
Linuxイメージ メジャーバージョン 例:Ver.1.11.01の場合1 |
● |
|
602 |
Linuxイメージ マイナーバージョン(1) 例:Ver.1.11.01の場合11 |
● |
|
603 |
Linuxイメージ マイナーバージョン(2) 例:Ver.1.11.01の場合1 |
● |
|
800 (320H) |
データ収集状態エリア |
データ欠測状態 |
× |
801 (321H) |
データ収集状態 |
× |
|
802~803 (322H~323H) |
システムエリア |
○ |
|
900 (384H) |
ファームウェアアップデート履歴格納エリア |
ファームウェアアップデート異常終了発生有無 |
× |
901~909 (385H~38DH) |
システムエリア |
× |
|
910 (38EH) |
最新のファームウェアアップデート情報 |
× |
|
911 (38FH) |
× |
||
912 (390H) |
× |
||
913 (391H) |
× |
||
914 (392H) |
× |
||
915 (393H) |
× |
||
916 (394H) |
× |
||
917 (395H) |
× |
||
918 (396H) |
× |
||
919 (397H) |
最新のファームウェアアップデート結果 |
× |
|
920 (398H) |
× |
||
921 (399H) |
ファームウェアアップデート履歴格納エリア |
前回のファームウェアアップデート情報 |
× |
922 (39AH) |
× |
||
923 (39BH) |
× |
||
924 (39CH) |
× |
||
925 (39DH) |
× |
||
926 (39EH) |
× |
||
927 (39FH) |
× |
||
928 (3A0H) |
× |
||
929 (3A1H) |
× |
||
930 (3A2H) |
前回のファームウェアアップデート結果 |
× |
|
931 (3A3H) |
× |
||
932~16383 (3A4H~3FFFH) |
システムエリア |
○ |
|
16384~2097151 (4000H~1FFFFFH) |
ユーザエリア |
○ |
○:使用可能 ●:新規追加 ×:使用不可
SD メモリカードは 4GB 以上の三菱電機製 SD メモリカードを使用してください。
品名 | 内容 |
---|---|
NZ1MEM-4GBSD |
SDメモリカード(4GB) |
NZ1MEM-8GBSD |
SDメモリカード(8GB) |
NZ1MEM-16GBSD |
SDメモリカード(16GB) |
2024 年 09 月 02 日 Vigiles サポート
2024 年 03 月 01 日 Vigiles サポート
2023 年 08 月 28 日 Vigiles サポート
2024 年 03 月 26 日 Yocto Project よもやま話
2023 年 07 月 25 日 Yocto Project よもやま話
2023 年 06 月 20 日 Yocto Project よもやま話
2024 年 01 月 10 日 Linux 技術ネタ
2023 年 12 月 12 日 Linux 技術ネタ
2023 年 03 月 31 日 Linux 技術ネタ
2024 年 07 月 26 日 イベントレポート
2024 年 07 月 09 日 イベントレポート
2024 年 06 月 03 日 イベントレポート
2023 年 05 月 30 日 リクルート
2022 年 12 月 27 日 リクルート
2022 年 09 月 27 日 リクルート
2024 年 09 月 25 日 信州リネオ便り
2024 年 08 月 20 日 信州リネオ便り
2024 年 08 月 07 日 信州リネオ便り
2019 年 12 月 10 日 ソリューション統括部
2019 年 12 月 10 日 ソリューション統括部
2019 年 12 月 10 日 ソリューション統括部
2019 年 12 月 13 日 マーケティング統括部
2019 年 04 月 25 日 マーケティング統括部
2018 年 12 月 18 日 マーケティング統括部