1. Обязательно представиться на русском языке кириллицей (заполнить поле "Имя").
  2. Фиктивные имена мы не приветствуем. Ивановых и Пупкиных здесь уже достаточно.
  3. Не писать свой вопрос в первую попавшуюся тему - вместо этого создать новую тему.
  4. За поиск, предложение и обсуждение пиратского ПО и средств взлома - бан без предупреждения.
  5. Рекламу и частные объявления "куплю/продам/есть халтура" мы не размещаем ни на каких условиях.
  6. Перед тем как что-то написать - читать здесь и здесь, а студентам - обязательно здесь.
  7. Не надо писать в ЛС администраторам свои технические вопросы. Администраторы форума отлично знают как работает форум, а не все-все контроллеры, о которых тут пишут.

ICP CON I-8811 - пердача данных на ПК

PLC, прочие контроллеры, промышленные компьютеры, операторские панели
Ответить

Автор темы
AMV
здесь недавно
здесь недавно
Сообщения: 8
Зарегистрирован: 26 ноя 2012, 08:24
Имя: Вечканов Александр Михайлович
Страна: Россия
город/регион: П.-Камчатский
Благодарил (а): 2 раза

ICP CON I-8811 - пердача данных на ПК

Сообщение AMV »

Здравствуйте!
Я начинающий инженер АСУ ТП.

Хотел попросить помощи в решении следующей задачи:

Небольшая система, базирующаяся на контроллере ICP CON I-8811 (0 слот-8064, 1 слот 8053, 2 слот- 87017RCW).
Техпрограмму для контроллера пишу на MiniOS7 Studio. Из Demo примеров разобрался с функциями работы с модулями.
Но есть потребность организации передачи данных с контроллера в пользовательскую программу (среда программирования Delphi 7) на ПК.
В представленных demo примерах не как не могу разобраться с запросами, упаковкой и передачей данных по протоколу Modbus rtu. (или может какой другой протокол использовать)
Разобрался с примерами по DCON протоколу для Delphi но на МК одновременно нельзя крутить два ресурса.

Помогите кто чем может.
Если можно небольшие (примитивные) примеры с комментариями для master (на Delphi) и slave (на MiniOS7).

alex_ugrumov
почётный участник форума
почётный участник форума
Сообщения: 626
Зарегистрирован: 29 сен 2008, 17:05
Имя: Алексей Угрюмов
Страна: Россия
город/регион: СПб
Благодарил (а): 6 раз
Поблагодарили: 22 раза

Re: ICP CON I-8811 - пердача данных на ПК

Сообщение alex_ugrumov »

Пишите в MiniOS7 Studio, значит на С. Описание Modbus http://ru.wikipedia.org/wiki/Modbus. Можете поискать модбас клиента готового для тестирования Вашего приложения в контроллере, есть такие. На крайней случай Modbus OPC сервер в демо версии сгодиться какой-нибудь. На этом форуме есть масса обсуждений. Да и протокол простой, чтобы разобраться "начинающему инженеру АСУ ТП"
AMV писал(а): Разобрался с примерами по DCON протоколу для Delphi но на МК одновременно нельзя крутить два ресурса.
Что такое "нельзя крутить 2 ресурса"?

По советам всё просто: конечно протокол Modbus. Конечно контроллер выступает Сервером (Подчинённым). Пишите базу, которая отвечает за полученные запросы от Клиента (Мастера), приложения на дельфи. Потом определяете какая информация по каким виртуальным ячейкам памяти, с которыми работает modbus, лежит. Всё: верх запрашивает, получает, отображает или записывает.
Примеры есть у того же ICP-DAS. ещё раз скажу, протокол очень простой, и тут больше вопрос как сделать обработку в рамках общего приложения (вытесняющая многозадачность, не вытесняющая и тп - да и это не вопрос, а требование ОС, тут вопрос скорее привычек в программировании), чем со структурой запроса/ответа, которая и является самой сутью протокола. А в этом вопросе Вам никто не поможет, приложение то Ваше и его архитектура Ваша и чужие примеры Вам не сгодятся, потому что опираются на чужой код и чужую архитектуру. Если есть конкретные вопросы (например, на запрос такой-то, формирую ответ такой-то, а клиент его не воспринимает, что не так), задавайте, поможем.
Alex.

