- Обязательно представиться на русском языке кириллицей (заполнить поле "Имя").
- Фиктивные имена мы не приветствуем. Ивановых и Пупкиных здесь уже достаточно.
- Не надо писать свой вопрос в первую попавшуюся тему - всегда лучше создать новую тему.
- За поиск, предложение и обсуждение пиратского ПО и средств взлома - бан без предупреждения. Непонятно? - Читать здесь.
- Рекламу и частные объявления "куплю/продам/есть халтура" мы не размещаем ни на каких условиях.
- Перед тем как что-то написать - читать здесь, а затем здесь и здесь.
- Не надо писать в ЛС администраторам свои технические вопросы. Администраторы форума отлично знают как работает форум, а не все-все контроллеры, о которых тут пишут.
Help me по АЛЕН БРЕДЛИ
Модераторы: Глоб.модераторы, специалисты по PLC
Help me по АЛЕН БРЕДЛИ
Господа мы имеем проблему, помогите ее решить. год назад нам поставили PLС ален бредли.
Сейчас технологическая система не может работать, контроллер выдает ошибку. Не можем ее убрать.
Почти не имеем описания внутренней логики.
Поясните пожалуйста:
- можно ли както ноутбук подключить к контроллеру , что для этого нужно.
- где найти программу работы с контроллером аленбрели.
- описание операторов программирования?, сам имею опыт с simatic. Думаю с аленбредли разберусь, хочу
посмотреть условия для ошибки. Достало уже очень.
Сейчас технологическая система не может работать, контроллер выдает ошибку. Не можем ее убрать.
Почти не имеем описания внутренней логики.
Поясните пожалуйста:
- можно ли както ноутбук подключить к контроллеру , что для этого нужно.
- где найти программу работы с контроллером аленбрели.
- описание операторов программирования?, сам имею опыт с simatic. Думаю с аленбредли разберусь, хочу
посмотреть условия для ошибки. Достало уже очень.
-
- освоился
- Сообщения: 227
- Зарегистрирован: 24 июл 2008, 09:22
- Имя: Мурашко Андрей Викторович
- Страна: Россия
- город/регион: Москва
- Благодарил (а): 6 раз
- Поблагодарили: 2 раза
Re: Help me по АЛЕН БРЕДЛИ
Уважаемый miniv2!
Вы сможете получить более качественную и быструю помощь, если напишете на support <гав> rockwell <точка> ru свой запрос с указанием вашего настоящего имени и места работы.
Учитывая обстоятельства запроса, предполагаю, что контроллер вы получили вместе с какой-то машиной из-за бугра и потеряли "все концы"...
Вы сможете получить более качественную и быструю помощь, если напишете на support <гав> rockwell <точка> ru свой запрос с указанием вашего настоящего имени и места работы.
Учитывая обстоятельства запроса, предполагаю, что контроллер вы получили вместе с какой-то машиной из-за бугра и потеряли "все концы"...
с наилучшими пожеланиями,
Андрей Мурашко
Андрей Мурашко
-
- здесь недавно
- Сообщения: 13
- Зарегистрирован: 19 сен 2010, 11:05
- Имя: Ефремов Александр Влаидмирович
- Страна: Россия
- город/регион: Санкт-Петербург
Re: Help me по АЛЕН БРЕДЛИ
Здравствуйте, господа. Столкнулся с проблемой "переложить" С++ код на ST или LD. В коде функция расчета CRC нужным мне способом:
////////////////////////////////////////////////////////
// Функция вычисляет и возвращает циклический код для
// последовательности из len байтов, указанной *msg.
// Используется порождающий полином:
// (X в степени 16)+(X в степени 12)+(X в степени 5)+1.
// Полиному соответствует битовая маска 0x1021.
//
int CRCode (char *msg, int len)
{
int j, crc = 0;
while ( len-- > 0 )
{
crc = crc ^ (int) *msg++ << 8;
for ( j=0; j < 8; j++ )
{
if(crc & 0x8000) crc = (crc << 1) ^ 0x1021;
else crc <<= 1;
}
}
return crc;
}
Эта фича нужна для окончания написания драйвера связи с ASCII устройством.
Проблема в том, что в ST нет функций\инструкций побитового сдвига, а в LD нет контрукций типа WHILE ...DO. Решить задачу "нестандартным" способом у меня не получилось
Помогите, плз!!! Всем заранее спасибо.
////////////////////////////////////////////////////////
// Функция вычисляет и возвращает циклический код для
// последовательности из len байтов, указанной *msg.
// Используется порождающий полином:
// (X в степени 16)+(X в степени 12)+(X в степени 5)+1.
// Полиному соответствует битовая маска 0x1021.
//
int CRCode (char *msg, int len)
{
int j, crc = 0;
while ( len-- > 0 )
{
crc = crc ^ (int) *msg++ << 8;
for ( j=0; j < 8; j++ )
{
if(crc & 0x8000) crc = (crc << 1) ^ 0x1021;
else crc <<= 1;
}
}
return crc;
}
Эта фича нужна для окончания написания драйвера связи с ASCII устройством.
Проблема в том, что в ST нет функций\инструкций побитового сдвига, а в LD нет контрукций типа WHILE ...DO. Решить задачу "нестандартным" способом у меня не получилось
Помогите, плз!!! Всем заранее спасибо.
-
- почётный участник форума
- Сообщения: 1185
- Зарегистрирован: 09 фев 2011, 11:32
- Имя: Дитрих Евгений Линусович
- город/регион: Донецк
- Благодарил (а): 354 раза
- Поблагодарили: 243 раза
Re: Help me по АЛЕН БРЕДЛИ
Все делается, готовый пример на ST для CRC16.Efrem писал(а): Эта фича нужна для окончания написания драйвера связи с ASCII устройством.
Проблема в том, что в ST нет функций\инструкций побитового сдвига, а в LD нет контрукций типа WHILE ...DO. Решить задачу "нестандартным" способом у меня не получилось
Помогите, плз!!! Всем заранее спасибо.
Есть там "промахи", но работе не мешают.
Для LD надо использовать [LBL] и (JMP).
_______________________________________________
Узкая специализация в широком смысле этого слова ведет к широкой идиотизации в узком смысле этого слова . (С) Бернард Шоу
Узкая специализация в широком смысле этого слова ведет к широкой идиотизации в узком смысле этого слова . (С) Бернард Шоу
-
- здесь недавно
- Сообщения: 10
- Зарегистрирован: 07 дек 2009, 14:16
- Имя: Волченков Александр
- город/регион: Москва
Re: Help me по АЛЕН БРЕДЛИ
Сорри что значит нет побитового сдвига? Это же операция умножения на степень двойки.
-
- здесь недавно
- Сообщения: 13
- Зарегистрирован: 19 сен 2010, 11:05
- Имя: Ефремов Александр Влаидмирович
- Страна: Россия
- город/регион: Санкт-Петербург
Re: Help me по АЛЕН БРЕДЛИ
Вставил указанную в ссылке функцию, спасибо Looker. Но результат у меня все-равно не получился :(
Вот тестовый код:
//---------------------------------------------------------------------------
array_test[0] := 16#02;
array_test[1] := 16#81;
array_test[2] := 16#10;
array_test[3] := 16#1F;
array_test[4] := 16#0C;
array_test[5] := 16#31;
array_test[6] := 16#34;
array_test[7] := 16#36;
array_test[8] := 16#10;
array_test[9] := 16#02;
array_test[10] := 16#09;
array_test[11] := 16#30;
array_test[12] := 16#30;
array_test[13] := 16#30;
array_test[14] := 16#09;
array_test[15] := 16#30;
array_test[16] := 16#34;
array_test[17] := 16#35;
array_test[18] := 16#09;
array_test[19] := 16#30;
array_test[20] := 16#30;
array_test[21] := 16#30;
array_test[22] := 16#09;
array_test[23] := 16#31;
array_test[24] := 16#0C;
array_test[25] := 16#10;
array_test[26] := 16#03;
CRC_16(CRC_TEST, array_test, 0, 27, 16#1021, CRC_Out_Test);
//----------------------------------------------------------------------------
У мнея CRC_Out_Test получилась 0F 66
а вот сканированная строка запроса от производителя (его софт на его прибор)
строка запроса : 02 81 10 1F 0C 31 34 36 10 02 09 30 30 30 09 30 34 35 09 30 30 30 09 31 0C 10 03 CRC1 CRC2,
CRC = 12 09
М.б. кто-нибудь подскажет в чем не складывается...
Заранее спасибо...
Вот тестовый код:
//---------------------------------------------------------------------------
array_test[0] := 16#02;
array_test[1] := 16#81;
array_test[2] := 16#10;
array_test[3] := 16#1F;
array_test[4] := 16#0C;
array_test[5] := 16#31;
array_test[6] := 16#34;
array_test[7] := 16#36;
array_test[8] := 16#10;
array_test[9] := 16#02;
array_test[10] := 16#09;
array_test[11] := 16#30;
array_test[12] := 16#30;
array_test[13] := 16#30;
array_test[14] := 16#09;
array_test[15] := 16#30;
array_test[16] := 16#34;
array_test[17] := 16#35;
array_test[18] := 16#09;
array_test[19] := 16#30;
array_test[20] := 16#30;
array_test[21] := 16#30;
array_test[22] := 16#09;
array_test[23] := 16#31;
array_test[24] := 16#0C;
array_test[25] := 16#10;
array_test[26] := 16#03;
CRC_16(CRC_TEST, array_test, 0, 27, 16#1021, CRC_Out_Test);
//----------------------------------------------------------------------------
У мнея CRC_Out_Test получилась 0F 66
а вот сканированная строка запроса от производителя (его софт на его прибор)
строка запроса : 02 81 10 1F 0C 31 34 36 10 02 09 30 30 30 09 30 34 35 09 30 30 30 09 31 0C 10 03 CRC1 CRC2,
CRC = 12 09
М.б. кто-нибудь подскажет в чем не складывается...
Заранее спасибо...
-
- здесь недавно
- Сообщения: 13
- Зарегистрирован: 19 сен 2010, 11:05
- Имя: Ефремов Александр Влаидмирович
- Страна: Россия
- город/регион: Санкт-Петербург
Re: Help me по АЛЕН БРЕДЛИ
Может быть подскажете как написать строкуGE_IP писал(а):Сорри что значит нет побитового сдвига? Это же операция умножения на степень двойки.
crc = crc ^ (int) *msg++ << 8;
и строку
if(crc and 0x8000) crc = (crc << 1) ^ 0x1021; else crc <<= 1;
на ST? Очень был бы благодарен....
Я написал код
//-------------------------------------
crc := crc XOR value * 256; // где value это "(int) *msg"
value := value +1;
.....
if (crc and 16#8000) then crc := (crc * 2) XOR 16#1021; else crc := crc * 2; end_if;
//--------------------------------------
Правильно я написал?.... Если ДА, то остается только "перевести" выражение (int) *msg на ST. HELP!!!
-
- здесь недавно
- Сообщения: 13
- Зарегистрирован: 19 сен 2010, 11:05
- Имя: Ефремов Александр Влаидмирович
- Страна: Россия
- город/регион: Санкт-Петербург
Re: Help me по АЛЕН БРЕДЛИ
Кому интересно, вот код для указанного выше примера
//------------------------------------------------------------------------------------
CRC_Write := 0;
for Length := 2 to Data_SPT_Write.LEN-1 do
CRC_Write := CRC_Write XOR Data_SPT_Write.data[Length] * 256;
for L:=0 to 7 do
if (CRC_Write & 16#8000) <> 0 then CRC_Write := CRC_Write * 2 XOR 16#1021;
else CRC_Write := CRC_Write * 2;
end_if;
end_for;
end_for;
// Выделим старший и младший байты
CRC.Source := CRC_Write;
CRC.Length := 8;
CRC.DestBit := 0;
CRC.Target := 0;
CRC.SourceBit := 0;
BTDT (CRC);
CRC_Lo := CRC.Dest;
CRC.SourceBit := 8;
BTDT (CRC);
CRC_Hi := CRC.Dest;
//--------------------------------------------------------------------
типы данных:
CRC_Lo , CRC_Hi - SINT;
CRC_Write - INT;
Data_SPT_Write - String;
CRC - FBD_BIT_FIELD_DISTRIBUTE
//------------------------------------------------------------------------------------
CRC_Write := 0;
for Length := 2 to Data_SPT_Write.LEN-1 do
CRC_Write := CRC_Write XOR Data_SPT_Write.data[Length] * 256;
for L:=0 to 7 do
if (CRC_Write & 16#8000) <> 0 then CRC_Write := CRC_Write * 2 XOR 16#1021;
else CRC_Write := CRC_Write * 2;
end_if;
end_for;
end_for;
// Выделим старший и младший байты
CRC.Source := CRC_Write;
CRC.Length := 8;
CRC.DestBit := 0;
CRC.Target := 0;
CRC.SourceBit := 0;
BTDT (CRC);
CRC_Lo := CRC.Dest;
CRC.SourceBit := 8;
BTDT (CRC);
CRC_Hi := CRC.Dest;
//--------------------------------------------------------------------
типы данных:
CRC_Lo , CRC_Hi - SINT;
CRC_Write - INT;
Data_SPT_Write - String;
CRC - FBD_BIT_FIELD_DISTRIBUTE
-
- здесь недавно
- Сообщения: 13
- Зарегистрирован: 19 сен 2010, 11:05
- Имя: Ефремов Александр Влаидмирович
- Страна: Россия
- город/регион: Санкт-Петербург
Re: Help me по АЛЕН БРЕДЛИ
Всем привет. Очередная проблема по любимому АВ. Теперь по его родной скаде RSVeiw32 как можно быстренько из RSLogix5000перенести все тэги в RSView32??? Я как только не пытался импорт\экспорт - не получается, такое ощущение что RSLogix эспортирует в формате, который RSView32 "не понимает" :(( А ручками набивать каждый тэг уже умаялся. HELP!!!
-
- почётный участник форума
- Сообщения: 1185
- Зарегистрирован: 09 фев 2011, 11:32
- Имя: Дитрих Евгений Линусович
- город/регион: Донецк
- Благодарил (а): 354 раза
- Поблагодарили: 243 раза
Re: Help me по АЛЕН БРЕДЛИ
См. Logix 5000 Tag Import Utility for RSView32...Efrem писал(а):Всем привет. Очередная проблема по любимому АВ. Теперь по его родной скаде RSVeiw32 как можно быстренько из RSLogix5000перенести все тэги в RSView32??? Я как только не пытался импорт\экспорт - не получается, такое ощущение что RSLogix эспортирует в формате, который RSView32 "не понимает" :(( А ручками набивать каждый тэг уже умаялся. HELP!!!
Сразу туда не войдешь - требуется регистрация.
_______________________________________________
Узкая специализация в широком смысле этого слова ведет к широкой идиотизации в узком смысле этого слова . (С) Бернард Шоу
Узкая специализация в широком смысле этого слова ведет к широкой идиотизации в узком смысле этого слова . (С) Бернард Шоу