PDA

Просмотр полной версии : СПК207 и MasterOPC по Ethernet.



spinogryz57
23.07.2014, 15:50
Мне нужно "соединить" СПК207 и MasterOPC по Ethernet.

Как это сделать физически и что делать в OPC я знаю. НЕ могу понять, как это сделать в CoDeSys 3.5. я добавил "Ethernet" в него "ModBus TCP Slave Device" а что дальше делать не знаю, мне надо добавить переменную типа REAL как это сделать? подскажите пожалуйста.

spinogryz57
24.07.2014, 09:30
Я неправильно поставил вопрос? Или некто не знает как это сделать? Вы уж пошлите меня тогда, молчание угнетает.

Bandikoot
24.07.2014, 15:53
интересует тот же аспект, только для СПК110, который опрашивает модули по протоколу ОВЕН, а с OPC-сервером (Lectus) должен будет общаться по ModBus RTU уже как slave

spinogryz57
24.07.2014, 16:44
Вот, что мне ответили. Может Вам поможет, мне не помогло в силу моей тупости)) Увеличить число регистров я смог, добавить блок тоже смог, а вот как разбить флоат на две переменные я не понял. И что такое указатели?


Увеличьте число регистров временного хранения, оттуда будет читать ОРС.

И… к сожалению, вам необходимо разбить флоат ( он же риал) на две ворд переменные через указатели. Вот Вам блок. Импортируйте в закладку POU ( проект – импорт)

smk1635
24.07.2014, 17:31
Вот, что мне ответили. Может Вам поможет, мне не помогло в силу моей тупости)) Увеличить число регистров я смог, добавить блок тоже смог, а вот как разбить флоат на две переменные я не понял. И что такое указатели?

Про указатели гляньте здесь: http://owen.ru/forum/showthread.php?t=15455&highlight=%C8%F1%EF%EE%EB%FC%E7%EE%E2%E0%ED%E8%E5+ %F3%EA%E0%E7%E0%F2%E5%EB%E5%E9+Pointer

Modbus заточен для работы с переменными типа Word.
Этот блок и делает из одной переменой Флоат, две переменные типа Ворд.
Вот эти две переменные и передаёте по сети.
И потом опять склеиваете в Флоат после передачи.
Как то так.

Bandikoot
25.07.2014, 08:10
не проще ли сдвинуть десятичный разделитель и передавать сразу word?

по теме: http://www.owen.ru/forum/showthread.php?t=16932 вот что удалось откопать, сейчас проверяю работоспособность

spinogryz57
25.07.2014, 09:08
Про указатели гляньте здесь: http://owen.ru/forum/showthread.php?t=15455&highlight=%C8%F1%EF%EE%EB%FC%E7%EE%E2%E0%ED%E8%E5+ %F3%EA%E0%E7%E0%F2%E5%EB%E5%E9+Pointer

Modbus заточен для работы с переменными типа Word.
Этот блок и делает из одной переменой Флоат, две переменные типа Ворд.
Вот эти две переменные и передаёте по сети.
И потом опять склеиваете в Флоат после передачи.
Как то так.

Спасибо огромное!!! А подскажите, как их потом в MasterOPC склеить обратно?))


не проще ли сдвинуть десятичный разделитель и передавать сразу word?

Спасибо большое, в таком случае исчезают десятые доли, а они мне нужны.

Bandikoot
25.07.2014, 09:16
Спасибо большое, в таком случае исчезают десятые доли, а они мне нужны.

думаю, я неправильно выразился. допустим, вам нужно передать значение 27.5 (real), вы передаёте 275 (word), а при выводе делаете на это поправку

spinogryz57
25.07.2014, 09:30
Я что то вообще не догоняю, как это сделать, а есть инструкция для особо чайников?

Мне прислали мой же проект, но с примером такого разбиения и там появилась какая то ACT (см. миниатюру) и как она образовалась? ее в ручную писали или как?

И почему в CoDeSys 2.3 можно легко и просто добавить подэлемент Float и все нормально работает с OPC, а в 3.5 надо заморачиваться с какими то указателями.

Я понимаю что дело в нехватке знаний с моей стороны, но как так вышло, что новая версия CoDeSys стала сложнее и неудобнее?

