Профиль должен быть заполнен на русском языке кириллицей. Заполнение профиля заведомо ложными или некорректными данными - причина возможного отказа в регистрации на форуме.

исходник для i-7188EX + m-7045D

КИП и датчики

Автор темы
rexmoney
здесь недавно
здесь недавно
Сообщения: 4
Зарегистрирован: 04 авг 2011, 07:18
Ф.И.О.: Роман

исходник для i-7188EX + m-7045D

Сообщение rexmoney » 05 авг 2011, 02:10

Здравствуйте!
Не буду описывать всю ситуацию, коротко один вопрос:
Есть программа MiniOS7 Studio, процессор ICP CON I-7188EX, дискретный модуль ICP CON M-7045D.
Как выглядит исходный текст, для написания программы, которая будит крутится в процессоре и управлять выходами модуля 7045?
Например: поочередно включать выходы модуля, с интервалом 1 сек.
Заранние Спасибо!!!!

Аватара пользователя

Никита
почётный участник форума
почётный участник форума
Сообщения: 2499
Зарегистрирован: 20 янв 2010, 22:23
Ф.И.О.: Никита
Откуда: Мурманск
Благодарил (а): 3 раза
Поблагодарили: 13 раз
Контактная информация:

Re: исходник для i-7188EX + m-7045D

Сообщение Никита » 05 авг 2011, 14:10

В смысле как будет выглядеть?
Выглядеть будет как программа:) Если не ошибаюсь, MiniOS7 Studio - это IDE к борландовским компилятору и линкеру.
Соответственно нужно просто писать программу на С, формирующая нужные пакеты (Modbus/DCON) и отправляющая их в модуль. Библиотеки для работы с протоколами у ICP были. Не знаю насчет русского, но на английском есть и их описание, устанавливалось вместе со всем софтом от контроллера. Где-то и у меня было.
Документация по модулю (описание обмена) здесь: http://www.icpdas.com/products/Remote_I ... 45-npn.htm
Руковоство программиста для контроллера - http://www.icpdas.com/products/PAC/i-71 ... htm#manual, первая сверху ссылка.
Там в конце есть и какие-то рыбы программ.
Конкретизируете вопрос - попробую ответить точнее
Опыт - это когда на смену вопросам: "Что? Где? Когда? Как? Почему?" приходит единственный вопрос: "Нахрена? "


Автор темы
rexmoney
здесь недавно
здесь недавно
Сообщения: 4
Зарегистрирован: 04 авг 2011, 07:18
Ф.И.О.: Роман

Re: исходник для i-7188EX + m-7045D

Сообщение rexmoney » 08 авг 2011, 04:11

Спасибо, Никита, что откликнулись.
Вы пишите конкретизировать свой вопрос, но я написал:
Например: поочередно включать выходы модуля, с интервалом 1 сек.
Я прошу Вас дать мне исходный текст для этого процессора, чтобы он выполнял выше приведенные действия.
Я не могу понять, как процессор общается с внешними модулями.
Даже можно просто привести пример программы, которая включит выход №1 на модуле DO1 и все.
Я надеюсь не сильно «напрягаю» Вас?
Спасибо!
PS с англ. яз. проблемы, переводчики лубуду пишут.

Аватара пользователя

Никита
почётный участник форума
почётный участник форума
Сообщения: 2499
Зарегистрирован: 20 янв 2010, 22:23
Ф.И.О.: Никита
Откуда: Мурманск
Благодарил (а): 3 раза
Поблагодарили: 13 раз
Контактная информация:

Re: исходник для i-7188EX + m-7045D

Сообщение Никита » 08 авг 2011, 16:10

