<object id="ir2le"></object>
  • 加入收藏 在線留言 聯系我們
    關注微信
    手機掃一掃 立刻聯系商家
    全國服務熱線15267534595
    公司新聞
    使用 SCL 中的常量進行計算
    發布時間: 2023-09-20 16:41 更新時間: 2024-12-27 09:10

    有類型和無類型常量的解釋

    常量是具有固定值的數據,其值在程序運行期間不能更改。常量在程序執行期間可由各種程序元素讀取,但不能被覆蓋。常量值有指定的表示法,具體取決于數據類型和數據格式。分為有類型和無類型的表示法。

    建議在數學函數中不要混用有類型和無類型常量,否則可能會發生不需要的隱式轉換,從而導致生成不正確的值。

    編程示例

    在以下編程示例中,可以看到使用有類型和無類型常量的運算。

    1. 創建一個 SCL 函數塊并將其命名為“FB_MathsFunctions”。

    2. 在塊接口的“Temp”部分聲明“Variable_DINT”變量。

    圖片

    3. 編寫以下程序代碼:

    Variable_DINT := INT#1 +50000;

    在此數學運算中,將有類型常量 INT#1 與無類型常量 50000 相加。無類型常量 50000 在軟件中將帶黃色下劃線,指示常量值超出了 INT 數據類型允許的范圍。

    圖片

    要查看結果,請轉至在線。

    1. 通過右鍵單擊“編譯 > 軟件(僅更改)”(Compile > Software (only changes) 命令執行此命令來編譯 SCL 函數塊“FB_MathsFunctions”。

    2. 使用“下載到設備 > 軟件(僅更改)”(Download to device > Software (only changes)) 命令下載塊。

    3. 轉至在線并監視塊。

    圖片

    有類型常量的數據類型定義加法的數據類型。這意味著加法是在 INT 數據類型區域中執行。 在第一步中,無類型常量 50000 將隱式轉換為 INT 數據類型。但這種轉換會導致生成負值 (-15536)。然后該值將添加到有類型常量 (INT#1)。結果是 -15535。由于將寫入加法運算結果的變量被聲明為 DINT 數據類型,因此數字 -15535 將隱式轉換為 DINT 數據類型,并寫入到變量“Variable_DINT”。但結果仍為負數。

    1. 可能的解決方案

    避免得到錯誤結果的一種方法是兩個常量都采用有類型常量。如果兩個常量都采用有類型常量,較長的數據類型將確定計算結果。

    1. 在“FB_MathsFunctions”SCL 函數塊中編寫以下程序代碼:


      圖片

    在此計算操作中,將有類型常量 INT#1 與有類型常量 DINT#50000 相加。

    要查看結果,請轉至在線。

    1. 通過右鍵單擊“編譯 > 軟件(僅更改)”(Compile > Software (only changes) 命令執行此命令來編譯 SCL 函數塊“FB_MathsFunctions”。

    2. 使用“下載到設備 > 軟件(僅更改)”(Download to device > Software (only changes)) 命令下載塊。

    3. 轉至在線并監視塊。

    圖片

    常量 INT#1 將轉換為 DINT 數據類型,并且兩個常量的相加將在 DINT 數據類型區域中執行。

    2. 可能的解決方案

    避免得到錯誤結果的另一種方法是兩個常量都采用無類型常量。如果兩個常量都采用無類型常量,它們在當前 CPU 上將被解釋為Zui寬的可能數據類型。這意味著在 S7-1500 系列 CPU上,這兩個常量都解釋為 LINT 數據類型。

    1. 在“FB_MathsFunctions”SCL 函數塊中編寫以下程序代碼:\

      圖片

    在此計算操作中,將無類型常量 1 與無類型常量 50000 相加。

    要查看結果,請轉至在線。

    1. 通過右鍵單擊“編譯 > 軟件(僅更改)”(Compile > Software (only changes) 命令執行此命令來編譯 SCL 函數塊“FB_MathsFunctions”。

    2. 使用“下載到設備 > 軟件(僅更改)”(Download to device > Software (only changes)) 命令下載塊。

    3. 轉至在線并監視塊。

    圖片

    常量 1 和 50000 將解釋為 LINT 數據類型,相加的結果將再次轉換為 DINT 數據類型。


    聯系方式

    • 電  話:18126392341
    • 聯系人:梁濤
    • 手  機:15267534595
    • 微  信:15267534595