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

Форум

Ресурсы Rockwell

Product Directory

Essential Components

Literature Library

Knowledge Base

Electronic News&Magazines

Блог

Encompass Program

Product Certification

  


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



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



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

 оп .. что-то я тупанул, IL нету, LADы естественно есть. На них я и собирался всю технологию писать. А вот типовые задачи (обработка Di, Do, Ai ...) хотелось написать на чем-то более человечном, типа ST

 Спасибо! Фишку UDDT уже уловил и активно этим пользуюсь. А вот про языки стало для меня открытием. Слыхал мнения тру-асушников что не стоит программировать контроллер на ST и Cи, но не сталкивался с доказательствами. Вот пожалуй первая ласточка. Тогда вопросы вдогонку по языкам на AB: IL - исходник копируется в контроллер? Нет случайно возможности конвертации одного языка в другой? И почему такая несправедливость к ST :o

 [quote:841c8cbc95="ferzio"] Что сразу приходит на ум, так это компановка переменных. Битовые переменный хранить в массиве DINTa. Ужимать DINTовские переменные в INTы смысла нету, т.к. весить они будут все равно 4байта. [/quote:841c8cbc95] Ну это совершенно не так. Просто надо пользоваться предусмотренными для этих целей инструментами, а именно "User Defined Data Types". Структуры выравниваются по четырем байтам, но внутри все упаковывается плотно (конечно, если не будете чередовать байты и реалы). Поэкспериментируйте с ними и всё станет понятно, при сохранении сразу размер расчитывается и показывается. [quote:841c8cbc95="ferzio"] Заметил, что комментарии тоже занимают место в памяти (для возможности полноценной выгрузки проекта). [/quote:841c8cbc95] Настоящие программисты-асушники пишут на чём правильно, а не на чём легче :crazy: Пишите на Ladder, а не на ST - и комментарии и исходник будут исключительно в файле проекта на компе, а в контроллере только компактный программный код. :P ЗЫ и исполняться программа будет в разы быстрее :wink:

 Небольшой проект ~100Di ~50Do ~10Ai ~2Dc +Интерфейсные сигналы через MVI Переменные и типы данных это пол беды .. на самом деле не так и много они занимают. Я так понял основное место занимает код (исходник). При добавлении ~30 строк кода (операции присваивания) размер проекта увеличился на 4Кбайта! Можно как-нибудь сделать чтобы исходник не зашивался в память?

 Что это за такая программа у вас? Сколько ввода/вывода? [quote:d6babe4c0f="ferzio"]Добрый день! Столкнулся с проблемой, с которой, думаю, сталкивался любой программист-асушник. Нехватка пользовательской памяти. Имеется контроллер CompactLogix L31. 512Кбайт на борту. Как оказалось это очень немного ( Что сразу приходит на ум, так это компановка переменных. Битовые переменный хранить в массиве DINTa. Ужимать DINTовские переменные в INTы смысла нету, т.к. весить они будут все равно 4байта. Заметил, что комментарии тоже занимают место в памяти (для возможности полноценной выгрузки проекта). Может кто поделится опытом, к каким приемам прибегаете вы в данных случаях (кроме как покупка более мощного контроллера))[/quote:d6babe4c0f]

 Добрый день! Столкнулся с проблемой, с которой, думаю, сталкивался любой программист-асушник. Нехватка пользовательской памяти. Имеется контроллер CompactLogix L31. 512Кбайт на борту. Как оказалось это очень немного ( Что сразу приходит на ум, так это компановка переменных. Битовые переменный хранить в массиве DINTa. Ужимать DINTовские переменные в INTы смысла нету, т.к. весить они будут все равно 4байта. Заметил, что комментарии тоже занимают место в памяти (для возможности полноценной выгрузки проекта). Может кто поделится опытом, к каким приемам прибегаете вы в данных случаях (кроме как покупка более мощного контроллера))

 [quote:0a6f224fa4="Naitek"] Формирую строку запроса, отправляю устройству (хочу считать дату и время, в каких регистрах они хранятся мне известно). Отправляется запрос без проблем, но устройство в ответ ничего не посылает! [/quote:0a6f224fa4] Ну если MCM опрашивает нормально, значит в устройстве протокол ModBus и было бы не плохо уточнить какой именно (RTU или ASCII) В любом случае протокол ModBus накладывает строгие требования к запросам и ответам. Если с проводами и параметрами передачи (номер порта, скорость, четность, стоповые биты) всё на 100% проверено, то отсутствие ответа от устройства означает одно - [b:0a6f224fa4]неправильно сформирован или неправильно послан запрос![/b:0a6f224fa4] Ещё имеет смысл проверить установку джамперов для режима работы портов (RS232/422/485). Также не следует забывать, что в режиме работы по RS232 интерфейсу с устройством необходимо соединяться ноль-модемным кабелем.

 Так, с комплилятором разобрался. Возникла новая проблема. Формирую строку запроса, отправляю устройству (хочу считать дату и время, в каких регистрах они хранятся мне известно). Отправляется запрос без проблем, но устройство в ответ ничего не посылает! Команда чтения выдает ошибку превышения таймаута. Если выставить в команде MVIsp_Gets таймаут на TIMEOUT_FOREVER то программа дальше нее не идет (соотвественно не может ничего получить). Есть настроенный MCM модуль, который без проблем считывает из этого устройства все что надо, так что прибор рабочий. Решил посмотреть какую строку запроса формирует MCM. Подключаю порт MCM напрямую к порту ADM (для этого использую два соедительных кабеля RJ-45 с одной стороны и разъем COM папа на другой, COM разъемов соединены клеммы 1-1, 8-8, 5-5). Пытаюсь считать сисвол с порта ADM командой MVIsp_Getch. Картина та же. На MCM порт моргает - следовательно что то передает. На ADM - мертво. П.С.: оба модуля MVI56.

 Явных ограничений на CIP Data Table Read нет, кроме того, что тип данных в источнике и назначении должен быть одинаковый. Чтобы убедиться, что все работает, достаточно проверить бит .DN == 1 Ну и чтобы совсем быть спокойным можно проверить .DN_LEN - фактически переданное количество элементов.

 Можно и дальше в угадайку играть, или может всё-таки автор темы приведет реальные цифры? повторяю, для прояснения ситуации требуется данные о том, как сконфигурирована команда на опрос и какой номер ошибки возникает, когда не работает: чего у вас прописано в MCM.CONFIG.Port1MasterCmd[0,1,2...] и чего вы видите в MCM.DATA.ReadData[ххх], где ххх - это адрес куда пишутся ошибки с порта (MCM.CONFIG.Port1.CmdErrPtr) Предельное ограничение регистров в одном запросе 127, это обусловлено самим протоколом ModBus У MCMR отличие только в уменьшенном размере блока данных, котором он обменивается с процессором (чтобы не занимал весь ControlNet-овский пакет)



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


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



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



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



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



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




Выберите страницу:   [ << Предыдущая страница ] 1 2


  
RA & VDT GmbH


Облако тэгов
version Rockwell 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.122 секунды