質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Raspbian

Raspbianは、DebianベースのRaspberry Pi用ディストリビューション。ハードウェア浮動小数点演算を有効にすることが可能で、Webブラウズなどの速度を向上できます。

Python 2.7

Python 2.7は2.xシリーズでは最後のメジャーバージョンです。Python3.1にある機能の多くが含まれています。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Raspberry Pi

Raspberry Piは、ラズベリーパイ財団が開発した、名刺サイズのLinuxコンピュータです。 学校で基本的なコンピュータ科学の教育を促進することを意図しています。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

2回答

2873閲覧

PythonでPLCとのソケット通信をする際に不明なエラー

TakefusaBoku

総合スコア41

Raspbian

Raspbianは、DebianベースのRaspberry Pi用ディストリビューション。ハードウェア浮動小数点演算を有効にすることが可能で、Webブラウズなどの速度を向上できます。

Python 2.7

Python 2.7は2.xシリーズでは最後のメジャーバージョンです。Python3.1にある機能の多くが含まれています。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Raspberry Pi

Raspberry Piは、ラズベリーパイ財団が開発した、名刺サイズのLinuxコンピュータです。 学校で基本的なコンピュータ科学の教育を促進することを意図しています。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2019/08/31 01:39

編集2019/08/31 01:43

PLCとソケット通信をして接続は出来ているようなのですが、デバッグしながら実行した際、変な応答があります。
また、想定している電文も返さないためつながっているのにデータが取れないという状態のようです。

Python

1import socket 2 3 host = "192.168.1.50" 4 port = 5010 5 6 client = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 7 client.connect((host, port)) 8 client.send(b"500000FFFF03000C00010001040000640000A80200") # 送信文 D100のデータ読み出し 9>>42 10 response = client.recv(1024) # 受信文

client.sendをした段階で「42」という謎のメッセージが返されて想定の電文が返ってきません。
当然、responseも入力しても何も出ない状態です。

どなたかご存知であれば教えていただけませんでしょうか。

よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

過去質問にこういうのがあります
Pythonを用いたPLCとのソケット通信について

これでどうでしょう

投稿2019/08/31 02:18

y_waiwai

総合スコア87749

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

TakefusaBoku

2019/09/08 03:16

ありがとうございます!無事に解決しました。
guest

0

PLCの仕様が不明ですが送信コマンドは16進数のバイトデータと思われます。
現在の記述だと"500000FFFF03000C00010001040000640000A80200"という文字列になるので
b"\x50\x00\x00\xFF\xFF\x03\x00\x0C\x00\x01\x0\x01\x04\x00\x00\x64\x00\x00\xA8\x02\x00"
に修正する必要があります。
client.sendは戻り値として、送信したバイト数を返すらしいので42はその値と思われます。

投稿2019/08/31 02:16

編集2019/08/31 02:18
bsk

総合スコア174

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

TakefusaBoku

2019/09/08 03:17

解説ありがとうございます!理解が進みました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問