Стартовая страница › Форумы › Взаимодействие с устройствами › Modbus › работа с IRZ ATM21.A
Помечено: Modbus
- В этой теме 11 ответов, 2 участника, последнее обновление 1 год, 10 месяцев назад сделано
ivan3012020.
-
АвторЗаписи
-
21.10.2024 в 11:14 #35121
ivan3012020
УчастникНе могу настроить стабильную работу с GSM модемом IRZ ATM21.A в связке пл63.
При снятие данных, переменные меняются местами (ниже будет скриншот). Физически подключены датчик1, датчик3 и датчик 5. Остальные датчики не подкачены (должны показывать странные числа это нормально). При опросе устройства происходит как будто бы сдивг пакетов (данные датчика 1 попадаю в графу датчик 2, а из датчика 2 в датчик 3, из датчика 3 в датчик 4).
Подскажите пожалуйста как настроить систему.21.10.2024 в 11:17 #35122ivan3012020
Участникданные которые были приняты — https://ibb.co/Qrpb4vb
настройка прибора https://ibb.co/6sJW1W0
настройка канала https://ibb.co/NCQpWyV
TransMode — RTU21.10.2024 в 11:41 #35123
manjey73УчастникНастройку шаблона покажите.
Если не ошибаюсь, то в ПЛК 63 нет перестановки байт для float.
И еще момент, он не поддерживает групповые запросы по адресам конфигурации.
Хотите групповые запросы, разбирайтесь с областью памяти, где хранятся переменные. Они в документации на программирования должны быть указаны.Могу пример шаблона скинуть под свою программу, где-то был.
21.10.2024 в 11:53 #35124ivan3012020
УчастникБуду очень благодарен если вы скинете свой пример.
В настройке шаблонов групповых запросов нету. по поводу простановки байтов то у меня стоит 2301. Так хотя бы походе на правду ( датчик 1 это температура)21.10.2024 в 11:54 #35125ivan3012020
Участникhttps://dropmefiles.com/nWDrb
файл шаблона21.10.2024 в 11:58 #35126
manjey73УчастникЗначит вы адресацию не учли правильно с 0 или с 1.
Для 63-го не надо переставлять для float, насколько помню.Не помню, нашел какой-то старый.
<?xml version="1.0" encoding="utf-8"?> <DevTemplate> <Settings> <ZeroAddr>true</ZeroAddr> <DecAddr>true</DecAddr> <DefByteOrder2 /> <DefByteOrder4 /> <DefByteOrder8 /> </Settings> <ElemGroups> <ElemGroup active="true" tableType="HoldingRegisters" address="332" name="Time_Err"> <Elem name="time_rotation" type="ushort" byteOrder="" /> <Elem name="errnasosB" type="ushort" byteOrder="" /> <Elem name="err_datch1" type="ushort" byteOrder="" /> <Elem name="err_datch2" type="ushort" byteOrder="" /> <Elem name="errele1" type="ushort" byteOrder="" /> <Elem name="errele2" type="ushort" byteOrder="" /> <Elem name="errele3" type="ushort" byteOrder="" /> <Elem name="errele4" type="ushort" byteOrder="" /> </ElemGroup> <ElemGroup active="true" tableType="HoldingRegisters" address="0" name="OUT"> <Elem name="DO-0" type="float" byteOrder="" /> <Elem name="DO_1" type="float" byteOrder="" /> <Elem name="DO_2" type="float" byteOrder="" /> <Elem name="DO_3" type="float" byteOrder="" /> <Elem name="DO_4" type="float" byteOrder="" /> <Elem name="DO_5" type="float" byteOrder="" /> </ElemGroup> <ElemGroup active="true" tableType="HoldingRegisters" address="24" name="AI_12"> <Elem name="temp_0" type="float" byteOrder="" /> <Elem name="temp_1" type="float" byteOrder="" /> </ElemGroup> <ElemGroup active="true" tableType="HoldingRegisters" address="32" name="AI_58"> <Elem name="" type="float" byteOrder="" /> <Elem name="" type="float" byteOrder="" /> <Elem name="" type="float" byteOrder="" /> <Elem name="" type="float" byteOrder="" /> </ElemGroup> <ElemGroup active="true" tableType="HoldingRegisters" address="82" name="Temp"> <Elem name="temp_ust" type="float" byteOrder="" /> <Elem name="temp_delta" type="float" byteOrder="" /> <Elem name="temp_low" type="float" byteOrder="" /> <Elem name="temp_sr" type="float" byteOrder="" /> </ElemGroup> <ElemGroup active="true" tableType="HoldingRegisters" address="90" name="Narabotka"> <Elem name="Day_K1" type="uint" byteOrder="" /> <Elem name="Hour_K1" type="uint" byteOrder="" /> <Elem name="Day_K2" type="uint" byteOrder="" /> <Elem name="Hour_K2" type="uint" byteOrder="" /> <Elem name="Day_K3" type="uint" byteOrder="" /> <Elem name="Hour_K3" type="uint" byteOrder="" /> <Elem name="Day_K4" type="uint" byteOrder="" /> <Elem name="Hour_K4" type="uint" byteOrder="" /> </ElemGroup> <ElemGroup active="true" tableType="HoldingRegisters" address="288" name="INPUT"> <Elem name="DI" type="ushort" byteOrder="" /> </ElemGroup> </ElemGroups> <Cmds /> </DevTemplate>21.10.2024 в 12:01 #35127ivan3012020
Участникучел адресацию с 0
сейчас изучу что вы скинули21.10.2024 в 12:03 #35128
manjey73Участникhttps://cloud.mail.ru/public/Rm7V/izoGyncST
Тут картинка с адресацией по групповым запросам.
Адреса частично будут зависеть от типов переменных.21.10.2024 в 12:12 #35129ivan3012020
Участникто есть что бы сделать групповой запрос нужно писать тег с 4000. Верно я понял?
21.10.2024 в 12:25 #35130
manjey73УчастникДа. Не помню только в каком из документов это описано. То ли по программированию ПЛК, то ли просто в РЭ на него.
Там есть область памяти, где хранятся все переменные, для чтения группой регистров надо использовать эту область.
Часть переменных привязана, пользовательские с каких-то адресов и кажется с учетом выравнивания.21.10.2024 в 12:29 #35131
manjey73Участник<?xml version="1.0" encoding="utf-8"?> <DevTemplate> <ElemGroups> <ElemGroup active="true" tableType="HoldingRegisters" address="4096" name="SystemI"> <Elem name="DI_All" type="uint" byteOrder="2301" /> <Elem name="AI_0" type="float" byteOrder="2301" /> <Elem name="AI_0_time" type="uint" byteOrder="2301" /> <Elem name="AI_1" type="float" byteOrder="2301" /> <Elem name="AI_1_time" type="uint" byteOrder="2301" /> <Elem name="AI_2" type="float" byteOrder="2301" /> <Elem name="AI_2_time" type="uint" byteOrder="2301" /> <Elem name="AI_3" type="float" byteOrder="2301" /> <Elem name="AI_3_time" type="uint" byteOrder="2301" /> <Elem name="AI_4" type="float" byteOrder="2301" /> <Elem name="AI_4_time" type="uint" byteOrder="2301" /> <Elem name="AI_5" type="float" byteOrder="2301" /> <Elem name="AI_5_time" type="uint" byteOrder="2301" /> <Elem name="AI_6" type="float" byteOrder="2301" /> <Elem name="AI_6_time" type="uint" byteOrder="2301" /> <Elem name="AI_7" type="float" byteOrder="2301" /> <Elem name="AI_7_time" type="uint" byteOrder="2301" /> </ElemGroup> <ElemGroup active="true" tableType="HoldingRegisters" address="4140" name="SystemQ"> <Elem name="DO_0" type="float" byteOrder="2301" /> <Elem name="DO_1" type="float" byteOrder="2301" /> <Elem name="DO_2" type="float" byteOrder="2301" /> <Elem name="DO_3" type="float" byteOrder="2301" /> <Elem name="DO_4" type="float" byteOrder="2301" /> <Elem name="DO_5" type="float" byteOrder="2301" /> <Elem name="MR1" type="uint" byteOrder="2301" /> <Elem name="Подсветка_Контраст" type="ushort" byteOrder="" /> <Elem name="pusto" type="ushort" byteOrder="" /> <Elem name="Clock" type="uint" byteOrder="2301" /> </ElemGroup> <ElemGroup active="true" tableType="HoldingRegisters" address="4176" name="User"> <Elem name="temp_ust" type="float" byteOrder="2301" /> <Elem name="temp_delta" type="float" byteOrder="2301" /> <Elem name="temp_low" type="float" byteOrder="2301" /> <Elem name="set_timer" type="float" byteOrder="2301" /> <Elem name="time_rotation" type="ushort" byteOrder="" /> <Elem name="col_cond" type="ushort" byteOrder="" /> <Elem name="weekend" type="ushort" byteOrder="" /> <Elem name="rezhim_datchikov" type="ushort" byteOrder="" /> <Elem name="invert_out" type="ushort" byteOrder="" /> <Elem name="rezhim_out5" type="ushort" byteOrder="" /> <Elem name="rezhim_out6" type="ushort" byteOrder="" /> <Elem name="rezhim_hys" type="ushort" byteOrder="" /> <Elem name="temp_ust1" type="float" byteOrder="2301" /> <Elem name="errnasosB" type="ushort" byteOrder="" /> <Elem name="err_datch1" type="ushort" byteOrder="" /> <Elem name="err_datch2" type="ushort" byteOrder="" /> <Elem name="errele1" type="ushort" byteOrder="" /> <Elem name="errele2" type="ushort" byteOrder="" /> <Elem name="errele3" type="ushort" byteOrder="" /> <Elem name="errele4" type="ushort" byteOrder="" /> <Elem name="pusto" type="ushort" byteOrder="" /> <Elem name="temp_sr" type="float" byteOrder="2301" /> <Elem name="Day_K1" type="ushort" byteOrder="" /> <Elem name="Hour_K1" type="ushort" byteOrder="" /> <Elem name="Day_K2" type="ushort" byteOrder="" /> <Elem name="Hour_K2" type="ushort" byteOrder="" /> <Elem name="Day_K3" type="ushort" byteOrder="" /> <Elem name="Hour_K3" type="ushort" byteOrder="" /> <Elem name="Day_K4" type="ushort" byteOrder="" /> <Elem name="Hour_K4" type="ushort" byteOrder="" /> </ElemGroup> </ElemGroups> <Cmds> <Cmd tableType="HoldingRegisters" multiple="true" address="82" elemCnt="2" cmdNum="1" name="temp_ust" /> <Cmd tableType="HoldingRegisters" multiple="true" address="84" elemCnt="2" cmdNum="2" name="temp_delta" /> <Cmd tableType="HoldingRegisters" multiple="true" address="86" elemCnt="2" cmdNum="3" name="temp_low" /> </Cmds> </DevTemplate>И АГА, вот при групповых запросах возможно и надо переставлять байты для float. Но лучше в этом убедиться. Сейчас не помню уже. А доступа нет к ПЛК.
21.10.2024 в 15:25 #35139ivan3012020
УчастникВсе заработало ! Спасибо !
Сейчас посмотрим как проработает день, надеюсь все будет стабильно -
АвторЗаписи
- Для ответа в этой теме необходимо авторизоваться.