呼和浩特西門子PLC系列代理商
S7-1200PLC中的模擬量轉(zhuǎn)換
前幾天有個(gè)朋友問了個(gè)有關(guān)于S7-1200PLC中的模擬量的轉(zhuǎn)換問題,他跟我說S7-300中有FC105和FC106用于做模擬量的轉(zhuǎn)換過程,S7-200 中也有scaling轉(zhuǎn)換庫(kù)指令,可以用于模擬的轉(zhuǎn)換。但在S7-1200中為什么就沒有相應(yīng)的庫(kù)去做轉(zhuǎn)換呢?
對(duì)于S7-1200的PLC來講,并沒有S7-300中使用到的FC105和FC106這兩個(gè)塊的,但是做法有要幾種,這里跟大家說兩種方法:
(方法一)S7-1200中提供了兩條指令供大家使用,大家在使用者兩條指令時(shí),就可以用于完成模擬量的轉(zhuǎn)換過程。(1)NORM_X:標(biāo)準(zhǔn)化 (2)SCALE_X:縮放
(1)NORM_X :標(biāo)準(zhǔn)化
“標(biāo)準(zhǔn)化”指令,通過將輸入 VALUE 中變量的值映射到線性標(biāo)尺對(duì)其進(jìn)行標(biāo)準(zhǔn)化。 可以使用參數(shù) MIN 和 MAX 定義范圍的限值。 輸出 OUT 中的結(jié)果經(jīng)過計(jì)算并存儲(chǔ)為浮點(diǎn)數(shù),這取決于要標(biāo)準(zhǔn)化的值在該值范圍中的位置。 如果要標(biāo)準(zhǔn)化的值等于輸入 MIN 中的值,則輸出 OUT 將返回值“0.0”。 如果要標(biāo)準(zhǔn)化的值等于輸入 MAX 的值,則輸出 OUT 需返回值“1.0”。如果是用于模擬量的轉(zhuǎn)換,則MIN和MAX表示的就是我們模擬量模塊輸入信號(hào)對(duì)應(yīng)的數(shù)字量的范圍,而VALUE表示的就是我們的模擬量模塊的采用值。如下圖所示:
(2)SCALE_X:縮放
“縮放”指令,通過將輸入 VALUE 的值映射到的值范圍來對(duì)其進(jìn)行縮放。 當(dāng)執(zhí)行“縮放”指令時(shí),輸入 VALUE 的浮點(diǎn)值會(huì)縮放到由參數(shù) MIN 和 MAX 定義的值范圍。 縮放結(jié)果為整數(shù),存儲(chǔ)在 OUT 輸出中。
所以通過這兩個(gè)指令,我們就可以實(shí)現(xiàn)模擬量的轉(zhuǎn)換過程。如下圖所示:
(方法二) 可以自己通過轉(zhuǎn)換指令(CONVERT)及數(shù)學(xué)函數(shù)中的計(jì)算指令(CALCULATE),按照模擬量的轉(zhuǎn)換公式編寫這個(gè)計(jì)算指令。
模擬量轉(zhuǎn)換公式:
編寫計(jì)算公式時(shí),首先定義好各個(gè)管腳所對(duì)應(yīng)的公式中的名稱,
IV:IN1
Ish:IN2
Isl:IN3
Osh:IN4
Osl:IN5
OV:OUT
當(dāng)然在會(huì)用的過程中,也可以直接使用帶參數(shù)的FC按照模擬量的轉(zhuǎn)換公式去編寫相應(yīng)的程序。