Автор темы
AMV
здесь недавно
здесь недавно
Сообщения: 8
Зарегистрирован: 26 ноя 2012, 08:24
Имя: Вечканов Александр Михайлович
Страна: Россия
город/регион: П.-Камчатский
Благодарил (а): 2 раза

Re: ICP CON I-8811 - пердача данных на ПК

Сообщение AMV »

Не знаю весь день убил, а связь так и не наладил.

как сформировать запрос на получение данных из контроллера:
Адрес-01
слот-01
канал-00
тип модуля DI (8053)

alex_ugrumov
почётный участник форума
почётный участник форума
Сообщения: 626
Зарегистрирован: 29 сен 2008, 17:05
Имя: Алексей Угрюмов
Страна: Россия
город/регион: СПб
Благодарил (а): 6 раз
Поблагодарили: 22 раза

Re: ICP CON I-8811 - пердача данных на ПК

Сообщение alex_ugrumov »

AMV писал(а):Не знаю весь день убил, а связь так и не наладил.

как сформировать запрос на получение данных из контроллера:
Адрес-01
слот-01
канал-00
тип модуля DI (8053)
Приготовьтесь к тому, что убьёте ещё недели две, если не начнёте учить мат часть.
По Вашему вопросу. Протокол модбас предполагает, что внешний, со стороны контроллера, агент (Клиент или Мастер по терминологии Модбас) может посылать запросы на чтение или запись данных по некоторым адресам. Успех этого мероприятия зависит от контроллера. он может разрешить чтение запись по этим адресам или запретить.
Выделяется 4 пространства адресов: регистры ввода (16бит), регистры хранения (16бит), ячейка ввода (1бит), ячейка хранения (1бит). Для обращения к этим пространствам используются различные функции (по приведённой выше ссылке Вы о них почитаете). Часть этих пространств не предполагает (по спецификации протокола) операции записи (входные регистры и ячейки).
Что касается возможности чтения или записи в остальные ячейки по конкретным адресам, и чтения из входных ячеек/регистров по конкретным адресам, это зависит от конкретного контроллера и той программе которая на нём выполняется. Пример. У контроллера есть 8 каналов АЦП, значит обращение, скажем по десятому адресу должно приводить к ошибке. Или не приводить если реализация Модбас в этом контроллере, например, будет возвращать 0 при обращении оп несуществующему адресу. То есть именно программа контроллера (пользовательская или системная) решает какие данные вернуть, при том или ином запросе. Протокол же определяет только порядок запроса и ответа, но не говорит, что при таком то запросе нужно вернуть данные из конкретного канала АЦП конкретного модуля, конкретной шины.
Дальше к Вашему контролеру. Это свободно-программируемый контроллер. (тут до конца о терминологии не договорились, но пусть так зовётся). Вся полнота реализации любых функций лежит на программисте. В том числе и реализация операций обмена по сети. Вы сами определяете как ответить на запрос Модбас и какие данные вернуть. То есть Вы можете решить и сделать, чтобы при запросе по модбас по адресу 30001 возвращалось значение первого канала АЦП, а можете 5 канала АЦП, а можете вернуть значение переменной blablabla или количество секунд от внутренних часов. Вам решать, Вам реализовывать.
Считайте что перед Вами IBM PC 286 XT. Скажите, пожалуйста, как для этого компьютера сделать так, чтобы по модбас получить данные из 0-ой ячейки платы установленной в первый слот ISA, если эта плата - звуковая карта Sound Blaster Pro.
Так же и тут. Чтобы получить данные с канала О слота 1, модуля 8053, нужно:
1) получить эти данные от модуля использую библиотечные функции для работы с модулями ввода вывода.
2) Получить модбас запрос по СОМ порту используя библиотечные функции, распознать его, сформировать ответ с использование тех данных, которые получили от модуля ввода вывода, Сформировать модбас ответ и используя библиотечные функции запихать его в СОМ порт.
Можно инициировать получение данных от периферии по запросу по модбас. А можно постоянно в цикле опрашивать, сохранять в массиве в оперативной памяти и отдавать из памяти по запросу.
Но весь этот массив кода нужно Вам написать самому.
А как делали Вы?
Alex.