Bandikoot
25.07.2014, 10:54
только что получилось настроить передачу данных в лектус с помощью примера из топика, на который я ссылался выше (http://www.owen.ru/forum/showthread.php?t=16932)

у меня, как оказалось, проблема была в переходнике с COM на USB. поменяли на другой, всё заработало.

Трофимов Артем
25.07.2014, 11:05
Я что то вообще не догоняю, как это сделать, а есть инструкция для особо чайников?

Мне прислали мой же проект, но с примером такого разбиения и там появилась какая то ACT (см. миниатюру) и как она образовалась? ее в ручную писали или как?

И почему в CoDeSys 2.3 можно легко и просто добавить подэлемент Float и все нормально работает с OPC, а в 3.5 надо заморачиваться с какими то указателями.

Я понимаю что дело в нехватке знаний с моей стороны, но как так вышло, что новая версия CoDeSys стала сложнее и неудобнее?

могу объяснить, т.к. на CFC дольше было делать и прописывать два вызова ФБ , я добавил вам в программу действие (действие при вызове может делать операции с переменными , описанными в родитеской программе /ФБ) . единственный момент, я забыл у Вас его в программе вызвать. добавьте элемент на поле проекта и назовите его ACT. тогда он начнёт работать. выглядеть это будет так 13744

во втором кодесис наши разработчики писали прошивки, где были элементы обмена данными заложенными нами. данные модули(устройства) в CDS3 разработаны компанией 3S. потому такая разница в использовании.

по поводу инструкции обмена данными http://www.owen.ru/forum/attachment.php?attachmentid=10165&d=1379506172 инструкция

spinogryz57
25.07.2014, 11:16
только что получилось настроить передачу данных в лектус с помощью примера из топика, на который я ссылался выше (http://www.owen.ru/forum/showthread.php?t=16932)

у меня, как оказалось, проблема была в переходнике с COM на USB. поменяли на другой, всё заработало.

Рад за Вас, а с Ethernet'ом подобное работает?

Bandikoot
25.07.2014, 12:47
Рад за Вас, а с Ethernet'ом подобное работает?

Думаю, разница будет в открытии порта. В том примере это реализуется через функцию ComConn библиотеки ModulsOwenLib, но так нельзя задать Ethernet-порт (там поддерживаются только интерфейсы RS-485 и RS-232).

Трофимов Артем
25.07.2014, 14:55
чтобы открыть сокет( он же порт по ethernet) используйте библиотеку syssocket

EFrol
25.07.2014, 15:04
Вот здесь есть неполное описание использования Modbus TCP Slave http://www.owen.ru/forum/attachment.php?attachmentid=10165&d=1379506172.

Но увы, практика показала, что этот вариант не работает!!! :confused:

spinogryz57
25.07.2014, 20:09
Уважаемые, а может кто нибудь видео сделает, о том как разбить флоат ( он же риал) на две ворд переменные через указатели и желательно с помощью ФБ, ну или хотя бы что бы проект был на ФБ (т.к. Ваши буквоцифры я не понимаю, визуально оно как то проще)

Я понимаю, что надоел уже, но мне осталось то всего ничего передать переменные в OPC, потом сдать все это дело и свалить на юга))

P.S. И СПАСИБО всем большое, за помощь и понимание.

...Проектик на всякий случай приложил))

smk1635
25.07.2014, 20:35
Народ. Вы бы определились, с чем работаете. С портами на прямую или с конфигуратором. :)
Пример который запустил Bandikoot, это пример работы с портами напрямую.
spinogryz57 работает с конфигуратором. И если не собирается подключать что то с нестандартным протоколом, то работа на прямую с портами ему не нужна.


И почему в CoDeSys 2.3 можно легко и просто добавить подэлемент Float и все нормально работает с OPC, а в 3.5 надо заморачиваться с какими то указателями.

Потому что в КДС2 та самая разбивка Float на два Word, судя по всему делается автоматически. Отсюда и растут ноги с выравниванием регистров. Помните же, что если Вы прописали в конфигураторе переменную Float, то адрес следующего регистра идет не по порядку, а через один. Вот этот пропущенный регистр и зарезервирован под второй Word, после разбивки. И по сети передаются два Word, а не один Float.
А в КДС3, разработчики, честь возится с разбивками, оставили нам, простым пользователям. Судя по всему да же не задумываясь, что многие пользователи, простые киповцы, а не программисты.

