daizhicun
級別: 探索解密
|
現在和西門子plc通訊感覺主要還是用OPC, 但是我不太喜歡OPC, 雖然它封裝了上位和plc的溝通方式,做項目開發比較方便;但畢竟隔了一層;OPC內部同步數據點一次一般也需要500毫秒; 對于高速分揀等需要快速響應的,我想還是直接上下位溝通,繞過OPC; 我看了 西門子有 BCNetS7 協議規范 ,還沒細研究;不知道有沒有志同道合者一起研究; 而且網上介紹的資料也不多 不過用三菱的PLC卻詳細的介紹了和上位通訊的內部協議:MC協議; 比如讀取D點,M點,X點,Y點的指令是: //MC協議讀取通訊點的指令:ENQ_ADDR--讀取首地址 ENQ_LEN--讀取長度 POINT_TYPE--通訊點類型(D,M,X,Y) ; ArrSend--返回指令數組 procedure GET_READ_ENQ_BYTES(ENQ_ADDR, ENQ_LEN: Integer; POINT_TYPE: string; var ArrSend: TArray < Byte > ); begin SetLength(ArrSend, 21); //輔助HEAD ArrSend[0] := $50; ArrSend[1] := $0; //QHEAD ArrSend[2] := $0; //網絡編號 ArrSend[3] := $FF; //plc編號 ArrSend[4] := $FF; //請求目標模塊低位 ArrSend[5] := $3; //請求目標模塊高位 ArrSend[6] := $0; //請求目標模塊站編號 ArrSend[7] := $C; //請求數據長度低位 ArrSend[8] := $0; //請求數據長度高位 ArrSend[9] := $10; //cpu監視定時器低位 ArrSend[10] := $0; //cpu監視定時器高位 //文字部 //命令 ArrSend[11] := $1; ArrSend[12] := $4; //子命令(0000-字讀取 0001-位讀取) ArrSend[13] := $0; ArrSend[14] := $0; //開始地址 ArrSend[15] := ENQ_ADDR; ArrSend[16] := ENQ_ADDR shr 8; ArrSend[17] := ENQ_ADDR shr 16; ; //設備編碼: case POINT_TYPE[1] of 'D': ArrSend[18] := $A8; 'M': ArrSend[18] := $90; 'X': ArrSend[18] := $9C; 'Y': ArrSend[18] := $9D; end; //信號數量 ArrSend[19] := ENQ_LEN; ArrSend[20] := ENQ_LEN shr 8; end; 感覺和上位通訊這塊,雖然西門子方式很多,但都偏向于用封裝好的東西,比如prodave.dll ,還有及時最廣泛的OPC; 不過,我感覺還是綠色的,最直接不借助任何第三方的東西最好; 直接上下位按照標準協議通過socket溝通; 一般在三菱Q系列的plc里,通訊端口設置8000,而且可以開多個通訊端口; 做多個sokcet服務端的監聽; 西門子這方便我想應該更強吧。 |
---|---|
|
beichen
級別: 家園常客
|
BCNet-S7協議時無錫北辰開發的協議,針對西門子S7-200/300/400。 上位機跟西門子PLC通訊可以選擇直連或者OPC通訊,也可用高級語言調用。 只要安裝北辰的驅動,就可以在SET PG/PC里選到 BCNet-S7(PPI)、BCNet-S7(MPI)、BCNet-S7(PROFIBUS)。 以上都屬于直連,BCNet還支持的直連包括 Modbus TCP、TCP/IP。 另外,還可以選擇BCNet-S7 OPC進行通訊,在聯網項目和生產管理系統構建是最常用的一種方法。 但如果開發者具備高級語言的基礎,也可調用北辰的BCNet-S7函數來做,如VB、VC、C#等。 |
|
---|---|---|
|
daizhicun
級別: 探索解密
|
如果用無錫的那個東西,畢竟還是需要他的模塊; 費用先不管,多一個模塊麻煩; 直接和plc 用socket通訊應該是可以的; 而且我人為用非阻塞的方式直接通訊,效率肯定是最高的了; |
---|---|
|
zsm9614501
級別: 略有小成
|
請問樓主及大俠:正版WINCC大約多少錢一套,1000點左右的,開公司正規發票的, |
|
---|---|---|
|
riiynicel
sanziyoudu
級別: 略有小成
|
可以利用PPI協議和上位機通訊,硬件只需要USB-485 或編程線就可以。 http://item.taobao.com/item.htm?spm=686.1000925.1000774.26.vVuv7X&id=20807039215 |
---|---|
|
beichen
級別: 家園常客
|
若用西門子的以太網模塊,不也需要西門子的硬件嗎? 若MPI/PROFIBUS口直接通訊,也需要西門子的適配器或板卡,那就談不上SOCKET通訊了。 |
|
---|---|---|
|
daizhicun
級別: 探索解密
|
做為做上位系統的開發人員, 對上位的通訊的模式一直整不明白; 根據資料,西門子的通訊方式太多; 眼花繚亂的, 然而,我其實只需要最原始的那種:TCP/IP ; (串口就不考慮了); 需要plc提供的僅僅是:ip地址和通訊端口號; 不要整那些prodave,mpi,opc ,probus等 亂七八糟的,通訊效率低下不說,還要在電腦上安裝這樣那樣的西門子的組件,受限于人,煩也煩死了; 可能三菱做多了,還是習慣三菱的MC那樣, 比如三菱PLC的ip地址是:192.168.1.5;監聽的通訊端口號是:8000; 那么讀取D4000這個點的方法就是: 上位電腦通過ip:192.168.1.5 端口 8000和PLC建立socket(套接字)連接: 然后上位電腦給plc發送16進制數據: 50 00 00 FF FF 03 00 0C 00 10 00 01 04 00 00 A0 0F 00 A8 01 00 大概過了10毫秒,PLC給上位電腦反饋 RX:D0 00 00 FF FF 03 00 04 00 00 00 00 00 這樣上位就知道了D4000點的值; 方法很簡單,如果要監控D4000點的值的變化;那么就1秒或者更快的周期通訊一次; 摸索了很久,就沒發現西門子有三菱這邊方便直接的方式; [ 此帖被daizhicun在2013-07-12 09:59重新編輯 ] |
---|---|
|
zylew
級別: 探索解密
|
PPI啊,TCP/IP不是很清楚 http://blog.liuzhenyun.info/2013/07/11/siemens-ppi/ |
---|---|
|
daizhicun
級別: 探索解密
|
要的就是這種效果,可惜的是,這種方式只是串口的, 都這個年代了,誰還用串口啊,速度慢,不穩定,不像tcp/ip那樣有3次握手; 而且布線也麻煩; 所以如果能有網線的通訊方式,就好了。 |
---|---|
|
mhbxfys
趁年輕,走遍中國!
級別: 網絡英雄
|
看你要什么版本的,以及選擇什么安裝包及授權 |
|
---|---|---|
|
beichen
級別: 家園常客
|
三菱的TCP/IP,需要在PLC里面編寫應對程序嗎? 西門子的你一定要走TCP/IP也可以,但是PLC里面肯定要自己編寫應答程序的,不然PLC不認你發送過去的請求命令, 沒有這個標準的命令格式的, 當前,你也行只能試試BCNetS7協議,socket應該比較容易。 BCNetS7_Socket.rar (125 K) 下载次数:9 |
|
---|---|---|
|