リネオブログ

MELSEC iQ-R C 言語インテリジェント機能ユニット Linux スタートアップマニュアル ~プログラムの開発 (Python) ~

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 バージョンを確認できます。

 Python バージョン

Python プログラムの実行

(1) Windows PC 上のテキストエディタで以下のプログラムを作成し、"Helloworld.py" で保存してください。

(2) SFTP クライアントを起動して、"Helloworld.py" を C 言語インテリジェント機能ユニットの "/root" にコピーします。

root にコピー

(3) 以下のコマンドでプログラムを実行します。

【実行結果】

実行結果

Python プログラムのデバッグ

(1) デバッグを行う場合は set_trace() をコメントアウトします。Pdb モジュールをインポートし、ステップ実行を開始したい場所に pdb.set_trace() を追加することで、ステップ実行が可能となります。

pdb.set_trace()

(2) Python プログラムを実行すると、set_trace() を追加した箇所で停止します。

プログラムを実行

(3) "n" コマンドで次の行を実行できます。

nコマンド

(4) "c" コマンドで次のブレークポイントまで実行できます。

cコマンド

CPU ユニットとの連携 (Python)

専用関数

CPU ユニットと連携する手段として、"C 言語インテリジェント機能ユニット専用関数(以降、CITL 関数)" と "MELSEC iQ-R シリーズ通信関数(以降、MDR関数)" の 2 つの専用関数が用意されています。
仕様は C 言語と同じです。

シーケンサ CPU 連携用プログラムの作成

(1) プログラムの作成

プログラムの作成

① CITL 関数及び MDR 関数を使用するプログラムの先頭には、ライブラリ関数のモジュールをインポートしてください。

プログラム インポートの必要なモジュール
CITL 関数を使用するプログラム from CITL_LinuxPy import *
MDR 関数を使用するプログラム

② CITL 関数及び MDR 関数の実行前には、必ず一度だけ以下の初期化関数を実行してください。関数実行によりシーケンサ CPU 連携に必要なモジュールがメモリ上にロードされます。関数未実行の場合、専用関数を実行することはできません。

プログラム 実行の必要な関数
CITL 関数を使用するプログラム CITLAppInit()
MDR 関数を使用するプログラム mdrAppInit()

シーケンサ CPU との連携例

シーケンサ CPU と連携するためのプログラム例を示します。
各機能の詳細は「MELSEC iQ-R C 言語インテリジェント機能ユニットユーザーズマニュアル(応用編)[SH-081564]」の「1.1.プログラム関連機能」を参照願います。

(1) C 言語インテリジェント機能ユニットへのバッファメモリアクセス

CITL_ToBuf/CITL_FromBuf 関数を使用して C 言語インテリジェント機能ユニットのバッファメモリにアクセスできます。

【プログラム例】
以下の例では、C 言語インテリジェント機能ユニットのバッファメモリアドレス "16384" への値書込みと読出しを行います。

プログラム例1

(2) シーケンサ CPU へのデバイスメモリアクセス

MDR 関数を使用してシーケンサ CPU のデバイスメモリにアクセスできます。

【プログラム例】
以下の例では、シーケンサ CPU の D0 デバイスへの値書込みと読出しを行います。

プログラム例2

(3) シーケンサ CPU からのユーザプログラム実行

専用命令 (G(P).CEXECUTE) を使用して、CITL_EntryDedicatedInstFunc 関数で登録したルーチン(ユーザプログラム)をシーケンサ CPU から実行することができます。

【シーケンサ側のプログラム例】
MELSEC iQ-R プログラミングマニュアル (ユニット専用命令編) [SH-081975]の「13 C 言語インテリジェント機能ユニット用命令」を参照願います。

【プログラム例】
以下の例では、シーケンサ CPU の専用命令 (G(P).CEXECUTE) 実行時に C 言語インテリジェント機能ユニットのバッファメモリアドレス "16384" の値を加算する関数 "func" を呼び出します。バッファメモリ値が 5 を超えた場合にはプログラムを終了します。

プログラム例3

Linux では CITL_EntryDedicatedInstFunc 関数を実行後にユーザプログラムを終了した場合、登録したルーチンは実行されません。登録するルーチンを継続して実行したい場合は、CITL_EntryDedicatedInstFunc 関数実行後にユーザプログラムが終了しないよう待機処理を入れてください。

Appendix A 機能一覧

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 同等の機能あり ×:機能なし

Appendix B 関数一覧

C 言語インテリジェント機能ユニット (RD55UP06-V/RD55UP12-V) にて Linux を起動した場合に使用できる関数を以下に示します。

各関数の仕様は「MELSEC iQ-R C 言語インテリジェント機能ユニット プログラミングマニュアル [SH-081565] 」を参照願います。

C 言語インテリジェント機能ユニット専用関数
関数名 対応 関数名 対応

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

×

-

-

  • 新規対応 ○対応 ×未対応

ISR 用 C 言語インテリジェント機能ユニット専用関数

Linux では使用できません。

MELSEC iQ-R シリーズ通信関数
関数名 対応 関数名 対応

mdrAppInit

●

mdrRandR

○

mdrClose

○

mdrRandRLabel

×

mdrControl

×

mdrRandW

○

mdrDevRst

○

mdrRandWLabel

×

mdrDevSet

○

mdrReceive

○

mdrGetLabelInfo

×

mdrSend

○

mdrInit

○

mdrTypeRead

○

mdrOpen

○

-

-

  • 新規対応 ○対応 ×未対応

データ解析関数

Linux では使用できません。

統計解析関数

Linux では使用できません。

Appendix C 新規関数仕様

CITLAppInit

