Codesys側
まずCODESYSプロジェクトを作成し、デバイスTypeをCODESYS Control Win V3 x64にします。(実際は自分のパソコンに合わせてください)
そしてEthernet(Ethernet)を追加し、ModbusTCP Slave Deviceを装入します。
Generalを開いたらRegisterの設定などがあります。
今回は簡単に立ち上げるのは目的ですので、細かい設定の説明は致しません。
一番重要なのは:
- Slave port:つまり相手側は接続しにいくとき使ってるPort番号です。合わせる必要がありあmす。
- Holding Register・Input Registers:サーバーが何個のRegistersを持つの設定です。
(自分がSimでやるときこれは99を設定したらコンパイルエラーになりました…)
あとは隣のWriteableですね。Holding Registerが上書きされてもよいのかを設定できます。
GVL追加
Global Variable ListでRegistersの長さに合わせて変数を宣言します。
Holding Registers・Input RegisterにGVL割り付けます。
そしてWindowsのRuntimeを立ち上げます。
右下になんか64のICONがみえませんか?これを右クリックします。
Start PLCをクリックします。
OKを。
ICONの64の文字が赤くなります。それでOK。
プロジェクトをダウンロードします。RUNをかけたら、最初にSlaveがオレンジの三角がついています。つまりSlaveに接続されてない、ことです。
uiClientConnectionsは0です。
Statusからみると、いまもNot runningになっています。
Connectionは0です。
Pythonテスト
まずPythonから接続してみます。
from pyModbusTCP.client import ModbusClient client=ModbusClient() client.host=’192.168.11.240′ client.port=502 client.open() |
ModbusTCP Slaveの隣にあるICONが緑になります。
StatusにもConnectionsが1になります。
uiClientConnectionsも1になります。
そして注意するのは、プログラムの中に使わないものはField bus更新しないことになるので、Tempのプログラムでもいいので、変数を呼び出してください。