Segnetics

Вернуться   Segnetics > Форум Segnetics > Вопросы о Trim5

Вопросы о Trim5 Работа и применение контроллеров с сенсорной панелью Trim5.

Ответ
 
Опции темы Поиск в этой теме
Старый 14.06.2017, 15:11   #1
tuxnsk
Новичок
 
Регистрация: Jun 2017
Сообщения: 19
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
По умолчанию Как получить доступ к FBD-журналу на PHP

День добрый, программист сделал проект для Trim5, я делаю диспетчеризацию через веб интерфейс. Переменные из проекта без проблем (почти) получаю, а вот как достать журнал, не нашел. Есть подозрения что они хранятся в файле load_files.tss, но у него непонятный бинарный формат. Есть ли какая информация по этой теме? На форуме не нашел.

Если кому интересно (может пригодится), маленькая библиотечка для чтения переменных проекта из PHP, кусками разбирался по коду примеров на C++, к сожалению устаревшему и уже не актуальному (неработоспособному), частично методом тыка, но вроде работает.

Пользоваться так. В проекте накидать блоков mem, задать им имя (по этому имени в коде из PHP будем получать доступ к их значениям).

Код:
<?php

include_once 'segnetics.php';

$seg = new SegShm();

$seg->set('mem_3', 321); // записать целое число
$seg->set('mem_2', 321.2); // записать число с плавающей точкой
$seg->set('mem_1', true); // записать значение булевого флага
var_dump($seg->get('mem_2')); // вывести значение переменной

// вывести полный дамп значений всех переменных проекта
echo('Full variable dump<br>');
$seg->dump();

?>
Вложения
Тип файла: zip segnetics.zip (1.0 Кбайт, 48 просмотров)
tuxnsk вне форума   Ответить с цитированием
Старый 14.06.2017, 17:40   #2
Arsie
Сотрудник Segnetics
 
Аватара для Arsie
 
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 085
Благодарил(а): 15 раз(а)
Поблагодарили: 660 раз(а) в 604 сообщениях
По умолчанию Ответ: Как получить доступ к журналу событий из системы?

Цитата:
Сообщение от tuxnsk Посмотреть сообщение
как достать журнал, не нашел
Контроллер свободнопрограммируемый, в нём нет понятия "Журнал" на прикладном уровне.

Проще всего пояснить на примере обычной флешки.

На флешке с точки зрения драйвера USB нет файлов. Там есть непрерывный участок памяти, в который что-то записано. А вот файловая система уже знает, что и куда она пишет. Эта непрерывная память разделена на участки-секторы, из этих секторов и состоят файлы и номера секторов занесены в заголовки файлов.

Так и тут, вся выделяемая в проекте память является RAW-массивом, создаваемым на этапе компоновки. И каждый блок памяти знает смещение и объём в этом массиве, с которым он, конкретный блок, работает. Добавили блок - всё съехало. Удалили другой блок - всё съехало ещё раз.

Поэтому работа с этим массивом как с файлом заранее обречена на провал, если подразумеваются правки прикладного проекта.


__________________
Программа делает то что написал программист, а не то что он хотел.

Добро всегда побеждает зло. Кто победил - тот и добрый.
Arsie вне форума   Ответить с цитированием
Старый 14.06.2017, 23:20   #3
ATS
Senior Member
 
Регистрация: Aug 2013
Сообщения: 3 784
Благодарил(а): 12 раз(а)
Поблагодарили: 194 раз(а) в 190 сообщениях
По умолчанию Ответ: Как получить доступ к журналу событий из системы?

Цитата:
Сообщение от tuxnsk Посмотреть сообщение
Если кому интересно (может пригодится), маленькая библиотечка для чтения переменных проекта из PHP, кусками разбирался по коду примеров на C++ ...
'segnetics.php'
Блин, неужели все так просто? А то со шмемами копья ломали...
Проверю на 2Gi на досуге...
ATS вне форума   Ответить с цитированием
Старый 15.06.2017, 06:15   #4
tuxnsk
Новичок
 
