異なるコンピューターを同じネットワークに接続する方法

挑戦する


オペレーティングシステム、ハードウェアプラットフォーム、データ転送方法、ネットワークの場所に関係なく、同じネットワークに接続する必要のあるコンピューターがいくつかあります。 作成されたネットワークにより、技術プロセスを制御する産業用コンピューターからデータをさまざまな消費者に送信し(このデータをさらに処理して)、フィードバック(実行コマンドを発行する)の可能性があります。



実行可能な手段


コンピューターを同じネットワークに接続するには、いくつかの方法があります。 たとえば、VPN。 この場合、産業用コンピューターのファームウェアをシャベルで動かしたり、ワークステーションのロジックに干渉したりするのは不便です。 最初の場合-私はまったくフラッシュしたくない、そして必要なツール/スキルがありません、プラットフォームを勉強する費用は不当に高いです。 ワークステーションのロジックへの介入(SCADA InTuch)-保証の喪失にもつながります。 さらに、ワークステーションの動作をリアルタイムで保証することは非常に重要であり、これは制御アクションに対するシステムの即時の反応の保証です。 多かれ少なかれ、しかし誰かにそれは命を救います。



他に何がありますか? たとえば、SSH。 同様の理由で適切ではありません。 必要なセキュリティレベルは非常に一貫していますが、変更の複雑さは行き止まりになります。



問題に対する許容可能な解決策


したがって、私たちは作業システムの内部に登りません。 このシステムは、簡単な方法で簡単な形式で情報を交換するための非常に手頃な手段を提供します。 原則として、これはタイムスタンプ付きのテキストであり、警告メッセージのレベル、コマンドの実行に関するレポートを示します。



自動化されたワークステーションの制御下にあるマシンからこのデータを取得し、別のマシンで作業することを妨げるものはありません。 通信機は独立しているため、最も不便な瞬間にフリーズ、クラッシュ、転倒を恐れることはありません。 ただし、このような動作は、質問に対する不適切な発言、およびその結果としての悪い決定を意味します。 さらに、機械は危険な産業施設(公立教育機関、Rostekhnadzor当局への登録が必須)に物理的に配置されていない場合があり、多くの場合、施設に追加の機器の場所がなく、提供されている場合は、設計措置、ライセンス、再登録などを実行する必要がありますe。最終的には、費用も時間もかかります。 原則として、通信チャネルは事前に設定されており、定期的な手段です。



コンピュータの通信方法自体は、明らかに、DNS、TCP \ IP、UDPに直接基づくべきではありません。



技術の選択


通信をゼロから作成するのは非常に費用がかかることは十分に理解できます。 低水準の資金に依存することも、緊密な拘束力のために採算が取れません。 明らかに、これは既存の開発に依存する高レベルのプロトコルになります。



SCADAシステムの特徴は、送信されるデータの量がそれほど多くないことですが、同時に効率が必要です。 SCADAをPCおよび携帯電話(Javaを使用)に接続しようとする場合、情報配信の速度を確保する必要があることは明らかです。 T.について。 電子メールはこれらの高レベルプロトコルから除外されます。 ftpなど、長期間に渡って設計された手段に大きく限定されたメール。



通信の最も適切なタイプは、ショートメッセージの送信に基づくプロトコルです。 基礎として、理論的には、ICQ、mail.ru、MSN、jabber、その他多数のインターネットページャーを検討できます。 実際には、すべての種類のうち、数個の断片のみが残っています。 たとえば、ICQはクローズドプロトコルであり、いつでも変更できます。 さらに、コピーライターが自分のプロトコルが「他の目的」で使用されていると判断した場合、金銭的な問題以上のものが発生します。 同じ理由で、すべての商用プロトコルまたは閉じたプロトコルは削除されます。 あまり一般的ではありませんが、プロトコルは通常のサポートを持たないか、許容できる通信品質を提供しません。 最終的に、オープン性、多数のライブラリ、トランスポート、および拡張機能の存在のおかげで、ここで彼が私たちの勝者であるジャバーです。



レバー効果


技術的には、ウィンドウ操作でリープフロッグを配置することができます-一箇所で、ファイル/ソケットからデータを読み取り、ウィンドウにメッセージを送信してフォアグラウンドにポップアップし、キーストロークをエミュレートして目的のメッセージを挿入し、送信ボタンのクリックをエミュレートしてウィンドウを最小化します。 この逆直腸法には存在する権利があります。 まさにその通り、賢者がプリンターをcom-portに接続する必要があると判断したという事実と、Windowsには事実上または適切な印刷サブシステムはないという事実により、車庫管理者のワークステーションは3年以上にわたって機能しています。 (仮想DOSプリンターを含む、ほとんどすべての問題解決方法が試されました)。