LexSL
осмотрелся
осмотрелся
Сообщения: 191
Зарегистрирован: 16 дек 2011, 15:13
Имя: Алексей
Страна: Россия
Благодарил (а): 59 раз
Поблагодарили: 44 раза

Re: ICP CON I-8811 - пердача данных на ПК

Сообщение LexSL »

...если не учить мат.часть :) - то вот пример связи панели touch200 (master) с i-8xxx(slave),
ftp://ftp.icpdas.com/pub/cd/8000cd/napd ... bc/mod8000
Пример на Borland C++, поэтому рекомендую ознакомиться с ftp://ftp.icpdas.com/pub/cd/8000cd/napd ... mpiler.pdf.
Также для серии 8000e (Ethernet) имеется куча примеров для протокола Modbus TCP:
ftp://ftp.icpdas.com/pub/cd/8000cd/napdos/modbus/8000e/

а мат.часть изучить все таки не помешает...

alex_ugrumov
почётный участник форума
почётный участник форума
Сообщения: 626
Зарегистрирован: 29 сен 2008, 17:05
Имя: Алексей Угрюмов
Страна: Россия
город/регион: СПб
Благодарил (а): 6 раз
Поблагодарили: 22 раза

Re: ICP CON I-8811 - пердача данных на ПК

Сообщение alex_ugrumov »

Да, LexSL. Но в приведённых Вами примерах нет ответа на вопрос "как сформировать запрос на получение данных из контроллера: Адрес-01, слот-01, канал-00, тип модуля DI (8053) ?"
Alex.

Ryzhij
почётный участник форума
почётный участник форума
Сообщения: 5617
Зарегистрирован: 07 окт 2011, 09:12
Имя: Гаско Вячеслав Эриевич
Страна: Россия
город/регион: Рязань
Благодарил (а): 542 раза
Поблагодарили: 705 раз

Re: ICP CON I-8811 - пердача данных на ПК

Сообщение Ryzhij »

alex_ugrumov писал(а):Да, LexSL. Но в приведённых Вами примерах нет ответа на вопрос "как сформировать запрос на получение данных из контроллера: Адрес-01, слот-01, канал-00, тип модуля DI (8053) ?"
Это соответствие (между адресами периферии, внутренными тэгами контроллера и адресами регистров протокола модбас) определяется программой контроллера.
Как запрограммируете, так и будет.
Это в случае, что Вы берёте данные из процессора по отличному от периферийной шины каналу.

Если же Вы планируете подключаться к той же периферийной шине (это извращение, ИМХО), то, чтобы не путаться под ногами у процессора, Ваш ПК обязан быть слэйвом. В этом случае опять-таки процессор контроллера (мастер) отправляет в Ваш ПК (и читает из него) данные по адресам модбас в соответствии со своей внутренней Вами написанной программой.
---------------------------------------------------
«У человека в душе дыра размером с Бога, и каждый заполняет её как может.» (Жан-Поль Сартр)
"Ту пустоту, которая остаётся в душе, когда в ней нет Бога, и весь мир не может заполнить." (святитель Николай Сербский)

