SIEMENS, DF&PD

Предыдущее посещение: Вс июн 12, 2016 23:43 Текущее время: Вс июн 12, 2016 23:43

Часовой пояс: UTC + 3 часа




 [ Сообщений: 7 ] 
Автор Сообщение
 Заголовок сообщения: Проблема с сервером
СообщениеДобавлено: Сб авг 13, 2011 14:53 
Не в сети
Новый писатель

Зарегистрирован: Ср май 18, 2011 14:44
Сообщения: 41
Откуда: Брянск
Доброго времени суток.Вопрос по связи с Серверами в проектк PCS7.
После долгих махинаций нам удалось настроить соединение между серверами и контроллером и соответственно между серверами и клиентскими машинами.Поподробнее все описано на этом же форуме в ближайших по дате темах. Вроде бы все заработало и клиентские машины получают данные с серверов,но периодически возникает косяк следующего рода:
В процессе работы мы перерабатываем картинки для клиентских машин на отдельном компьютере,на котором установлена PCS7 в так сказать "левом" проекте. Принципиально ничего не менияем - немного изменяем Faceplatы,внешний вид картинок и так далее.После закидываем их в папку проектом на инженерной станции ну и соответственно после этого делаем PLC->Download на сервер и клиентские машины.После этого по неизвестной причине теряется связь между сервером и контроллером. Казалось бы как это связано с картинками?Может быть конечно причина лежит где то еще,но ведь ничего принципиально не меняем.После этого приходилось пару раз делать манипуляции вплоть до созданя ВОООбще пустого проекта для связи сервера с контроллером.Связь появлялась.Картинки подбрасывались в папку с проектом и все вроде как работало.Формулировка вопроса естественно выглядит бредово - самому не нравится.Но может быть кто то сможет подсказать что нибудь по этому поводу.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн авг 15, 2011 8:17 
Не в сети
Новый писатель

Зарегистрирован: Ср май 18, 2011 14:44
Сообщения: 41
Откуда: Брянск
Добрый день еще раз.Разобрался я с проблемой по связи с серверами.Хочу поделится.В процессе разработкии проекта мы сделали свое меню для вызова экранов и в нем для открытия картинки использовали скрипт из кадра @AreaButtons для открытия картинки:

char szPictureName[ 260 ] = "";
int iIndex = 0;

iIndex = SSMGetIndexFromObject( lpszObjectName);
SSMGetAreaFromIndex(iIndex , NULL, 0, szPictureName, 260);
SSMChangeWorkField( SSMGetScreen( lpszPictureName ), szPictureName, TRUE );


Только в нем мы заменяли szPictureName на имя того кадра,который нам необходим.В результате на клиентской машине картинка то конечно открывалась,но открывалась она локально,а не с сервера,ну и соответственно все элементы на ней не имели связи с контроллером.Что собственно и вводило нас в заблуждение.
Разобравшись с этим вопросом нашел скрипт в основном меню стандартного окна @AreaButtons,завязанного на открытие картинки:

#include "apdefap.h"
void OnOpenPicture(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName)
{
#pragma code("ptm_api.dll")
#include "ptm_api.h"
#pragma code()

#pragma code("WinCC50.dll")
BOOL CCIsStandardClient(LPCTSTR pszMcpPath);
#pragma code()

CMN_ERROR Err;
TCHAR* pszParseToken = NULL;
struct PTMNode PictureNode;
long lAreaIndex = 0;
TCHAR szEventQuitTag[128] = "";
TCHAR szLastCheckedTag[128] = "";
long lQuitMask = 3089;

if(CCIsStandardClient(NULL))
return;

// this script is important for clients - they must get the ack. mask from some server
// get the value of the tag "@EventQuit" from the first available server in PTM-hierarchy
while(PTMRTGetNodeIndex(++lAreaIndex, 0, 0, &PictureNode, &Err))
{
strncpy(szEventQuitTag, PictureNode.lptContainerName, sizeof(szEventQuitTag));
pszParseToken = (char *) _mbsstr((unsigned char *) szEventQuitTag, (unsigned char *) "::");
if(pszParseToken != NULL)
*(pszParseToken + 2) = '\0'; // leave only "ServerPrefix::"
else
szEventQuitTag[0] = '\0'; // no prefix -> empty string (in case of local server)

_mbscat((unsigned char *) szEventQuitTag, (unsigned char *) "@EventQuit");

if(_mbsicmp((unsigned char *) szEventQuitTag, (unsigned char *) szLastCheckedTag) != 0)
{
lQuitMask = GetTagSDWord(szEventQuitTag);
if(lQuitMask != 0)
{
break; // one value sucessfully read
}
strcpy(szLastCheckedTag, szEventQuitTag);
}
}

SetTagSDWord("@local::@EventQuit", lQuitMask);
}

