數控車(FANUC系統)宏程序教程_1-2_常量與變量
2026年10月21日
AI 生成·可能包含錯誤
視頻概述
AI 生成本課程詳細介紹了數控編程中的常量與變量。常量是指具體的數值(如整數、小數、分數),而變量則分為空變量、局部變量、公共變量和系統變量。重點講解了各類變量的範圍、讀寫權限、斷電後是否清零以及如何在程序中通過「#」符號引用變量來參與計算或配合地址值使用。
大家好
歡迎收看數目車紅程序編程課程
這一節我們學習常量與變量
首先我們學習常量
那麼在我們的程序當中
常量呢
就是數字
它就是代表了一個具體的數字
那麼它可以是整數
也可以是小數
還可以是分數
比如我這裏邊做了這樣的一個例子
我們數字1
它代表的就是一個常量
-45代表的也是一個常量
2.22
這是一個小數
代表的是常量
2分之三
這是一個分數
代表的是常量
三因三十度
這也是具體的數值
包括這個π
就是3.14
3.14
那麼它們所代表的都是常量
我們在程序裏邊
比如說我寫了一個g0x20.33
那麼這個20.33
它就是一個常量
比如說g1z-30.5
那這個-30.5
它就是一個常量
對於常量來講的話
應該是比較好理解的
這個沒有太多的需要在這塊給大家強調的
下來我們再看一下變量
首先看一下變量的類型
嚴格的意義上來講
變量是要分四種類型的
就是空變量
局部變量
公共變量和系統變量
那我們先拋開空變量不說
我們單純的先說局部變量
公共變量和系統變量
這三種變量的命名
那麼從字面的意義上來理解
其實大體上也能夠知道這種變量所起到的一些作用
那麼局部變量
從字面的意義來理解
那它就是隻能擁用到局部的程序當中
局部的程序裏面
我們所使用的變量
我們就叫做局部變量
那什麼樣的程序叫做局部程序呢
其實就是我們在同一個程序號下的程序
這種的我們所使用的變量
它就是局部變量
而公共變量呢
從字面的意思來理解
那就說是公用的
你也可以用
我也可以用這樣的一個變量
也就是說
如果我們定義了公共變量
那麼在程序A當中
你可以去調用這個公共變量
你在程序B當中
也可以去調用相同的這一個變量值的這個公共變量
也可以呢
在我們的子程序當中
如果我們的子程序裏面呢
也還有變量的話
你也可以直接調用
可以直接調用
那局部變量我們就做不到這一點
第三個是系統變量
這個從字面的意思來理解呢
就是與我們的這個數控系統相關的一些變量
我們基本上在編程的過程當中
儘量的不要去使用系統變量
除非呢
你對這個系統變量是非常的瞭解
這塊先簡單的這樣說一下
我們具體來看一下
第一個空變量
空變量我們表示的形式是淨零
這一個變量呢
不需要你進行復值
它的值總爲空
那麼從數學的角度來講
它的值應該是零
這個變量只能讀不能寫
因爲你不需要進行復制嘛
對吧
它只能讀不能寫
你也沒有辦法對它進行復制
對於空變量淨零來講的話
我的建議呢
是你知道就行
我們在程序當中的話
不會去使用空變量
要養成這樣一個習慣
我們沒用的變量
你不要去使用就完事了
第二個是局部變量
那麼它的變量是從-1到-33
這33個變量
-1到-33
這33個變量
它定義爲局部變量
也就是說
如果我們在某一個單一的程序當中
我們使用了-1到-33
其中的一部分的變量的情況下
那如果我們在另外的一個程序裏邊
我還想去使用這些變量
那麼1是可以的
那麼第二點我們要注意的就是
你所使用的這些變量需要重新進行復制
比如說我在程序A當中
我對變量-1
我複製爲10
那麼我們在程序B當中
如果我引用了-1這個變量
如果你不復制
代表-1的變量爲0
爲空
並不等於我們在程序A當中
對-1所複製的10的數值
這個是需要我們進行注意的
也就是說
我們的局部變量
在不同的程序當中
要分別進行復制
你不能說是我在程序A當中已經複製了
我們在程序B當中
我不去進行復制
這個是不允許的
局部變量是需要進行復制操作的
那麼是它的裏面的數值是可以讀也可以寫的
那麼局部變量主要用來存儲
我們在我們的程序在運行的過程當中
你產生的一些計算的數據
主要是用來存放數據的
在同一個程序號的程序當中來使用
這就是我們我前面已經給大家強調的局部變量
局部變量
你只能在同一個程序號當中來使用
當然了
我們的公共變量呢
你也可以在同一個程序號當中來使用
這個是沒問題的
這個也是沒有問題的
一般的情況下
我們的紅程序使用局部變量
基本上就已經夠用了
33個局部變量
這個已經基本就夠用了
那麼同時局部變量還有一個特點
就是一旦我的機牀斷電以後
它的變量值呢
會自動清零
這也就是我們在使用局部變量
這個進行紅程序的編寫的過程當中呢
我們一定要對你所有引用的變量要進行復制的一個原因
那麼你複製以後
它纔會在我們的這個受控系統當中的某一個位置
將這個值呢
拿出了一塊
我這個位置呢
作爲變量井1
你引用了井1
那麼你引用了井1
它會在這個系統當中呢
拿出了一塊地址放上標記出來
這個位置呢
代表了井1這個變量
那麼你在程序當中對這個井1的變量進行復制以後呢
那麼這個所附的數值就會放到這個位置當中
然後呢
程序在運行的時候
從這個位置從這個位置呢
往出取這個數值來進行相關的一些這個程序的操作
一旦斷電以後
那麼在剛纔代表井1變量的這個位置裏面的數值呢
就會被清掉了
那麼我們機牀重新上電以後
在重新運行這個程序的時候
因爲我們在程序的開始部分已經對井1這個變量進行了複製
那麼會把這個值呢
再次的寫入到我們這個數控系統的相關的某一個位置
把這個值放進去
然後呢
它就可以執行後續的操作
那麼這個呢
是我們局部變量的一個情況
第三個呢
是公共變量
公共變量的分成了兩部分
第一部分的是從井100到井199
第二部分的是從井500到井999
那麼它與我們的局部變量有相似之處
就是都需要呢
進行復制的操作
都是可讀可寫的
也是用來存儲我們程序在運行的過程當中所產生的一些計算的數據的
不同點在於我們在數控系統當中
一旦給我們的公共變量進行了複製
那你所有的紅程序都可以直接調用這些變量
而不需要再次進行復制
井100到井199呢
是斷電以後
它的變量值會自動清零
那如果調用的話
就需要在數控系統當中重新的進行復制
而井500到井999
這個這一部分的公共變量呢
斷電以後
它的變量值呢
會被保存在我們的數控系統當中
也就是說
我們只需要在我們的數控系統當中的進行一次複製
那麼以後就不需要再次的進行復制了
如果你的值針對比如說我井600的這個變量
如果你的值在這個程序和另外一個程序當中
它所取的數值是一致的
那麼你這個值就不需要再你復一次就可以了
直接在另外一個程序當中呢
我們就可以把井600的這個變量直接的調用出來
它的值就是我們在在我們的數控系統當中已經復過的了
那如果我們兩個程序當中都有井600都有井600
對於兩個不同的程序
因爲井600這個變量的值是一個
你已經是你已經設定過的值了
那麼如果要改變的話
當你再次運行這兩個程序的時候
那麼這兩個程序裏面井600的數值都會發生改變
都會發生改變
所以呢
爲了我們編程的方便
我們一般的情況下還是不建議不同的程序呢
使用相同的公共變量的這個變量值
比如說我在A程序當中
我用了井500這個變量值
我在B程序當中
我還去用井500的變量值
我們不建議這樣的一種操作
這個是我們在編程的過程當中需要注意的一點
第四個的話就是系統變量
系統變量是井1000和井1000以後作爲系統變量
那麼這一部分的變量
主要是用來讀和寫我們的受控系統在運行的過程當中所產生的一些數據
比如說我們刀具運行到當前位置
它的具體的座標值以及呢
我們所設定的刀具的補償值等等
這樣的一些那個和系統參數相關的一些這個數值
那麼我們是採用的系統變量來表達的
如果你需要引用的話
一般的情況下
我們不使用系統變量
除非你對系統變量所代表的系統參數非常清楚
否則的話
我們在不清楚的情況下去調用系統變量
有可能會遲得其反
產生我們錯誤的程序
甚至是產生撞刀
撞壞零件
甚至是損壞集成這種情況
這一點呢
我們大家一定要注意
下來呢
我們再看一下變量的表達方式
變量就是用井號後面再加一個變量號
這樣的一種形式來表達來解釋它是一個變量
變量號呢
可以是自然數
也可以是變量
還可以是運算表達式
那比如說
我這樣的變量的表達
井1
井5
井20這樣的表達方式
我們採用的變量號呢
就是自然數的形式
就是這樣自然數的形式
那麼這樣是我們最常用的一種變量的表達方式
而這樣的一種變量的表達方式呢
我們是採用井號
再加上一個以變量作爲變量號的這種表達方式來表達一個變量
這是允許的一種表達變量方式
那麼一般的情況下
我們不去使用這樣的一個方式
那麼這樣的一個變量的表達方式呢
它所使用的就是我們的運算表達式
井1加上井2再減去一個12
這樣的一個數值
得到這樣一個結果以後
其實得到的結果可能還是一個自然數
對吧
然後呢
再與我們的井號去做組合
組成了一個變量
那麼這是我們整個的變量的一個表達的一個方式
就是井號加上變量號
只是我們的變量號呢
可以爲自然數
還可以爲變量
還可以爲我們的運算表達式
我們最常用的是採用變量號爲自然數的這樣的變量的表達方式
去處理我們的輸送程序的
那麼在程序當中所設定的所有的變量
你除了用來參與計算過程的變量以外呢
其餘的變量
它都要與地址來配合使用
比如說這樣的一段程序
井1等於100
這等號代表負值
我們後面的課會講
你先知道井1的值
那就是100
也就是將100這個數字給了井1
給了井1
那現在井1的值就是100
那我讓井1這個變量與Z這個地址值進行了一個配合
我寫了一個Z負的井1
它所表示的含義就是Z負100
這個大家應該很好理解吧
如果我井1的值是負的10
是負10
那麼我們的Z負井1應該表示多少呢
因爲我們井1的值是負10
然後呢
對這個井1的值取了一個相反數
因爲前面取了個負號
井1是負10
那麼負的井1不就是負的負10嗎
那負的井1就代表10
它的結果爲10
那這樣我們表示的就是Z10
這樣的一個結果
再比如這樣的一段程序
我將0.35這個數字複製給井5
即井5等於0.35
那麼現在井5的數值呢
就是0.35
則F井5表示什麼意思
F井5表示的就是F0.35
這裏的F是作爲地址來出現的
同理我們再看下邊這一段
將59這個數值複製給井2
即井2等於59
那麼現在井2的數值就是59
則X井2表示的結果是什麼呢
表示的結果就是X59
它就是這樣的
你類似呢
相當於是一種替換的過程
只不過我們原來呢
我們在編程的過程當中
我們可以直接寫的是X59
對吧
那麼我們的數目系統就知道
我要這個將道具呢
運行到X59這樣的一個直徑
所在的直徑上面去
那現在我們不用常數這種編程方式了
我引入一個變量
對吧
我將這個變量複製爲59
然後後邊我再給它一個
即X井1
那它所代表的含義就是以快速走道的形式
走到X59的位置
那我們再看一下我們在程序當中所引入的一些變量
它是如何參與我們的計算過程的
我們看
這樣的一段程序
這是在同一個程序當中出現的
那麼第一行行號
第一行是井1等於20
它代表的含義是將20複製給井1
第二行將30複製給井2
第三行井1與加上井2所得到的結果呢
複製給井3
第四行G0X井3
那麼這個這段程序呢
我們總共引入了三個變量
井1
井2
井3
其中有兩個變量參與了計算
就是井1和井2參與了計算
參與了這樣的一個計算
求和的一個計算
求完和以後
它們將所得到的結果又給了井3
又給了井3
那於是
我們井3的值就是20加30等於50了
井3的值就是50
再去執行G0X井3
它就等效於執行G0X50
另外一個指令
在我們這個變量的使用過程當中呢
需要呢
注意兩點
第一點呢
就是我們的變量是不能與ONIG來這個配合使用的
因爲呢
在我們的這個受控程序當中
它們是有特殊的含義的
那如果你讓這些地址值去與我們的變量相配合的話
會產生歧義
這個是不允許的
第二點呢
就是我們的變量與地址值在配合的過程當中
你不能超過該地址值允許的範圍
比如呢
有這麼一段程序
在同一個程序當中有這麼一段程序
說將1000複製給井10
然後呢
M井10
那我們看一下M指令可不可以達到1000這樣的一個數值
有沒有M1000這樣的一個指令
沒有M1000這樣的指令
M最大可能到M99對吧
那你將這樣的一個變量的值與M這樣的一個地址來結合
它結合出來的最後的結果就是M1000嘛
如果可以的話
它就是M1000嘛
它肯定是結合出來的結果就M1000
但是呢
在我們的受控程序當中
M1000我們沒有賦予它任何的含義
也就是說這段程序執行完了之後的話
你沒有起到任何的一個作用
沒有達到你所需要的這種效果
這樣的話
你將來這段程序就是白寫了
這就是說我們的變量和地址值配合使用的時候
你還要注意一下你地址值所允許的取值範圍
你不能搞出了一個沒有的
我們在受控程序當中沒有定義過的這樣的一些這個相關的指令
對吧
那這樣的程序我們就執行不下去
這一點的話是需要我們來注意的
再總結一下
變量的總共四種類型
這個我們作爲理解
我們作爲理解
我們經常使用的就是局部變量
井1到井33
那麼變量的表達方式呢
就是井號加變量號
我們最最常用的就是井號加自然數
加自然數
井1
井2
井3等等
是這樣的一種表達方式
那麼對於我們在程序當中
如何實現對變量的引用呢
其實很簡單
就是你在程序當中敲出來了井多少
我們不管後邊的東西
你只要你敲出來井
比如說我敲出來個井1
等於多少
我先不管
只要你敲出來井1
那麼相當於你的這段程序就已經引入了變量
能理解嗎
只要你敲出來了井1
這個字符就代表你這個程序已經引入了變量
要有這麼一個概念
至於我們在程序編程的過程當中
那我到底我是要引入井1這個變量
還是井2
還是井10
還是井20
這個沒有成文的規定
那麼根據我們個人編程的習慣
我可能用井1
那你可以用井10
表示同樣的一個具體的我們圖紙當中的某一個數值
或者圖紙當中
我們加工過程當中所對應的某一個參數
這個都是可以的
沒有這個嚴格的規定
所以說這塊我們也沒有必要去糾結
哎呀
他用了井1
我要用井1
那不是這麼一個概念啊
那麼對於變量的引用
你一定要記得你引用的是局部變量
還是公共變量就可以了
你是需要引入局部變量
還是需要引入公共變量就可以了
那麼至於在這樣一個大的一個前提下
你所引入的是井1也好
井10也好
這個都沒有關係
包括我們變量的引用
你到底是按順序來引用的
比如說我第一條
我引入一個井1
那第二條引入一個井2
第三條引入一個井3
可以沒有問題
那你也可以
我第一條引入的就是井5
我第二條第二行呢
引入的是井1
第三行呢
引入的是井8
他也沒有問題
只要你知道你這個變量所代表的含義是什麼就行了
方便你去記憶
不要去糾結別人的程序變量是什麼樣子的
我的程序變量是什麼樣子
這個地方我們就不要再去糾結了
那好
那今天的課程就到這裏
謝謝大家
祝同學們學習愉快

