河南张先生
努力做事,诚信做人
级别: 家园常客
精华主题: 0
发帖数量: 681 个
工控威望: 966 点
下载积分: 3211 分
在线时间: 882(小时)
注册时间: 2009-04-25
最后登录: 2025-03-31
查看河南张先生的 主题 / 回贴
楼主  发表于: 5天前
这是一个厂家给的通讯协议:
楼层提升机受控于 PLC,Lothar 系统与 PLC 以 Modbus TCP/IP 协议通信。
Lothar 系统为 MasterClient,PLC 为 SlaveServer,寄存器开始地址:0x0000
MODBUS TCP/IP 协议
⚫ ADU=MBAP+PDU=MBAP+功 能码+数 据
⚫ MBAP
描述 长度(字节) 描述 客户端表示 服务端表示
事务识别号  2  Modbus 请求/响应任务的识别号   由客户端初始化时形成 由接收到的请求信息复制
协议识别号 2   0=Modbus 协议 由客户端初始化时形成 由接收到的请求信息复制
长度 2 后面的字节数量 由客户端发送请求时形成 由服务端响应请求时形成
设备识别号 1 连接的从站地址 由客户端初始化时形成 由接收到的请求信息复制
⚫ 功能 码
0x03 读取数据 readHoldingRegistersAsync
0x10 写入数据 writeMultipleRegistersAsync
数据报 文示 例
     信号                     数据流向                                           值                                                          寄存器地址
数提升机状态        PLC>>>Lothar                0x0000(异常) / 0x0001(正常)                                        0x0000
提升机门状态        PLC>>>Lothar                0x0000(已关) / 0x0001(已开)                                         0x0001
提升机楼层状态    PLC>>>Lothar       0x0000(未知) / 0x0001(已抵达1楼)/0x0002(已抵达2楼)       0x0002
呼叫提升机           Lothar>>>PLC       0x0000(否)/0x0001(呼叫提升机抵达 1 楼并自动开门 )
                                                            0x0002( 呼 叫 提 升 机 抵 达 2 楼 并 自 动 开门)                   0x0003
                                                            0x0003(呼叫提升机抵达 3 楼并自动开门)
释放提升机             Lothar>>>PLC      0x0000(否)/0x0001(是)                                                          0x0004

其中Lothar 系统为主客户端。比如西门子SMART是不是作为从服务器使用 ,是用client模块建立链接还是用Server模块建立链接,寄存器地址0x000是PLC上的地址还是Lothar 系统为主客户端地址,
河南张先生
努力做事,诚信做人
级别: 家园常客
精华主题: 0
发帖数量: 681 个
工控威望: 966 点
下载积分: 3211 分
在线时间: 882(小时)
注册时间: 2009-04-25
最后登录: 2025-03-31
查看河南张先生的 主题 / 回贴
1楼  发表于: 4天前
用Server模块建立链接,寄存器地址0x000是PLC上的,不就是0区寄存器,占用输出口地址了吗,又比如地址0x0002 里面有判断楼层值 1 2 3 4 5 如果0X0002是位寄存器,怎么去设置,这点不明白,请指教
[ 此帖被河南张先生在2025-03-28 09:29重新编辑 ]