如何實(shí)現(xiàn)S7-200SMART自由口通訊
自由口通訊協(xié)議的關(guān)鍵條件
定義開始接收消息和停止接收消息的條件。
1、空閑線檢測(cè):設(shè)置il=1,sc=0,bk=0,smw90/smw190>0
空閑線條件定義為傳輸線路上的安靜或者空閑的時(shí)間。SMW90/SMW190中是以ms為單位的空閑時(shí)間。在該方式下,從執(zhí)行接收指令開始起動(dòng)空閑時(shí)間檢測(cè)。在傳輸線空閑的時(shí)間大于等于SMW90/SMW190中設(shè)定的時(shí)間之后接收的*個(gè)字符作為新信息的起始字符。接收消息功能將會(huì)忽略在空閑時(shí)間到達(dá)之前接收到的任何字符,并會(huì)在每個(gè)字符后面重新啟動(dòng)空閑線定時(shí)器。
空閑線時(shí)間應(yīng)大于以波特率傳送一個(gè)字符所需要的時(shí)間。空閑線時(shí)間的典型為以的波特率傳送3個(gè)字符所需要的時(shí)間。傳輸速率為19200bit/s時(shí)候,可設(shè)置空閑時(shí)間為2ms。
對(duì)于二進(jìn)制協(xié)議,沒有特定起始字符的協(xié)議或了消息之間小時(shí)間間隔的協(xié)議,可以將空閑線檢測(cè)用作開始條件。
2、起始字符檢測(cè):設(shè)置il=0,sc=1,bk=0,忽略smw90/smw190
起始字符是消息的*個(gè)字符,以SMB88/SMB188中的起始字符作為接收到的消息開始的標(biāo)志。接收消息功能忽略起始字符之前收到的字符,起始字符和起始字符之后收到的所有字符都存儲(chǔ)在消息緩沖區(qū)中。起始字符檢測(cè)一般用于ASCII協(xié)議。
3、空閑線和起始字符:設(shè)置il=1,sc=1,bk=0,SMW90/SMW190大于0
滿足空閑線條件之后,接收消息功能查找的起始字符。如果接收到的字符不是smB88/smb188的起始字符,將開始重新檢測(cè)空閑線條件。在滿足空閑線條件之前接收到的以及起始字符之前接收到的字符都將會(huì)被忽略。這種方式尤其適合用于通訊鏈路上有多臺(tái)設(shè)備的情況。
4 、break檢測(cè):設(shè)置il=0,sc=0,bk=1,檢測(cè)smw90/smw190和smb88/smb188
以接收到的break(斷開)作為接收消息的開始。當(dāng)接收到的數(shù)據(jù)保持為0的時(shí)間大于完整字符(包含起始位,數(shù)據(jù)位,奇偶校驗(yàn)位和停止位)傳輸?shù)臅r(shí)間,表示檢測(cè)到break。斷開條件之前接收到的字符將忽略,斷開條件之后接收到的任意字符都會(huì)存儲(chǔ)在消息緩沖區(qū)中。
5、break和起始字符:il=0,sc=1,bk=1,忽略smw90/smw190
斷開條件滿足后,接收消息功能將查找的起始字符。如果接收到的字符不是起始字符,將重新搜索斷開條件。所有在斷開條件滿足之前在接收到起始字符之前接收的字符都會(huì)忽略。起始字符和所有后續(xù)字符一起存入消息緩沖區(qū)
6、任何字符開始接受:設(shè)置il=1,sc=0,bk=0,smw90/smw190=0
忽略smb88/smb188中的起始字符。應(yīng)為smw90/smw190中的空閑線時(shí)間為0,接收指令已經(jīng)執(zhí)行,便將立即開始強(qiáng)制接收所有的任意字符,并將存入消息緩沖區(qū)。
7、任意字符開始,消息定時(shí)器超過則結(jié)束接收消息:令il = 1,sc = 0,bk = 0,smw90/smw190 = 0,忽略smb88/smb188中的起始字符。以上設(shè)置用于實(shí)現(xiàn)從任意字符開始接收消息。
此外設(shè)置c/m = 1,tmr =1,用smw92/smw192設(shè)置以ms為單位的消息超時(shí)時(shí)間,用消息定時(shí)器監(jiān)視接收是否超時(shí)。如果未滿足其他結(jié)束條件,在消息定時(shí)器超時(shí)的時(shí)候,將會(huì)終止接收消息功能。這對(duì)自由口協(xié)議的主站是非常有用的。
定義通訊的傳輸速度和模式
SMB30=16#05=2# 00 0 001 01
其中從高位到低位依次:
00:表示無(wú)校驗(yàn)
0:表示8個(gè)數(shù)據(jù)位
001:表示波特率19200
01:表示自由口通訊
2.SMB87定義
定義接收消息控制字節(jié)
SMB87=16#FC = 2#1111 1100
其中從高位到低位依次:
en=1:?jiǎn)⒂媒邮芟⒐δ?/p>
sc=1:使用SMB88 的值監(jiān)測(cè)數(shù)據(jù)的起始
ec=1:使用SMB89 的值監(jiān)測(cè)數(shù)據(jù)的終止
il=1:使用SMW90 的值監(jiān)測(cè)空閑條件
c/m=1:定時(shí)器為消息定時(shí)器
tmr=1:超過SMW92 中的時(shí)間段,則終止接收
bk=0:忽略中斷條件
SM87.0=0 (無(wú)效)
SMB88:定義開始字符為 2A
SMB89:定義結(jié)束字符為 0A
SMW90:空閑線時(shí)間段,單位:MS
SMW92:消息定時(shí)器的超時(shí)值(單位:MS),若超過該時(shí)間段,則停止接受消息
SMB94:要接受的大字符數(shù)(1--255個(gè)字節(jié));即使未使用字符計(jì)數(shù)消息終止,此范圍也必須設(shè)置為所需的大數(shù)據(jù)交換區(qū)
l SMW90=1000000us/19200 *11*3
其中:1000000/19200得到傳輸1個(gè)位需要多長(zhǎng)時(shí)間,一個(gè)字符11個(gè)位,檢測(cè)空閑3.5個(gè)字符,約等于3個(gè)字符
l SMW92=1000000us/19200 *11*20*1.5
其中:20表示字節(jié)接收大的字節(jié)數(shù),與SMB94有關(guān),1.5倍表示整個(gè)消息長(zhǎng)度的倍數(shù)
4.執(zhí)行接受指令
5.連接接受完成中斷和發(fā)送完成中斷,并且開放中斷
6.接收完成中斷:
由于我們使用的RS485轉(zhuǎn)USB的線纜是半雙工,發(fā)送和接收需要間隔至少5ms的時(shí)間。所以接 收完成后先延時(shí)5ms在發(fā)送。
7.SMB34定時(shí)中斷:
延時(shí)時(shí)間到,執(zhí)行發(fā)送指令,把先期接收到的數(shù)據(jù)再發(fā)送給PC。
8.發(fā)送完成中斷:

呼和浩特西門子PLC系列代理商