Регистрация: Jun 2017
Сообщения: 19
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
По умолчанию Ответ: Как получить доступ к журналу событий из системы?

Цитата:
Сообщение от ATS Посмотреть сообщение
Блин, неужели все так просто? А то со шмемами копья ломали...
Проверю на 2Gi на досуге...
так тут тоже на "шмеме" сделано, только напрямую из PHP (он оказывается тоже умеет с ней работать), ну и удобную обертку для нее сделал
tuxnsk вне форума   Ответить с цитированием
Старый 15.06.2017, 06:22   #5
tuxnsk
Новичок
 
Регистрация: Jun 2017
Сообщения: 19
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
По умолчанию Ответ: Как получить доступ к журналу событий из системы?

Цитата:
Сообщение от Arsie Посмотреть сообщение
Контроллер свободнопрограммируемый, в нём нет понятия "Журнал" на прикладном уровне.

Проще всего пояснить на примере обычной флешки.

На флешке с точки зрения драйвера USB нет файлов. Там есть непрерывный участок памяти, в который что-то записано. А вот файловая система уже знает, что и куда она пишет. Эта непрерывная память разделена на участки-секторы, из этих секторов и состоят файлы и номера секторов занесены в заголовки файлов.

Так и тут, вся выделяемая в проекте память является RAW-массивом, создаваемым на этапе компоновки. И каждый блок памяти знает смещение и объём в этом массиве, с которым он, конкретный блок, работает. Добавили блок - всё съехало. Удалили другой блок - всё съехало ещё раз.

Поэтому работа с этим массивом как с файлом заранее обречена на провал, если подразумеваются правки прикладного проекта.
это я понимаю, но по аналогии с файловой системы, в ней грубо говоря есть таблица фалов (их адресов и смещений), и непосредственно данных, пользуясь которой контроллер выделяет файлы, значит и тут кто-то должен быть, у кого хранится эта таблица, и кто знает эти смещения, вопрос только кто это, и какой формат хранения этих значений. Проект же тоже должен откуда-то получить эти данные, чтобы сам смог их прочитать.
tuxnsk вне форума   Ответить с цитированием
Старый 15.06.2017, 09:23   #6
tuxnsk
Новичок
 
Регистрация: Jun 2017
Сообщения: 19
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
По умолчанию Ответ: Как получить доступ к журналу событий из системы?

Короче, почти выковырял все что нужно было, сообщения из журнала получать научился, но пока дату возникновения события расшифровать не могу... Дополнил библиотечку.

Код:
include_once 'segnetics.php';

$jour = new SegJour();

// получить массив сообщений
$msgArray = getAllMsg();

// вывести все сообщения
$jour->dump();
Понял что текст сообщений хранится в tss файле, а сами сообщения в eep файле (я так понял это типа вместо eeprom-а).
А вообще, вопрос к сотрудникам, возможно ли вообще какую-то информацию получать от разработчиков? Я уже не прошу готовых библиотек, хотя бы информацию по форматам хранения данных. Если же дали возможность работать на контроллере из PHP, почему нет ни инструментов, ни информации о том, как взаимодействовать с проектом. Думаю я не один кто веб интерфейс хочет поднимать на вашем контроллере.
Вложения
Тип файла: zip segnetics.zip (1.5 Кбайт, 27 просмотров)
tuxnsk вне форума   Ответить с цитированием
Старый 15.06.2017, 10:49   #7
Arsie
Сотрудник Segnetics
 
Аватара для Arsie
 
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 085
Благодарил(а): 15 раз(а)
Поблагодарили: 660 раз(а) в 604 сообщениях
По умолчанию Ответ: Как получить доступ к журналу событий из системы?

Цитата:
Сообщение от tuxnsk Посмотреть сообщение
это я понимаю, но по аналогии с файловой системы, в ней грубо говоря есть таблица фалов (их адресов и смещений)
В файловой системе да, есть индексная таблица. У нас нет, т.е. индекс каждого блока находится в самом блоке.



