トップ事業紹介ハカルの技術辞典C系プログラミング言語(C/C++/C#/Visual C++)

Technology

C系プログラミング言語(C/C++/C#/Visual C++)

(Cけいプログラミングげんご)

C系プログラミング言語(C/C++/C#/Visual C++)

C言語

C系プログラミング言語とは、C言語を起点として発展した、またはC言語に近い記法を持つプログラミング言語や開発技術の総称です。

C、C++、C#、Visual C++は、同じ言語の新旧版ではありません。Cはマイコンや組込み機器などハードウェアに近い処理、C++は複雑なネイティブソフトウェア、C#は主に.NET上で動作するWindowsアプリケーションの開発に利用されます。Visual C++はプログラミング言語ではなく、Microsoftが提供するC/C++向けのコンパイラ、ライブラリ、デバッガなどを含む開発ツール群です。

C言語

C言語は、メモリ配置やビット単位の処理、周辺回路のレジスタ操作など、ハードウェアに近い制御を記述しやすいプログラミング言語です。処理時間やメモリ使用量を管理しやすいため、マイコン、計測器、通信機器などの組込みソフトウェアで広く利用されています。

ハカルプラスでは、組込み機器用ソフトウェアの開発言語として主にC言語を使用しています。センサやA/D変換器からの計測値取得、演算処理、接点・アナログ出力、通信制御、操作入力、表示更新、異常監視、データ保存などを実装します。

組込み開発では、単に処理結果が正しいだけでなく、決められた周期内に処理が完了すること、メモリ不足や異常値によって停止しないこと、電源断や通信異常から復帰できることが重要です。

C++

C++は、C言語との互換性を意識しながら、クラス、継承、テンプレートなどの機能を備えたプログラミング言語です。通信、画面、演算、機器制御などを機能単位に分け、共通処理を再利用しやすい構造を構築できます。

一方、機能を抽象化しすぎると、処理時間やメモリ使用量を把握しにくくなる場合があります。組込み用途では、動的メモリの使用、例外処理、ライブラリの規模、起動時間などを確認し、対象機器の性能やリアルタイム性に合わせて使用範囲を決めます。

ハカルプラスでは、組込み開発でC言語を使用するケースが多く、C++の採用は限定的ですが、対象機器、既存資産、使用するソフトウェア基盤などに応じて選定します。

C#

C#は、Microsoftが開発した.NET向けのプログラミング言語です。Windows上で動作する監視画面、設定ツール、実績管理、帳票出力、データベース連携、通信アプリケーションなどの開発に適しています。

画面部品、ファイル操作、データベース接続、ネットワーク通信などの機能を利用しやすく、FAパソコン上で動作する業務・設備支援ソフトウェアを比較的構造化して開発できます。

ハカルプラスでは、パソコンを使用した一部のソフトウェア開発でC#を採用しています。PLCや計量コントローラから取得した実績の保存、設定値の管理、帳票作成、上位システムとのデータ連携などに使用することがあります。

ただし、Windowsや.NETのバージョン、接続ドライバー、外部ライブラリなどに依存するため、FAパソコン更新時には互換性を確認する必要があります。

Visual C++

Visual C++は、Microsoftの統合開発環境であるVisual Studioに含まれる、C/C++向けの開発ツール群です。一般にMicrosoft Visual C++、またはMSVCと呼ばれるコンパイラや標準ライブラリ、デバッガなどを使用してWindows向けソフトウェアを開発します。

高速な演算処理、機器との通信、既存のC/C++ライブラリの利用、Windows APIを使用した処理などに適しています。古い設備システムでは、特定バージョンのVisual C++、MFC、ActiveX、専用通信ライブラリなどに依存している場合があります。

既設ソフトウェアを更新する際は、ソースコードだけでなく、コンパイラのバージョン、ビルド設定、32ビット・64ビット環境、ランタイム、外部ライブラリ、接続機器用ドライバーまで確認します。

計量・制御システムでの使い分け

一つの計量・制御システムでも、装置内のすべてを同じ言語で開発するとは限りません。例えば、組込み機器内部の周期処理をC言語、FAパソコン上の実績管理をC#、既存の通信・演算ソフトウェアをVisual C++、帳票や補助ツールをVisual Basic .NETで構築することがあります。

言語選定では、次の条件を整理します。

  • マイコン、CPU、FAパソコンなどの実行環境
  • 必要な応答速度と処理周期
  • 使用できるメモリやストレージ容量
  • PLC、計測器、センサなどとの通信方式
  • 画面、帳票、データベースの有無
  • 既存ソースコードやライブラリの活用可否
  • 将来のOS・端末更新と保守体制

制御周期が短く、ハードウェアを直接扱う部分ではC言語などのネイティブコードが適し、画面やデータベース連携を中心とする部分ではC#などが適する場合があります。言語単体の優劣ではなく、システム内で担う役割によって使い分けます。

制御ソフトウェアで重視する設計

計量・制御システムでは、正常時の処理だけでなく、異常値、通信断、電源断、機器応答の遅延などを想定した設計が必要です。

例えば通信処理では、応答を無期限に待たずタイムアウトを設け、再送回数を超えた場合は異常として扱います。受信データについても、範囲、データ長、チェックコード、機器状態などを確認し、異常な値をそのまま制御へ使用しないようにします。

組込み機器では、一定周期で実行する処理、割込みで行う処理、通信やデータ保存など時間を要する処理を分け、制御周期を乱さない構成にします。パソコン用ソフトウェアでは、画面処理と通信・保存処理を分離し、通信待ちによって操作画面が停止しないように設計します。

既設ソフトウェアを更新する際の注意点

既設ソフトウェアを改修する場合、使用言語が分かるだけでは十分ではありません。同じCやC++でも、開発環境、コンパイラ、ライブラリ、OS、CPUによってビルド方法や動作が異なります。

更新前には、次の情報を確認します。

  • ソースコードと実際に稼働しているプログラムの対応
  • 開発環境、コンパイラ、ビルド条件
  • 外部ライブラリとライセンス
  • 通信仕様と接続機器
  • 設定ファイル、データベース、帳票の形式
  • 32ビット版・64ビット版の違い
  • 異常時動作と復旧手順

ソースコードが残っていても、必要なライブラリや開発環境が失われていると、同じプログラムを再構築できない場合があります。そのため、実行ファイルだけでなく、ソースコード、設計資料、ビルド手順、使用部品のバージョンを一体で管理することが重要です。

ハカルプラスの対応範囲

ハカルプラスでは、要求仕様、使用機器、OS、制御対象、既設システムの構成に応じて、プログラミング言語や開発環境を選定します。

ソフトウェア単体ではなく、計測回路、組込み基板、制御盤、PLC、計量コントローラ、タッチパネル、FAパソコン、通信、データベースまで含め、機器間の役割分担や異常時動作を整理します。

既存ソフトウェアの改修では、ソースコード、開発環境、通信仕様、接続機器、データ形式などを調査し、現行環境を維持するか、新しい環境へ移行するかを検討します。

よくある質問

Q. ソースコードがあれば古いソフトウェアを再構築できますか?

A. ソースコードだけでは再構築できない場合があります。使用していたコンパイラ、外部ライブラリ、ビルド設定、機器用ドライバー、ライセンスなども必要です。

Q. 古いVisual C++のソフトウェアを新しいWindowsへ移行できますか?

A. 対象OS、コンパイラ、MFCや外部ライブラリ、32ビット・64ビット環境、接続機器のドライバーなどを確認して判断します。ソース修正やライブラリの置換が必要になる場合があります。

Q. C言語で開発された組込みソフトウェアをC#へ置き換えられますか?

A. 実行環境や役割が異なるため、単純な置き換えはできません。マイコン上の制御はC言語のまま残し、画面やデータ管理部分だけをC#で更新するなど、機能を分けて検討します。

Q. 制御ソフトウェアの応答が遅い場合、言語を変更すれば改善しますか?

A. 必ずしも言語だけが原因とは限りません。通信周期、データベース処理、画面更新、ログ保存、機器の応答時間、プログラム構造などを調査して原因を切り分けます。

Q. 異なる言語で開発された機器やソフトウェアを連携できますか?

A. 通信プロトコル、データ形式、タイミング、異常時処理が合っていれば連携できます。言語の違いよりも、機器間のインターフェース仕様を明確にすることが重要です。

関連ワード

お問い合わせ窓口

この技術について
お気軽にお問い合わせください。

お問い合わせフォーム
お問い合わせ