smk1635
25.07.2014, 20:51
Уважаемые, а может кто нибудь видео сделает, о том как разбить флоат ( он же риал) на две ворд переменные через указатели и желательно с помощью ФБ, ну или хотя бы что бы проект был на ФБ (т.к. Ваши буквоцифры я не понимаю, визуально оно как то проще)

Я понимаю, что надоел уже, но мне осталось то всего ничего передать переменные в OPC, потом сдать все это дело и свалить на юга))

P.S. И СПАСИБО всем большое, за помощь и понимание.

...Проектик на всякий случай приложил))

Да сделайте как советовал Bandikoot. Умножаете переменную Real на 10 (это если один знак после запятой) или на 100 (если два знака), преобразуете в Word. И передаёте по сети.
У многих частотников, на пример, так значение токов передается, и задание опорной частоты. Просто в описании регистров указано. Разделить на 10.

spinogryz57
25.07.2014, 21:39
А в КДС3, разработчики, честь возится с разбивками, оставили нам, простым пользователям. Судя по всему да же не задумываясь, что многие пользователи, простые киповцы, а не программисты.
Золотые слова!


Да сделайте как советовал Bandikoot. Умножаете переменную Real на 10 (это если один знак после запятой) или на 100 (если два знака), преобразуете в Word. И передаёте по сети.
У многих частотников, на пример, так значение токов передается, и задание опорной частоты. Просто в описании регистров указано. Разделить на 10.
За это спасибо и Вам и Bandikoot, скорее всего это и буду пробовать.

spinogryz57
26.07.2014, 09:12
Попробовал сегодня передать на OPC тип Word. И из этого нечего не вышло

Что я сделал не так? в OPC тип данных устройства выбрал uint16.

capzap
26.07.2014, 09:23
с другими слейвами ОРС себя так же ведет?
В проекте, переменная которая присвоена нулевому индексу массива только объявлена или используется в теле ПОУ?

spinogryz57
26.07.2014, 09:44
с другими слейвами ОРС себя так же ведет?

Не совсем понял вопрос.... ПЛК100 OPC нормально опрашивает, а вот СПК207 нет.


В проекте, переменная которая присвоена нулевому индексу массива только объявлена или используется в теле ПОУ?

Вкладку POU вообще впервые открыл вроде она там тоже есть. Переменная больше нигде не используется. Вы скрины пожалуйста посмотрите, я просто не могу ответить на этот вопрос.

spinogryz57
26.07.2014, 11:16
:mad: Ну что за Г такое этот КДС 3, в нем все через попу. Лучше бы взял ПЛК1хх и панель было бы быстрее и без нервов.

Вопрос к людям с образованием программиста, Вы что сели за КДС 3 и все стало интуитивно понятно в ней? Мне кажется она одинаково не удобна для всех - удалить ее надо из истории вообще.

И почему нет инструкции (овенской естесно) о работе КДС 3 и OPC по Ethernet, ведь полюбому много таких людей(вроде меня) из деревни без обра-я, но хотящих кушать.

Если не получиться сдать объект вовремя, поставлю обычную панель, а СПК сожгу в туннельной печи :mad: после чего запишу на болванку КДС 3 и кину ее туда же.

И стоит отметить, что продукция ОВЕН работающая с КДС 2 - замечательная!

smk1635
26.07.2014, 11:29
:mad: Ну что за Г такое этот КДС 3, в нем все через попу. Лучше бы взял ПЛК1хх и панель было бы быстрее и без нервов.

Вопрос к людям с образованием программиста, Вы что сели за КДС 3 и все стало интуитивно понятно в ней? М не кажется она одинаково не удобна для все - удалить ее надо из истории вообще.

И почему нет инструкции (овенской естесно) о работе КДС 3 и OPC по Ethernet, ведь полюбому много таких людей(вроде меня) из деревни без обра-я, но хотящих кушать.

Если не получиться сдать объект вовремя, поставлю обычную панель, а СПК сожгу в туннельной печи :mad: после чего запишу на болванку КДС 3 и кину ее туда же.