Цитата:
Сообщение от tuxnsk Посмотреть сообщение
дату возникновения события расшифровать не могу...
Дата и событие в журнале Конструктора версии 1.00 хранится в структуре из трёх 16-разрядных слов:

1) Ч*256+М
2) ДД*1024+Событие
3) ММ*4096+ГГ



Цитата:
Сообщение от tuxnsk Посмотреть сообщение
Понял что текст сообщений хранится в tss файле, а сами сообщения в eep файле (я так понял это типа вместо eeprom-а).
tss - это банальный массив строк, используемых в проекте. Нельзя говорить, что это текст сообщений именно журнала. Аналогично и eep. Ваша библиотечка подходит исключительно к единственному проекту из десятка тысяч вариантов, генерируемых Конструктором. У остальных проектов другие смещения и даже размер. Ну и вам немного повезло, что я перфекционист и в своё время выровнял все сообщения в журнале)) Примечание "Нет гарантий, что у других также" нужно переписать на "У других гарантированно другое"...



PS. Информацию у нас получать можно, но очень многие такие вопросы связаны с глобальными потерями времени, давая лишь сиюминутный результат. Сменилась версия лоджика, чуть сменился формат таблиц исполняемого проекта и вся работа летит насмарку.


__________________
Программа делает то что написал программист, а не то что он хотел.

Добро всегда побеждает зло. Кто победил - тот и добрый.

Последний раз редактировалось Arsie, 15.06.2017 в 11:01
Arsie вне форума   Ответить с цитированием
Старый 15.06.2017, 12:33   #8
ATS
Senior Member
 
Регистрация: Aug 2013
Сообщения: 3 784
Благодарил(а): 12 раз(а)
Поблагодарили: 194 раз(а) в 190 сообщениях
По умолчанию Ответ: Как получить доступ к журналу событий из системы?

Цитата:
Сообщение от tuxnsk Посмотреть сообщение
так тут тоже на "шмеме" сделано, только напрямую из PHP (он оказывается тоже умеет с ней работать), ну и удобную обертку для нее сделал
Так именно на PHP ничего в свое время и не добились...
Цитата:
Если же дали возможность работать на контроллере из PHP, почему нет ни инструментов, ни информации о том, как взаимодействовать с проектом. Думаю я не один кто веб интерфейс хочет поднимать на вашем контроллере.
Присоединяюсь к заданному вопросу.
ATS вне форума   Ответить с цитированием
Старый 15.06.2017, 12:34   #9
tuxnsk
Новичок
 
Регистрация: Jun 2017
Сообщения: 19
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
По умолчанию Ответ: Как получить доступ к журналу событий из системы?

я вас понял, печально что с каждым разом структура данных будет меняться и никак она не описана, придется значит под каждый проект руками находить смещение, хотя странное решение, по моему, к примеру пейнт тоже бесчисленное множество картинок генерить может, но я всегда могу по самому файлу определить где там заголовок, где данные...

Вообщем выколупал я и время, все смещения вынес в константы, чтобы, если как вы говорите, изменится проект, поправить было проще.

Кому надо, выкладываю последнюю версию. И скриншот, для примера, как оно выглядит...
Изображения
Тип файла: png scr.png (96.8 Кбайт, 117 просмотров)
Вложения
Тип файла: zip segnetics.zip (1.8 Кбайт, 32 просмотров)
tuxnsk вне форума   Ответить с цитированием
Старый 15.06.2017, 12:37   #10
tuxnsk
Новичок
 
Регистрация: Jun 2017
Сообщения: 19
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
По умолчанию Ответ: Как получить доступ к журналу событий из системы?

Цитата:
Сообщение от ATS Посмотреть сообщение
Так именно на PHP ничего в свое время и не добились...
Не знаю кто там чего не добился... у меня была задача от руководства, я ее выполнил, оно работает, больше меня особо ничего не волнует. Выложил свои наработки для того, чтобы у кого будет подобная задача, не терял столько же времени, ну или как минимум знал в какую сторону копать, если вдруг опять "форматы файлов изменяться"
tuxnsk вне форума   Ответить с цитированием
Старый 15.06.2017, 12:47   #11
Arsie
Сотрудник Segnetics
 
