现场设备为S7-300,工控机中使用Simatic NET软件,PLC与工控机之间走的以太网;
目前合作方想使用高级语言读写PLC中数据,使用的语言是PB,我查看西门子提供的有关高级语言读写PLC的文献主要为C#和C++;看样子合作方无法实现PB和C#间的转换,开始跟我们要一个中间数据库!但是参考别的公司的项目,的确可以通过Simatic net作为OPC媒介实现高级语言读写PLC,
请问:通过Simati Net 软件,是否满足合作方提出的所谓中间数据库的要求呢?最好能连带讲些相关知识!
请高手指点一下,比较急!谢谢
最佳答案
1.PowerBuilder,这个不需要C语言基础,主要用来开发数据库应用的,优点是开发的程序可以在各类数据库下工作,另外提供专业的数据库设计工具。
先从网上下载OPCDA20.EXE安装起来,然后从网上找个OPC控件包(有DACLTSDK.dll,DACLTSDK_ActiveX.ocx,OPC_AEPS.DLL,opccomn_ps.dll,opchda_ps.dll,OPCPROXY.DLL,OpcRcw.Comn.dll)拷贝到%WINDIR%\System32文件夹下,然后执行命令注册:
REGSVR32 /s %WINDIR%\System32\opccomn_ps.dll
REGSVR32 /s %WINDIR%\System32\opcproxy.dll
REGSVR32 /s %WINDIR%\System32\opc_aeps.dll
REGSVR32 /s %WINDIR%\System32\opchda_ps.dll
REGSVR32 /s %WINDIR%\System32\OpcRcw.Comn.dll
regsvr32 /s %WINDIR%\System32\DACLTSDK_ActiveX.ocx
%WINDIR%\Opcenum /RegServer
在PB中创建一个opc控件,名字为ole_1,初始化
TRY
if ole_1.object.Connect(host,serverid) then
try
if ole_1.object.Addgroup("GROUP",updateRate) then
return true
else
return false
end if
CATCH ( runtimeerror erAddgroup)
return false
END TRY
else
return false
end if
CATCH (runtimeerror erConnect)
return false
END TRY
然后加标签
TRY
IHandle=ole_1.object.AddItem(itemname)
if IHandle>0 then
return IHandle
else
return 0
end if
取值
Value=ole_1.object.readItem(IHandle)
其他详细参考资料见:http://hi.baidu.com/jiachang130/blog/item/5f8dfa3e3764e50cbba16776.html
参考资料:http://blog.tianya.cn/blogger/post_show.asp?BlogID=2049916&PostID=21191751
提问者对于答案的评价:
感谢: lwp 和 T-C4 !非常有指导的讲解!
原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc171507.html