Имеется ввод данных по протоколу Modbus - TCP/IP. В источнике в настройках указывается ip адрес и все остальное - все работает. Такая проблема: источников много и их адреса еще но определены разработчиками. Можно ли как-нибудь программно ввести ip адрес из какого нибудь файла (ТХТ или XLS) и записать его в источник. Толко если можно поподробнее я новичок в работе с TM6. Заранее спасибо.
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
Все ip-адреса хранятся в файле ip-modbus. Он текстовый.
Posted by Kidim1975 (Участник № / Member № 4421) on :
1.Спасибо видел. А если несколько источников с разными ip адресами, то как в этом файле отличить кому какой? 2. Если экран сделан в виде всплывающего окна, как его программно вывести вперед (сделать активным)? 3. можно ли программно завершить исполнение и выключить RTC.exe? (просто как я понял можно запустить rtc с параметром /hidemenu, а как в таком случае выйти из программы?)
Posted by Kidim1975 (Участник № / Member № 4421) on :
И еще вопрос в догонку можно ли какими нибудь готовыми методами ввести данные GPS поступающие на ком порт по протоколу NMEA 0183?
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
1. Там все увидите. Сделайте проект с несколькими адресами и посмотрите, что будет в файле.
2. Послать 2 во входное значение канала вызова Экрана.
3. Можно остановить выполнение проекта. Закрыть монитор нельзя.
4. Можно. Для этого есть назначение COM-порта GPS.
Posted by Kidim1975 (Участник № / Member № 4421) on :
Спасибо за быстрый ответ. К сожалению к нему нужны уточнения. 1. По вопросу остановки проекта, может я не очень четко описал ситуацию - проект запускается с ключами /fullscreen /hydemenu /run и естественно видно только то что я нарисовал на экране. Можно конечно заставить пользователя учить сочетания CTRL+R CTRL+F CTRL+T но это на мой взгляд программиста не очень правильное решение. Хотелось бы чтобы при нажатии на некоторую кнопочку "выход" сработало бы сразу все и CTRL+R и CTRL+F и CTRL+T, чтобы пользователю осталось только закрыть окно windows. 2. Опять моя вина, я написал "GPS" но имел в виду не совсем это. По протоколу NMEA 0183 общаются множество навигационных приборов: компасы, автопилоты, курсоуказатели и ТП. мне например нужно получить не только широту и долготу но и информацию с компаса и др устройств. И если не очень трудно по вторму вопросу напишите немного более подробно. Заранее благодарен.
Posted by Kidim1975 (Участник № / Member № 4421) on :
Кстати я могу эту же информацию NMEA получать по TCP/IP может будет дегче подцепить ее с IP чем с ком порта? Очень нужно, помогите.
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
1. Системная переменная @Exit Если значение данной переменной типа OUTPUT равно 5: при работе в WINDOWS – монитор останавливается.
Это заменяет Ctrl + R. Остальное программно сделать нельзя.
2. Нет, протокол NMEA 0183 не поддерживается.
Posted by Kidim1975 (Участник № / Member № 4421) on :
1. Через @Exit я уже пробовал. Мне кажется в следующих версиях программы вам нужно, все таки предусмотреть программные аналоги CTRL+F и CTRL+T а также и CTRL+SHIFT+Z или даже какое нибудь более функциональное масштабирование. На мой взгляд это очень логично. 2. Помогите написать драйвер для NMEA 0183. Если у вас есть получение широты-долготы, то остальное не должно быть более сложной задачей. может дадите исходники как это реализовано? Или еще лучше сами сделаете. только нормальный драйвер в источники, а не через переменные.
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
1. Мы обсудим целесообразность введения этих функций.
2. По этому вопросу нужно обратиться в marketing@adastra.ru.
Posted by Kidim1975 (Участник № / Member № 4421) on :
Господа подскажите ответ на простой вопрос. Имеется контроллер с обменом по Modbus TCP в контроллере есть модули цифрового ввода и вывода и аналоговые входы. С аналогового входа получаю информацию, с дискретных входов тоже - тут все нормально. В дискретные выходы я тоже все записываю нормально. Но информация на выходах контроллера может меняться и под влиянием других процессов, а вот прочитать информацию с выхода не получается. Я так понял чтобы выход читать нужно использовать Rout_Byte то есть чтение выходного байта? Если это так то каковы тогда его настройки? Такие же как в случае если я этот байт записываю, то есть W_Byte или нет? В частности направление? Или я вообще все не так понимаю. Просто в справке не очень понятно написано, я экспериментировал и понял что у меня в контроллере канал начинается с 0 для каждого типа устройств, то есть превый цифровой вход канал 0, первый аналоговый вход канал 0, первый цифровой выход тоже канал 0. Если я оставлю для Rout_Byte тип направление по умолчанию input я не понимаю какой канал. если беру output тоже не работает, может так и не может работать? как же всетаки ПРОЧИТАТЬ цифровые ВЫХОДЫ?
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
Если Вы хотите прочитать состояние тех же выходов, в которые Вы успешно записываете с помощью функции W_Byte, то Вам надо иметь компонент "Источников" Rout_Byte (Input) с теми же настройками ("Адрес", "Канал" и IP-адрес), что и в компоненте W_Byte. К компоненту Rout_Byte должен быть привязан канал HEX16 (Input). Все это справедливо, если адреса на считывание и запись дискретных Modbus-переменных типа OUT в конкретном устройстве в соответствии со стандартом Modbus совпадают. Если же бинарный выход в контроллере мэпируется на запись и чтение по разным адресам памяти, надо уточнить эти адреса по описанию устройства. И соответственно настраивать компоненты Modbus в проекте.
Posted by Kidim1975 (Участник № / Member № 4421) on :
Posted by Kidim1975 (Участник № / Member № 4421) on :
Спасибо. Действительно адреса для чтения выходов оказались со смещением 0х0200 от их записи.
Posted by ilovefiniki (Участник № / Member № 4106) on :
У меня похожая ситуация. Только немного сложнее. Есть канал hex16(output). По нажатию кнопки на экране мне нужно отправлять 1 в контроллер по modbusTCP. Только вот срабатывает это только единожды. Поскольку регистр в контроллере сбрасывается в 0 самостоятельно по многим причинам, известным только в контроллере, мне необходимо каждый раз отправлять именно 1( что аналогичное кнопке без фиксации), но ТМ думает что значение не изменилось и ничего не отправляет. Если пытаться по нажатию кнопки на экране сначала сбрасывать канал в 0, а потом опять выставлять 1, то значение в канале меняется, но дальше опять таки не уходит. Я так понимаю потому что время обработки событий кнопки гораздо меньше чем передача по modbus обёрнутого в GPRS и к моменту передачи опять оказывается что значение канала тоже самое и отправлять его контроллеру не имеет смысла. В общем не могли бы Вы привести простой пример: 1 кнопка на экране постоянно записывает по модбасу 1.
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
На сегодняшний день принудительная посылка в контроллер от кнопки с экрана будет осуществляться, если второй командой той же кнопки при нажатии будет посылка "1" в атрибут EXEC (39) того же канала.