最近做的乙個專案,其中需要對西門子plc中定時器的間隔時間進行設定,資料格式為s5time。
s5time資料長度為兩個位元組,轉成16進製制數後,第一位表示時間基準,第二至四位是用bcd碼表示的時間值。時間基準的二進位制**如下:
10ms 00
100ms 01
1s 10
10s 11
舉個例子,時間間隔值為5s時,轉成16進製制的s5time數就是0x0500,也可以是0x2005等,在plc中cpu會自動選擇較小的時間基準來對數值進行表示,所以從plc中讀到的以上數值應該是0x0500。通過opc讀取到的為十進位制表示的整數值,因此用c#讀取和設定的時候都必須先進行轉換。
知道原理,轉換就很容易了,**如下:
s5time格式轉換
privateintconverts5timetoint32(
intinit)
result
=(baiwei
*100
+shiwei *10
+gewei)
*beishu;
return
result;
}private
intconvertint32tos5time(
intinit)
elseif(
0<=
init /10
&&init /10
<=
4095
)elseif(
0<=
init
/100
&&init
/100
<=
4095
)elseif(
0<=
init
/1000
&&init
/1000
<=
4095
)return
result;
}
C 資料格式轉換
本文主要講述整數 二進位制字串與十六進製制字串之間的轉換。使用 ltoa s 函式可以將整數轉換為二進位制字串。該函式的作用是將乙個 long 整數轉換為字串。ltoa s 函式有很多格式,其中的乙個格式為 errno t ltoa s long value,char str,int radix 其...
C 常用的資料格式轉換
用dataformatstring格式化gridview 在 gridview裡面顯示資料,要顯示的資料有好多位小數,就想讓它只顯示兩位小數,在delphi裡,直接用displayformat就行了,在.net中,查了半天msdn,發現使用dataformatstring是可以實現這個功能的,但是怎...
stingstream的資料格式轉換
如果想從字串中提取 整形 浮點型 等資料可以通過stringstream來轉換。include 在使用stringsteam時注意對記憶體的處理。例如 int circle 3 stringstream test string str int num float f while circle cir...