多语言展示
当前在线:310今日阅读:176今日分享:34

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

MAS控制器內建支持標準RS-232, RS-422, RS-485通信。市面上許多外接設備如傳感器,條碼槍,...等等,都是透過這些方式與外部通信。在這個教程中我們選擇了松下小型激光位移传感器 HL-G1, 透過RS-422連接, 讀取量測到的數值。如何连线松下激光测试测高传感器,分以下步骤:1. 传感器连接设置 : 除了硬件配線外, 還需要設置松下传感器的COM與研華MAS-3245控制器的COM.2. 编写程序 : 依照松下传感器的通訊協定電文,發送讀取命令後讀取回傳的電文。
工具/原料
1

Motion Studio V1.71

2

Motion Runtime 1.71

3

松下小型激光位移传感器 HL-G1系列

4

研華MAS-3245 控制器

方法/步骤1-传感器连接设置
1

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

3

研華MAS-3245的COM設定MAS-3245支持3種串列傳輸協定:RS-232, RS-422, RS-485, 因此首先需在BIOS裡設置COM3為RS-422 1. 進入BIOS後,請選擇 Super IO Configuration2. 請選擇 Serial Port 3 Configuration3. 請設置為 RS-422 注意: 控制器外殼上印刷的COM1 實際是对应 BIOS里面的COM3, 與Motion Studio 里面的COM3

4

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

方法/步骤2-编写程序
1

连接实体控制器1. 使用网线将笔记电脑与MAS-3245连起来。(笔记本电脑需安裝Motion Studio)2. 在网路设置的本地连接的屬性中, 设置笔记本IP地址和MAS-3245控制器IP地址 (注意:笔记本和控制器IP地址需在同一网段, 才可连线成功!)3. 这边我们分别设定为 [笔记本]192.168.1.1 和 [MAS-3245控制器]192.168.1.2。

2

新建工程1.打开Motion Studio,在连接配置中选择以太网,并输入MAS控制器的IP地址 (192.168.1.2),点击[应用]。2.连接成功后,新建一个Motion Studio工程,并创建一个Task程序“Task0”。

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                                                     '打开串口3COM_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

4

运行Motion Sutdio程序1.在Motion Studio项目窗口中,(1)点击编译,(2)编译完成后调试运行。2.在调试窗口可看到传感器回传测高数据。

附录:指令说明
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、115200Parity校验方式;范围:无(NONE)、奇(ODD)、偶(EVEN)Stopbits停止位;范围:1、2Databits 数据位;范围: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,打印结果为aPRINT CHR(65)  '65对应的字符为A,打印结果为A

7

MID语  法:value=MID(string,start [,number])描  述:返回一个字符串的子字符串参  数:string   需要转换的字符串start    返回的子字符串的起始转换位number 子字符串的字符个数。如不填,则返回从start位后的所有字符例  程Print Mid('abcdefg', 3, 2) '打印结果为cdPrint Mid('abcdefg', 3)  '打印结果为cdefgPrint 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,返回0Print InStr('abcdefg', 'de') '打印信息为4,第4位找到dePrint InStr('abcdefg', 'h') '打印信息为0,字符串中没有hPrint InStr('abcdefg', Any 'fbc') '打印信息为2,因加了any关键字,所以先找到b,b为第2位

9

VAL语  法:value=VAL(string)描  述:将字符串转换成一个数值,字符串转换将从左到右按字符转换,如果先遇到非数值的字符,转换出来的数值将是0。参  数:string  字符串例  程DIM AS STRING str1,str2str1='e3t'    '因先遇到非数值字符e,所有打印结果为0str2='325.32'   PRINT VAL(str1),VAL(str2) '打印结果为0,325.32

推荐信息