发表于:2018/11/17 23:07:41
#0楼
哈喽,大家好,我是来自杭州的Richard.Hu,今天分享我的一个免费开源的项目,HSL组件,可能工控界的很多朋友都认识我,废话不多说,先上干货。
组件叫HslCommunication,开源地址是:https://github.com/dathlin/HslCommunication 欢迎star和fork
这个组件是干什么的?
1. 它可以读写三菱PLC的数据,包含MC协议,编程口协议,专用协议。
2. 它可以读写西门子PLC的数据,包含s7协议和fetch/write协议,PPI协议。
3. 它可以读写modbus设备的数据,包含modbus-tcp,modbus-rtu,modbus-ascii。
4. 它可以读写欧姆龙PLC的数据,fins-tcp协议
5. 它可以读写AB PLC的数据
6. 它可以让两个exe通讯。
7. 它可以让不同的语言通信。
8. 它自带了一些比较好用的控件,可以方便的显示数据信息。
说了这么多,进入实战试试吧。有了这个组件,你就会发现数据交互是一件多么简单方便的事情。
此处以VS2017示例,读取的设备以三菱为示例:
当我要读取D100的数据的时候,也就是2行代码
// 实例化对象,指定PLC的ip地址和端口号
MelsecMcNet melsecMc = new MelsecMcNet( "设备的ip地址", 6000 );
// 举例读取D100的值
short D100 = melsecMc.ReadInt16( "D100" ).Content;
相当的简单,无论是三菱还是西门子,还是欧姆龙,还是ab plc,还是modbus,都支持这种方便的数据读写。数据的读写支持如下:
bool读写
bool数组读写
byte读写
byte数组读写
Int16读写
Int16数组读写
UInt16读写
UInt16数组读写
Int32读写
Int32数组读写
UInt32读写
UInt32数组读写
Int64读写
Int64数组读写
UInt64读写
UInt64数组读写
float读写
float数组读写
double读写
double数组读写
string读写
部分的支持情况视PLC而定
接下来实战一下,新建VS2017的windorm项目
接下来安装组件
我们在页面上放一个label控件,用于显示的数据值
然后在窗体的载入方法中,读取PLC的数据,然后显示出来。
这样仅仅是显示了打开窗体的时候的值,如果我想要这个值实时的更新显示呢?我们可以做个线程的读取,
如果觉得直接显示文本比较单调,可以使用组件支持的控件创建一些比较丰富的界面,比如下面的:
当然基于上述的功能可以开发出功能及界面非常丰富的工业软件,更详细的可以搜索源代码查看详细的信息