回覆列表
-
1 # 控制研究控
-
2 # Silence46400710
這個警告的中文提示翻譯上有點問題,英文原文是parameter #xxx might not be initialized.
意思是引數xxx可能未被初始化。
在函式或函式塊中,output引數一般只用來被賦值,不用來讀操作,因為存在未被初始化的風險,
如果你的程式是這樣:
if 條件1 then
o_output1:=true;
end_if;
if o_output1 then
xxxxx;
end_if;
這麼寫第四行肯定會報warning,因為o_output1只有在條件1滿足的情況下才會被賦值true,如果條件1不滿足,它的值是多少呢?true?false?答案是不確定,它的值將是上一次掃描週期的值
這種不確定可能會對程式執行帶來風險,所以博途編譯時會有warning提示
-
3 # 儒拉小鎮
標準單元程式塊不推薦使用fc。因為你可能有好幾個氣缸。你可以使用FB。
fc不包含static靜態變數,FB有。那個時間繼電器,Ton_time可以使用靜態變數,而不用專門建一個db塊作為背景塊。
fc塊,temp變數和輸出out都是隨機的,bool量可能是0或者1。不使用時候,輸出的out會報錯。可以在程式最上面寫上
氣缸輸出線圈:=0;
氣缸工作線圈:=0;
後面是你的程式。
又遇到一個專業問題,再來答一答,看看有人看麼?
你這個第三個圖片程式怎麼寫的看不清楚,所以很可能你的程式寫的有問題?
我做了一個你的程式,當然和你的相似但是不一樣,你可以看看:
這個是FC1中的SCL程式,我估計你這裡的程式寫的有問題,或者變數的名義有問題!
下邊就是在OB1中呼叫的程式監控圖:
我這個程式執行起來沒有問題,M0.0為1後,10S鍾後M10.0就會為1!
另外,你的圖片擋住了你的程式,如果是如說的IEC定時器的問題,建立你重新寫一下FC1中的程式!因為STEP7中的IEC定時器和博圖中的定時器有些不一樣,因此如果你是從STEP7中轉過來的就需要再自己重新處理一下!