Drivers Delcom Engineering



Possible to measuring system for PLC
Resolution 0.1 μm
CC-Link adoption
Transmit measurement data to the PLC

Delcom-XD is a new type of controller that specializes in transmitting high-precision measurement data directly to the PLC.
CC-Link open network and Ethernet Local Area network (TCP socket) technologies are used in this product to provide high speed network communications.
The wire‐saving design with only one single communication cable simplifies the process of connecting to a PLC.
Simple and compact body performed with DC24V, DELCOM-XD is designed to be set in the control box of IoT (Internet Of Things) systems.
Delcom-XD’s installation is greatly simplified. The set up can be completed with only one touch with a standard type of connector or a DIN rail hook (option) .

Cocomo (Constructive Cost Model) is a regression model based on LOC, i.e number of Lines of Code.It is a procedural cost estimate model for software projects and often used as a process of reliably predicting the various parameters associated with making a project such as size, effort, cost, time and quality. From reordering supplies, to tutorials and FAQ, Dexcom can provide support and guidance for a better experience with continuous glucose monitoring (CGM). Microsoft® ODBC Driver 13.1 for SQL Server® - Windows, Linux, & macOS. The Microsoft ODBC Driver for SQL Server provides native connectivity from Windows, Linux, & macOS to Microsoft SQL Server and Microsoft Azure SQL Database. Delcom is committed to addressing any technical issues you may experience with your equipment. For technical service, please contact our support team immediately at 514-744-3503. You can also reach us by email at email protected.

Direct Transmission of Measurement Data to The PLC
The measurement data can be directly transmitted to the PLC via CC-Link

Various gauges

IOTA is a pioneer and leader in the lighting industry, designing and manufacturing state-of-the-art emergency lighting equipment for commercial, institutional, national and international applications. Additionally, IOTA's product line has expanded to include AC/DC power conversion and battery charging equipment.

It can correspond to the pencil type measuring instrument, the lever type measuring head and the miniature digital measuring head.

Contributing to cost reduction

Drivers Delcom Engineering Services

As in the past, there is no need an input unit (analog unit, counter unit) in the PLC, contributing to cost reduction.

Multipoint measurement

Ideal for multipoint measurement, because Maximum 4 gauge connections per machine.Be able to increase the number of connections to the PLC within CC-Link standard (maximum 64 stations).

Easy control

It can be controlled by simple PLC program. All operations can be performed by PLC I/O.

High speed sampling

Internal sampling time is 2 msec.It exerts the effect when using the memory function and the outer diameter calculation function.

The memory function

Maximum, minimum, the P-P value can be stored. Data update is performed at internal sampling time.

The outer diameter (Thickness) calculation function.

Outer diameter calculation (2 gauge addition) is possible. 2 gauge data simultaneity is guaranteed with internal sampling time.

Ethernet

Drivers Delcom Engineering

Ethernet (TCP socket) interface as standard, IoT system introduction possible. It is possible to check by a remote PC or server; the operation status, measurement data, operation information etc. It support to visual control.

Inquiry

本文相关的完整驱动源码也可以在流媒体开发论坛下载到:http://bbs.rosoo.net/thread-14804-1-1.html

Since this column began, it has discussed how a Linux driver writer can create various types of kernel drivers, by explaining the different kernel driver interfaces including TTY, serial, I2C and the driver core. It is time to move on now and focus on writing real drivers for real hardware. We start by explaining how to determine what kind of kernel driver interface to use, tricks to help figure out how the hardware actually works and a lot of other real-world knowledge.

Let's begin with a goal of making a simple USB lamp device work well with Linux. Editor Don Marti pointed out a neat device, the USB Visual Signal Indicator, manufactured by Delcom Engineering and shown in Figure 1. I have no relationship with this company; I just think they make nice products. This device can be ordered on-line from the Delcom Web site, www.delcom-eng.com. Don challenged me to get the device working on Linux, and this article explains how I did it.

Figure 1. Delcom's USB Visual Signal Indicator is a simple first USB programming project.

The first goal in trying to write a driver for a device is to determine how to control the device. Delcom Engineering is nice enough to ship the entire USB protocol specification their devices use with the product, and it also is available on-line for free. This documentation shows what commands the USB controller chip accepts and how to use them. They also provide a Microsoft Windows DLL to help users of other operating systems write code to control the device.

The documentation for this device is only the documentation for the USB controller in the lamp. It does not explicitly say how to turn on the different color LEDs. For this, we have to do a bit of research.

After opening up the lamp device, making sure not to lose the spring that easily pops out when unscrewing the device, the circuit board can be inspected (Figure 2). Using an ohmmeter, or any kind of device for detecting a closed circuit, it was determined that the three different LEDs are connected to the first three pins of port 1 on the main controller chip.

In reading the documentation, the USB command to control the levels of the port 1 pins is Major 10, Minor 2, Length 0. The command writes the least significant byte of the USB command packet to port 1, and port 1 is defaulted high after reset. So, that is the USB command we need to send to the device to change the different LEDs.

Figure 2. The three LEDs are connected to the first three pins of the controller chip.

Now that we know the command to enable a port pin, we need to determine which LED color is connected to which pin. This is easy to do with a simple program that runs through all possible combinations of different values for the three port pins and then sends the value to the device. This program enabled me to create a table of values and LED colors (Table 1).

Table 1. Port Values and the Resulting LED Patterns

