Недавно я разрабатывал проект. Будучи императором технологий, я завершил разработку технологического процесса и механическое проектирование. Чтобы стать более профессиональным, я начал пробовать электрическое рисование и программирование ПЛК. В сочетании с развитием Интернета вещей существует идея передавать данные в базу данных Linux и сохранять их, тем самым реализуя удаленный мониторинг внутренней или внешней сети, а также интегрируя технологию искусственного интеллекта для анализа параметров процесса для оптимизации процессов и сигналов тревоги.
Когда я попросил Ду Нианга подключить ПЛК к Raspberry Pi, я обнаружил Snap 7. Таким образом, данные ПЛК можно перенести в Linux.
В Snap7 относительно мало информации, и вся она на английском языке.
Вот краткое изложение, на котором каждый может поучиться.
Официальный сайт Snap7: http://snap7.sourceforge.net/ https://pypi.org/project/python-snap7/ http://www.6dm.club/index.php/2018/04/07/ https://blog.csdn.net/zxpbuct/article/details/80079698
Snap7 — это библиотека с открытым исходным кодом, основанная на Ethernet и связи с ПЛК Siemens серии S7.
Поддерживает связь Ethernet, включая S7-200, S7-200 Smart, S7-300, S7-400, S7-1200 и S7-1500 серии S7.
Поддерживает все платформы 32/64-бит Intel/AMD. Например: Windows (кроме Windows Me и 95); Linux и Linux-подобные (Raspberry Pi, UBeagleBone Black, DOO и т. д.), БСД; Оракул Солярис; AppleOSX
Поддерживаемые языки относительно широки Pascal; C#; C++; C; LabVIEW Python; Node.js Java.
Среди них чаще встречается Python.
ПЛК серии Siemens S7 использует следующие два метода связи: 1) Открытый TCP\IP можно использовать для подключения ПЛК и другого оборудования сторонних производителей. 2) Протокол S7 Протокол связи Ethernet, разработанный самой Siemens и используемый для внутренней аппаратной связи Siemens.
Сообщения передачи у них разные, как показано ниже:
Числа Siemens хранятся в двоичном формате с прямым порядком байтов (BIG-Endian), тогда как наши обычные компьютеры часто хранятся в режиме с прямым порядком байтов (Little-Endian). Режим Big-endian означает, что младшие биты данных хранятся в старшем адресе памяти, а старшие биты данных хранятся в младшем адресе памяти. Режим Little-endian означает, что младшие биты данных хранятся по младшему адресу памяти, а старшие биты данных сохраняются по старшему адресу памяти. Например: двойное слово DWORD 0X2F11214C. ПЛК
PC
Поэтому данные необходимо преобразовать
Snap7 При полном соединении ПК и сети ПЛК он также содержит те же три объектных компонента, что и S7: 1) Клиент 2) Сервер 3) Соавторы Примечание. В одном приложении можно одновременно использовать три объекта; одновременно можно создавать экземпляры многих объектов одного типа; многие приложения могут использовать Snap7 одновременно; Об этих трех компонентах объектов,Не очень понимающий,Доступно по адресу http://www.6dm.club/index.php/2018/04/07 и http://snap7.sourceforge.net/.
Если нам нужно прочитать 16-битные данные DB32 в 192.168.10.100 S7-300PLC, нам нужно: 1) Создайте подключение клиента Snap7; 2) Подключитесь к ПЛК; 3) Чтение данных БД; 4) Закройте Клиент (соединение будет автоматически разорвано)
Исходный код С++
#include “snap7.h”;
byte MyDB32[256]; //
byte is a portable type of snap7.h
TS7Client *Client;
void SymplyGet()
{
MyClient = new TS7Client();
MyClient->ConnectTo(“192.168.10.100”,0,2);
MyClient->DBRead(32, 0, 16, &MyDB32);
delete MyClient;
}
Семейное ведро Jetbrains 1 год 46, стабильная послепродажная гарантия
язык Си
#include “snap7.h”;
byte MyDB32[256];
S7Object Client; // It’s a native integer
void SymplyGet()
{
MyClient =
Cli_Create();
Cli_ConnectTo(MyClient, “192.168.10.100”,0,2);
Cli_DBRead(MyClient, 32, 0, 16, &MyDB32);
Cli_Destroy(&MyClient); // passed by
ref
}
#include “snap7.h”;
byte MyDB32[256]; //
byte is a portable type of snap7.h TS7Client *Client;
void SymplyGet() {
MyClient = new TS7Client();
MyClient->ConnectTo(“192.168.10.100”,0,2);
MyClient->DBRead(32, 0, 16, &MyDB32); delete MyClient; }
Загрузка исходного кода: https://sourceforge.net/projects/snap7/files/1.4.2/snap7-full-1.4.2.7z/download Загрузка исходного кода происходит очень медленно: скачать его можно из Baidu Cloud: https://pan.baidu.com/s/1pZPmijUQdYN-xia6Ll4VYg, пароль: 6eo8
Последующие действия будут записываться шаг за шагом на основе личного процесса обучения и работы.
Заявление об авторских правах: Содержание этой статьи добровольно предоставлено пользователями Интернета, а мнения, выраженные в этой статье, представляют собой только точку зрения автора. Данный сайт лишь предоставляет услуги по хранению информации, не имеет никаких прав собственности и не несет соответствующей юридической ответственности. Если вы обнаружите на этом сайте какое-либо подозрительное нарушение авторских прав/незаконный контент, отправьте электронное письмо, чтобы сообщить. После проверки этот сайт будет немедленно удален.
Издатель: Лидер стека программистов полного стека, укажите источник для перепечатки: https://javaforall.cn/203721.html Исходная ссылка: https://javaforall.cn