Аватара для Arsie
 
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 085
Благодарил(а): 15 раз(а)
Поблагодарили: 660 раз(а) в 604 сообщениях
По умолчанию

Цитата:
Сообщение от tuxnsk Посмотреть сообщение
хотя странное решение, по моему, к примеру пейнт тоже бесчисленное множество картинок генерить может, но я всегда могу по самому файлу определить где там заголовок, где данные...
Конечно вы можете определить, где заголовок в картинке, потому что он там есть.

Цитата:
Сообщение от ATS Посмотреть сообщение
Присоединяюсь к заданному вопросу.
Некуда присоединяться. Там есть возможность много чего запустить и будет работать. И Бейсик и Фортран и ассемблер и машинные коды напрямую. Мы реально заколебёмся на всё инструкции составлять. А особенно на то, о чём мы вообще понятие не имеем как это работает, но использовать можно.

Цитата:
Сообщение от tuxnsk Посмотреть сообщение
Вообщем выколупал я и время, все смещения вынес в константы, чтобы, если как вы говорите, изменится проект, поправить было проще.

Кому надо, выкладываю последнюю версию. И скриншот, для примера, как оно выглядит...
Откуда секунды взяли, если не секрет?


__________________
Программа делает то что написал программист, а не то что он хотел.

Добро всегда побеждает зло. Кто победил - тот и добрый.
Arsie вне форума   Ответить с цитированием
Старый 15.06.2017, 12:55   #12
tuxnsk
Новичок
 
Регистрация: Jun 2017
Сообщения: 19
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
По умолчанию Ответ: Как получить доступ к журналу событий из системы?

Цитата:
Сообщение от Arsie Посмотреть сообщение
А особенно на то, о чём мы вообще понятие не имеем как это работает...
Обожаю вести такие беседы

По секундам, тоже из epp файла взял, исходник же есть...
tuxnsk вне форума   Ответить с цитированием
Старый 15.06.2017, 13:02   #13
ATS
Senior Member
 
Регистрация: Aug 2013
Сообщения: 3 784
Благодарил(а): 12 раз(а)
Поблагодарили: 194 раз(а) в 190 сообщениях
По умолчанию Ответ: Как получить доступ к журналу событий из системы?

Цитата:
Сообщение от Arsie Посмотреть сообщение
Некуда присоединяться. Там есть возможность много чего запустить и будет работать. И Бейсик и Фортран и ассемблер и машинные коды напрямую.
Передергиваем?
Речь шла о доступных ресурсах проектов Лоджика.
ATS вне форума   Ответить с цитированием
Старый 15.06.2017, 14:27   #14
Arsie
Сотрудник Segnetics
 
Аватара для Arsie
 
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 085
Благодарил(а): 15 раз(а)
Поблагодарили: 660 раз(а) в 604 сообщениях
По умолчанию

Цитата:
Сообщение от tuxnsk Посмотреть сообщение
Обожаю вести такие беседы

По секундам, тоже из epp файла взял, исходник же есть...
Штатные макросы не сохраняют секунды. Или у вас самописный?

Цитата:
Сообщение от ATS Посмотреть сообщение
Передергиваем?
Речь шла о доступных ресурсах проектов Лоджика.
Почему это шмемы недоступны из ассемблера и машинных кодов? Да и варианты Бейсика, с ними работающего, тоже есть.


__________________
Программа делает то что написал программист, а не то что он хотел.

Добро всегда побеждает зло. Кто победил - тот и добрый.
Arsie вне форума   Ответить с цитированием
Старый 15.06.2017, 14:27   #15
tuxnsk
Новичок
 
Регистрация: Jun 2017
Сообщения: 19
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
По умолчанию Ответ: Как получить доступ к журналу событий из системы?

