В библиотеке элементов есть картинки с расширением *.xjt. Что это за файлы? В каком редакторе их можно отредактировать? Где можно скачать библиотеки с такими файлами?
Вид для печати
В библиотеке элементов есть картинки с расширением *.xjt. Что это за файлы? В каком редакторе их можно отредактировать? Где можно скачать библиотеки с такими файлами?
Совсем не обязательно заморачиваться с с расширением *.xjt. В галерее конфигуратора СП3ХХ, можно применять и файлы *.bmp, *.png и .jpg.
Найти можно по пути:
C:\Program Files (x86)\Owen\Configurator SP300\Gallery\Map\Button
Туда же можно вставить ваши рисунки и использовать в проекте вызывая через Библиотеку и даже использовать прозрачность, чтобы убрать чёрные квадраты по краям.Вложение 56210
Очень не хватает возможности соединения с панелями СП3хх по Ethernet
Беру именно такие панели с литерой Р!! Они и вправду с Etherнетом, только программируются по прежнему - через USB
Эмуляция перестала работать!!!
[/B]Меня не удовлетворил его ответ. Невозможно сейчас использовать штатную функцию эмуляции для онлайн отладки проекта
Возможно только отлаживать имея конкретную живую панель, тыкать пальчиком, смотреть на живые значения
Конфигуратор СП3х - устарел безнадежно, но это не хотят признать, так как разработка новой программы требует вложений.
Спасибо, Евгений!
Просто сейчас панели запрограммированы и уехали в монтаж. Без панели боюсь наш диалог не будет предметным.
На подходе СП315. Скоро окажется в руках, обязательно свяжусь с вами.
Точно помню, что пару лет назад пользовался эмуляцией, она с небольшими отклонениями, но работала
PS: Разобрались. По сути онлайн-эмуляция эти 30-ти минутная минискада. Если ПК иметь возможность соединиться со всеми устройствами по Modbus TCP, то эмулятор работает
Здравствуйте, уважаемые коллеги!
Делаю свой первый проект с использованием СП310, поэтому опыта ещё немного.
Создал таблицу отображения данных. Оставил в ней только 2 столбца данных, удалив столбцы нумерации и названий. Первый столбец данных с типом WORD, туда данные заносятся нормально, и в эмуляторе, и в панели. А во втором столбце сделал данные системного времени. Но, когда загружаю проект в панель, то в этом столбце вместо времени - во всех строчках прочерки. Пробовал делать время в разных форматах - бесполезно.
Уважаемые коллеги, подскажите, пожалуйста, в чём тут может быть дело и как сделать, чтобы в панели отображалось системное время в этом столбце?
P.S. Цель всех этих действий - чтобы можно было заносить в разные строки таблицы данные с разных регистров и фиксировать время, когда эти данные были туда занесены. Возможно ли такое вообще?
Каждая строка таблицы в вашем случае содержит семь регистров - 1 для первого столбца данных и 6 регистров для времени(не зависимо от выбранного формата отображения)
Итого 1 строка таблицы - семь регистров
Например адрес таблицы задан 256, следовательно данные для строк таблицы без циклического буфера будут
256 - данные, 257..262 - время
263 - данные, 264..269 - время
270 - данные, 271..276 - время
и т.д.
Чтобы в последнем столбце таблицы отображалось время нужно его(время) его туда записать.Скопировать содержимое (PSW30..PSW35) в соответствующие 6 регистров.
ЗЫ.
Автоматизировать процесс поможет элемент Архивирование в панели, который и формирует строки заданного формата, если в настройках разрешить запись даты и времени.
Но при использовании таблицы для отображения данных архивированных в панели, в настройках таблицы нужно включить циклический буфер.
Вложение 56323
petera, супер!!! Большое спасибо за подсказку и отдельное спасибо - за реализацию. Разобрался.
Не знаю нужно ли это писать, но имхо это очевидный недостаток ПО, требующий рассмотрения.
Чертим трубопроводы. Казалось бы, ерунда, а не вопрос.
Все начертили, красота. Загружаем в панель - разрывы.
Это нормально?
То есть, чтоб линии по факту соединялись, то в редакторе вынуждены их делать в нахлест
Вложение 56339
Уважаемые сотрудники техподдержки!
Столкнулся с какой-то мистикой, поэтому прошу объяснить, не является ли ошибкой в документации на СП307 следующее
Код макроса: WORD ArrValue[2];
Reads(PLC, 2, MODBUS_RTU_REGS_4X, 4, 2, &ArrValue);
Разве не правильно будет записать
Reads(PLC, 2, MODBUS_RTU_REGS_4X, 4, 2, ArrValue);
или
Reads(PLC, 2, MODBUS_RTU_REGS_4X, 4, 2, &ArrValue[0]);
Насколько помню, адрес первого элемента массива в языке Си можно получить так, как я написал в своих двух примерах, а не как в справке.
Что это - какой-то особый Си или ошибка в документации?
При чтении в макросе двух массивов творилась мистика, когда начал читать все одним массивом стало нормально, но вот вопрос - а я вообще с памятью правильно ли работаю, не порчу ли что-либо системное и т.п.?
Уважаемые сотрудники техподдержки!
Столкнулся с какой-то мистикой, поэтому прошу объяснить, не является ли ошибкой в документации на СП307 следующее
Код макроса: WORD ArrValue[2];
Reads(PLC, 2, MODBUS_RTU_REGS_4X, 4, 2, &ArrValue);
Разве не правильно будет записать
Reads(PLC, 2, MODBUS_RTU_REGS_4X, 4, 2, ArrValue);
или
Reads(PLC, 2, MODBUS_RTU_REGS_4X, 4, 2, &ArrValue[0]);
Насколько помню, адрес первого элемента массива в языке Си можно получить так, как я написал в своих двух примерах, а не как в справке.
Что это - какой-то особый Си или ошибка в документации?
При чтении в макросе двух массивов творилась мистика, когда начал читать все одним массивом стало нормально, но вот вопрос - а я вообще с памятью правильно ли работаю, не порчу ли что-либо системное и т.п.?
Это обычный С.
http://www.open-std.org/jtc1/sc22/wg...onaleV5.10.pdf
см. п. 6.5.3.2
Чтобы ответить на этот вопрос - нужен ваш проект и подробное пошаговое описание, как в нем воспроизвести "мистику".
Основная суть вопроса - не мистика, а получение адреса в Си. Проект Ведь, как понимаете, не только с СП307, поэтому достоверную причину "мистики" было бы бессовестно предлагать искать Вам.
Давайте вернемся к сути вопроса - это получение адреса массива. В документах, которые Вы предлагаете, писать могут что угодно, суть в другом, возможно, в моем заблуждении, или неправильной памяти?
Когда я делаю
int Var
а затем
&Var
я получаю адрес переменной Var
когда я делаю
int Var[10], то в силу своих, возможно, заблуждений, считаю, что для получения адреса первого элемента массива я должен в Си либо написать просто "Var", либо
что-то типа "&(Var[0])"
В реализации Си89 не так - просто да или нет?
Вы разработчики, Ваше слово - при использовании Вашей техники - закон. Вы говорите - делаем так, это работает - значит делаем так :)!
PS СП307 используется в проекте с ПЛК110, когда в объявленных модбас-переменных шли 8-битовые элементы (несколько пар), затем 2 байтовые, зачем одна 4-байтовая, затем снова двухбайтовые - с последними двухбайтовыми шла мистика. Просто выкинул 4- байтовую переменную, потом, возможно, вставлю ее в самый конец регистр Модбаса - когда она была в конце, все работало нормально. Для Вас это просто информация, я могу быть где-то неправ, где-то заблуждаться.
В макросах для панелей СП3хх (и согласно стандарту ANSI C - хоть и, по вашему мнению, в нем могут "писать что угодно") - все 3 варианта (вариант из документации и два варианта, упомянутых вами) - корректны и будут работать одинаково.Цитата:
В реализации Си89 не так - просто да или нет?
Вы, вероятно, не учли выравнивание памяти.Цитата:
PS СП307 используется в проекте с ПЛК110, когда в объявленных модбас-переменных шли 8-битовые элементы (несколько пар), затем 2 байтовые, зачем одна 4-байтовая, затем снова двухбайтовые - с последними двухбайтовыми шла мистика.
https://ftp.owen.ru/CoDeSys23/06_Doc...ation_v2.0.pdf
см. п. 3.1.3.1
Спасибо за совет. Выравнивание памяти учел :). Простые правила без руководства - 8 битные регистры парами, 4-байтовая переменная - 2 регистра. Впрочем, не суть важно, пока что "обошел".
Огромное спасибо за работу и в воскресенье :), вместе в Вашими единомышленниками, считающими что надо максимально внедрять отечественные приборы !!!!!
И все же, проблема есть.
Читаю макросом данные из ПЛК110 - регистры 0 - 16 в регистры PSW панели СП307.
Вывожу регистр 4 на экран в виде шестнадцатеричного числа - в нем ноль, как и положено. В регистре PSW260 при этом находится значение 255 (0xFF, которое фактически записано в регистр 13 (счет, номера регистра, естественно, с нуля)
Что не так в этом макросе, вызываемом либо раз в секунду, либо непрерывно при помощи глобальной функциональной области?
В нем всего лишь читаются 17 регистров в массив, если нет ошибки обмена с ПЛК110.
Почему вдруг в регистре PSW260 вместо регистра 4 регистр 13?
Ставил при реализации проекта задачу оптимизации быстродействия, привязал к PSW сотни экранных элементов.
В чем причина-то? Моя ошибка - в упор не вижу? ограничения длины буфера или длины сообщения панели, не указанные в документации?
На ПЛК110 грешить трудно - он что - в длинном сообщении передает не то, что в коротком, когда я привязываю регистр к цифровому индикатору?
WORD RdBuf[100];
// Read from PLC110 - DI to PSW256, PSW257, PSW258 DO to PSW259, 260
Reads(PLC, 1, MODBUS_RTU_REGS_4X, 0, 17, &RdBuf);
if (GetPSBStatus(51))
{
;
}
else
{
PSW[256] = RdBuf[0];
PSW[257] = RdBuf[1];
PSW[258] = RdBuf[2];
PSW[259] = RdBuf[3];
PSW[260] = RdBuf[4];
PSW[261] = RdBuf[5];
PSW[262] = RdBuf[6];
PSW[263] = RdBuf[7];
PSW[264] = RdBuf[8];
PSW[265] = RdBuf[9];
PSW[266] = RdBuf[10];
PSW[267] = RdBuf[11];
PSW[268] = RdBuf[12];
PSW[260] = RdBuf[13];
PSW[270] = RdBuf[14];
PSW[271] = RdBuf[15];
PSW[272] = RdBuf[16];
}
Выложите проекты для ПЛК и панели - мы посмотрим, в чем может быть дело.Цитата:
В чем причина-то?
Выкладывать не имею права, по адресу e.kislov@owen.ru личку пришлю.
Все же считаю, что дело либо в моей ошибке проекта панели, либо в глюке внутри панели, т.к. регистры при прямом к ним отображении имеют правильное содержимое.
Не выходит изменить толщину линий на графиках.
Что-то делаем не верно?
Насколько я помню - это время ожидания очередного байта посылки в миллисекундах.
Если за это время не придет очередной байт - то посылка считается невалидной.
Добрый день. Не могу понять как сравнить 0-й бит в PSW с PSB. Пишу if(((bool)(PSW[368]&1)) != GetPSBStatus(256)) {...}. Выдаёт непонятные мне ошибки.
А причем здесь логическое и? Да и разобрался я уже. Кто знает зачем bool подсвечивается? поставил BOOL и всё пошло. int нельзя писать INT (да оно и не подсвечивается), а bool надо писать BOOL (подсвечивается и так и так)....
См файл .\Configurator SP300\ARMTool\Include\Lib.h
Вложение 56623
Почему PSW[368] = 4; PSW[256] = (bool)(PSW[368]&4) выдаёт 4? Это я к тому что if(((bool)(PSW[368]&4)) != GetPSBStatus(258)) выдаёт не верный результат. Т.к. getstatus либо 0 либо 1, а (bool)(PSW[368]&4) либо 0 либо 4.... Пришлось переделать на ((PSW[368]&4) != ((WORD)GetPSBStatus(258)*4))
Подскажите, пожалуйста, возможно ли в панели СП315 макросами реализовать алгоритм, который бы менял угол наклона линий температурного графика?
Например изменил установленное значение одной из точек, перерисовался бы сам график в соответствии с новым расположением точек
Вложение 56657
Не понял, причем здесь макросы?
Стандартный XY график + модель
Вам сюда https://owen.ru/forum/showthread.php?t=22609
Скрытый текст:
Улучшенный внешний вид графика
Скрытый текст:
Добрый день.
А send, что возвращает? Думал число переданных байт, но нет - всегда единицу.
Добрый утро. Использую макрос, чтоб читать регистры из ПР102 и записываю их в системные регистры PSW.
С помощью программки читаю эти регистры по TCP. Нужно, чтоб менялись значения регистров ПР, когда я меняю значения PSW через программку и также менялись через панель.
Скрытый текст:
Если просто добавляю это в начало, значения меняются только с регистров. С панельки перестают меняться. Если в конец, то вообще ничего не происходит.
Скрытый текст: