Главная   Downloads   Разное  
FAQ     Поиск   Регистрация   Вход 
Текущее время: Чт мар 28, 2024 20:33

Часовой пояс: UTC + 3 часа (Russia: MSK)




Начать новую тему Ответить на тему  [ 6 сообщений ] 
Автор Сообщение
 Заголовок сообщения: CX-Protocol two different bytes in the same register
СообщениеДобавлено: Ср авг 15, 2012 19:51 
Не в сети
Аватара пользователя

Регистрация: Вс мар 02, 2008 23:06
Сообщения: 28
Откуда: Moldova Chishinev
есть следущая задача нужно добавить в регистр DM 00000 2+2 байт MSB,LSB (то что с жирным шрифтом) это реально? через протокол или надо самому в плк свезать.
прибор выдает только инт числа ASCII т.е то что показывает на десплей
A I 0 0 0 . 0 1 2
41 6C 30 30 30 2E 30 31 32
сделал следущий мсг :)
<a>+$(*,2)+&(W(DM 00000),2)+$(*,1)+&~(W(DM 00000),2)+<c>

хочется получить 0001 bcd


В начало
 Профиль  
 
 Заголовок сообщения: Re: CX-Protocol two different bytes in the same register
СообщениеДобавлено: Чт авг 16, 2012 07:43 
Не в сети

Регистрация: Вт фев 12, 2008 11:30
Сообщения: 324
Откуда: Cherepovets
А какой контроллер? И почему хочется получать данные в двоично-десятичном коде?
Если делать преобразования в контроллере (мне это ближе), то можно использовать функцию FVAL(449). Она преобразует ASCII в число с плавающей запятой. Запятая- код "2E".
Сразу не мог понять суть проблемы, долго переписывал это сообщение на форуме (прошу прощения-долго соображаю с утра)
Избавиться от запятой так чтобы число превратилось в целое? Нет, предложеным образом не получится. Два байта записываются в одно слово, а обозначение ~ означает, что младший и старший байт будут переставлены местами, следовательно при обработке кода 30 31 Вы получите #100
PS
А какой прибор передает такую последовательность? Может это стандартный протокол, который кто-то уже обрабатывал.


В начало
 Профиль  
 
 Заголовок сообщения: Re: CX-Protocol two different bytes in the same register
СообщениеДобавлено: Чт авг 16, 2012 16:34 
Не в сети
Аватара пользователя

Регистрация: Вс мар 02, 2008 23:06
Сообщения: 28
Откуда: Moldova Chishinev
I1 спасибо за ответ, контроллер CJ1M-CPU13 связан с CX Spervisor где ведется статистика, на нем церез SCU 31 -1 PORT 8 весов VISHAY VT400
решил проблему так, не знаю коряво или нет :
<a>+$(*,2)+&~(W(DM 00000),2)+$(*,1)+&(W(DM 00001),2)+<c>
@LD 1509.11
+B(404) D0 D1 D2


В начало
 Профиль  
 
 Заголовок сообщения: Re: CX-Protocol two different bytes in the same register
СообщениеДобавлено: Чт авг 16, 2012 19:10 
Не в сети
Аватара пользователя

Регистрация: Вс мар 02, 2008 23:06
Сообщения: 28
Откуда: Moldova Chishinev
Alexandr писал(а):
I1 спасибо за ответ, контроллер CJ1M-CPU13 связан с CX Spervisor где ведется статистика, на нем церез SCU 31 -1 PORT 8 весов VISHAY VT400
решил проблему так, не знаю коряво или нет :
<a>+$(*,2)+&~(W(DM 00000),2)+$(*,1)+&(W(DM 00001),2)+<c>
@LD 1509.11
+B(404) D0 D1 D2

дочитал мануал


У вас нет необходимых прав для просмотра вложений в этом сообщении.


В начало
 Профиль  
 
 Заголовок сообщения: Re: CX-Protocol two different bytes in the same register
СообщениеДобавлено: Пт авг 17, 2012 09:19 
Не в сети

Регистрация: Вт фев 12, 2008 11:30
Сообщения: 324
Откуда: Cherepovets
Есть русскоязычная версия руководства W344-RU2-06 Раздел 3-4-5
Немного подзабыл уже, сам ошибся с символом ~ (он не байты переставляет, а направление преобразования меняет)
Alexandr писал(а):
контроллер CJ1M-CPU13 связан с CX Spervisor где ведется статистика

Тогда формат BCD вообще не уместен, а данные веса вообще в формате с плавающей запятой сразу получать, чтобы потом для каких-нибудь математических расчетов удобно было, да и точность до последнего знака не помешает.
Для этого данные без преобразований пересылаем в контроллер:
<a>+(*,1)+~(W(DM 00000),6)+<c>
далее в контроллере при помощи FVAL(449) преобразуем в формат с запятой
Вложение:
Untitled-1.jpg

Если хотите другой формат, то далее можно умонжить полученное число на &100 и выполнить функцию FIX(450) для преобразования в шеснадцатиричный код


У вас нет необходимых прав для просмотра вложений в этом сообщении.


В начало
 Профиль  
 
 Заголовок сообщения: Re: CX-Protocol two different bytes in the same register
СообщениеДобавлено: Пт авг 17, 2012 12:42 
Не в сети
Аватара пользователя

Регистрация: Вс мар 02, 2008 23:06
Сообщения: 28
Откуда: Moldova Chishinev
I1 писал(а):
Тогда формат BCD вообще не уместен, а данные веса вообще в формате с плавающей запятой сразу получать, чтобы потом для каких-нибудь математических расчетов удобно было, да и точность до последнего знака не помешает.

ваше решение более логичное но для меня практичнее читать из скады в BCD, у меня весы посылают статус 1 байт+6 байт вес : 5 дижит+точка (0-9) 000.00 (зависит он настроек разрешения дисплея индикатора, max вес 060.00 Kg ) первый ноль я сразу отбрасываю как и точку получится 0000 BCD, уже в скаде делю на &100 и получау вес 00.00

<a>+~(W(DM 00010),1)+$(*,1)+&~(W(DM 00011),5)+<c>
STATUS / first Zero ignored / WEIGHT


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

Часовой пояс: UTC + 3 часа (Russia: MSK)


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

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


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

Найти:
Переход:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская документация по phpBB 3