А фиг знает, программиста который проект под контроллер писал сейчас нет в офисе, завтра будет, я у него спрошу...
tuxnsk вне форума   Ответить с цитированием
Старый 15.06.2017, 14:49   #16
Arsie
Сотрудник Segnetics
 
Аватара для Arsie
 
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 085
Благодарил(а): 15 раз(а)
Поблагодарили: 660 раз(а) в 604 сообщениях
По умолчанию Ответ: Как получить доступ к журналу событий из системы?

Цитата:
Сообщение от tuxnsk Посмотреть сообщение
А фиг знает, программиста который проект под контроллер писал сейчас нет в офисе, завтра будет, я у него спрошу...
Да, беседа получилась познавательной...

- Эй, Intel, где тут в базе данных хранится время? Проц же твой стоит, ты обязан знать!
- WTF?


__________________
Программа делает то что написал программист, а не то что он хотел.

Добро всегда побеждает зло. Кто победил - тот и добрый.
Arsie вне форума   Ответить с цитированием
Старый 15.06.2017, 21:15   #17
tuxnsk
Новичок
 
Регистрация: Jun 2017
Сообщения: 19
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
По умолчанию Ответ: Как получить доступ к FBD-журналу на PHP

Ну так и я не волоку в вашей архитектуре, за этим сюда и пришел, программист говорит "я не знаю как в контроллере хранится журнал, я просто пишу туда сообщения", вы тоже говорите что система не знает в каком формате хранится журнал, как я понял вы подразумеваете что все же программист должен формировать структуру данных. Вообщем где концы искать, пока не понятно, завтра с программистом пообщаюсь, вместе посмотрим каким образом он пишет все же сообщения, может что-то и прояснится
tuxnsk вне форума   Ответить с цитированием
Старый 16.06.2017, 07:24   #18
tuxnsk
Новичок
 
Регистрация: Jun 2017
Сообщения: 19
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
По умолчанию Ответ: Как получить доступ к FBD-журналу на PHP

Не, ничего самописного нет, макрос стандартный, в smart-е сделали список сообщений, в smlogix-е выкинули на поляну экран, там по входам эти сообщения, он типа сам сохраняет в журнал, ничего больше не делали.
tuxnsk вне форума   Ответить с цитированием
Старый 16.06.2017, 08:51   #19
tuxnsk
Новичок
 
Регистрация: Jun 2017
Сообщения: 19
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
По умолчанию Ответ: Как получить доступ к FBD-журналу на PHP

Поправил пару косяков, сортировку сделал по дате, сделал ограничение по количеству выводимых сообщений (оказалось что после очистки журнала сообщения не удаляются, изменяется только переменная - количество актуальных сообщений, при желании после очистки все равно можно будет получить предыдущие).
Вложения
Тип файла: zip segnetics.zip (1.9 Кбайт, 59 просмотров)
tuxnsk вне форума   Ответить с цитированием
Старый 20.06.2017, 11:09   #20
Arsie
Сотрудник Segnetics
 
Аватара для Arsie
 
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 085
Благодарил(а): 15 раз(а)
Поблагодарили: 660 раз(а) в 604 сообщениях
По умолчанию Ответ: Как получить доступ к FBD-журналу на PHP

Цитата:
Сообщение от tuxnsk Посмотреть сообщение
Не, ничего самописного нет, макрос стандартный, в smart-е сделали список сообщений, в smlogix-е выкинули на поляну экран, там по входам эти сообщения, он типа сам сохраняет в журнал, ничего больше не делали.
SMArt, выражаясь понятным вам языком - это что-то типа "фреймворка" для FBD. Да, там структуру хранения задал один из наших программистов.


__________________
Программа делает то что написал программист, а не то что он хотел.

Добро всегда побеждает зло. Кто победил - тот и добрый.
Arsie вне форума   Ответить с цитированием
Ответ

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать свои сообщения

BB code is Вкл.
[IMG] код Вкл.
HTML код Выкл.



Часовой пояс GMT +4, время: 04:29.


Версия vBulletin: 3.8.7
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Segnetics 2005 - 2024