alex_ugrumov
почётный участник форума
почётный участник форума
Сообщения: 626
Зарегистрирован: 29 сен 2008, 17:05
Имя: Алексей Угрюмов
Страна: Россия
город/регион: СПб
Благодарил (а): 6 раз
Поблагодарили: 22 раза

Re: ICP CON I-8811 - пердача данных на ПК

Сообщение alex_ugrumov »

Ryzhij писал(а):
alex_ugrumov писал(а):Да, LexSL. Но в приведённых Вами примерах нет ответа на вопрос "как сформировать запрос на получение данных из контроллера: Адрес-01, слот-01, канал-00, тип модуля DI (8053) ?"
Это соответствие (между адресами периферии, внутренными тэгами контроллера и адресами регистров протокола модбас) определяется программой контроллера.
Как запрограммируете, так и будет.
Это в случае, что Вы берёте данные из процессора по отличному от периферийной шины каналу.

Если же Вы планируете подключаться к той же периферийной шине (это извращение, ИМХО), то, чтобы не путаться под ногами у процессора, Ваш ПК обязан быть слэйвом. В этом случае опять-таки процессор контроллера (мастер) отправляет в Ваш ПК (и читает из него) данные по адресам модбас в соответствии со своей внутренней Вами написанной программой.
Ryzhij, я то это всё понимаю, посмотрите мои посты выше
Alex.

Ryzhij
почётный участник форума
почётный участник форума
Сообщения: 5617
Зарегистрирован: 07 окт 2011, 09:12
Имя: Гаско Вячеслав Эриевич
Страна: Россия
город/регион: Рязань
Благодарил (а): 542 раза
Поблагодарили: 705 раз

Re: ICP CON I-8811 - пердача данных на ПК

Сообщение Ryzhij »

Не обижайтесь, :ext_gimmefive: просто пост с процитированным Вами вопросом оказался ближе при написании мною сообщения.
Я, как Вы заметили, просто постарался изложить те же идеи немного иными словами.
---------------------------------------------------
«У человека в душе дыра размером с Бога, и каждый заполняет её как может.» (Жан-Поль Сартр)
"Ту пустоту, которая остаётся в душе, когда в ней нет Бога, и весь мир не может заполнить." (святитель Николай Сербский)

Автор темы
AMV
здесь недавно
здесь недавно
Сообщения: 8
Зарегистрирован: 26 ноя 2012, 08:24
Имя: Вечканов Александр Михайлович
Страна: Россия
город/регион: П.-Камчатский
Благодарил (а): 2 раза

Re: ICP CON I-8811 - пердача данных на ПК

Сообщение AMV »

Как обычно у меня:
Нижний уровень программирую на ISaGRAF (МК в основном Теконы – хорошие, надежные, но дорогие) Выставляешь архитектуру связи, заносишь переменные, подвязываешь их к устройствам, в FDB рисуешь техпрограмму,…, заливаешь на МК.
На ПК устанавливается спец ПО (скада, шлюз). Шлюз настраивается на передачу с ПК… В скаде создаёшь мнемокадр (из БД берутся переменные). Запускаешь и всё работает.
Можно конечно использовать такие программные продукты как МастерСкада или ТрейсМоде6.
Дело в том, что там весе функции реализованы в оболочке программ (единая среда программирования МК и АРМа), т.е. ты не видишь, как делается запрос, формируются ответы и т.д. если образно выразится, работаешь в основном с настройкой системы…
Но это удовольствие стоит денег и не малых.

А здесь имеются контроллеры ICP DAS на MO7 чистые,… и огромное желание разобраться в «прямом программировании».
Т.е. разработать малобюджетную систему.
MiniOS7 Studio – программирование МК
Delphi 7 – программирование верхнего уровня (пользовательской программы)

Теорию я мало-мальски знаю и интерфейс передачи RS-485 и протоколы DCON и MODBUS TRU, что там реализуётся по принципу ведущий-ведомый, но как я понимаю, разница между протоколами в том, что при запросе MODBUS TRU обращается к ячейки памяти (eeprom), а DCON напрямую к модулю. (возможно я не прав, поправьте меня)