До конца пока не смог разобраться с ним,но как я понимаю он определяет зоны для каждой кнопки основного меню.Возник следующий вопрос.Скорее всего даже многие это уже делали.Я хочу сделать свое меню,стандартное не устраивает заказчика.Как мне открыть любую картинку на сервере по имени.Может ктото писал уже такой скрипт?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн авг 29, 2011 5:01 
Не в сети
Новый писатель

Зарегистрирован: Вт июл 12, 2011 6:39
Сообщения: 47
Откуда: Омск
Я вешаю вот это на кнопку
Код:
SSMChangeWorkField( SSMGetScreen( lpszPictureName ), "хочу_эту картинку_в основное окно_;).pdl", TRUE );


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн авг 29, 2011 12:25 
Не в сети
Новый писатель

Зарегистрирован: Ср май 18, 2011 14:44
Сообщения: 41
Откуда: Брянск
TEHb писал(а):
Я вешаю вот это на кнопку
Код:
SSMChangeWorkField( SSMGetScreen( lpszPictureName ), "хочу_эту картинку_в основное окно_;).pdl", TRUE );


Но если повесить именно этот скрипт на открытие на клиентской машине,то откроется локальная картинка находящаяся именно на ней.А мне необходимо открыть картинку,находящуюся на сервере


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт авг 30, 2011 6:28 
Не в сети
Новый писатель

Зарегистрирован: Вт июл 12, 2011 6:39
Сообщения: 47
Откуда: Омск
Возможно я не понял суть задачи которая перед вами стоит.
Просто все картинки подтягиваются с сервера, на клиенте их собственно и нет.
Тоесть вам нужно по нажатию кнопки на клиенте,открыть картинку на сервере? Но зачем это в таком случае?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт авг 30, 2011 11:47 
Не в сети
Новый писатель

Зарегистрирован: Ср май 18, 2011 14:44
Сообщения: 41
Откуда: Брянск
TEHb писал(а):
Возможно я не понял суть задачи которая перед вами стоит.
Просто все картинки подтягиваются с сервера, на клиенте их собственно и нет.
Тоесть вам нужно по нажатию кнопки на клиенте,открыть картинку на сервере? Но зачем это в таком случае?


Совершенно верно.На клиенте есть screen.pdl.В есть основное меню в котором написан скрипт описанный выше.В результате его работы когда вы жмете на кнопку в основном меню(хранящемся на клиенте) открывается картинка на сервере.Картинки,которые мы можем вызвать, совпадают с иерархией в Simatic Manager.Мне необходимо вызвать картинку,не относящуюся к иерархии.Для чего это? Хм,впринципе хороший вопрос.Просто напросто я использую некоторые символы блоков на нескольких картинках.Копирую их с тех изображений,которые есть в иерархии и вставляю в другую картинку.Если ее просто открыть на клиентской машине то она ищет локальные теги,находящиеся на клиенте.Они естественно не цепляются к контроллеру.Приходится ручками прописывать,что данный тег является тегом сервера,а мне этого не хочется.Вот я и хочу открыть картинку на сервере


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Проблема с сервером
СообщениеДобавлено: Пт июн 05, 2015 15:44 
Не в сети
Известный Писатель

Зарегистрирован: Пт май 12, 2006 10:41
Сообщения: 219
Откуда: Пермь
Поднимаю тему.
Проблема в том что скрипт
SSMChangeWorkField( SSMGetScreen( lpszPictureName ), "Схема1.pdl", TRUE );
для мнемосхем которые есть в иерархии нормально отрабатывается, а для одного экрана, который просто лежат в папке GraCS сервера, на клиентах не отображаются.

есть правда еще один ньюанс.
Я вызываю этот экран с картинки @Button11.pdl, может проблема в том, что она лежит на клиенте, и все что там вызывается, приписывается к клиенту ?


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
 [ Сообщений: 7 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения

Перейти:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group