 | |
Предыдущие результаты
[quote:80ea4937f2="LAKER"]я же не с Москвы!мне лучше если я сачаю быстрее с инета :?[/quote:80ea4937f2]
С инета (Rockwell) можно, если с момента отгрузки в адрес покупателя прошло менее одного года (не ваш случай, т.к. версия 6.40 достаточно старая). Остальное уже не важно.
|
AssetCentre ochen dorogoy product, zato sdelaet to chto nado. CPR9 namnogo legche v ustanovke po sravneniyu s CPR7. Zhelayu udschi v podderzhke etogo producta. Osnovnoj centr po podderzhke v USA, ostalnie centri ne znayut nichego. I esli dazhe chto nibud nesuschestvennoe, oni otpravlyaut case v USA. Poka Udachi
|
[b:163a678761]dv_[/b:163a678761]
Вообще, ты прав. Пакет программ можно получить бесплатно. Вот активация, действительно, стоит денег.
[b:163a678761]LAKER[/b:163a678761]
Если активации у Вас сохранились, или можете их спасти, то нет проблем. Обратитесь в любой из наших офисов поблизости, и Вам запишут всё RSView совершенно бесплатно - но без активаций, само собой.
|
[quote:b28582224e="oldDad"]Эти программы стоят денег, их скачать нельзя.[/quote:b28582224e]
В принципе они уже заплатили за них, покупая станок.
[quote:b28582224e="LAKER"]...моя карьера под угрозой :cry: :cr[/quote:b28582224e]
Под угрозой должна быть карьера принимавшего :o
У вас должны быть CD и дискеты активации:
1.[b:b28582224e]RSView32 Runtime 1500[/b:b28582224e]
2. [b:b28582224e]RSLinx Classic[/b:b28582224e].
И CD [b:b28582224e]RSView32 Extensions[/b:b28582224e].
Если винчестер цел нужно спасать активации (простым копированием не делается) и проект RSView32 (простое копирование).
[b:b28582224e]PenMount DMC 9000 and 9100, UpSurf Control[/b:b28582224e] - мне неизвестны и там могут быть свои засады.
Обращайтесь с поставщикам станка.
|
При конфигурации ControlNet не стоит забывать назначить Keeper используя RSNetworx for ControlNet,
это одна из common ошибок пользователей.
Как осуществить замену модуля CNB(R) и проделать эту процедуру(Setup Keeper) при redundant конфигурации
можно найти в документе 1756-UM523 ControlLogix Redundancy System на странице 107.
Думаю также будет полезно посмотреть ID 28720, 36202,46577
И конечно на последок, как отметил OldDad, нужно использовать firmware из подходящего redundancy bundle. :)
Успехов.
|
Здравствуйте. Попытаюсь объяснить разницу между IW, QW и PIW, PQW.
IW (PII) и QW (PIQ) - это адреса из так называемых областей образа ввода и вывода процесса (пословная адресация). В iW в начале каждого программного цикла контроллера записываются данные с каналов модулей дискретного ввода контроллера (как бы буферизируются). Затем эти данные могут использоваться на чтение в программе пользователя как данные с дискретных входов ПЛК. Выходные дискретные данные формируются при обработке инструкций записи пользовательской программы и записываются в адреса области QW. Затем в конце каждого программного цикла контроллера эти данные из области QW пересылаются в каналы модулей дискретных выходов ПЛК.
PIW и PQW - это адреса периферийных областей ввода и вывода (также пословная адресация). они используются при работе с аналоговыми входными и выходными данными. Работа с ними происходит напрямую. Т.е. при выполнении в программе пользователя инструкции на чтение данных из аналогового входа (PIW) данные берутся сразу с соотвествующего канала ввода модуля (грубо говоря с выхода АЦП канала) и никакой предварительной буферизации нет, как в случае с IW. Аналогично, при записи данных в PQW данные попадают сразу на вход ЦАП канала выходного аналогового модуля.
Теперь по вашей проблеме:
Прямые данные с PIW и PQW для отображения в скаде вам не подойдут, т.к. они содержат значение сигнала в абсолютных единицах из диапазона -32768 +32767. А вам нужны данные в инженерных единицах (градусы С, кПа и т.п.). А они получаются только в результате программной обработки данных PIW и PQW (Это же Сименс, а не Allen-Bradley!!!!). Т.е. kep-сервером вам надо считывать именно эти данные (с программных блоков масштабирования сигналов). Посмотрите в Степе7 хелп на блоки FC105 "SCALE" и FC106 "UNSCALE", там все с примерами расписано. Т.е. вы по-любому будете работать либо с областью меркеров (М) или с блоками данных (DB), а они opc-сервером без проблем читаются. Кстати, дискретные данные с IW и QW тоже можно пересылать в М или DB и читать сервером эти области а не напрямую с IW и QW.
|
Дорогие специалисты
Покритикуйте мое видение в построении программ под pc совместимые контроллеры I-7000.
В данном случае I-7188EX + некоторые модули DI,DO.
Ниже буду описывать только те моменты которые правил руцями.
[b:0fdb64b409]Задачка такая:[/b:0fdb64b409]
- Написать программку управления очень примитивным технологическим процессом;
- Выдавать информацию наверх через ModBus TCP/IP;
[b:0fdb64b409]Мое решение[/b:0fdb64b409]
[b:0fdb64b409]1. Раз ModBus TCP/IP, то я взял скелет xserver подобной прошивки (один из примеров с диска);
2. Объявил чего то:[/b:0fdb64b409]
// Программа пользователя
void UserProg(int IN0,int IN1,int* TBL0,int *TimerCounter);
void UserSubProg1(int* TBL0);
// ModBus Таблица
unsigned char far iMemory_DI[100];
unsigned char far iMemory_DO[100];
int far iMemory_AI[100];
int far iMemory_AO[100];
int far iMemoryTemp[100];
int iCounter_Old; // Счетчик
int iUser_Old;
int iTimeSP_Old;
int TC;
int IN7063D_OLD = 0; // Определения фронта
int TBL13_OLD = 0; // Определения фронта
int iRet = 0;
// и.т.д.
[b:0fdb64b409]3. Реализовал программки:[/b:0fdb64b409]
// Подпрограмма пользователя
void UserSubProg1(int* TBL0)
{
// Тут логика какая-то
}
// Основная программа пользователя
void UserProg(int IN0,int IN1,int* TBL0,int *TimerCounter)
{
// Тут всякие алгоритмы управления тех. процессом
}
[b:0fdb64b409]4. Инициализацию построил в функции UserInit():[/b:0fdb64b409]
void UserInit(void)
{
int iRet;
int TC = 0;
//======= Begin of Modbus Kernel =======
iRet=InitModbus(iMemory_DI,iMemory_DO,iMemory_AI,iMemory_AO);
// В программе у меня есть данные которые нужно хранить при снятии питания с контроллера
iMemory_AO[9] = ReadNVRAM(0); // Читаем из 1-го байта энергонезависимой памяти
iMemory_AO[11] = ReadNVRAM(1); // Читаем из 2-го байта энергонезависимой памяти
iMemory_AO[13] = ReadNVRAM(2); // Читаем из 3-го байта энергонезависимой памяти
if(iRet==0)
{
// Initial Modbus configuration success.
}
else
{
// Initial Modbus configuration failure.
}
//======= End of Modbus Kernel=======
//Configure the COM port that links to the i-7000 modules.
// Сдесь эта функция нужна для работы монитора printCom
// При ее отсутствии в строку монитора ничего выводится не будет
SetBaudrate(1,115200L);
SetBaudrate(2,9600);
SetDataFormat(2,8,0,1);
Port9999=0; //Disable listening TCP port 9999 to speed up 7188E.
// Добавления таймера, реализующего поток
// Организовываю таймер, который будет вызывать мою програмку
// управления тех. процессом раз в TIMER_USERPROG_SP милисек.
AddUserTimerFunction(UserCount,TIMER_USERPROG_SP);
}
[b:0fdb64b409]5. В функции UserCount, организовал основной поток -
то что называется циклом выполнения программы пользователя.
В теле встречаются вызовы отдельных функций,
которые я реализовал в других си файлах[/b:0fdb64b409]
void UserCount(void)
{
int IN7063D = 0; // Образ всех входов модуля 7063D
int IN7053_FG = 0; // Образ всех входов модуля 7053_FG
//-------------------------------------------------------------------
// Читаем входной образ
//-------------------------------------------------------------------
IN7063D = ReadDI(2, "02",6000L);
IN7053_FG = ReadDI(2, "04",6000L);
//-------------------------------------------------------------------
// Программа пользователя
//-------------------------------------------------------------------
UserProg(IN7063D,IN7053_FG,iMemory_AO,&TC); // Чего то там передали
//-------------------------------------------------------------------
// Пишем входной образ в таблицу
//-------------------------------------------------------------------
if (IN7063D !=-1) iMemory_AI[0]=IN7063D; // В 0-й элемент массива _АI (по IEC стандарту адрес будет 30001) пишем образ входов
if (IN7053_FG!=-1) iMemory_AI[2]=IN7053_FG; // В 2-й элемент массива _АO (по IEC стандарту адрес будет 30003) пишем образ входов
//-------------------------------------------------------------------
// Пишем выходы + пишем выходной образ в таблицу
//-------------------------------------------------------------------
iRet = WriteDO_6063(2,"02",iMemory_AO[0],6000);
iRet = WriteDO70_4242D4343D(2,"06",iMemory_AO[2],6000);
//-------------------------------------------------------------------
// Сохраняем что-нибудь в энергонезависимую память
//-------------------------------------------------------------------
if(OnChange(iMemory_AO[9], &iCounter_Old)) WriteNVRAM(0,iMemory_AO[9]);
if(OnChange(iMemory_AO[11],&iTimeSP_Old)) WriteNVRAM(1,iMemory_AO[11]);
if(OnChange(iMemory_AO[13],&iUser_Old)) WriteNVRAM(2,iMemory_AO[13]);
}
Вроде бы работает, но только в Demo примерах - существуют разные концепции
проектирования прошивох на основании xserver шаблонов.
Прошу покритиковать вышеприведенный подход: особенно на вызов функции, реализующую алгоритм управления тех. процессом в теле функции UserCount.
ОГРОМНОЕ СПАСИБО !
|
OPC-Сервер от KepWare можно купить, например, у нас. Любая из версий сервера прекрасно работает с RSView32.
Будет ли данный сервер работать с PQW, PIW и QW, IW - спросите, пожалуйста, у разработчика KepWare:
http://www.kepware.com/Support_Center/support_technical.html
(или, действительно, на форуме Siemens).
|
Сервер стоит у меня с лицензиеей т.е. не демо версия. Может подскажете какой сервер видит PIW и PQW и чтобы работал с RS Wiew32. И где можно взять.
|
Здравствуйте!
PQW, PIW и QW, IW это разные вещи. На эту тему Вам лучше консультироваться на форуме "Сименса".
Вообще-то Вы должны видеть до 65536 слов входов-выходов.
У Вас Kepserver лицензированный?
А как сконфигурирован контроллер? Возможно, что в конфигурации контроллера прописано только 127 слов для входов и выходов.
Желаю удачи!
|
Предыдущие результаты
Ещё результаты |
|
| |
|