[研华MAS控制器]扩展研华Modbus ADAM I/O模块
1、MAS控制器与ADAM模块硬件联机
使用RJ-45网络线将MAS控制器与ADAM-6260连接。
![[研华MAS控制器]扩展研华Modbus ADAM I/O模块](https://exp-picture.cdn.bcebos.com/955ea0e434daf05e8e9514c4751d96d81919e50f.jpg)
2、确认ADAM模块联机状况
开启Adam/Apax .net utility软件,确认MAS控制器与ADAM模块联机成功,利用Adam/Apax .net utility测试模块使用状况并记录ADAM模块的IP位置, 在BASIC Modbus指令中我们需要用到。由下图可以看到
ADAM-6260 IP 地址 = "10.0.0.25"
![[研华MAS控制器]扩展研华Modbus ADAM I/O模块](https://exp-picture.cdn.bcebos.com/7830e01d96d81819a896ca78876efbf203b3de0f.jpg)
3、使用Adam/Apax .net utility软件确认ADAM模块的Modbus address
ADAM-6260为6信道的Relay模块,信道1至信道6的Modbus address如下图所示。由下图可以看到
ADAM-6260 DO0的Modbus地址=0017
![[研华MAS控制器]扩展研华Modbus ADAM I/O模块](https://exp-picture.cdn.bcebos.com/6061b9cd0c6efbf2cf051862127bbbf4db58da0f.jpg)
1、新建工程
新建一个Motion Studio工程,并新建一个Task程序“Master”
![[研华MAS控制器]扩展研华Modbus ADAM I/O模块](https://exp-picture.cdn.bcebos.com/983aa5f4da5872da0dff0cba0056ad042f68d40f.jpg)
2、编写Modbus通讯程序
以MAS控制器作为Modbus Master,利用Motion Studio编写Modbus Master程序连接ADAM-6260(Slave), 并使DO0每秒做On/Off变化. 程序代码完成后f請点击编译。
在前面步驟, 我們知道 ADAM-6260 IP 地址 = "10.0.0.25" , ADAM-6260 DO0的Modbus地址=0017
MB_OPEN(0, 1, "10.0.0.25", 502, 1) '开启Modbus通讯0
DIM AS ULONG modbusStutas = MB_STATUS(0) '确认通讯0狀態(>0为正常)
PRINT modbusStutas
DIM as BOOLEAN Value = 1 '宣告控制DO0之变量
DIM as BOOLEAN res = FALSE '宣告执行结果之变量
WHILE(1)
Value = not Value '每次进来循环时Value皆会改变
PRINT "DO Value = ", Value '打印目前DO0的开关状态
res = MB_SETCOIL( 0, 0017, Value ) '寫入Modbus, 改变DO0状态
PRINT "Result = ", res '打印执行MB_SETCOIL结果
SLEEP 1000
WEND
![[研华MAS控制器]扩展研华Modbus ADAM I/O模块](https://exp-picture.cdn.bcebos.com/df087f0f8b56ad04f9de7a5cdae10ef85956d00f.jpg)
3、执行程序
1.执行Master.bas程序,并开启输出窗口结果。
2.开启Adam/Apax .net utility至6260控制画面即可看到DO0变化。
![[研华MAS控制器]扩展研华Modbus ADAM I/O模块](https://exp-picture.cdn.bcebos.com/16a84fe10ef85856098bc59153e9ccd2ba66cd0f.jpg)
![[研华MAS控制器]扩展研华Modbus ADAM I/O模块](https://exp-picture.cdn.bcebos.com/a965c6e9ccd2bb66b0efe8f59b2a04e23fa2c60f.jpg)
1、MB_OPEN (mbindex, connectmode, ip, port, deviceID)
描 述:
打开一个modbus tcp或 modbus rtu 连接。相应通信端口或串口被打开后,才可以对该端口或串口进行操作。该指令需要根据本地资源进行操作。
参 数:
mbindex: 设定一个modbus通信序号,0~4294967294
Connectmode: 连接模式 ( 0:Modbus RTU,1:Modbus Tcp client)
ip: IP 地址
port: 端口号
deviceID: Device ID范围1~247
例 程
MB_OPEN(0, 1, "127.0.0.1", 505, 1) '打开一个modbus tcp客户端连接,
'对接IP为127.0.0.1的服务器
2、MB_STATUS
描 述:获取modbus连接状态
参 数:mbindex 通讯编号。
返回值:0:连接不成功;1:连接成功
例 程
MB_STATUS(0) '获取编号为0的modbus连接状态
3、MB_SETCOIL
语 法1:设置单个线圈数值:
VALUE = MB_SETCOIL( mbindex, m_start_address, value )
描 述:设置单个或多个线圈数值。
参 数:
mbindex: 通讯编号
m_start_address: modbus相对起始地址(首地址为0)
value: 设定单个值
返回值:TRUE—设置成功,FALSE—设置失败