Ответ
 
Опции темы Поиск в этой теме
Старый 24.06.2020, 07:12   #11
guest13
Бывалый
 
Регистрация: 11.06.2020
Сообщения: 16
Сказал Спасибо: 2
Сказали Спасибо 0 раз(а) в 0 сообщении
По умолчанию

Сообщение от Pavel_T Посмотреть сообщение
Что касается прерываний, то по ним, а также много чего по программированию
Куки, информация имеется. Я только не пойму, как можно pdf файлы выкатить на форум.
в почту видимо только или ссылку на облако
guest13 вне форума   Ответить с цитированием
Старый 07.07.2020, 19:37   #12
guest13
Бывалый
 
Регистрация: 11.06.2020
Сообщения: 16
Сказал Спасибо: 2
Сказали Спасибо 0 раз(а) в 0 сообщении
По умолчанию

Сообщение от Pavel_T Посмотреть сообщение
Для того чтобы адресно обратиться к ячейкам памяти в коде надо:
1. Правильно настроить мапинг входов/выходов Куки на профинетовские.
(скажем все I/O Куки после 20 мапятся на профинетовские I/O).
2. Вручную с тачпада, из экрана для I/O проверяется функциональность
сигналов (так же и со стороны PLC).
3. В файле .dat, в секции "USER GLOBALS" объявляем, например две переменные:
SIGNAL MyPlcByteIn TO ;получаем байт данных только для чтения
SIGNAL MyPlcByteOut TO ;получаем байт данных, чтение и запись
4. В программе обращаемся с переменными как спеременными типа INT:
IF (MyPlcByteIn == 1) THEN
PTP HOME
ENDIF
5. Если PLC Siemens, то не забываем менять местами старший и младший байт в двухбайтном слове.
Подробнее смотрим в хелпе для WorkVisual.
Это было понятно и я придерживался этого плана.... Но тут копался в пакете ServoGun и там реализация обмена через профинет меня несколько озадачила...
1) маппинг адресов. Вроде понятно, за исключением момента - почему маппят всё по каждому биту, если иногда удобнее объединять в байты (INT)

2) линковка с переменными. Не понимаю почему используется только первый и последний биты

3) и совсем пока не понимаю, каким образом через POINT.DATA в эти биты профинета попадает нужное число


может ли кто-то подсказать?

p.s. картинки не прикрепились, вот ссылка - https://yadi.sk/d/uRUWmET5sdOgOQ
guest13 вне форума   Ответить с цитированием
Старый 08.07.2020, 07:53   #13
Pavel_T
Гуру
 
Регистрация: 04.08.2016
Сообщения: 81
Сказал Спасибо: 0
Сказали Спасибо 29 раз(а) в 19 сообщении
По умолчанию

Если я правильно понял картинки, то скорее всего где-то существует переменная для
интерактивного получения номера программы по профинету,
например:
SIGNAL MyProfinetProgNum $IN[SG_ProgrumNumber_WT_S[1]] TO $IN[SG_ProgrumNumber_WT_E[1]]
дальше, существует какая-то переменная типа (SGg_POINT_T) :
DECL SGg_POINT_T POINT_DATA
Я думаю это структура, где есть поле с названием PrNumber, и очевидно существует код инициализации
этой структуры (например):
DEF InitPointData()
;заносим в поле PrNumber данные из профинета
POINT_DATA.PrNumber = MyProfinetProgNum
...
...
ENDIF
а дальше уже пользуемся этими данными по всей программе:
SQ_ProgrammNumber = POINT_DATA.PrNumber
SWITCH ...
и т.д.
Pavel_T вне форума   Ответить с цитированием
Старый 09.07.2020, 19:35   #14
guest13
Бывалый
 
Регистрация: 11.06.2020
Сообщения: 16
Сказал Спасибо: 2
Сказали Спасибо 0 раз(а) в 0 сообщении
По умолчанию

а вот нет... не нашел, это первое что бросился искать. но нету такой переменной. вообще не нашел подобной линковки сигналов с профинета через Signal... это-то и озадачило
guest13 вне форума   Ответить с цитированием
Старый 10.07.2020, 06:19   #15
Pavel_T
Гуру
 
Регистрация: 04.08.2016
Сообщения: 81
Сказал Спасибо: 0
Сказали Спасибо 29 раз(а) в 19 сообщении
По умолчанию

Signal это для ленивых. значение по битам можно просто сложить. может быть это старая библиотека, когда сигналов в Krl еще не было.
Pavel_T вне форума   Ответить с цитированием
Ответ
Опции темы Поиск в этой теме
Поиск в этой теме:

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

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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +2, время: 22:49.

vBulletin v3.6.2, Copyright ©2000-2024, Jelsoft Enterprises Ltd.
Русский перевод: zCarot, Vovan & Co