rexmoney, проблема в том, что у меня этих железок сейчас под рукой нет и свободно взять напрокат можно только с первого сентября в родной альма-матер. А лечить геморрой по телевизору в нашей стране умеет только Кашпировский :) Вечером (нашим, по Москве) покопаюсь, конечно, в архивах, может чего из живых программ осталось.
Вторая проблема - что именно с модулями серии М (с поддержкой модбаса) я на уровне написания программ не работал. Доводилось писать отдельно - обмен по DCON с модулями i7000 и по модбасу с данфоссовскими ECL-300.
Вкратце методика.
Протокол DCON
#AA00(Data)
Description:
Sets the digital output value of the lower eight channels.
Syntax:
#AA00(Data)[CHKSUM](CR)
# Delimiter character
AA Address of the module to be set (00 to FF)
00 Command to set the digital output value of the
lower eight channels
(Data) A two-digit hexadecimal value, where bit 0
corresponds to DO0, bit 1 corresponds to DO1, etc.
When the bit is 1, it denotes that the digital output
channel is on, and 0 denotes that the digital output
channel is off.

Перевод на русский: (кстати, в ветке рядом viewtopic.php?f=20&t=955&hilit=FTP+%D0%BF%D1%80%D0%BE%D1%81%D0%BE%D1%84%D1%82%D0%B0 давал ссылку на описание протокола от устройств ADAM-4000 на русском. Они похожи, можно посмотреть принципы формирования команд)
В порт, к которому подключен модуль надо отправить строку вида '#__00xx'. Вместо подчеркивания вставить двузначный шестнадцатеричный адрес в сети, который при конфигурировании прописан в модуле. Вторые два нуля неизменны и обозначают обращение к первым восьми каналам. Для старшего байта (каналы 8..15) 00 заменяется на 0A. Последние две цифры (xx) - шестнадцатеричный байт состояния каналов. (все включены 11111111b=0xFFh, все выключены - 0x00h, остальное - двоичная и шестнадцатеричная арифметика)
Т.е. для модуля с адресом 01 для включения первого канала в порт посылается строка "#010001", для выключения - "#010000". При работе из собственной программы в конце приведенных строк дописывается возврат каретки (0х0Dh). В принципе, при наличии прозрачного преобразователя USB/232<->485 и модуля настроенного на работу по DCON, (модуль изначально настроен на модбас) эти строки можно спокойно слать в порт гипертерминалом, там, если память не изменяет, строка просто завершается нажатием Enter.
Есть еще команды побитовой установки выходов, надо смотреть, пока лень, если надо - посмотрю, но принцип тот же.
Да, еще - в данном случае все без использования контрольной суммы - при настройке модуля надо либо отключить ее использование, либо дополнительно последним байтом ставить младший байт суммы всех символов строки, кроме возврата каретки.
Modbus RTU (настройка по умолчанию для M-7045)
Идея та же - посылка команд в модуль через com-порт , но Modbus-RTU менее экзотичен, думаю найдете описание фреймов сами. Не найдете или не поймете - пишите, расскажу. Актуальны 5-я и 15-я(0x0F) функции - одиночная и групповая запись выходов соответственно. Вроде (не уверен) в поставке библиотек от ICP были и функции формирования фреймов с подсчетом контрольной суммы. Нюанс - модбас более критичен к временам и паузам, нежели DCON, придется обратить на это внимание.
Живые примеры поищу, но пока ничего не обещаю. А вы определяйтесь с протоколом обмена. Лично я бы для самописных поделок предпочел перенастроить модуль на работу с DCON.
Опыт - это когда на смену вопросам: "Что? Где? Когда? Как? Почему?" приходит единственный вопрос: "Нахрена? "


Автор темы
rexmoney
здесь недавно
здесь недавно
Сообщения: 4
Зарегистрирован: 04 авг 2011, 07:18
Ф.И.О.: Роман

Re: исходник для i-7188EX + m-7045D

Сообщение rexmoney » 09 авг 2011, 07:50

Настроил модули на протокол DCON. Могу управлять ими через конвертер интерфейсов 232<-->485 командами через терминал. Но как эти команды применить в miniOS7 Studio.
Я же не могу написать:
for (i=0;i<10;i++)
{
#010001
#010000
}
Нашел программы, но они большие и на протоколе Modbus, не че не понял.


Alexander
БАН
БАН
Сообщения: 642
Зарегистрирован: 03 июн 2010, 11:26
Ф.И.О.: Козин Александр Елисеевич
Благодарил (а): 2 раза
Поблагодарили: 5 раз
Забанен: Бессрочно

