Вход на форум 
В начало e-Mail

Форум

Ресурсы Rockwell

Product Directory

Essential Components

Literature Library

Knowledge Base

Electronic News&Magazines

Блог

Encompass Program

Product Certification

  


Предыдущие результаты



Предыдущие результаты



Предыдущие результаты

 Пишите на service.tlt(собака)vdt-automation.de телефон тел: +7 (8482) 51-04-24 Ещё раз уточним что именно нужно и определимся с ценой и доставкой.

 [quote:b56f701e85="X200881"]Подскажите где можно прочесть о протоколах:RS-485, DH-485, MPI, PPI, PROFIBUS? :?:[/quote:b56f701e85] Опять заблуждение RS-485 не протокол. Описание DH-485 не найдешь - собственность AB, хотя ранее был документ с описанием протоколов: DH+, DH-485, DF-1 (сейчас этот Index Publication содержит описание только для DF-1). А, собственно зачем эти описания? Неужели сделать свою реализацию? См. http://literature.rockwellautomation.com/idc/groups/literature/documents/ap/1747-ap001_-en-p.pdf Остальные ищи у Сименса.

 Дорогие специалисты Покритикуйте мое видение в построении программ под 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. ОГРОМНОЕ СПАСИБО !

 Проблема с русским для PanelView 550, в том числе и Alarmы решена.В проэкте у меня всё на родном и могучем.На реальную панель ещё не закачивал.Сделаю напишу. :idea:

 Также из мануала: [quote:0c5d3cf260]IMPORTANT In the ENI/ENIW, node addresses 45 through 49 are dedicated for sending messages to any Logix controllers with integral Ethernet ports. In addition, when sending messages to a ControlLogix controller via a 1756-ENBT, the controller MUST be in slot 0 of the ControlLogix chassis for the message to be delivered to it.[/quote:0c5d3cf260] Если у меня в слоте №0 стоит 1756-CNB, а сам контроллер в 4-м, как же быть тогда?

 Руководство пишет вот что: [quote:7634072c6a]Error Codes Generated by the ENI This table shows the error codes that may be generated by the ENI. A full listing of error codes that may be generated by the Message Instruction is shown below. Target node cannot respond because of incorrect command parameters or unsupported command. Possible causes: · The data size of the message is invalid. · The data format is incorrect for any of the supported PCCC messages. · Register parameters are not formatted correctly, or there is not enough data provided. · RS-232 configuration packet data is not the correct size. · The Node Address is invalid or out-of-range. · The distant ENI, controller, or device may not be responding. · There may be a break in the connection between the ENI devices or controllers. · BOOTP/DF1 parameter is invalid[/quote:7634072c6a] Проверили все причины?

 Ошибка-10 (target node cannot respond because of incorrect command parameters or unsupported)

 Если Вы полностью корректно установили PanelBuilder32, то утилита FontTool вызывается так: [color=darkblue:196192ae9c]"Пуск" - "Все программы" - папка "PanelBuilder32" - FontTool.[/color:196192ae9c] Удачи!

 [quote:74de167e1c="oldDad"]Она есть в комплекте поставки PanelBuilder32.[/quote:74de167e1c] У меня в комплекте нету по этому и спрашиваю.

 Она есть в комплекте поставки PanelBuilder32.



Предыдущие результаты


Ещё результаты



Предыдущие результаты



Предыдущие результаты



Предыдущие результаты



Предыдущие результаты




  
RA & VDT GmbH


Облако тэгов
ProSoft Modbus Automation ControlLogix MVI56-MCM Allen-Bradley Logix Windows FactoryTalk PanelView VersaView ControlTower GuardLogix Compact Software Studio Designer 100-E 100-D SMC-50 Energy Saver 1756-RMS-SC Spectrum Encompass Level Ethernet Redundancy Stratix

Яндекс цитирования

Smart Solutions VDT GmbH | Friedrich-List-Allee 38, D-41844 Wegberg-Wildenrath, Germany
Tel.: +49 2432 933 57 83 | e-Mail: office@vdt-solutions.de
Все товарные знаки и торговые марки являются собственностью их владельцев.
При использовании материалов сайта ссылка на данный сайт обязательна.
Открытие страницы: 0.129 секунды