И стоит отметить, что продукция ОВЕН работающая на КДС 2 - замечательная!

Ну что же Вы так нервничаете. :) Это же Овен. С документацией у него всегда было хрено .... э-э .... не очень.
Зато форум хороший.

Попробуйте в ОРС переставить порядок принимаемых байтов.

smk1635
26.07.2014, 11:37
И попробуйте сделать новый файл в ОРС. Только с этой переменой. У меня не раз было, что после добавления новой переменой в сохраненый проект, ОРС её видел, но почему то не опрашивал.

spinogryz57
26.07.2014, 12:26
И попробуйте сделать новый файл в ОРС. Только с этой переменой. У меня не раз было, что после добавления новой переменой в сохраненый проект, ОРС её видел, но почему то не опрашивал.

Может я что то в OPC не так сделал, посмотрите пожалуйста скрины.

smk1635
26.07.2014, 12:56
Все верно, только наверное в КДС3 надо вот так.

spinogryz57
26.07.2014, 13:20
Все верно, только наверное в КДС3 надо вот так. пробовал и выход, не работает все равно.

Да и в тех. поддержке сказали:


Увеличьте число регистров временного хранения, оттуда будет читать ОРС.

а временные регистры (input)

Короче "карате какаято" у меня уже глаз начал дергаться.

smk1635
26.07.2014, 13:34
Как говорил Карлсон: Спокойствие, только спокойствие.

Это же Овен, тут при освоении чего то нового всегда действует метод "Тыка и мата". :D

А принципиально, что бы СПК была slave ?

spinogryz57
26.07.2014, 13:55
А принципиально, что бы СПК была slave ?

Ну может у меня представление не правильное, но
OPC же опрашивает, а в сети 2 устройства ПЛК100 (Slave по Ethernet - ModBus TCP) и СПК207 (Slave по Ethernet - ModBus TCP), если сделать СПК мастером OPC сможет быть и ведущим и ведомым одновременно?

smk1635
26.07.2014, 14:31
М-да, тогда действительно только slave.

smk1635
26.07.2014, 14:43
Как мастер я СПК запускал на нескольких проектах. Хотя были проблемы с опросом slave-устройств по RS-485. Отваливаются они, и потом связь не возобновляется.
Добавим сюда чехарду с прошивками, библиотеками разных версий, которые не стыкуются друг с другом и т.д.
Вообщем устав от этого зоопарка нашёл более менее стабильную прошивку. Набор библиотек и успользуюю СПК как недорогую сенсорную панель. В связке с ПЛК100. По RS-232.
Жду когда Овен наконец допилит свою часть, а Кодесис свою часть.

По ходу В КДС3 конфигуратор не катит. Только работа на прямую с портами.

spinogryz57
26.07.2014, 14:43
Не ну раз в поле "текущее значение" есть цифра OPC должен ее считать. Может адресс регистра не тот или регион.... Точно в CПК все с "0" начинается.

smk1635
26.07.2014, 14:46
Не ну раз в поле "текущее значение" есть цифра OPC должен ее считать. Может адресс регистра не тот или регион.... Точно в CПК все с "0" начинается.

С нуля. Точно.

spinogryz57
26.07.2014, 14:49
Ну в таком случае СПК напоминает продукцию автоваза. Ну типо люди схавают, а если что сами доработают.

smk1635
26.07.2014, 14:59
Ну в таком случае СПК напоминает продукцию автоваза. Ну типо люди схавают, а если что сами доработают.

Походу это продажная политика Овена. Просто Овен выпускает продукцию на рынок, если стадия готовности ~ 80%. А потом допиливает её. По ходу продаж. Ориентируясь на жалобы клиентов. Форум тут то же сильно им помогает. Правда оперативность исправления косяков очень сильно повысилась, по сравнению с контроллерами той же сотой серии.
Но по граблям первыми всё равно идем мы. Разработчики и монтажники.

Для модераторов. Это моё личное мнение. Как разработчика и монтажника. :D

capzap
26.07.2014, 17:26
Может я что то в OPC не так сделал, посмотрите пожалуйста скрины.

Ни одной что то разъесняющей картинки, в том месте где моя картинка, что показывает?

spinogryz57
27.07.2014, 08:49
Ни одной что то разъесняющей картинки, в том месте где моя картинка, что показывает?

