[研华MAS控制器] 如何连接松下激光测高传感器

2025-10-11 00:12:05

1、硬件连接

将激光测高传感器通过RS422连接线接到MAS-3245的COM1上, 配線請參考下圖。

[研华MAS控制器] 如何连接松下激光测高传感器

2、松下传感器的COM设定

在通訊前需先設置松下传感器的COM波特率與RS-422, 詳細說明請參照傳感器手冊。

1. 设定COM的波特率为38400

2. 设定COM的通讯模式为RS422-1(RS-422握手信号)

[研华MAS控制器] 如何连接松下激光测高传感器

[研华MAS控制器] 如何连接松下激光测高传感器

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控制器] 如何连接松下激光测高传感器

[研华MAS控制器] 如何连接松下激光测高传感器

[研华MAS控制器] 如何连接松下激光测高传感器

4、传感器电文

在RS-422握手信号模式下,要讀取传感器的测定值必須依照松下的電文格式。分為 1)發送讀取命令 與 2)讀取回傳的電文。 编写BASIC程序時必須依照此電文格式。

[研华MAS控制器] 如何连接松下激光测高传感器

1、连接实体控制器

1. 使用网线将笔记电脑与MAS-3245连起来。(笔记本电脑需安裝Motion Studio)

2. 在网路设置的本地连接的屬性中, 设置笔记本IP地址和MAS-3245控制器IP地址 (注意:笔记本和控制器IP地址需在同一网段, 才可连线成功!)

3. 这边我们分别设定为 [笔记本]192.168.1.1 和 [MAS-3245控制器]192.168.1.2。

[研华MAS控制器] 如何连接松下激光测高传感器

[研华MAS控制器] 如何连接松下激光测高传感器

[研华MAS控制器] 如何连接松下激光测高传感器

2、新建工程

1.打开Motion Studio,在连接配置中选择以太网,并输入MAS控制器的IP地址 (192.168.1.2),点击[应用]。

2.连接成功后,新建一个Motion Studio工程,并创建一个Task程序“Task0”。

[研华MAS控制器] 如何连接松下激光测高传感器

[研华MAS控制器] 如何连接松下激光测高传感器

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控制器] 如何连接松下激光测高传感器

4、运行Motion Sutdio程序

1.在Motion Studio项目窗口中,(1)点击编译,(2)编译完成后调试运行。

2.在调试窗口可看到传感器回传测高数据。

[研华MAS控制器] 如何连接松下激光测高传感器

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

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