この場合、結局のところ、問題に対する人間の解決策は興味深いものです。 人間の決定は完全なコンパクトなメカニズムを前提とし、馬、マウス、キーボードを使用したランダムな操作が毎秒行われることに煩わされません。 いずれにせよ、そのようなマシンの背後で作業することはすでに不可能です(少なくとも1つのアカウントではなく、1つのデスクトップでも)。



Jabberには多数のユーザーグループがあり、相互作用の手段も開発されています。 分散化されたネットワーク、サーバーを合法的に立ち上げ、他のユーザーと接続する機能-見通しをうまく完成させます。 ただし、インターネット上には十分なサーバーがあり、独自のサーバーが必要になることはまれです。 繰り返しますが、大量のデータを転送することは可能ですが、サーバーを所有している人の親切を乱用するべきではありません。



生産手段


Pythonがプログラミング言語として選択されています。 それは非常に軽量で、「バッテリーが含まれています」、ライセンスに限定されず、その下にすべてのプラットフォームがあり、ポータブルです。 これは選択を正当化するのに十分です。



Pythonのキットでは、1つの「バッテリー」 -xmpppyを追加する必要があります。 これは、XMPP / jabberプロトコルで動作するように特別に設計された追加ライブラリです。 公式には開発されませんが、コミュニティはほぼ毎日何かを追加します(長い間公式のリリースはありませんでした)。 Runetの拡張部分には、その使用例がいくつかあり、簡単に検索できます。必要に応じてリンクが提供されます)。

したがって、コメント付きのコードは、コンピューター間/携帯電話/スマートフォン/タッチパッド接続を提供するのに十分です。 情報はjabberクライアントに届くことが理解されています。

#!/usr/bin/env python # -*- coding: utf-8 -*- '''   jabber-       Author: -=[fantom]=-@jabber.ru Data: 2011-09-03 License: GPL ''' import xmpp from time import sleep def msgparser(instance, message): '''  -  .    .           . ''' # ,    -      Python global myclient s=message.getBody() if s<>None: print '------------------------' print ' !' print ': ', message.getFrom() print ': ', s, len(s) myclient.send(xmpp.Message(message.getFrom(),'hello, '+s)) #    (  - JID-) jid=xmpp.protocol.JID('-=[fantom]=-@jabber.org') #   myclient=xmpp.Client(jid.getDomain(),debug=[None]) #   print ' \t=', myclient.connect() #'tls' print ' \t=', myclient.auth(jid.getNode(),'xxxxxxxxxxx') # 'sasl',   'xxxx' -  #   print myclient.sendInitPresence() #  .       presence = xmpp.Presence(status = ' " " . ', show = 'chat', priority = '1') print myclient.send(presence) #    myclient.RegisterHandler('message', msgparser) #     ( ) mymsg=xmpp.protocol.Message('-=[fantom]=-@jabber.ru','  !', 'chat') #   print myclient.send(mymsg) #    #      myclient.online=1 while myclient.online==1: #  sleep -    ,       #sleep(2) myclient.Process(1) #    myclient.disconnect()
      
      





上記のコードは、将来の問題の99.5%を解決するのに十分なコメントが付けられています。

産業目的では、Windowsオペレーティングシステムファミリを使用することはお勧めしません。 これはホリバーの別のラウンドではなく、産業用途での悲しい経験です。 さらに、外部ハードウェアとPCソフトウェアをバンドルする機能は、競合他社と比較して非常に制限されています。 強い欲求と過剰なお金で、この問題は解決できますが、「ズボンが同じように見えるのに、なぜもっとお金を払うのですか」?



簡単な要約


上記の例では、AWPとクライアント間の最初から最後までの通信メカニズムは開示されていません。 任意の多数のコンピューターと、ネットワークの意味で任意の奇妙な場所にあるマシンとの接続を提供する部分のみが解決されています。 プロセッサ(または1つのプロセッサのロジック)をさらに構築することで、情報インフラストラクチャを作成する際の無制限のタスクを解決できます。 組み込みのセキュリティ機能により、最初は多くのギャップを埋めることができます。 高レベルのプロトコルを使用すると、ユーザーの利益のためにその上に追加のアドオンを作成できます。 安定した接続を確保すると、診断とトラブルシューティングの時間と費用が削減されます。 自動制御システムのエンジニアは、この方法で1時間以上の自由時間と神経を節約できると述べました。 PCに接続された外部デバイス(センサー、盗難/火災警報器、測定器)をリモートで制御およびプログラムできます。



All Articles