Вот так показывает. Может версию надо новее?

smk1635
27.07.2014, 11:15
Вот так показывает. Может версию надо новее?

Не надо. Ат то вообще может перестать работать. :)

Что то я то же запутался. У нас получается что связь с МВА на прямую через порты. А связь с ОРС через конфигуратор. Так ?

И все данные передаются в ОРС кроме voz_1?

spinogryz57
27.07.2014, 11:49
Не надо. Ат то вообще может перестать работать. :)

Что то я то же запутался. У нас получается что связь с МВА на прямую через порты. А связь с ОРС через конфигуратор. Так ?

И все данные передаются в ОРС кроме voz_1?

Связь с МВА через ФБ, а с OPC через добавление устройства Ethernet > ModbusTCP_Slave

Поясните тупорю, что значит "напрямую через порты" и через "конфигуратор".

Работает с OPC нормально только ПЛК100 (про него мы забудем)
На СПК же работает опрос модулей по RS-485 и визуализация. На OPC с СПК не удалось передать ни одного значения.

smk1635
27.07.2014, 12:37
Поясните тупорю, что значит "напрямую через порты" и через "конфигуратор".



Что бы передать допустим то же Real по сети надо:
Подготовить данные. (к примеру, разбить Real на два Word )
Прописать скорость обмена. Количество сто-битов, количество байт.(или IP-адрес, номер порта)
Указать в каком порядке передаём Ворды (у разных производителей может по разному передоватся, в Modbus порядок передачи жёстко не регламентирован. Помните я предлагал в ОРС проверить порядок получения регистров).
Указать начальный адрес первого регистра куда будет писаться наши Ворды. Указать количество передаваемых регистров.
Посчитать контрольную сумму.(по ней принимающее устройство проверяет правильно дошёл пакет или из за помех часть данных потерялась или не верна)
Собрать сообщение .
Открыть порт.
Передать сообщение.
Закрыть порт.
Если все это прописывается в программе в ручную, то говорят – работаем на прямую с портами.
Пишут всё это дело как правило на ST. На нем проще всего. Могут преобразовать в ФБ. Что бы можно было использовать в других языках.
А если мы прописываем свои регистры в конфигураторе ПЛК. То этот гемор по преобразованию, открытию портов и т.д. прописывается в программе автоматически. Тогда говорят – работаем через конфигуратор.
Работа на прямую с портами нужна как правило если у подключаемого устройства не стандартный протокол обмена или не устраивает скорость опроса и передачи через стандартный конфигуратор.

ЗЫ. Про тупаря Вы зря. Конечно умение работать на прямую с портами очень сильно повышает уревень - как программиста. Но как киповцу - это как правило не очень нужно.

capzap
27.07.2014, 13:09
при модбасТСР нет контрольной суммы, но посмотреть не просто значение переменной а вывод в консоль передаваемых и принимаемых байт не помешает, вроде в ОРС -серверах предусмотрен такой лог

smk1635
27.07.2014, 13:14
при модбасТСР нет контрольной суммы, но посмотреть не просто значение переменной а вывод в консоль передаваемых и принимаемых байт не помешает, вроде в ОРС -серверах предусмотрен такой лог

Точно. Логи.

Запустить ОРС. Открыть "Запросы" - Правая кнопка мыши - Приостановить - Копировать в буфер обмена.

spinogryz57
27.07.2014, 13:16
Что бы передать допустим то же Real по сети надо:
Подготовить данные. (к примеру, разбить Real на два Word )
Прописать скорость обмена. Количество сто-битов, количество байт.(или IP-адрес, номер порта)
Указать в каком порядке передаём Ворды (у разных производителей может по разному передоватся, в Modbus порядок передачи жёстко не регламентирован. Помните я предлагал в ОРС проверить порядок получения регистров).
Указать начальный адрес первого регистра куда будет писаться наши Ворды. Указать количество передаваемых регистров.
Посчитать контрольную сумму.(по ней принимающее устройство проверяет правильно дошёл пакет или из за помех часть данных потерялась или не верна)
Собрать сообщение .
Открыть порт.
Передать сообщение.
Закрыть порт.
Если все это прописывается в программе в ручную, то говорят – работаем на прямую с портами.
Пишут всё это дело как правило на ST. На нем проще всего. Могут преобразовать в ФБ. Что бы можно было использовать в других языках.
А если мы прописываем свои регистры в конфигураторе ПЛК. То этот гемор по преобразованию, открытию портов и т.д. прописывается в программе автоматически. Тогда говорят – работаем через конфигуратор.
Работа на прямую с портами нужна как правило если у подключаемого устройства не стандартный протокол обмена или не устраивает скорость опроса и передачи через стандартный конфигуратор.

