Boobert
@Boobert
Мне нравится C#

Как прочитать адреса S7 — 1500 с помощью .NET?

Добрый вечер!
У меня имеется ПЛК Siemens S7 - 1500, я хочу написать программу, которая бы читала адреса. Для этого я решил использовать библиотеку S7NetPlus. Значения на ПЛК я сам могу выставлять, так что вопрос не совсем конкретный. Мне просто интересно, как это делать? В интернете мало информации по этому поводу.
Например, имеется значение real на первом адресе сотого дата блока. Тк real занимает четыре байта, то оно разложено на первый и второй адрес, по два байта соответственно. Значения в ProfiNet передаются массивами байт, насколько мне известно. Я полагаю, что можно было бы прочитать как первый, так и второй адреса, а потом соединить вместе и перевести в десятичное представление. Но в библиотеке указано, что для этого используется (VarType varType).
Пробовал уже и так и сяк какое-то время, решения не нашел.
byte[] byteArray = plc.ReadBytes(DataType.DataBlock, dataBlock, address, 1); // вариант с ReadBytes
new DataItem { Address = "DB" + blockNumber + ".DBW1", VarType = VarType.Int } // и дата айтемами какими-то
object? result = plc.Read(DataType.DataBlock, 100, 1, VarType.Int, 0, 20); // объекты
double result = Convert.ToDouble((uint)plc.Read("DB100.DBD1")); // тут и дабл и флоат пробовал

Подскажите, пожалуйста, вдруг кто знает. Или может быть у кого-то просто есть работающий код, чтобы я взглянул хоть глазком.
Заранее спасибо!
  • Вопрос задан
  • 199 просмотров
Решения вопроса 1
mindtester
@mindtester Куратор тега C#
http://iczin.su/hexagram_48
если на вашем
S7 — 1500
поддерживается dotnet, не сбивайте с толку ни себя, ни возможных авторов..
- не лезьте в очередность байтов, в dotnet она всегда заточена под платформу
-
Например, имеется значение real на первом адресе сотого дата блока
ни на одной платформе не используется realдля адресов, только беззнаковые целочисленные нужной разрядности
- решайте проблему маленькими шагами (разбейте на этапы).. тогда и подсказки проще будет давать..
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы