В течение нескольких дней я пытался использовать libnodave в качестве коммуникационной библиотеки для связи с ПЛК S7-1200 от Siemens (CPU 1214C).
С библиотекой libnodave предусмотрено несколько вещей.
Приложение Delphi работает, исполняемый файл windows работает.
На Vmware я использую Linux, и работает скомпилированный двоичный файл testISO_TCP.
Похоже, я могу использовать это, верно?
daveInterface * di;
daveConnection * dc;
_daveOSserialType fds;
ds.rfd=openSocket(102, "192.168.0.1");
fds.wfd=fds.rfd;
if (fds.rfd>0) {
di =daveNewInterface(fds,"IF1",0, daveProtoISOTCP, daveSpeed187k);
daveSetTimeout(di,5000000);
dc =daveNewConnection(di,0,0,1); // insert your rack and slot here
if (0==daveConnectPLC(dc))
{
printf("Connected..\n");
}
}
Но когда я копирую исходный код 1: 1 в свою среду разработки (Eclipse), я получаю следующее сообщение об ошибке:
IF1 error in daveConnectPLC() step 1. retrying...IF1 error in daveConnectPLC() step 1. retrying...IF1 error in daveConnectPLC() step 1. retrying...Couldn't connect to PLC.
Please make sure you use the -2 option with a CP243 but not with CPs 343 or 443.
Похоже, что есть ошибка при подключении к ПЛК. Следующая функция генерирует эту ошибку:
DaveConnectPLC (постоянный ток)
Обратите внимание, что стойка и слот остаются неизменными, если сравнивать их с исполняемым двоичным файлом в Linux!
Может ли кто-нибудь помочь мне заставить его работать в Eclipse IDE? Это довольно странно, все исполняемые файлы / исполняемые файлы работают, но когда я хочу выполнить его прямо из IDE, это не так.
Заранее спасибо.
Во-первых, все, что работает на виртуальном компьютере, отличается от работы на реальном компьютере.
То, что он работает в Windows, не гарантирует, что он работает в Linux, несмотря на тот факт, что источник одинаков и / или используются те же библиотеки.
По сути, предварительно скомпилированная программа под Linux является единственным доказательством того, что она будет работать.
Всякий раз, когда у меня возникают проблемы в этой области, я смотрю с использованной версией компилятора и настройками компилятора. Запуск кода с опцией отладки печально известен повреждением кода при аппаратной связи.
Если вы еще не использовали Wireshark, я бы рекомендовал использовать его. Это идеальный инструмент, чтобы увидеть, что происходит.