ЗЫ. Про тупаря Вы зря. Конечно умение работать на прямую с портами очень сильно повышает уревень - как программиста. Но как киповцу - это как правило не очень нужно.

Спасибо большое за разъяснение. До КИПовца я еще не дорос, пока техник электрик.
Ну в таком случае связь с OPC реализована через конфигуратор.
Опишу, как я это делаю: На вкладке "PLC_PRG (PRG)" объявляю переменную "voz_1" тип WORD, после чего на вкладке "Modbus TCP Slave Device Соотнесение входов/выходов"(в устройстве ModbusTCP_Slave_Device ) выбираю канал IW0 (пробовал и QW0) и с помощью ассистента ввода выбираю ранее созданную переменную. После чего подключаюсь к СПК соглашаюсь на загрузку проекта, нажимаю "F5" для запуска, потом перехожу на OPC и обламываюсь, т.к. он показывает "0".

Возможно надо делать это как то по другому?

smk1635
27.07.2014, 13:48
Да все верно делаете, вроде.

Скопируйте логи из ОРС в блокнот и выложите сюда. Там должно показать, что по сети передается.

spinogryz57
27.07.2014, 13:54
Да все верно делаете, вроде.

Скопируйте логи из ОРС в блокнот и выложите сюда. Там должно показать, что по сети передается.

Завтра с утра первым делом сделаю!

ASo
27.07.2014, 14:14
1. Регистры временного хранения надо опрашивать в регионе INPUT REGISTERS.
2. Какой статус переменной показывает OPC? Он вообще соединился с контроллером или нет?
3. Как крайний случай - попробуйте telnet на порт OPC.

spinogryz57
28.07.2014, 07:48
Все верно, только наверное в КДС3 надо вот так.


1. Регистры временного хранения надо опрашивать в регионе INPUT REGISTERS.

Вот это помогло! Ура! Всем БОЛЬШОЕ спасибо! А я пойду мучить тех. поддержку SCADA системы своими странными вопросами:D

Bandikoot
28.07.2014, 08:37
Умножаете переменную Real на 10 (это если один знак после запятой) или на 100 (если два знака), преобразуете в Word. И передаёте по сети.

А если вдруг температуру нужно передать или ещё что отрицательное, то при отправке "запакуйте" число в виде y=(x+273)*10, а в SCADA при "распаковке" тогда x=y/10-273. У меня коллеги, как оказалось, так уже несколько лет постоянно делают и не заморачиваются. Диапазона WORD должно хватить для земных значений :rolleyes:

spinogryz57
28.07.2014, 09:03
А если вдруг температуру нужно передать или ещё что отрицательное, то при отправке "запакуйте" число в виде y=(x+273)*10, а в SCADA при "распаковке" тогда x=y/10-273. У меня коллеги, как оказалось, так уже несколько лет постоянно делают и не заморачиваются. Диапазона WORD должно хватить для земных значений :rolleyes:

Замечательно - спасибо!

ASo
28.07.2014, 10:21
А что, использовать INT религия не позволяет?

spinogryz57
28.07.2014, 10:47
А если вдруг температуру нужно передать или ещё что отрицательное, то при отправке "запакуйте" число в виде y=(x+273)*10, а в SCADA при "распаковке" тогда x=y/10-273. У меня коллеги, как оказалось, так уже несколько лет постоянно делают и не заморачиваются. Диапазона WORD должно хватить для земных значений :rolleyes:

Каким то чудом МНОГОУВАЖАЕМЫЕ компьютер и OPC договорились и все сделали сами)) Видимо поняли, что от меня толку ноль!:D

spinogryz57
28.07.2014, 10:49
А что, использовать INT религия не позволяет?

