威纶通官方论坛

关于如何改变自由通信设备中的地址数据

[复制链接]
发表于 2019-6-26 13:25:27 | 显示全部楼层 |阅读模式
新手报到,按照官方教程来看的,并且完全按照代码来写的,看到宏指令inport和outport部分。发现教程给的例子是将报文发送到所设定的自由协议(Free protocol类型)的设备当中,然后将读取到的地址信息(4x_1和4x_2)显示给本地HMI的显示元件。并且定义了return_value。所以我在另外加了数值元件来显示return_value的值,并且用功能键触发宏指令。

1.但是在触发宏指令后return_value的值显示为64,已经大于了之前声明时候response的位组长度【32】,不知道是怎么回事,而且显示返回数值的元件也没有任何显示两个都是0也不知道为什么

2.此外我想改变自由协议中4x_1和4x_2地址的数据,来测试收到的报文和数据显示是否正确,该如何操作。

初学小白,希望大虾们指点!



代码如下
macro_command main()
char command[32],response[32]
short address,checksum
short read_no,reurn_value,read_data[2]

FILL(command[0], 0, 32)
FILL(response[0], 0, 32)

command[0] = 0x1
command[1] = 0x3

address = 0
HIBYTE(address, command[2])
LOBYTE(address, command[3])

read_no = 2
HIBYTE(read_no, command[4])
LOBYTE(read_no, command[5])

CRC(command[0], checksum, 6)
LOBYTE(checksum, command[6])
HIBYTE(checksum, command[7])

OUTPORT(command[0], "MODBUS RTU Device", 8)

INPORT(response[0], "MODBUS RTU Device", 9, reurn_value)


SetData(reurn_value, "Local HMI", LW, 200, 1)
SetData(response[0], "Local HMI", LW, 10, 9)

if(reurn_value > 0 and response[1] == 0x3)then
read_data[0] = response[4] + (response[3]<<8)
read_data[1] = response[5] + (response[6]<<8)

SetData(read_data[0], "Local HMI", LW, 100, 2)
end if


end macro_command
您需要登录后才可以发帖 登录 | 注册

本版积分规则

回复帖子

Archiver|小黑屋|威纶通官网 ( 粤ICP备06054553号 )

GMT+8, 2024-11-22 01:28

Powered by Discuz! X3.4

© 2001-2023 Comsenz Inc.

快速回复 返回顶部 返回列表