CITL 関数の実行に必要なモジュールのロードと初期化を行います。

■形式

short CITLAppInit(void)

■引数

  なし

■説明

  • CITL 関数の実行に必要なモジュールのロードと初期化を行います。
  • モジュールのロードと初期化が完了するまで本関数は終了しません。

■戻り値

戻り値 内容

0(0000H)

正常終了

0(0000H)以外

異常終了

mdrAppInit

MDR 関数の実行に必要なモジュールのロードと初期化を行います。

■形式

short mdrAppInit(void)

■引数

  なし

■説明

  • mdr 関数の実行に必要なモジュールのロードと初期化を行います。
  • モジュールのロードと初期化が完了するまで本関数は終了しません。

■戻り値

戻り値 内容

0(0000H)

正常終了

0(0000H)以外

異常終了

Appendix D アクセス可能範囲

C 言語インテリジェント機能ユニット (RD55UP06-V/RD55UP12-V) の管理 CPU にアクセスできます。

詳細は「MELSEC iQ-R C 言語インテリジェント機能ユニットプログラミングマニュアル [SH-081565] 」の「1.3章アクセス範囲」を参照してください。

Appendix E 入出力信号

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

○

○:使用可能 ×:使用不可

Appendix F バッファメモリ

C 言語インテリジェント機能ユニットにて Linux を起動した場合に使用可能なバッファメモリを以下に示します。

各バッファメモリの詳細は「MELSEC iQ-R C 言語インテリジェント機能ユニットユーザーズマニュアル(応用編)[SH-081564]」を参照ください。

RD55UP06-V の場合
アドレス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)

ユーザエリア

○

○:使用可能 ●:新規追加 ×:使用不可

RD55UP12-Vの場合
アドレス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)

ユーザエリア

○

○:使用可能 ●:新規追加 ×:使用不可

Appendix G 使用可能な SD メモリカード

SD メモリカードは 4GB 以上の三菱電機製 SD メモリカードを使用してください。

品名 内容

NZ1MEM-4GBSD

SDメモリカード(4GB)

NZ1MEM-8GBSD

SDメモリカード(8GB)

NZ1MEM-16GBSD

SDメモリカード(16GB)

Yocto Project 公式実践講座 12 月 ~ 1 月 開催分 受講お申込み受付中!
Vigiles サポート
Yocto Project よもやま話
Yocto よもやま話 第 19 回 「Yocto Project 5.3 Whinlatter」
Yocto よもやま話 第 19 回 「Yocto Project 5.3 Whinlatter」

2026 年 02 月 09 日 Yocto Project よもやま話

Yocto よもやま話 第 18 回 「Yocto Project 5.2 Walnascar」
Yocto よもやま話 第 18 回 「Yocto Project 5.2 Walnascar」

2026 年 02 月 09 日 Yocto Project よもやま話

Yocto よもやま話 第 17 回 「Yocto Project 5.1 Styhead」
Yocto よもやま話 第 17 回 「Yocto Project 5.1 Styhead」

2026 年 02 月 09 日 Yocto Project よもやま話

Linux 技術ネタ
RISC-Vについて学ぶ-後編
RISC-Vについて学ぶ-後編

2024 年 01 月 10 日 Linux 技術ネタ

RISC-Vについて学ぶ-前編
RISC-Vについて学ぶ-前編

2023 年 12 月 12 日 Linux 技術ネタ

イベントレポート
EdgeTech+ West 2026 出展レポート
EdgeTech+ West 2026 出展レポート

2026 年 08 月 05 日 イベントレポート

EdgeTech+ 2025 出展レポート
EdgeTech+ 2025 出展レポート

2025 年 12 月 01 日 イベントレポート

EdgeTech+ West 2025 出展レポート
EdgeTech+ West 2025 出展レポート

2025 年 08 月 08 日 イベントレポート

リクルート
新卒採用、絶賛募集中!
新卒採用、絶賛募集中!

2025 年 04 月 01 日 リクルート

新卒採用、絶賛募集中!
新卒採用、絶賛募集中!

2023 年 05 月 30 日 リクルート

信州リネオ便り
信州ポケふた巡り 木曽郡木祖村編
信州ポケふた巡り 木曽郡木祖村編

2026 年 10 月 02 日 信州リネオ便り

第78回 諏訪湖祭湖上花火大会をレポート
第78回 諏訪湖祭湖上花火大会をレポート

2026 年 08 月 19 日 信州リネオ便り

松本市のアジサイ寺散策(法船寺・弘長寺)
松本市のアジサイ寺散策(法船寺・弘長寺)

2026 年 07 月 01 日 信州リネオ便り

ソリューション統括部
Zephyrブログ 第五回 「Zephyr アプリに挑戦(中編)」
Zephyrブログ 第五回 「Zephyr アプリに挑戦(中編)」

2026 年 09 月 08 日 ソリューション統括部

Zephyrブログ 第四回 「Zephyr アプリに挑戦(前編)」
Zephyrブログ 第四回 「Zephyr アプリに挑戦(前編)」

2026 年 08 月 07 日 ソリューション統括部

Zephyrブログ 第三回 「LCD に表示してみる」
Zephyrブログ 第三回 「LCD に表示してみる」

2026 年 05 月 26 日 ソリューション統括部

マーケティング統括部
大成功決起大会!!(ET2019)
大成功決起大会!!(ET2019)

2019 年 12 月 13 日 マーケティング統括部

ESEC 2019 決起大会
ESEC 2019 決起大会

2019 年 04 月 25 日 マーケティング統括部

シリコンバレー探検記 その 2
シリコンバレー探検記 その 2

2018 年 12 月 18 日 マーケティング統括部