На форуме обязательно:
Рекламу мы не размещаем ни на каких условиях.
- Заполнить свой профиль НА РУССКОМ ЯЗЫКЕ КИРИЛИЦЕЙ. См. Правила, п.2.d.
- Не писать свой вопрос в первую попавшуюся тему, а вместо этого создать свою. См. Правила, п.3.a.
Рекламу мы не размещаем ни на каких условиях.
Help me по АЛЕН БРЕДЛИ
Help me по АЛЕН БРЕДЛИ
Господа мы имеем проблему, помогите ее решить. год назад нам поставили PLС ален бредли.
Сейчас технологическая система не может работать, контроллер выдает ошибку. Не можем ее убрать.
Почти не имеем описания внутренней логики.
Поясните пожалуйста:
- можно ли както ноутбук подключить к контроллеру , что для этого нужно.
- где найти программу работы с контроллером аленбрели.
- описание операторов программирования?, сам имею опыт с simatic. Думаю с аленбредли разберусь, хочу
посмотреть условия для ошибки. Достало уже очень.
Сейчас технологическая система не может работать, контроллер выдает ошибку. Не можем ее убрать.
Почти не имеем описания внутренней логики.
Поясните пожалуйста:
- можно ли както ноутбук подключить к контроллеру , что для этого нужно.
- где найти программу работы с контроллером аленбрели.
- описание операторов программирования?, сам имею опыт с simatic. Думаю с аленбредли разберусь, хочу
посмотреть условия для ошибки. Достало уже очень.
-
- освоился
- Сообщения: 225
- Зарегистрирован: 24 июл 2008, 08:22
- Имя: Мурашко Андрей Викторович
- Откуда: Москва
- Благодарил (а): 6 раз
- Поблагодарили: 2 раза
- Контактная информация:
Re: Help me по АЛЕН БРЕДЛИ
Уважаемый miniv2!
Вы сможете получить более качественную и быструю помощь, если напишете на support <гав> rockwell <точка> ru свой запрос с указанием вашего настоящего имени и места работы.
Учитывая обстоятельства запроса, предполагаю, что контроллер вы получили вместе с какой-то машиной из-за бугра и потеряли "все концы"...
Вы сможете получить более качественную и быструю помощь, если напишете на support <гав> rockwell <точка> ru свой запрос с указанием вашего настоящего имени и места работы.
Учитывая обстоятельства запроса, предполагаю, что контроллер вы получили вместе с какой-то машиной из-за бугра и потеряли "все концы"...
с наилучшими пожеланиями,
Андрей Мурашко
Андрей Мурашко
-
- здесь недавно
- Сообщения: 13
- Зарегистрирован: 19 сен 2010, 10: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. Решить задачу "нестандартным" способом у меня не получилось
Помогите, плз!!! Всем заранее спасибо.
-
- не первый раз у нас
- Сообщения: 341
- Зарегистрирован: 09 фев 2011, 11:32
- Имя: Дитрих Евгений Линусович
- Откуда: Донецк
- Благодарил (а): 54 раза
- Поблагодарили: 23 раза
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, 10: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, 10: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, 10: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, 10:05
- Имя: Ефремов Александр Влаидмирович
- Откуда: Санкт-Петербург
- Контактная информация:
Re: Help me по АЛЕН БРЕДЛИ
Всем привет. Очередная проблема по любимому АВ. Теперь по его родной скаде RSVeiw32 как можно быстренько из RSLogix5000перенести все тэги в RSView32??? Я как только не пытался импорт\экспорт - не получается, такое ощущение что RSLogix эспортирует в формате, который RSView32 "не понимает" :(( А ручками набивать каждый тэг уже умаялся. HELP!!!
-
- не первый раз у нас
- Сообщения: 341
- Зарегистрирован: 09 фев 2011, 11:32
- Имя: Дитрих Евгений Линусович
- Откуда: Донецк
- Благодарил (а): 54 раза
- Поблагодарили: 23 раза
Re: Help me по АЛЕН БРЕДЛИ
См. Logix 5000 Tag Import Utility for RSView32...Efrem писал(а):Всем привет. Очередная проблема по любимому АВ. Теперь по его родной скаде RSVeiw32 как можно быстренько из RSLogix5000перенести все тэги в RSView32??? Я как только не пытался импорт\экспорт - не получается, такое ощущение что RSLogix эспортирует в формате, который RSView32 "не понимает" :(( А ручками набивать каждый тэг уже умаялся. HELP!!!
Сразу туда не войдешь - требуется регистрация.