А я не в курсе собственно, это вместо WORD? Или это Вы про OPC?

smk1635
28.07.2014, 17:24
А я не в курсе собственно, это вместо WORD? Или это Вы про OPC?

Да это не Вам вопрос, а Bandikoot наверное. :)

Просто переменная WORD не может принимать отрицательное значение. У неё диапазон 0-65535.
А переменная типа INT, может. У неё диапазон от -32 768 до 32 768.

spinogryz57
28.07.2014, 17:57
Да это не Вам вопрос, а Bandikoot наверное. :)

Просто переменная WORD не может принимать отрицательное значение. У неё диапазон 0-65535.
А переменная типа INT, может. У неё диапазон от -32 768 до 32 768.

Спасибо, мне это тоже знать полезно.

ASo
28.07.2014, 18:53
А еще полезней знать, что в общем случае BYTE, WORD, DWORD - это не то, чтобы беззнаковые переменные, а просто размер ячейки памяти. использовать их в АРИФМЕТИЧЕСКИХ выражениях - скажем так, не рекомендуется.
Поэтому - все зависит от их интерпретации, особенно в качестве регистра MODBUS.
Проведите эксперимент. INT_TO_WORD(-32768)=65535

Bandikoot
29.07.2014, 10:14
в том-то и дело, что для ModBus оптимальнее всего передавать WORD, как мне объясняли. действительные числа (1-2 знака после запятой, -100 : +500 г.Ц., этого в большинстве случае для диспетчеризации хватает) сводятся к WORD, но, само собой, это REAL_TO_WORD не отменяет. про использование WORD в выражениях никто и не говорил)

ASo
29.07.2014, 10:27
Это понятно.
Просто зачем такие.... извращения, которые надо дополнительно както обрабатывать в драйвере/OPC/SCADA, когда проще рассматривать WORD как signed int и передавать в десятых или сотых долях градуса со знаком. Что логичней - все равно точность измерений как правило не больше

smk1635
29.07.2014, 11:30
когда проще рассматривать WORD как signed int и передавать в десятых или сотых долях градуса со знаком.

И вот где то здесь, у новичков начинаются проблемы. :)

tkont
24.06.2015, 11:52
есть где-нибудь рабочая демка на пару регистров для MODBUS TCP Slave на SPK207 ?
все сделал как положено, мастером только взял MODBUS TESTER (от агростроя),
коннект есть по TCP (если отрубить панель, тестр теряет коннект) , а TESTER показывает одни "ошибка CRC"
пробовал команды 03, 04, 16 (с 0х0000 по 0x000A, и 1 и 10 регистров WORD) - везде одно и тоже - "ошибка CRC"

capzap
24.06.2015, 13:15
есть где-нибудь рабочая демка на пару регистров для MODBUS TCP Slave на SPK207 ?
все сделал как положено, мастером только взял MODBUS TESTER (от агростроя),
коннект есть по TCP (если отрубить панель, тестр теряет коннект) , а TESTER показывает одни "ошибка CRC"
пробовал команды 03, 04, 16 (с 0х0000 по 0x000A, и 1 и 10 регистров WORD) - везде одно и тоже - "ошибка CRC"

о какой проверке контрольной суммы может идти речь при использовании modbusTCP?

tkont
24.06.2015, 16:35
о какой проверке контрольной суммы может идти речь при использовании modbusTCP?
хотите сказать глюк самого тестера
юзаю этот
Modbus Tester 2.0.5 (http://www.agrostroy.ru/index.php?page=4)

какой тогда предлагаете использовать Тестер что бы работал как MODBUS TCP Master ? (мне нужно только для проверки объекта, не хотелось бы городить огород не нужного софта на компе - OPC и SCADA)
или только OPC и SCADA и вперёд..

Vlad84
12.11.2016, 16:07
хотите сказать глюк самого тестера
юзаю этот
Modbus Tester 2.0.5 (http://www.agrostroy.ru/index.php?page=4)

какой тогда предлагаете использовать Тестер что бы работал как MODBUS TCP Master ? (мне нужно только для проверки объекта, не хотелось бы городить огород не нужного софта на компе - OPC и SCADA)


или только OPC и SCADA и вперёд..


А где его скачать? Там ничего нет.