Re: исходник для i-7188EX + m-7045D

Сообщение Alexander » 09 авг 2011, 08:49

rexmoney, Вряд-ли вам кто-то вот так влет расскажет и покажет. Эта программа - несколько страниц листинга на BorlandС. С соответствующими затратами времени. И то, если есть готовая библиотека поддержки Modbus или DCON, в зависимости от того, по какому протоколу работает модуль...

Аватара пользователя

MuadDib
не первый раз у нас
не первый раз у нас
Сообщения: 359
Зарегистрирован: 31 июл 2010, 08:12
Ф.И.О.: Журавлев Павел Евгеньевич
Поблагодарили: 1 раз

Re: исходник для i-7188EX + m-7045D

Сообщение MuadDib » 09 авг 2011, 10:14

Заходите на ftp.icpdas.com. Там в каталоге /pub/cd/8000cd/napdos/7188e/demo/bc_tc/ есть множество демок. Демки для Modbus нет, но есть демки для работы с модулями DCON. Там же есть примеры программ, работающих с таймером.

В /pub/cd/8000cd/napdos/MiniOS7/Document/minios7_api_functions_v1.14.pdf есть описание основных функций, входящих в библиотеки ICP DAS.

Аватара пользователя

Никита
почётный участник форума
почётный участник форума
Сообщения: 2499
Зарегистрирован: 20 янв 2010, 22:23
Ф.И.О.: Никита
Откуда: Мурманск
Благодарил (а): 3 раза
Поблагодарили: 13 раз
Контактная информация:

Re: исходник для i-7188EX + m-7045D

Сообщение Никита » 09 авг 2011, 11:12

rexmoney, к сожалению ничего путного дома не отыскал.
Я собственно и просил конкретизировать вопрос - разобраться с протоколом и разобраться как на C писать в порты данные - это разные проблемы.
Сложно с вами, ибо документации куча, все расписано, но на импортном языке. Тем не менее, попробуем:)
у вас два варианта. Первый - изучить по русскоязычным учебникам работу с СОМ-портами на языке С. Никто не запрещает и на ассемблере напрямую общаться с UART контроллера, смысл - просто передать в нужный порт строку. Таких книг у меня электронных нет, все только в бумаге где-то 20-летней давности.
Второй - пользоваться родными библиотеками. Теоретически с ними проще, на практике иногда появляются неожиданные затыки с линкером - то ему одно не так, то другое... При наличии опыта работы с С/С++ и программирования для DOS и реального режима процессоров x86 все решаемо.
Документацию по функциям в 7188.h, ищите на диске от контроллера или в гугле файл 7188libe.pdf. Русскоязычной не видел. Только на китайском еще:)
Или, в вашем случае - ссылкой от MuadDib смотреть документацию именно по MiniOs7, так даже правильнее, хотя функции большей частью одинаковы.
Так вот ко второму варианту (на базе исходников от ICP из комплекта демок)- не уверен в том что вообще скомпилируется, постараюсь просто показать что и как. Отладка за вами.

Код: Выделить всё

/* Compile mode: large - настройка в BorlandС знаю где, в MiniOS Studio - смотрите сами*/
#include <stdio.h>
#include "..\..\lib\7188e.h" //тут путь к заголовку библиотек- может не найти, придется прописать вручную

void main()
{
   unsigned char OutBuf[],InBuf[];//переменные для строк команд и ответов
   int iRet; //код ошибки обмена


//необходимая процедура - вызов библиотечной функции инициализации порта.
//параметры: COM2, скорость 9600, 8 бит данных, без четности, 1 стоповый бит
//проверьте настройки самого модуля, должно совпадать

InstallCom(2,9600,8,0,1);

//формируем строку команды включения - для библиотечных функций возврат каретки не нужен
strcpy (OutBuf,"#010001");

//посылаем ее модулю
//параметры: 2-COM2, OutBuf - собственно команда, 0-контрольная сумма не нужна

iRet=SendCmdTo7000(2,OutBuf,0);

//пауза 10мс чтобы железо успело отработать
delay(10); //вот за Delay не уверен, что работает в MiniOS, надо пробовать


//запись команды на выключение канала (0 в последний символ)
OutBuf[5]='0'

//пауза 1с
delay(1000)

//посылка команды выключения с новой строкой
iRet=SendCmdTo7000(2,OutBuf,0);

//тут ваши дополнения по логике программы

//освобождаем порт COM2
RestoreCom(2);

return();
}   


