[研华MAS控制器] 如何连接松下激光测高传感器
1、硬件连接
将激光测高传感器通过RS422连接线接到MAS-3245的COM1上, 配線請參考下圖。
![[研华MAS控制器] 如何连接松下激光测高传感器](https://exp-picture.cdn.bcebos.com/4e168d5653bbf820720b06beba21056105a36e45.jpg)
2、松下传感器的COM设定
在通訊前需先設置松下传感器的COM波特率與RS-422, 詳細說明請參照傳感器手冊。
1. 设定COM的波特率为38400
2. 设定COM的通讯模式为RS422-1(RS-422握手信号)
![[研华MAS控制器] 如何连接松下激光测高传感器](https://exp-picture.cdn.bcebos.com/92174dbbf82064fb81fba1948e6104a354e96f45.jpg)
![[研华MAS控制器] 如何连接松下激光测高传感器](https://exp-picture.cdn.bcebos.com/52fae62064fb960b29d195d48fa355e982ae6c45.jpg)
3、研華MAS-3245的COM設定
MAS-3245支持3種串列傳輸協定:RS-232, RS-422, RS-485, 因此首先需在BIOS裡設置COM3為RS-422
1. 進入BIOS後,請選擇 Super IO Configuration
2. 請選擇 Serial Port 3 Configuration
3. 請設置為 RS-422
注意: 控制器外殼上印刷的COM1 實際是对应 BIOS里面的COM3, 與Motion Studio 里面的COM3
![[研华MAS控制器] 如何连接松下激光测高传感器](https://exp-picture.cdn.bcebos.com/f9617afb960b31211c919416dee983aee9d76d45.jpg)
![[研华MAS控制器] 如何连接松下激光测高传感器](https://exp-picture.cdn.bcebos.com/65ba880b312105611e53c55c08aee8d7582a6a45.jpg)
![[研华MAS控制器] 如何连接松下激光测高传感器](https://exp-picture.cdn.bcebos.com/974a2f21056104a34e19131b63d7592ae2ef6b45.jpg)
4、传感器电文
在RS-422握手信号模式下,要讀取传感器的测定值必須依照松下的電文格式。分為 1)發送讀取命令 與 2)讀取回傳的電文。 编写BASIC程序時必須依照此電文格式。
![[研华MAS控制器] 如何连接松下激光测高传感器](https://exp-picture.cdn.bcebos.com/30601b6104a355e99f5e7862d22ae3efe1786845.jpg)
1、连接实体控制器
1. 使用网线将笔记电脑与MAS-3245连起来。(笔记本电脑需安裝Motion Studio)
2. 在网路设置的本地连接的屬性中, 设置笔记本IP地址和MAS-3245控制器IP地址 (注意:笔记本和控制器IP地址需在同一网段, 才可连线成功!)
3. 这边我们分别设定为 [笔记本]192.168.1.1 和 [MAS-3245控制器]192.168.1.2。
![[研华MAS控制器] 如何连接松下激光测高传感器](https://exp-picture.cdn.bcebos.com/04201aa355e983aef527c99f68efe07815316945.jpg)
![[研华MAS控制器] 如何连接松下激光测高传感器](https://exp-picture.cdn.bcebos.com/994f412043715fdb4ed0298f468920c5270f8c45.jpg)
![[研华MAS控制器] 如何连接松下激光测高传感器](https://exp-picture.cdn.bcebos.com/5e615d715fdb3620c0ca5d3cabc5260f89358d45.jpg)
2、新建工程
1.打开Motion Studio,在连接配置中选择以太网,并输入MAS控制器的IP地址 (192.168.1.2),点击[应用]。
2.连接成功后,新建一个Motion Studio工程,并创建一个Task程序“Task0”。
![[研华MAS控制器] 如何连接松下激光测高传感器](https://exp-picture.cdn.bcebos.com/423041db3620b93ab779b070ad0f8835dc8a8a45.jpg)
![[研华MAS控制器] 如何连接松下激光测高传感器](https://exp-picture.cdn.bcebos.com/5e9a2820b93acd895b35b6ba0335dd8a58de8b45.jpg)
3、编写代码
编写代码的重點
1. 松下傳感器的電文格式需以16進制發送,所以我們將电文格式: %,0,1,#,R,M,D,*,*,CR 轉為16進制發送。
2. 接收到電文後,擷取"測定值"的字符串
3. "測定值"的字符串轉換成數值後,需再除 10000才是真正的量測值
DIM Laser_WriteArray(10) AS BYTE={&H25,&H30,&H31,&H23,&H52,&H4D,&H44,&H2A,&H2A,&H0D} '发送电文格式: %01#RMD**
DIM Laser_ReadArray(20) AS BYTE '接收电文格式
DIM AS STRING Laser_Result, Laser_Result1, Laser_Result2 '處理過程中的字串變數
DIM AS DOUBLE laser_Value '回傳數值
DIM AS INTEGER i, m, n
COM_Open 3 '打开串口3
COM_SET 3, 38400, 0, 1, 8 '设置串口通讯参数
COM_WriteStream 3, Laser_WriteArray(), 10 '发送上位请求命令
COM_ReadStream 3, Laser_ReadArray(), 17 '接受下位回传数据
'解析下位回传数据
Laser_Result="" '先清空字串
FOR i=0 to 16
Laser_Result += CHR(Laser_ReadArray(i)) '返回用ASCII码表达的值对应的字符
NEXT i
'提取回傳的高度数据 (提取 RMD......**CR 中的字符串, 並轉成數值)
m = INSTR(Laser_Result, "RMD") + 3 '取得字符串中"RMD"字符后的位置
Laser_Result1 = MID(Laser_Result, m) '截取"RMD"字符后的字符串
n = INSTR(Laser_Result1,"*") - 1 '取得字符串中"*"字符前的位置
Laser_Result2 = MID(Laser_Result1, 1, n) '截取"*"字符前的字符串
laser_Value = VAL(Laser_Result2)/10000 '将字符串转成數值变量
PRINT laser_Value '打印接收到的數值
COM_Close 3 '关闭串口3
![[研华MAS控制器] 如何连接松下激光测高传感器](https://exp-picture.cdn.bcebos.com/3761a73acd8920c55aff1880568a59de44078845.jpg)
4、运行Motion Sutdio程序
1.在Motion Studio项目窗口中,(1)点击编译,(2)编译完成后调试运行。
2.在调试窗口可看到传感器回传测高数据。
![[研华MAS控制器] 如何连接松下激光测高传感器](https://exp-picture.cdn.bcebos.com/b87bd38920c5260ff5c54d3fd2de450789018945.jpg)
1、COM_OPEN
语法:COM_OPEN port
描述:指定串口编号,打开串口。相应串口端口被打开后,才可以对该串口操作。该指令需要根据本地串口资源进行操作。
参数:port串口端口号
注意:打开串口操作仅适用于未打开的串口,如果串口资源已经被打开,下该指令操作会执行不成功,并返回错误。
2、COM_CLOSE
语法:COM_ClOSE port
描述:指定串口编号,关闭串口。
参数:port串口端口号
3、COM_SET
语法:COM_SET port , baudrate, parity, stopbits, databits
描述:设置串口通讯参数。
参数:
port 串口端口号;
Baudrate波特率;范围:4800、9600、19200、38400、57600、115200
Parity校验方式;范围:无(NONE)、奇(ODD)、偶(EVEN)
Stopbits停止位;范围:1、2
Databits 数据位;范围:7、8
4、COM_ReadStream
语法:COM_READSTREAM port, *strarray, num
描述:串口自由协议读操作,通过串口读数据。执行到该指令时,控制器程序会等在该行,直到读到的字节个数和num参数指定的个数一致时,程序才会执行到下一行。
参数:
port 串口端口号;
*strarray 存放读到的数据变量地址,一般为数组的地址或字符串地址
num 读取的字节个数或字符个数
5、COM_WriteStream
语法:COM_WriteStream port, *strarray, num
描述:串口自由协议写操作,通过串口写数据。
参数:
port 串口端口号;
*strarray 存放写出的数据变量地址,一般为数组的地址或字符串地址
num 写出的字节个数或字符个数
6、CHR
语 法:value=CHR(number)
描 述:返回用ASCII码表达的值对应的字符
参 数:number ASCII码值
例 程
PRINT CHR(97) '97对应的字符为a,打印结果为a
PRINT CHR(65) '65对应的字符为A,打印结果为A
7、MID
语 法:value=MID(string,start [,number])
描 述:返回一个字符串的子字符串
参 数:
string 需要转换的字符串
start 返回的子字符串的起始转换位
number 子字符串的字符个数。如不填,则返回从start位后的所有字符
例 程
Print Mid("abcdefg", 3, 2) '打印结果为cd
Print Mid("abcdefg", 3) '打印结果为cdefg
Print Mid("abcdefg", 2, 1) '打印结果为b
8、INSTR
语 法:value=INSTR( [start,] string, [Any] substring)
描 述:查找字符串中第一次出现的字符或者字串
参 数:
start 从第几个字符开始查找
string 在string这个字符串中查找字符或字串
Any 加上这个关键字后,string中先找到substring中的任意一个字符就会返回相应值
substring 需查找的字符或字串
例 程
Print InStr(2,"abcdefg", "a") '打印信息为0,因从字符串的第2位开始找,找不到a,返回0
Print InStr("abcdefg", "de") '打印信息为4,第4位找到de
Print InStr("abcdefg", "h") '打印信息为0,字符串中没有h
Print InStr("abcdefg", Any "fbc") '打印信息为2,因加了any关键字,所以先找到b,b为第2位
9、VAL
语 法:value=VAL(string)
描 述:将字符串转换成一个数值,字符串转换将从左到右按字符转换,如果先遇到非数值的字符,转换出来的数值将是0。
参 数:string 字符串
例 程
DIM AS STRING str1,str2
str1="e3t" '因先遇到非数值字符e,所有打印结果为0
str2="325.32"
PRINT VAL(str1),VAL(str2) '打印结果为0,325.32