А OpenHAB на каком устройстве работает ?
А OpenHAB на каком устройстве работает ?
полученная переменная это массив, это как в КДС array[0..3] of byte, как понимаете делить и умножать это в корне неправильно, я же шаблон показал, здесь должно было быть первый ворд temp[0]*256+temp[1]. И вот какие индексы на каком месте будут,это и определит порядок байт с которым многие мучаются не получая на другом конце связи нужное значение.
Судя по ошибкам вобщето выходит, что компилятор не знает о такой функции,почему то возвращает null, может аргумент не типа флоат
Bad programmers worry about the code. Good programmers worry about data structures and their relationships
среди успешных людей я не встречала нытиков
Барбара Коркоран
Не внимательно прочитал.
Нашел в openhab.modbus.java
/**
* Converts a byte[4] binary float value to a float primitive.
*
* @param bytes the byte[4] containing the float value.
* @return a float value.
*/
public static final float registersToFloat(byte[] bytes) {
return Float.intBitsToFloat((
((bytes[0] & 0xff) << 24) |
((bytes[1] & 0xff) << 16) |
((bytes[2] & 0xff) << 8) |
(bytes[3] & 0xff)
));
}//registersToFloat
/**
* Converts a float value to a byte[4] binary float value.
*
* @param f the float to be converted.
* @return a byte[4] containing the float value.
*/
public static final byte[] floatToRegisters(float f) {
return intToRegisters(Float.floatToIntBits(f));
}//floatToRegisters
Последний раз редактировалось Smith2007; 27.10.2014 в 06:20.
Изменил правило. Вероятно нужно определить массив.
rule "FloatToInt" when Item _float1 received command
then
var x_float = (_float1.state as DecimalType).intValue
var temp = Float::floatToIntBits(x_float)
var res1 = temp[1]*256+temp[2]
var res2 = temp[3]*256+temp[4]
var1.sendCommand(res1)
var2.sendCommand(res2)
end12:25:15.475 DEBUG o.o.m.r.i.engine.RuleEngine[:285]- Executing rule 'FloatToInt'12:25:15.480 ERROR o.o.c.s.ScriptExecutionThread[:50]- Error during the execution of rule 'FloatToInt': feature was simple feature call but got receiver instead of null. Receiver: Proxy for org.eclipse.xtext.xbase.lib.Functions$Function1: org.eclipse.xtext.xbase.impl.XClosureImplCustom@14 04a56 (explicitSyntax: false)
ну смотрите Вы x_float объявили как intValue я так понимаю это инт а не флоат и подставлять его в функцию некорректно
Bad programmers worry about the code. Good programmers worry about data structures and their relationships
среди успешных людей я не встречала нытиков
Барбара Коркоран
Да. Спешка. В перерыве на обед заскочил домой и ...
Вечером внимательнее посмотрю.
1. Нужно ли объявлять массив байт перед тем как присваивать ему значение функции?
2. Не совсем понятна реализация запросов к слейву. Вопрос: Если сделать 3 слейва. Один для значений boll, второй для word и третий для float? Как в этом случае ПЛК отработает запросы?
Пробовал по разному. Выдается ошибка несоответствия типов.
Что-то 2-3 недели вылились в почти 2 года. Таки переехали. Куча всего недоделано, чертов кризис, и прочая, но умный дом на ПЛК110-60 стал реальностью.
Итак, первым делом пришлось выкинуть энкодеры. Очень хлипкий конструктив. Против банды трехлеток - ни единого шанса.Поменял на двухклавишные выключатели, которые переделываются в кнопки - http://www.lk60.ru/lk-60-button-two.html, к ним есть штатные пружинки. Заказываются отдельно, стоят 3 рубля. Детскотест прошли успешно.
Ошибся малость с размерами шкафа. Теперь ломаю голову, как все разместить.
111.jpg
Туда надо запихать еще один модуль на 32 выхода... Буду думать.
Хороший у Вас шкафчикНо как-то мало клемников видно.
Я же пришел к выводу, что все датчики собирать в одну точку не очень хорошо. В итоге появилось 2 шкафа управления. В одном сосредоточено оборудование для отопления и водоподготовкой, а в другом (в другом конце дома) датчики безопасности, контроль и управление воротами.
С момента запуска с середины 13 года произошло множество изменений в алгоритмах управления. Некоторые элементы удалил за ненадобностью, другие добавил. Дважды существенно перерабатывал код программы. Один раз после того как стал понимать что такое ПЛКи второй когда добавил в систему openhab.
По началу думал панель визуализации добавить но сейчас понял, что это было бы лишним. openhab позволил сделать быструю визуализацию и добавил еще много всяких вкусностей. Так через его интерфейс организовал оповещение о нештатных ситуациях на е-мейл и твит. Можно еще добавить push сообщение на смартфоны. Связал систему видеонаблюдения. Теперь при сработке датчика охраны (распознается на ПЛК) формируется сообщение на СМС, е-мейл и т.д. В е-мейл вкладываются снапшоты с камер видеонаблюдения.
Screenshot_2015-09-05-11-22-23.pngScreenshot_2015-09-05-11-22-31.pngScreenshot_2015-09-05-11-22-42.pngScreenshot_2015-09-05-11-22-55.pngScreenshot_2015-09-05-11-23-08.pngScreenshot_2015-09-05-11-23-12.pngScreenshot_2015-09-05-11-23-32.pngScreenshot_2015-09-05-11-24-20.png