![]() |
|
|
#21 |
|
Senior Member
|
Обновлён. Версия 0.1.5276.20347.
Убрал зависимость от jQuery. Пришлось переделать shell-скрипт, отвечающий за разбор параметров. Размер архива уменьшился почти в 4 раза. Теперь скрипт запроса должен выглядеть вот так: Код:
modbus.OnFailure = function( handle, error ) {
document.getElementById( 'console' ).value += '\nОшибка: ' + error;
}
modbus.OnSuccess = function( handle ) {
document.getElementById( 'console' ).value += '\nRegister( ' + handle + ', 0 ): ' + modbus.Register( handle, 0 );
}
modbus.Serial = {
Name: '/dev/ttyATH0',
BaudRate: EnModbusBaudRate.mbBaudRate9600,
DataBits: EnModbusDataBits.mbDataBits8Bits,
Parity: EnModbusParity.mbParityNone,
StopBits: EnModbusStopBits.mbStopBitsOne,
Timeout: 100
};
// ReadHoldingRegisters( handle, slaveid, address, quantity, updaterate )
// Starting Address: 0x0000 to 0xFFFF.
// Quantity of Inputs: 1 to 125 (0x7D).
modbus.ReadHoldingRegisters( 1, 0, 0, 1, 1000 );
modbus.ReadHoldingRegisters( 2, 0, 1, 1, 950 );
modbus.ReadHoldingRegisters( 3, 0, 2, 1, 750 );
modbus.DelayBetweenPoll = 200;
modbus.UpdateEnable(1);
modbus.UpdateEnable(2);
modbus.UpdateEnable(3);
setTimeout(
function() {
modbus.UpdateDisable(1);
modbus.UpdateDisable(2);
modbus.UpdateDisable(3);
}, 5000 );
Код:
ajax: function( request ) {
var xhr = new XMLHttpRequest();
xhr.onreadystatechange = function() {
if ( this.readyState == 4 && this.status == 200 ) {
request.success( xhr.responseText );
}
};
xhr.open( request.type, request.url, request.async );
xhr.send( JSON.stringify( request.data ) );
},
jQuery я убрал, но добавил json.cgi - это парсер JSON формата. Он позволяет делать разбор принимаемых данных, которые я передаю всегда в json-формате. Довольно удобно и места он занимает не много ~4 Кб. Сейчас я в коде везде использую синхронные запросы, т.к. пока не знаю как решить проблему параллельного запуска скриптов в случае асинхронных post запросов. Минусом является то, что страничка слегка "подтормаживает" при отображении принимаемых данных.
__________________
Россия навсегда! |
|
|
|
|
|
#22 |
|
Senior Member
|
Admin, вот этот архив можно добавить в комплект для тестирования.
__________________
Россия навсегда! |
|
|
|
|
|
#23 |
|
Junior Member
Регистрация: 16.05.2014
Адрес: Баку
Сообщений: 18
Вес репутации: 0 ![]() |
Вячеслав,все операции так же проводить через модуль?Или же уже можно запрашивать через браузер?
|
|
|
|
|
|
#24 |
|
Senior Member
Регистрация: 14.04.2010
Сообщений: 239
Вес репутации: 0 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
|
|
|
|
|
|
#25 |
|
Senior Member
|
Я раньше не добавлял модули в CyberWrt. Единственный мой модуль добавил Admin, поэтому я не знаю как это делается. В архиве modbus.zip я добавил картинок, согласно описанию и последние версии скриптов.
Этот архив меньшего размера, чем предыдущие, так как я убрал зависимость от jQuery. Сам скрипт modbus.js теперь можно использовать и отдельно в своих разработках. Он самодостаточен.
__________________
Россия навсегда! |
|
|
|
|
|
#26 |
|
Senior Member
Регистрация: 14.04.2010
Сообщений: 239
Вес репутации: 0 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
ок. новую версию залил
|
|
|
|
|
|
#27 |
|
Senior Member
|
На всякий случай поясняю, что func.txt содержит текст запроса в кодировке Base64. В роутере есть специальная команда для кодирования и декодирования таких строк: base64.
Не рекомендую декодировать и править этот файл вручную. Это связано с переносами строк. Кодирование позволяет сохранить оригинальную бинарную копию файла. Разные редакторы по-разному интерпретируют переносы. Из-за этого может нарушиться отображение скрипта в браузере. Я пока не нашел более удобного и безопасного в этом смысле способа работы с текстом.
__________________
Россия навсегда! |
|
|
|
|
|
#28 |
|
Senior Member
|
Ой, а я и не понял, что модуль там находится
Думал в тестах он будет. Спасибо, не обратил внимания на прошлый пост по этому поводу. Потестирую.
__________________
Россия навсегда! |
|
|
|
|
|
#29 | |
|
Senior Member
|
Цитата:
К примеру, чтобы сделать Конфигутатор какого-то устройства или HMI, нужно графическую часть написать на html, а всё взаимодействие будет идти через http-сервер, который работает в роутере. Страничка обращается с запросом к серверу, тот запускает локальный скрипт, этот скрипт обращается к последовательному порту и потом всё в обратном порядке. Так это работает.
__________________
Россия навсегда! |
|
|
|
|
|
|
#30 |
|
Junior Member
Регистрация: 16.05.2014
Адрес: Баку
Сообщений: 18
Вес репутации: 0 ![]() |
Советую добавить еще одну кнопку "стоп" в модуль и сделать постоянный опрос регистров.А то всего 4 раза опрашивает.И также выдает ошибку -3 при записи регистра 0х05 write single coil.В нулевое состояние записывается без проблем
|
|
|
|
![]() |
| Метки |
| modbus, modbus-rtu, скрипт, модуль |
| Здесь присутствуют: 1 (пользователей: 0 , гостей: 1) | |
|
|