Port value in hexPort value in binaryLEDs on
0x00000Red, Green, Blue
0x01001Red, Blue
0x02010Green, Blue
0x03011Blue
0x04100Red, Green
0x05101Red
0x06110Green
0x07111No LEDs on

So, if all pins on the port are enabled (a value of 0x07 hex), no LEDs are on. This matches up with the note in the data sheet that stated, “Port 1 is defaulted high after reset.” It would make sense not to have any LEDs enabled when the device is first plugged in. This means we need to turn port pins low (off) in order to turn on the LED for that pin. Using the table, we can determine that the blue LED is controlled by pin 2, the red LED by pin 1 and the green LED by pin 0.

A Kernel Driver

Delcom

Armed with our new-found information, we set off to whip up a quick kernel driver. It should be a USB driver, but what kind of interface to user space should we use? A block device does not make sense, as this device does not need to store filesystem data, but a character device would work. If we use a character device driver, however, a major and minor number needs to be reserved for it. And how many minor numbers would we need for this driver? What if someone wanted to plug 100 different USB lamp devices in to this system? To anticipate this, we would need to reserve at least 100 minor numbers, which would be a total waste if all anyone ever used was one device at a time. If we make a character driver, we also would need to invent some way to tell the driver to turn on and off the different colors individually. Traditionally, that could be done using different ioctl commands on the character driver, but we know much better than ever to create a new ioctl command in the kernel.

As all USB devices show up in their own directory in the sysfs tree, so why not use sysfs and create three files in the USB device directory, blue, red and green? This would allow any user-space program, be it a C program or a shell script, to change the colors on our LED device. This also would keep us from having to write a character driver and beg for a chunk of minor numbers for our device.

To start out our USB driver, we need to provide the USB subsystem with five things:

  • A pointer to the module owner of this driver: this allows the USB core to control the module reference count of the driver properly.

  • The name of the USB driver.

  • A list of the USB IDs this driver should provide: this table is used by the USB core to determine which driver should be matched up to which device; the hot-plug user-space scripts use it to load that driver automatically when a device is plugged in to the system.

  • A probe() function called by the USB core when a device is found that matches the USB ID table.

  • A disconnect() function called when the device is removed from the system.

The driver retrieves this information with the following bit of code:

The id_table variable is defined as:

The led_probe() and led_disconnect() functions are described later.

When the driver module is loaded, this led_driver structure must be registered with the USB core. This is accomplished with a single call to the usb_register() function:

Likewise, when the driver is unloaded from the system, it must unregister itself from the USB core:

The led_probe() function is called when the USB core has found our USB lamp device. All it needs to do is initialize the device and create the three sysfs files, in the proper location. This is done with the following code:

The led_disconnect() function is equally as simple, as we need only to free our allocated memory and remove the sysfs files:

Latest downloads from PreSonus in Sound Card. Sort by: last update. PreSonus FireStudio Universal Control / Driver 1.2.2715 / 3.5.5 for Mac OS 4,404. Rh/presonus sound cards for kids.

When the sysfs files are read from, we want to show the current value of that LED; when it is written to, we want to set that specific LED. To do this, the following macro creates two functions for each color LED and declares a sysfs device attribute file:

This creates six functions, show_blue(), set_blue(), show_red(), set_red(), show_green() and set_green(); and three attribute structures, dev_attr_blue, dev_attr_red and dev_attr_green. Due to the simple nature of the sysfs file callbacks and the fact that we need to do the same thing for every different value (blue, red and green), a macro was used to reduce typing. This is a common occurrence for sysfs file functions; an example of this in the kernel source tree is the I2C chip drivers in drivers/i2c/chips.

So, to enable the red LED, a user writes a 1 to the red file in sysfs, which calls the set_red() function in the driver, which calls the change_color() function. The change_color() function looks like:

This function starts out by setting all bits in the variable color to 1. Then, if any LEDs are to be enabled, it turns off only that specific bit. We then send a USB control message to the device to write that color value to the device.

It first seems odd that the tiny buffer variable, which is only 8-bytes long, is created with a call to kmalloc. Why not simply declare it on the stack and skip the overhead of dynamically allocating and then destroying it? This is done because some architectures that run Linux cannot send USB data created on the kernel stack, so all data that is to be sent to a USB device must be created dynamically.

With this kernel driver created, built and loaded, when the USB lamp device is plugged in, the driver is bound to it. All USB devices bound to this driver can be found in the sysfs directory for the driver:

The file in that directory is a symlink back to the real location in the sysfs tree for that USB device. If we look into that directory we can see the files the driver has created for the LEDs:

Delcom

Then, by writing either 0 or 1 to the blue, green and red files in that directory, the LEDs change color:

This produces the color shown in Figure 3. Afatech mobile phones & portable devices driver download for windows.

Figure 3. The Device with the Red and Blue LEDs On

Now that we have created a simple kernel driver for this device, which can be seen in the 2.6 kernel tree at drivers/usb/misc/usbled.c or on the Linux Journal FTP site at (ftp.linuxjournal.com/pub/lj/listings/issue120/7353.tgz), is this really the best way to talk to the device? What about using something like usbfs or libusb to control the device from user space without any special device drivers? In my next column, I will show how to do this and provide some shell scripts to control the USB lamp devices plugged in to the system easily.

If you would like to see kernel drivers written for any other types of devices, within reason—I'm not going to try to write an NVIDIA video card driver from scratch—please let me know.

Thanks to Don Marti for bugging me to get this device working on Linux. Without his prodding it would have never gotten finished.

(Greg Kroah-Hartman)