Motion Studio V1.71
Motion Runtime 1.71
松下小型激光位移传感器 HL-G1系列
研華MAS-3245 控制器
硬件连接将激光测高传感器通过RS422连接线接到MAS-3245的COM1上, 配線請參考下圖。
研華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
传感器电文在RS-422握手信号模式下,要讀取传感器的测定值必須依照松下的電文格式。分為 1)發送讀取命令 與 2)讀取回傳的電文。 编写BASIC程序時必須依照此電文格式。
连接实体控制器1. 使用网线将笔记电脑与MAS-3245连起来。(笔记本电脑需安裝Motion Studio)2. 在网路设置的本地连接的屬性中, 设置笔记本IP地址和MAS-3245控制器IP地址 (注意:笔记本和控制器IP地址需在同一网段, 才可连线成功!)3. 这边我们分别设定为 [笔记本]192.168.1.1 和 [MAS-3245控制器]192.168.1.2。
新建工程1.打开Motion Studio,在连接配置中选择以太网,并输入MAS控制器的IP地址 (192.168.1.2),点击[应用]。2.连接成功后,新建一个Motion Studio工程,并创建一个Task程序“Task0”。
编写代码编写代码的重點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
运行Motion Sutdio程序1.在Motion Studio项目窗口中,(1)点击编译,(2)编译完成后调试运行。2.在调试窗口可看到传感器回传测高数据。
COM_OPEN语法:COM_OPEN port描述:指定串口编号,打开串口。相应串口端口被打开后,才可以对该串口操作。该指令需要根据本地串口资源进行操作。参数:port串口端口号注意:打开串口操作仅适用于未打开的串口,如果串口资源已经被打开,下该指令操作会执行不成功,并返回错误。
COM_CLOSE语法:COM_ClOSE port描述:指定串口编号,关闭串口。参数:port串口端口号
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
COM_ReadStream语法:COM_READSTREAM port, *strarray, num描述:串口自由协议读操作,通过串口读数据。执行到该指令时,控制器程序会等在该行,直到读到的字节个数和num参数指定的个数一致时,程序才会执行到下一行。参数:port 串口端口号;*strarray 存放读到的数据变量地址,一般为数组的地址或字符串地址num 读取的字节个数或字符个数
COM_WriteStream语法:COM_WriteStream port, *strarray, num描述:串口自由协议写操作,通过串口写数据。参数:port 串口端口号;*strarray 存放写出的数据变量地址,一般为数组的地址或字符串地址num 写出的字节个数或字符个数
CHR语 法:value=CHR(number)描 述:返回用ASCII码表达的值对应的字符参 数:number ASCII码值例 程PRINT CHR(97) '97对应的字符为a,打印结果为aPRINT CHR(65) '65对应的字符为A,打印结果为A
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
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位
VAL语 法:value=VAL(string)描 述:将字符串转换成一个数值,字符串转换将从左到右按字符转换,如果先遇到非数值的字符,转换出来的数值将是0。参 数:string 字符串例 程DIM AS STRING str1,str2str1='e3t' '因先遇到非数值字符e,所有打印结果为0str2='325.32' PRINT VAL(str1),VAL(str2) '打印结果为0,325.32