В том же документе, ссылку на который дал MuadDib, есть и описания функций ToCom и ToComStr. Первая посылает в порт байт, вторая - строку. Эти функции не имеют представления ни о модулях, ни о контрольных суммах. Просто шлют что им сказано.
Опыт - это когда на смену вопросам: "Что? Где? Когда? Как? Почему?" приходит единственный вопрос: "Нахрена? "


Автор темы
rexmoney
здесь недавно
здесь недавно
Сообщения: 4
Зарегистрирован: 04 авг 2011, 07:18
Ф.И.О.: Роман

Re: исходник для i-7188EX + m-7045D

Сообщение rexmoney » 10 авг 2011, 07:57

Спасибо, Никита!
Вам памятник нужно поставить за Ваше терпение.
Получилось управлять модулем через контролер.
#include <icpdas.h>
#include "i7188e\7188e.h"
int iRet;
void main()
{
InstallCom(2,9600,8,0,1);
iRet=SendCmdTo7000(2,"#070001",0); //включить первый выход модуля №7
RestoreCom(2);
}
Теперь займусь аналоговыми модулями.
Еще раз СПАСИБО!!!

Аватара пользователя

Никита
почётный участник форума
почётный участник форума
Сообщения: 2499
Зарегистрирован: 20 янв 2010, 22:23
Ф.И.О.: Никита
Откуда: Мурманск
Благодарил (а): 3 раза
Поблагодарили: 13 раз
Контактная информация:

Re: исходник для i-7188EX + m-7045D

Сообщение Никита » 10 авг 2011, 09:18

Не за что. Это не терпение, это просто свободное время в ожидании техусловий для работы:)
Посмотрел листинг еще раз - пропущено (точнее убрано за ненадобностью), но не полностью, два момента.
- переменная iRet содержит код ошибки обмена, и его, кроме получения, неплохо бы анализировать
- после паузы в 10мс для устаканивания электроники в первоисточнике проводится обратное чтение состояния модуля, дабы удостовериться что все правильно. Именно для этого объявлена неиспользуемая строка InBuf.
Успехов в освоении.
Вдогонку - www.ssau.ru/files/resources/sotrudniki/grafkin_a_v.pdf - в приложениях описание команд модулей.
Опыт - это когда на смену вопросам: "Что? Где? Когда? Как? Почему?" приходит единственный вопрос: "Нахрена? "


mary_
новенький
новенький
Сообщения: 2
Зарегистрирован: 23 ноя 2011, 06:40
Ф.И.О.: Фамилия

Re: исходник для i-7188EX + m-7045D

Сообщение mary_ » 23 ноя 2011, 06:47

Добрый день.
Никак не могу разобраться, необходимо получать данные с com порта icp con i-7188ex, потом дальше продолжать с ними работать. Но вот проблема: никак не могу победить ошибку "Undefined symbol _InstallCom in module ..".
Сократила программу до пары строк:
#include "..\lib\7188e.h"
void main ()
{
int port = 1;
InstallCom (port, 9600,8,0);
}
Написала на TC++, подключила все необходимые библиотеки с диска, как написано на сайте http://mtaalamu.ru/blog/980.html настроила компилятор.
Подскажите что можно сделать!


Alexander
БАН
БАН
Сообщения: 642
Зарегистрирован: 03 июн 2010, 11:26
Ф.И.О.: Козин Александр Елисеевич
Благодарил (а): 2 раза
Поблагодарили: 5 раз
Забанен: Бессрочно

Re: исходник для i-7188EX + m-7045D

Сообщение Alexander » 23 ноя 2011, 09:50

Давно не брал я этих "шашек в руки", но, похоже у вас коммуникационная библиотека не входит в библиотеку 7188e.h, и должна указываться в секции include отдельно.

Аватара пользователя

