PDA

Просмотр полной версии : S7-1200+UniversalModbusServer



КучаВопросов
24.11.2013, 19:26
Здравствуйте!!!Изучаю S7-1200.Хотел связать данный контроллер с MasterScada.Нашел пример:Подключение контроллера Siemens S7-1200 по протоколу Modbus TCP, здесь показано, как считывать с ПЛК переменные типа WORD. С переменными типа WORD пример понял, получился. Хотел передать ОРС серверу переменные типа Bool. С какого адреса считывать булевые переменые

SCADAMaster
24.11.2013, 19:44
Bool - это Coils.
В Siemens адреса представлены в стандартном виде (см. страницу документации (http://www.insat.ru/products/Universal_MasterOPC/siemens_s7-1200_modbus_universal.pdf) 33), поэтому попробуйте задать адрес 00001, в ОРС адрес будет равен нолю (регион Coils).

КучаВопросов
24.11.2013, 22:26
Что-то не получается(((Я не понял насчет "поэтому попробуйте задать адрес 00001".Где поменять?В программе я не нашел как можно поменять адрес.

SCADAMaster
25.11.2013, 12:43
Мы уточнили, при помощи региона Coils можно работать только со встроенными входами и выходами.
Если нужноработать bool-переменные, то самый простой вариант - запаковать биты в слово(Word). Кроме того этот вариант сэкономит ОРС теги.
В блоке MB_TCP_DATA в структуре data добавляем новый элемент и называем его 40005.
Тип данных: Array [0..15] of Bool
Таким образом мы создаем массив из двоичных величин c адресом MB_TCP_DATA.data.40005[0]...40005[15]. Это займет в памяти как раз 2 байта (WORD)
Компилируем блок.
В Main(OB1) в блоке MB_SERVER указываем P#DB2.DBX4.0 WORD 5 (добавилось еще 2 байта, поэтому после WORD надо указать не 4, а 5).
В MasterOPC это будет адрес регистра данных - 0х04 (или 40005 в старом формате).
Далее уже средствами MasterOPC ("извлечь бит из данных") или SCADA распаковать уже эти данные на биты при помощи ФБ "Распаковка 32-битного значения".

КучаВопросов
25.11.2013, 16:09
Спасибо за помощь! Завтра попробую это проделать.