Облазил, чуть ли не весь инет: курсы, учебники, примеры… по программированию контроллеров ISP DAS на С/С++ без использования спец ПО (СОФТ ЛОДЖИК пакетов)– нету.
По всем вопроса связанным с программированием МК одна теория (вода) с тем же MODBUS (Запрос такой-то, ответ такой-то)…. А конкретики нет. Должна быть какая-то функция запроса. МК должен как то обрабатывать запрос->формировать ответ, отправлять->машина должна принимать, преобразовывать.

Просто, что-то я упёрся в какую-то стену(перегруз) и не знаю как её обойти (не умею).
Поэтому и обратился к знающим людям (профессионалам) – к Вам.
Помогите разобраться и построить.

Но это так предисловия.

В настоящий момент при помощи DEMO примеров на CD добрался (да что там добрался доковылял):

1. На МК заливаю DCON_435.EXE – я так понимаю в данной техпрограмме реализованы не только функции опроса модулей но и обработки запросов,
формирования управляющих воздействий, команд, ответов… Т.е. полноценный алгоритм работы по DCON протоколу.
На ПК в Delphi там специальные библиотеки .DLL для работы с DCON протоколом поэтому
всё весьма просто.
Пример (может, кому пригодится):
Команда DCON типа (#AASiBjs - #01S01001)

gcPort:= Char(1); // № Com Port
gdwBaudRate:=9600; // Скорость передачи
wRtn := IOpenCom(gcPort, gdwBaudRate); // Open COM port

gdwBuf[0] := Word(gcPort); // COM Port
gdwBuf[1] := $1; // Module Address
gdwBuf[2] := $8064; // Module ID
gdwBuf[3] := 0; // CheckSum Disable or Enable
gdwBuf[4] := 100; // TimeOut = 0.1
gdwBuf[6] := 1; // string debug
gdwBuf[7] := 0; // Slot Number for 8K series
gdwBuf[5] := 1; // Логическое значение 1 или 0
gdwBuf[8] := 0; //Chenal №

wRtn:=DigitalBitOut_8K(@gdwBuf[0], @gfBuf[0], gszSend, gszReceive);//передача команды

Close_Com( gcPort );

Всё как бы работает, всё замыкается. Но контроллер выступает в типе обычной корзины расширения. Вся техпрограмма крутится на ПК (АРМе) и если оборвётся связь или ПО зависнет, то на реле так и останется Фаза.

2. Написал небольшую программу в среде MiniOS7 Studio

DO_s0_Data=(int)(pow(2,0)

iSlot=0;
DO_8(iSlot,DO_s0_Data);

Там ещё обработка других модулей и немного примитивной логики (eeprom не пользовался). Сама Техпрограмма работает
контроллер думает.

Сейчас стоит задача передать переменные наверх.
Как научить контроллер работать с ПК.
ПОМОГИТЕ РАЗОБРАТЬСЯ!!!
С чего начать, как подойти???

Если можно какой-то небольшой пример для МК (и ПК) по одной переменной. Мне бы просто надо увидеть принципы, понять саму технологию.

P.S. ни одна ссылка не открывается…

LexSL
осмотрелся
осмотрелся
Сообщения: 191
Зарегистрирован: 16 дек 2011, 15:13
Имя: Алексей
Страна: Россия
Благодарил (а): 59 раз
Поблагодарили: 44 раза

Re: ICP CON I-8811 - пердача данных на ПК

Сообщение LexSL »

AMV писал(а):P.S. ни одна ссылка не открывается…
я через total commander подключаюсь, меню->ftp->соединиться с ftp сервером->новое соединение, user = ftp, pass = ftp, сервер:[порт]:ftp.icpdas.com
Ответить

Вернуться в «Средний уровень автоматизации (управляющий)»