Никита
почётный участник форума
почётный участник форума
Сообщения: 2499
Зарегистрирован: 20 янв 2010, 22:23
Ф.И.О.: Никита
Откуда: Мурманск
Благодарил (а): 3 раза
Поблагодарили: 13 раз
Контактная информация:

Re: исходник для i-7188EX + m-7045D

Сообщение Никита » 23 ноя 2011, 10:13

Ну во-первых - сам 7188e.h находится? Все нормально настроено?
В-вторых вижу несоответствие количества формальных (5) и фактически переданных (4) параметров функции.
Это так, с ходу. Надо смотреть подробнее все ошибки и предупреждения
Опыт - это когда на смену вопросам: "Что? Где? Когда? Как? Почему?" приходит единственный вопрос: "Нахрена? "


mary_
новенький
новенький
Сообщения: 2
Зарегистрирован: 23 ноя 2011, 06:40
Ф.И.О.: Фамилия

Re: исходник для i-7188EX + m-7045D

Сообщение mary_ » 23 ноя 2011, 11:21

Для теста я просто подключила h файл и пытаюсь выполнить функцию InitLib(), т.е.
#include "..\lib\7188e.h"
void main ()
{
InitLib();
}
ошибка все такая же: Undefined symbol _InitLib in module .. больше нет не ошибок, не предупреждений
H файл лежит в C:\TC\LIB\7188e.h

а вот насчет этого не поняла? "похоже у вас коммуникационная библиотека не входит в библиотеку 7188e.h, и должна указываться в секции include отдельно."


Alexander
БАН
БАН
Сообщения: 642
Зарегистрирован: 03 июн 2010, 11:26
Ф.И.О.: Козин Александр Елисеевич
Благодарил (а): 2 раза
Поблагодарили: 5 раз
Забанен: Бессрочно

Re: исходник для i-7188EX + m-7045D

Сообщение Alexander » 23 ноя 2011, 12:45

А вот теперь уже похоже на то, о чем упоминает коллега Никита. У вас, скорее всего, нет доступа к библиотеке. Обычно - неправильно указан путь. А про коммуникационную библиотеку - это у какого-то из контроллеров она была в отдельном файле и с отдельным файлом заголовков. У какого - не упомню уже... Стар чукча стал, совсем плохой....


Юрий См
здесь недавно
здесь недавно
Сообщения: 10
Зарегистрирован: 07 окт 2009, 18:57
Ф.И.О.: Смирнов Юрий Николаевич

Re: исходник для i-7188EX + m-7045D

Сообщение Юрий См » 24 ноя 2011, 17:07

#include "..\lib\7188e.h"
Этой инструкцией Вы указали компилятору: перейти в каталог выше (родительский), войти в каталог lib, считать файл 7188e.h
Учитывая, что полный путь c:\TC\LIB\7188e.h, Ваш исходный код в каталоге c:\TC\ваш_каталог...
Вероятно это не так.
Для проверки можно скопировать 7188e.h в каталог с исходным кодом (где функция main() ) и подправить #include "7188e.h"

Аватара пользователя

MuadDib
не первый раз у нас
не первый раз у нас
Сообщения: 359
Зарегистрирован: 31 июл 2010, 08:12
Ф.И.О.: Журавлев Павел Евгеньевич
Поблагодарили: 1 раз

Re: исходник для i-7188EX + m-7045D

Сообщение MuadDib » 25 ноя 2011, 11:28

Поскольку компилятор не ругается на невозможность подключить файл "..\lib\7188e.h", значит проблема не в нем.
Ошибка "Undefined symbol" - это ошибка линкера. Она означает, что линкер (компоновщик) не может найти соответствующую функцию в предоставленных ему библиотеках (файлах *.LIB). Убедитесь, что библиотека 7188EL.lib присутствует в настройках проекта.
Настройку компилятора лучше всего произвести в соответствии с "родной" документацией (см. фирменный ftp или комплектный диск): \Napdos\MiniOS7\Document\Compiler.pdf


Вернуться в «КИП и датчики»



Кто сейчас на конференции

Сейчас этот форум просматривают: Bing [Bot] и 1 гость