Посмотрите Snap7, который написан на C, но со многими оберток и портов доступны, включая Python, Node.js, .NET, C#, Arduino и один в Java называется Moka7, так как вы спросил.
Из официальной документации:
Snap7 является открытым исходным кодом, 32/64 бит, мультиплатформенный свита связи Ethernet для взаимодействия изначально с Siemens S7 PLC. Кроме того, частично поддерживаются новые процессоры 1200/1500, старый S7200, небольшие диски LOGO 0BA7/0BA8 и SINAMICS.
Я предполагаю, что ваша установка состоит из процессора S7-300 с коммуникационным модулем CP 343. Для чтения данных из ЦП в системе должен быть запущен сервер S7 (настраивается через NetPro, внутри SIMATIC Manager, как описано в Siemens commissioning manual). Удаленный компьютер должен использовать клиентскую библиотеку Snap7.
Библиотека включает в себя функции для чтения различных областей памяти, например, процесса входов (I), технологических выходов (Q), Merkers (M), таймеры (Т) и счетчики (С), а также блоки данных общего назначения (БД). Если сервер включен и конфигурация не ограничена (например, для определенного IP-адреса), клиент должен иметь доступ по умолчанию, по крайней мере, к I, Q и M, а также к некоторым системным свойствам (например, к модели CPU и версия прошивки).
Для вашего случая в Java, посмотрите документацию Moka7, которая находится в том же download package. Для начала есть несколько примеров кода.
В случае успеха функция ReadArea
вернет шестнадцатеричные данные указанных вами байтов (то есть позицию памяти для начала чтения и количество байтов). В качестве примечания, , помните, что большинство ПЛК Siemens являются big-endian, поэтому вам, возможно, придется сделать преобразование, если вы читаете области памяти, содержащие данные разных типов.
Вы прочитали документацию производителя? – hoang
LIBNODAVE: http://libnodave.sourceforge.net.Вы можете получить доступ к данным ПЛК S7 из C, C++, C#, Delphi, Pascal, Perl и VB. – avra